Replaces _winreg module with six.moves.winreg

The Python 2.x _winreg module is named winreg in Python 3.x
This commit is contained in:
Alessandro Pilotti 2014-09-07 23:19:23 +03:00
parent 55d36f2bbc
commit 324aadd4bf
4 changed files with 69 additions and 68 deletions

View File

@ -14,7 +14,6 @@
# License for the specific language governing permissions and limitations
# under the License.
import _winreg
import ctypes
import os
import re
@ -25,6 +24,7 @@ import wmi
from ctypes import windll
from ctypes import wintypes
from six.moves import winreg
from win32com import client
from cloudbaseinit.openstack.common import log as logging
@ -432,10 +432,10 @@ class WindowsUtils(base.BaseOSUtils):
def get_user_home(self, username):
user_sid = self.get_user_sid(username)
if user_sid:
with _winreg.OpenKey(_winreg.HKEY_LOCAL_MACHINE, 'SOFTWARE\\'
'Microsoft\\Windows NT\\CurrentVersion\\'
'ProfileList\\%s' % user_sid) as key:
return _winreg.QueryValueEx(key, 'ProfileImagePath')[0]
with winreg.OpenKey(winreg.HKEY_LOCAL_MACHINE, 'SOFTWARE\\'
'Microsoft\\Windows NT\\CurrentVersion\\'
'ProfileList\\%s' % user_sid) as key:
return winreg.QueryValueEx(key, 'ProfileImagePath')[0]
LOG.debug('Home directory not found for user \'%s\'' % username)
return None
@ -561,33 +561,33 @@ class WindowsUtils(base.BaseOSUtils):
def set_config_value(self, name, value, section=None):
key_name = self._get_config_key_name(section)
with _winreg.CreateKey(_winreg.HKEY_LOCAL_MACHINE,
key_name) as key:
with winreg.CreateKey(winreg.HKEY_LOCAL_MACHINE,
key_name) as key:
if type(value) == int:
regtype = _winreg.REG_DWORD
regtype = winreg.REG_DWORD
else:
regtype = _winreg.REG_SZ
_winreg.SetValueEx(key, name, 0, regtype, value)
regtype = winreg.REG_SZ
winreg.SetValueEx(key, name, 0, regtype, value)
def get_config_value(self, name, section=None):
key_name = self._get_config_key_name(section)
try:
with _winreg.OpenKey(_winreg.HKEY_LOCAL_MACHINE,
key_name) as key:
(value, regtype) = _winreg.QueryValueEx(key, name)
with winreg.OpenKey(winreg.HKEY_LOCAL_MACHINE,
key_name) as key:
(value, regtype) = winreg.QueryValueEx(key, name)
return value
except WindowsError:
return None
def wait_for_boot_completion(self):
try:
with _winreg.OpenKey(_winreg.HKEY_LOCAL_MACHINE,
"SYSTEM\\Setup\\Status\\SysprepStatus", 0,
_winreg.KEY_READ) as key:
with winreg.OpenKey(winreg.HKEY_LOCAL_MACHINE,
"SYSTEM\\Setup\\Status\\SysprepStatus", 0,
winreg.KEY_READ) as key:
while True:
gen_state = _winreg.QueryValueEx(key,
"GeneralizationState")[0]
gen_state = winreg.QueryValueEx(key,
"GeneralizationState")[0]
if gen_state == 7:
break
time.sleep(1)

View File

