|
- # -*- coding: utf-8 -*-
- '''
- Management of Open vSwitch configuration
- ========================================
-
- The OVS config can be managed with the ovs_config state module:
-
- .. code-block:: yaml
-
- other_config:dpdk-init:
- ovs_config.present:
- - value: True
-
- other_config:dpdk-extra:
- ovs_config.present:
- - value: -n 12 --vhost-owner libvirt-qemu:kvm --vhost-perm 0664
-
- external_ids:
- ovs_config.absent
- '''
-
-
- def __virtual__():
- '''
- Only make these states available if Open vSwitch is installed.
- '''
- return 'ovs_config.list' in __salt__
-
-
- def present(name, value, wait=True):
- '''
- Ensures that the named config exists, eventually creates it.
-
- Args:
- name/value: The name/value of the config entry.
- wait: Whether wait for ovs-vswitchd to reconfigure itself according to the modified database.
- '''
- ret = {'name': name, 'changes': {}, 'result': False, 'comment': ''}
- ovs_config = __salt__['ovs_config.list']()
-
- if name in ovs_config and ovs_config[name] == str(value).lower():
- ret['result'] = True
- ret['comment'] = '{0} is already set to {1}.'.format(name, value)
- else:
- config_updated = __salt__['ovs_config.set'](name, value, wait)
- if config_updated:
- ret['result'] = True
- ret['comment'] = '{0} is updated.'.format(name)
- ret['changes'] = { name: 'Updated to {0}'.format(value) }
- else:
- ret['result'] = False
- ret['comment'] = 'Unable to update config of {0}.'.format(name)
-
- return ret
-
-
- def absent(name):
- '''
- Ensures that the named config does not exist, eventually deletes it.
-
- Args:
- name: The name of the config entry.
-
- '''
- ret = {'name': name, 'changes': {}, 'result': False, 'comment': ''}
- ovs_config = __salt__['ovs_config.list']()
-
- if ':' in name and name not in ovs_config:
- ret['result'] = True
- ret['comment'] = '{0} does not exist.'.format(name)
- else:
- config_removed = __salt__['ovs_config.remove'](name)
- if config_removed:
- ret['result'] = True
- ret['comment'] = '{0} is removed.'.format(name)
- ret['changes'] = { name: '{0} removed'.format(name) }
- else:
- ret['result'] = False
- ret['comment'] = 'Unable to delete config of {0}.'.format(name)
-
- return ret
|