2020-07-10 00:58:55 +02:00
|
|
|
#!/usr/bin/python3
|
|
|
|
|
|
|
|
import salt.exceptions
|
|
|
|
|
|
|
|
def current_state(name):
|
|
|
|
ret = dict()
|
|
|
|
|
|
|
|
ret['name'] = 'blabla'
|
|
|
|
|
|
|
|
return ret
|
|
|
|
|
|
|
|
def enforce_custom_thing(name, foo, bar=True):
|
|
|
|
'''
|
|
|
|
Enforce the state of a custom thing
|
|
|
|
|
|
|
|
This state module does a custom thing. It calls out to the execution module
|
|
|
|
``y_custom_module`` in order to check the current system and perform any
|
|
|
|
needed changes.
|
|
|
|
|
|
|
|
name
|
|
|
|
The thing to do something to
|
|
|
|
foo
|
|
|
|
A required argument
|
|
|
|
bar : True
|
|
|
|
An argument with a default value
|
|
|
|
'''
|
|
|
|
ret = {
|
|
|
|
'name': name,
|
|
|
|
'changes': {},
|
|
|
|
'result': False,
|
|
|
|
'comment': '',
|
|
|
|
}
|
|
|
|
|
|
|
|
# Start with basic error-checking. Do all the passed parameters make sense
|
|
|
|
# and agree with each-other?
|
2020-09-30 00:44:06 +02:00
|
|
|
if bar and foo.startswith('Foo'):
|
2020-07-10 00:58:55 +02:00
|
|
|
raise salt.exceptions.SaltInvocationError(
|
|
|
|
'Argument "foo" cannot start with "Foo" if argument "bar" is True.')
|
|
|
|
|
|
|
|
# Check the current state of the system. Does anything need to change?
|
|
|
|
current_state = __salt__['custom.current_state'](name)
|
|
|
|
|
|
|
|
if current_state == foo:
|
|
|
|
ret['result'] = True
|
|
|
|
ret['comment'] = 'System already in the correct state %s' % name
|
|
|
|
return ret
|
|
|
|
|
|
|
|
# The state of the system does need to be changed. Check if we're running
|
|
|
|
# in ``test=true`` mode.
|
|
|
|
if __opts__['test'] == True:
|
|
|
|
ret['comment'] = 'The state of "{0}" will be changed.'.format(name)
|
|
|
|
ret['changes'] = {
|
|
|
|
'old': current_state,
|
|
|
|
'new': 'Description, diff, whatever of the new state',
|
|
|
|
}
|
|
|
|
|
|
|
|
# Return ``None`` when running with ``test=true``.
|
|
|
|
ret['result'] = None
|
|
|
|
|
|
|
|
return ret
|
|
|
|
|
|
|
|
# Finally, make the actual change and return the result.
|
|
|
|
new_state = __salt__['custom.change_state'](name, foo)
|
|
|
|
|
|
|
|
ret['comment'] = 'The state of "{0}" was changed!'.format(name)
|
|
|
|
|
|
|
|
ret['changes'] = {
|
|
|
|
'old': current_state,
|
|
|
|
'new': new_state,
|
|
|
|
}
|
|
|
|
|
|
|
|
ret['result'] = True
|
|
|
|
|
2020-09-30 00:44:06 +02:00
|
|
|
return ret
|