summaryrefslogtreecommitdiff
path: root/lib/ansible/modules/network/ovs/openvswitch_db.py
diff options
context:
space:
mode:
Diffstat (limited to 'lib/ansible/modules/network/ovs/openvswitch_db.py')
-rw-r--r--lib/ansible/modules/network/ovs/openvswitch_db.py231
1 files changed, 0 insertions, 231 deletions
diff --git a/lib/ansible/modules/network/ovs/openvswitch_db.py b/lib/ansible/modules/network/ovs/openvswitch_db.py
deleted file mode 100644
index f0374a798f..0000000000
--- a/lib/ansible/modules/network/ovs/openvswitch_db.py
+++ /dev/null
@@ -1,231 +0,0 @@
-#!/usr/bin/python
-# coding: utf-8 -*-
-
-#
-# (c) 2015, Mark Hamilton <mhamilton@vmware.com>
-# Portions copyright @ 2015 VMware, Inc.
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from __future__ import absolute_import, division, print_function
-__metaclass__ = type
-
-
-ANSIBLE_METADATA = {'metadata_version': '1.1',
- 'status': ['preview'],
- 'supported_by': 'network'}
-
-
-DOCUMENTATION = """
----
-module: openvswitch_db
-author: "Mark Hamilton (@markleehamilton) <mhamilton@vmware.com>"
-version_added: 2.0
-short_description: Configure open vswitch database.
-requirements: [ "ovs-vsctl >= 2.3.3" ]
-description:
- - Set column values in record in database table.
-options:
- state:
- required: false
- description:
- - Configures the state of the key. When set
- to I(present), the I(key) and I(value) pair will be set
- on the I(record) and when set to I(absent) the I(key)
- will not be set.
- default: present
- choices: ['present', 'absent']
- version_added: "2.4"
- table:
- required: true
- description:
- - Identifies the table in the database.
- record:
- required: true
- description:
- - Identifies the record in the table.
- col:
- required: true
- description:
- - Identifies the column in the record.
- key:
- required: false
- description:
- - Identifies the key in the record column, when the column is a map
- type.
- value:
- required: true
- description:
- - Expected value for the table, record, column and key.
- timeout:
- required: false
- default: 5
- description:
- - How long to wait for ovs-vswitchd to respond
-"""
-
-EXAMPLES = '''
-# Increase the maximum idle time to 50 seconds before pruning unused kernel
-# rules.
-- openvswitch_db:
- table: open_vswitch
- record: .
- col: other_config
- key: max-idle
- value: 50000
-
-# Disable in band copy
-- openvswitch_db:
- table: Bridge
- record: br-int
- col: other_config
- key: disable-in-band
- value: true
-
-# Remove in band key
-- openvswitch_db:
- state: present
- table: Bridge
- record: br-int
- col: other_config
- key: disable-in-band
-
-# Mark port with tag 10
-- openvswitch_db:
- table: Port
- record: port0
- col: tag
- value: 10
-'''
-import re
-
-from ansible.module_utils.basic import AnsibleModule
-
-# Regular expression for map type, must not be empty
-NON_EMPTY_MAP_RE = re.compile(r'{.+}')
-# Regular expression for a map column type
-MAP_RE = re.compile(r'{.*}')
-
-
-def map_obj_to_commands(want, have, module):
- """ Define ovs-vsctl command to meet desired state """
- commands = list()
-
- if module.params['state'] == 'absent':
- if 'key' in have.keys():
- templatized_command = "%(ovs-vsctl)s -t %(timeout)s remove %(table)s %(record)s " \
- "%(col)s %(key)s=%(value)s"
- commands.append(templatized_command % module.params)
- elif module.params['key'] is None:
- templatized_command = "%(ovs-vsctl)s -t %(timeout)s remove %(table)s %(record)s " \
- "%(col)s"
- commands.append(templatized_command % module.params)
- else:
- if want == have:
- # Nothing to commit
- return commands
- if module.params['key'] is None:
- templatized_command = "%(ovs-vsctl)s -t %(timeout)s set %(table)s %(record)s " \
- "%(col)s=%(value)s"
- commands.append(templatized_command % module.params)
- else:
- templatized_command = "%(ovs-vsctl)s -t %(timeout)s set %(table)s %(record)s " \
- "%(col)s:%(key)s=%(value)s"
- commands.append(templatized_command % module.params)
-
- return commands
-
-
-def map_config_to_obj(module):
- templatized_command = "%(ovs-vsctl)s -t %(timeout)s list %(table)s %(record)s"
- command = templatized_command % module.params
- rc, out, err = module.run_command(command, check_rc=True)
- if rc != 0:
- module.fail_json(msg=err)
-
- match = re.search(r'^' + module.params['col'] + r'(\s+):(\s+)(.*)$', out, re.M)
-
- col_value = match.group(3)
-
- # Map types require key argument
- has_key = module.params['key'] is not None
- is_map = MAP_RE.match(col_value)
- if is_map and not has_key:
- module.fail_json(
- msg="missing required arguments: key for map type of column")
-
- col_value_to_dict = {}
- if NON_EMPTY_MAP_RE.match(col_value):
- for kv in col_value[1:-1].split(', '):
- k, v = kv.split('=')
- col_value_to_dict[k.strip()] = v.strip('\"')
-
- obj = {
- 'table': module.params['table'],
- 'record': module.params['record'],
- 'col': module.params['col'],
- }
-
- if has_key and is_map:
- if module.params['key'] in col_value_to_dict:
- obj['key'] = module.params['key']
- obj['value'] = col_value_to_dict[module.params['key']]
- else:
- obj['value'] = str(col_value.strip())
-
- return obj
-
-
-def map_params_to_obj(module):
- if module.params['value'] in ['True', 'False']:
- module.params['value'] = module.params['value'].lower()
- obj = {
- 'table': module.params['table'],
- 'record': module.params['record'],
- 'col': module.params['col'],
- 'value': module.params['value']
- }
-
- key = module.params['key']
- if key is not None:
- obj['key'] = key
-
- return obj
-
-
-def main():
- """ Entry point for ansible module. """
- argument_spec = {
- 'state': {'default': 'present', 'choices': ['present', 'absent']},
- 'table': {'required': True},
- 'record': {'required': True},
- 'col': {'required': True},
- 'key': {'required': False},
- 'value': {'required': True, 'type': 'str'},
- 'timeout': {'default': 5, 'type': 'int'},
- }
-
- module = AnsibleModule(argument_spec=argument_spec,
- supports_check_mode=True)
-
- result = {'changed': False}
-
- # We add ovs-vsctl to module_params to later build up templatized commands
- module.params["ovs-vsctl"] = module.get_bin_path("ovs-vsctl", True)
-
- want = map_params_to_obj(module)
- have = map_config_to_obj(module)
-
- commands = map_obj_to_commands(want, have, module)
- result['commands'] = commands
-
- if commands:
- if not module.check_mode:
- for c in commands:
- module.run_command(c, check_rc=True)
- result['changed'] = True
-
- module.exit_json(**result)
-
-
-if __name__ == '__main__':
- main()