1 | initial version |
Finally, I modify configdrive.py to dismount CDROM:
C:\Program Files\Cloudbase Solutions\Cloudbase-Init\Python\Lib\site-packages\cloudbaseinit\metadata\services\configdrive.py
import os import shutil +import ctypes ... def cleanup(self): LOG.debug('Deleting metadata folder: %r', self.mgr.targetpath) shutil.rmtree(self.mgr.targetpath, ignoreerrors=True) self.metadatapath = None + driveletter = os.popen('wmic logicaldisk where VolumeName="config-2" get Caption | findstr /I ":"').read() + if driveletter: + LOG.debug('Eject metadata drive: %s', str(driveletter).rstrip()) + ctypes.windll.WINMM.mciSendStringW(u"open " + str(driveletter).rstrip() + " type cdaudio alias ddrive", None, 0, None) + ctypes.windll.WINMM.mciSendStringW(u"set d_drive door open", None, 0, None)
2 | No.2 Revision |
Finally, I modify configdrive.py to dismount CDROM:
C:\Program Files\Cloudbase Solutions\Cloudbase-Init\Python\Lib\site-packages\cloudbaseinit\metadata\services\configdrive.py
import os
os import shutil
+import ctypes
ctypes ...
def cleanup(self):
LOG.debug('Deleting metadata folder: %r', self.mgr.targetpath)
shutil.rmtree(self.mgr.targetpath, path,
ignoreerrors=True)
self.metadatapath = None
+ driveletter = os.popen('wmic logicaldisk where where
VolumeName="config-2" get Caption | |
findstr /I ":"').read()
+ if driveletter:
+ LOG.debug('Eject metadata drive: %s', %s',
str(driveletter).rstrip())
+ ctypes.windll.WINMM.mciSendStringW(u"open + ctypes.windll.WINMM.mciSendStringW(u"open
" + str(driveletter).rstrip() + " "
type cdaudio alias ddrive", None, 0, 0,
None)
+ ctypes.windll.WINMM.mciSendStringW(u"set + ctypes.windll.WINMM.mciSendStringW(u"set
d_drive door open", None, 0, None)
3 | No.3 Revision |
Finally, I modify configdrive.py to dismount CDROM:
C:\Program Files\Cloudbase Solutions\Cloudbase-Init\Python\Lib\site-packages\cloudbaseinit\metadata\services\configdrive.py
4 | No.4 Revision |
Finally, I modify configdrive.py to dismount CDROM:
C:\Program Files\Cloudbase Solutions\Cloudbase-Init\Python\Lib\site-packages\cloudbaseinit\metadata\services\configdrive.py
import os import shutil
+import ctypes ...
def cleanup(self):
LOG.debug('Deleting metadata folder: %r', self._mgr.target_path)
shutil.rmtree(self._mgr.target_path, ignore_errors=True)
self._metadata_path = None
+ drive_letter = os.popen('wmic logicaldisk where VolumeName="config-2" get Caption | findstr /I ":"').read()
+ if drive_letter:
+ LOG.debug('Eject metadata drive: %s', str(drive_letter).rstrip())
+ ctypes.windll.WINMM.mciSendStringW(u"open " + str(drive_letter).rstrip() + " type cdaudio alias d_drive", None, 0, None)
+ ctypes.windll.WINMM.mciSendStringW(u"set d_drive door open", None, 0, None)
5 | No.5 Revision |
Finally, I modify configdrive.py to dismount CDROM:
C:\Program Files\Cloudbase Solutions\Cloudbase-Init\Python\Lib\site-packages\cloudbaseinit\metadata\services\configdrive.py
import os
import shutil
+import ctypes ctypes
...
def cleanup(self):
LOG.debug('Deleting metadata folder: %r', self._mgr.target_path)
shutil.rmtree(self._mgr.target_path, ignore_errors=True)
self._metadata_path self.mgr.targetpath)
shutil.rmtree(self.mgr.targetpath, ignoreerrors=True)
self.metadatapath = None
+ drive_letter + driveletter = os.popen('wmic logicaldisk where VolumeName="config-2" get Caption | findstr /I ":"').read()
+ if drive_letter:
driveletter:
+ LOG.debug('Eject metadata drive: %s', str(drive_letter).rstrip())
str(driveletter).rstrip())
+ ctypes.windll.WINMM.mciSendStringW(u"open " + str(drive_letter).rstrip() str(driveletter).rstrip() + " type cdaudio alias d_drive", ddrive", None, 0, None)
+ ctypes.windll.WINMM.mciSendStringW(u"set d_drive door open", None, 0, None)
None)
6 | No.6 Revision |
Finally, I modify configdrive.py to dismount CDROM:
C:\Program Files\Cloudbase Solutions\Cloudbase-Init\Python\Lib\site-packages\cloudbaseinit\metadata\services\configdrive.py
7 | No.7 Revision |
Finally, I modify configdrive.py to dismount CDROM:
C:\Program Files\Cloudbase Solutions\Cloudbase-Init\Python\Lib\site-packages\cloudbaseinit\metadata\services\configdrive.py
import 8 | No.8 Revision |
Finally, I modify configdrive.py to dismount CDROM:CDROM, and tested in windows 2016 Std server:
C:\Program Files\Cloudbase Solutions\Cloudbase-Init\Python\Lib\site-packages\cloudbaseinit\metadata\services\configdrive.py
import os
import shutil
+import ctypes
... ...
def cleanup(self):
LOG.debug('Deleting metadata folder: %r', self._mgr.target_path)
shutil.rmtree(self._mgr.target_path, ignore_errors=True)
self._metadata_path = None
+ drive_letter = os.popen('wmic logicaldisk where VolumeName="config-2" get Caption | findstr /I ":"').read()
+ if drive_letter:
+ LOG.debug('Eject metadata drive: %s', str(drive_letter).rstrip())
+ ctypes.windll.WINMM.mciSendStringW(u"open " + str(drive_letter).rstrip() + " type cdaudio alias d_drive", None, 0, None)
+ ctypes.windll.WINMM.mciSendStringW(u"set d_drive door open", None, 0, None)
9 | No.9 Revision |
Finally, I modify configdrive.py to dismount CDROM, and tested in windows 2016 Std server:server.
Update: just tested windows 2012 R2, also work.
C:\Program Files\Cloudbase Solutions\Cloudbase-Init\Python\Lib\site-packages\cloudbaseinit\metadata\services\configdrive.py
import os
import shutil
+import ctypes
... ...
def cleanup(self):
LOG.debug('Deleting metadata folder: %r', self._mgr.target_path)
shutil.rmtree(self._mgr.target_path, ignore_errors=True)
self._metadata_path = None
+ drive_letter = os.popen('wmic logicaldisk where VolumeName="config-2" get Caption | findstr /I ":"').read()
+ if drive_letter:
+ LOG.debug('Eject metadata drive: %s', str(drive_letter).rstrip())
+ ctypes.windll.WINMM.mciSendStringW(u"open " + str(drive_letter).rstrip() + " type cdaudio alias d_drive", None, 0, None)
+ ctypes.windll.WINMM.mciSendStringW(u"set d_drive door open", None, 0, None)