@ -24,13 +24,14 @@ import unittest
from oslo.config import cfg
if sys.platform == 'win32':
import _winreg
import win32process
import win32security
import wmi
from ctypes import windll
from ctypes import wintypes
from six.moves import winreg
from cloudbaseinit.osutils import windows as windows_utils
CONF = cfg.CONF
@ -423,18 +424,18 @@ class WindowsUtilsTest(unittest.TestCase):
def _test_get_user_home(self, mock_get_user_sid, user_sid):
key = mock.MagicMock()
mock_get_user_sid.return_value = user_sid
_winreg.OpenKey = mock.MagicMock(return_value=key)
_winreg.QueryValueEx = mock.MagicMock()
winreg.OpenKey = mock.MagicMock(return_value=key)
winreg.QueryValueEx = mock.MagicMock()
response = self._winutils.get_user_home(self._USERNAME)
if user_sid:
mock_get_user_sid.assert_called_with(self._USERNAME)
_winreg.OpenKey.assert_called_with(
_winreg.HKEY_LOCAL_MACHINE, 'SOFTWARE\\Microsoft\\Windows '
'NT\\CurrentVersion\\ProfileList\\'
'%s' % mock_get_user_sid())
winreg.OpenKey.assert_called_with(
winreg.HKEY_LOCAL_MACHINE, 'SOFTWARE\\Microsoft\\Windows '
'NT\\CurrentVersion\\ProfileList\\'
'%s' % mock_get_user_sid())
self.assertTrue(response is not None)
_winreg.QueryValueEx.assert_called_with(
_winreg.OpenKey().__enter__(), 'ProfileImagePath')
winreg.QueryValueEx.assert_called_with(
winreg.OpenKey().__enter__(), 'ProfileImagePath')
else:
self.assertTrue(response is None)
@ -608,31 +609,31 @@ class WindowsUtilsTest(unittest.TestCase):
._CONFIG_NAME
mock_get_config_key_name.return_value = key_name
_winreg.CreateKey = mock.MagicMock()
_winreg.REG_DWORD = mock.Mock()
_winreg.REG_SZ = mock.Mock()
_winreg.SetValueEx = mock.MagicMock()
winreg.CreateKey = mock.MagicMock()
winreg.REG_DWORD = mock.Mock()
winreg.REG_SZ = mock.Mock()
winreg.SetValueEx = mock.MagicMock()
self._winutils.set_config_value(self._CONFIG_NAME, value,
self._SECTION)
_winreg.CreateKey.__enter__.return_value = key
with _winreg.CreateKey as m:
winreg.CreateKey.__enter__.return_value = key
with winreg.CreateKey as m:
assert m == key
_winreg.CreateKey.__enter__.assert_called_with()
_winreg.CreateKey.__exit__.assert_called_with(None, None, None)
_winreg.CreateKey.assert_called_with(_winreg.HKEY_LOCAL_MACHINE,
key_name)
winreg.CreateKey.__enter__.assert_called_with()
winreg.CreateKey.__exit__.assert_called_with(None, None, None)
winreg.CreateKey.assert_called_with(winreg.HKEY_LOCAL_MACHINE,
key_name)
mock_get_config_key_name.assert_called_with(self._SECTION)
if type(value) == int:
_winreg.SetValueEx.assert_called_with(
_winreg.CreateKey().__enter__(), self._CONFIG_NAME, 0,
_winreg.REG_DWORD, value)
winreg.SetValueEx.assert_called_with(
winreg.CreateKey().__enter__(), self._CONFIG_NAME, 0,
winreg.REG_DWORD, value)
else:
_winreg.SetValueEx.assert_called_with(
_winreg.CreateKey().__enter__(), self._CONFIG_NAME, 0,
_winreg.REG_SZ, value)
winreg.SetValueEx.assert_called_with(
winreg.CreateKey().__enter__(), self._CONFIG_NAME, 0,
winreg.REG_SZ, value)
def test_set_config_value_int(self):
self._test_set_config_value(value=1)
@ -645,14 +646,14 @@ class WindowsUtilsTest(unittest.TestCase):
def _test_get_config_value(self, mock_get_config_key_name, value):
key_name = self._winutils._config_key + self._SECTION + '\\'
key_name += self._CONFIG_NAME
_winreg.OpenKey = mock.MagicMock()
_winreg.REG_DWORD = mock.Mock()
_winreg.REG_SZ = mock.Mock()
winreg.OpenKey = mock.MagicMock()
winreg.REG_DWORD = mock.Mock()
winreg.REG_SZ = mock.Mock()
if type(value) == int:
regtype = _winreg.REG_DWORD
regtype = winreg.REG_DWORD
else:
regtype = _winreg.REG_SZ
_winreg.QueryValueEx = mock.MagicMock(return_value=(value, regtype))
regtype = winreg.REG_SZ
winreg.QueryValueEx = mock.MagicMock(return_value=(value, regtype))
if value is None:
mock_get_config_key_name.side_effect = [WindowsError]
self.assertRaises(WindowsError, self._winutils.get_config_value,
@ -661,11 +662,11 @@ class WindowsUtilsTest(unittest.TestCase):
mock_get_config_key_name.return_value = key_name
response = self._winutils.get_config_value(self._CONFIG_NAME,
self._SECTION)
_winreg.OpenKey.assert_called_with(_winreg.HKEY_LOCAL_MACHINE,
key_name)
winreg.OpenKey.assert_called_with(winreg.HKEY_LOCAL_MACHINE,
key_name)
mock_get_config_key_name.assert_called_with(self._SECTION)
_winreg.QueryValueEx.assert_called_with(
_winreg.OpenKey().__enter__(), self._CONFIG_NAME)
winreg.QueryValueEx.assert_called_with(
winreg.OpenKey().__enter__(), self._CONFIG_NAME)
self.assertEqual(response, value)
def test_get_config_value_type_int(self):
@ -680,17 +681,17 @@ class WindowsUtilsTest(unittest.TestCase):
def _test_wait_for_boot_completion(self, ret_val):
key = mock.MagicMock()
time.sleep = mock.MagicMock()
_winreg.OpenKey = mock.MagicMock()
_winreg.QueryValueEx = mock.MagicMock()
_winreg.QueryValueEx.side_effect = ret_val
winreg.OpenKey = mock.MagicMock()
winreg.QueryValueEx = mock.MagicMock()
winreg.QueryValueEx.side_effect = ret_val
self._winutils.wait_for_boot_completion()
_winreg.OpenKey.__enter__.return_value = key
_winreg.OpenKey.assert_called_with(
_winreg.HKEY_LOCAL_MACHINE,
"SYSTEM\\Setup\\Status\\SysprepStatus", 0, _winreg.KEY_READ)
winreg.OpenKey.__enter__.return_value = key
winreg.OpenKey.assert_called_with(
winreg.HKEY_LOCAL_MACHINE,
"SYSTEM\\Setup\\Status\\SysprepStatus", 0, winreg.KEY_READ)
_winreg.QueryValueEx.assert_called_with(
_winreg.OpenKey().__enter__(), "GeneralizationState")
winreg.QueryValueEx.assert_called_with(
winreg.OpenKey().__enter__(), "GeneralizationState")
def test_wait_for_boot_completion(self):
ret_val = [[7]]

View File

@ -12,10 +12,10 @@
# License for the specific language governing permissions and limitations
# under the License.
import _winreg
import ctypes
from ctypes import wintypes
from six.moves import winreg
from cloudbaseinit.utils.windows import iphlpapi
from cloudbaseinit.utils.windows import kernel32
@ -48,13 +48,13 @@ def _socket_addr_to_str(socket_addr):
def _get_registry_dhcp_server(adapter_name):
with _winreg.OpenKey(
_winreg.HKEY_LOCAL_MACHINE,
with winreg.OpenKey(
winreg.HKEY_LOCAL_MACHINE,
"SYSTEM\\CurrentControlSet\\Services\\" +
"Tcpip\\Parameters\\Interfaces\\%s" % adapter_name, 0,
_winreg.KEY_READ) as key:
winreg.KEY_READ) as key:
try:
dhcp_server = _winreg.QueryValueEx(key, "DhcpServer")[0]
dhcp_server = winreg.QueryValueEx(key, "DhcpServer")[0]
if dhcp_server == "255.255.255.255":
dhcp_server = None
return dhcp_server

View File

@ -6,7 +6,7 @@ iso8601
eventlet
pyserial
oslo.config
six>=1.4.1
six>=1.7.0
Babel>=1.3
oauth
netifaces