mirror of
https://github.com/saltstack/salt.git
synced 2025-04-17 10:10:20 +00:00
Fixed reg state module for None, 0, and '' values
This commit is contained in:
parent
3e902e86b1
commit
ebbf2b05ca
2 changed files with 34 additions and 22 deletions
|
@ -202,19 +202,25 @@ def read_value(hive, key, vname=None):
|
|||
ret['vname'] = '(Default)'
|
||||
|
||||
registry = Registry()
|
||||
hive = registry.hkeys[hive]
|
||||
hkey = registry.hkeys[hive]
|
||||
|
||||
try:
|
||||
handle = _winreg.OpenKey(hive, key)
|
||||
vdata, vtype = _winreg.QueryValueEx(handle, vname)
|
||||
if vdata:
|
||||
ret['vdata'] = vdata
|
||||
ret['vtype'] = registry.vtype_reverse[vtype]
|
||||
else:
|
||||
ret['comment'] = 'Empty Value'
|
||||
handle = _winreg.OpenKey(hkey, key)
|
||||
try:
|
||||
vdata, vtype = _winreg.QueryValueEx(handle, vname)
|
||||
if vdata or vdata in [0, '']:
|
||||
ret['vtype'] = registry.vtype_reverse[vtype]
|
||||
ret['vdata'] = vdata
|
||||
else:
|
||||
ret['comment'] = 'Empty Value'
|
||||
except WindowsError as exc: # pylint: disable=E0602
|
||||
ret['vdata'] = ('(value not set)')
|
||||
ret['vtype'] = 'REG_SZ'
|
||||
ret['success'] = True
|
||||
except WindowsError as exc: # pylint: disable=E0602
|
||||
log.debug(exc)
|
||||
ret['comment'] = '{0}'.format(exc)
|
||||
log.debug('Cannot find key: {0}\\{1}'.format(hive, key))
|
||||
ret['comment'] = 'Cannot find key: {0}\\{1}'.format(hive, key)
|
||||
ret['success'] = False
|
||||
|
||||
return ret
|
||||
|
@ -315,7 +321,7 @@ def set_value(hive, key, vname=None, vdata=None, vtype='REG_SZ', reflection=True
|
|||
_winreg.CloseKey(handle)
|
||||
return True
|
||||
except (WindowsError, ValueError) as exc: # pylint: disable=E0602
|
||||
log.error(exc)
|
||||
log.error(exc, exc_info=True)
|
||||
return False
|
||||
|
||||
|
||||
|
@ -437,7 +443,7 @@ def delete_key(hkey, path, key=None, reflection=True, force=False):
|
|||
_winreg.DeleteKey(hive, key)
|
||||
return True
|
||||
except WindowsError as exc: # pylint: disable=E0602
|
||||
log.error(exc)
|
||||
log.error(exc, exc_info=True)
|
||||
return False
|
||||
|
||||
|
||||
|
@ -498,7 +504,7 @@ def delete_key_recursive(hive, key):
|
|||
_winreg.DeleteKey(hkey, keypath)
|
||||
ret['Deleted'].append(r'{0}\{1}'.format(hive, keypath))
|
||||
except WindowsError as exc: # pylint: disable=E0602
|
||||
log.error(exc)
|
||||
log.error(exc, exc_info=True)
|
||||
ret['Failed'].append(r'{0}\{1} {2}'.format(hive, key, exc))
|
||||
|
||||
# Delete the key now that all the subkeys are deleted
|
||||
|
@ -506,7 +512,7 @@ def delete_key_recursive(hive, key):
|
|||
_winreg.DeleteKey(hkey, key)
|
||||
ret['Deleted'].append(r'{0}\{1}'.format(hive, key))
|
||||
except WindowsError as exc: # pylint: disable=E0602
|
||||
log.error(exc)
|
||||
log.error(exc, exc_info=True)
|
||||
ret['Failed'].append(r'{0}\{1} {2}'.format(hive, key, exc))
|
||||
|
||||
return ret
|
||||
|
@ -555,5 +561,5 @@ def delete_value(hive, key, vname=None, reflection=True):
|
|||
return True
|
||||
except WindowsError as exc: # pylint: disable=E0602
|
||||
_winreg.CloseKey(handle)
|
||||
log.error(exc)
|
||||
log.error(exc, exc_info=True)
|
||||
return False
|
||||
|
|
|
@ -184,7 +184,7 @@ def present(name, value=None, vname=None, vdata=None, vtype='REG_SZ', reflection
|
|||
# This is for backwards compatibility
|
||||
# If 'value' is passed a value, vdata becomes value and the vname is
|
||||
# obtained from the key path
|
||||
if value:
|
||||
if value or value in [0, '']:
|
||||
hive, key, vname = _parse_key_value(name)
|
||||
vdata = value
|
||||
ret['comment'] = 'State file is using deprecated syntax. Please update.'
|
||||
|
@ -206,7 +206,7 @@ def present(name, value=None, vname=None, vdata=None, vtype='REG_SZ', reflection
|
|||
|
||||
add_change = {'Key': r'{0}\{1}'.format(hive, key),
|
||||
'Entry': '{0}'.format(vname if vname else '(Default)'),
|
||||
'Value': '{0}'.format(vdata if vdata else '(Empty String)')}
|
||||
'Value': '{0}'.format(vdata)}
|
||||
|
||||
# Check for test option
|
||||
if __opts__['test']:
|
||||
|
@ -252,9 +252,15 @@ def absent(name, vname=None):
|
|||
hive, key = _parse_key(name)
|
||||
|
||||
# Determine what to do
|
||||
if not __salt__['reg.read_value'](hive, key, vname)['success']:
|
||||
hive, key, vname = _parse_key_value(name)
|
||||
if not __salt__['reg.read_value'](hive, key, vname)['success']:
|
||||
reg_check = __salt__['reg.read_value'](hive, key, vname)
|
||||
if not reg_check['success'] or reg_check['vdata'] == '(value not set)':
|
||||
if not vname:
|
||||
hive, key, vname = _parse_key_value(name)
|
||||
reg_check = __salt__['reg.read_value'](hive, key, vname)
|
||||
if not reg_check['success'] or reg_check['vdata'] == '(value not set)':
|
||||
ret['comment'] = '{0} is already absent'.format(name)
|
||||
return ret
|
||||
else:
|
||||
ret['comment'] = '{0} is already absent'.format(name)
|
||||
return ret
|
||||
|
||||
|
@ -271,11 +277,11 @@ def absent(name, vname=None):
|
|||
ret['result'] = __salt__['reg.delete_value'](hive, key, vname)
|
||||
if not ret['result']:
|
||||
ret['changes'] = {}
|
||||
ret['comment'] = r'Failed to remove {0} from {1}\{2}'.format(name, hive,
|
||||
key)
|
||||
ret['comment'] = r'Failed to remove {0}\{1} from {2}'.format(key, vname,
|
||||
hive)
|
||||
else:
|
||||
ret['changes'] = {'reg': {'Removed': remove_change}}
|
||||
ret['comment'] = r'Removed {0} from {1}\{2}'.format(name, hive, key)
|
||||
ret['comment'] = r'Removed {0}\{1} from {2}'.format(key, name, hive)
|
||||
|
||||
return ret
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue