summaryrefslogtreecommitdiff
path: root/lib/ansible/modules/network/ovs/openvswitch_bridge.py
diff options
context:
space:
mode:
Diffstat (limited to 'lib/ansible/modules/network/ovs/openvswitch_bridge.py')
-rw-r--r--lib/ansible/modules/network/ovs/openvswitch_bridge.py274
1 files changed, 0 insertions, 274 deletions
diff --git a/lib/ansible/modules/network/ovs/openvswitch_bridge.py b/lib/ansible/modules/network/ovs/openvswitch_bridge.py
deleted file mode 100644
index 8a2d7667d7..0000000000
--- a/lib/ansible/modules/network/ovs/openvswitch_bridge.py
+++ /dev/null
@@ -1,274 +0,0 @@
-#!/usr/bin/python
-# coding: utf-8 -*-
-
-# (c) 2013, David Stygstra <david.stygstra@gmail.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_bridge
-version_added: 1.4
-author: "David Stygstra (@stygstra)"
-short_description: Manage Open vSwitch bridges
-requirements: [ ovs-vsctl ]
-description:
- - Manage Open vSwitch bridges
-options:
- bridge:
- required: true
- description:
- - Name of bridge or fake bridge to manage
- parent:
- version_added: "2.3"
- description:
- - Bridge parent of the fake bridge to manage
- vlan:
- version_added: "2.3"
- description:
- - The VLAN id of the fake bridge to manage (must be between 0 and
- 4095). This parameter is required if I(parent) parameter is set.
- state:
- default: "present"
- choices: [ present, absent ]
- description:
- - Whether the bridge should exist
- timeout:
- default: 5
- description:
- - How long to wait for ovs-vswitchd to respond
- external_ids:
- version_added: 2.0
- description:
- - A dictionary of external-ids. Omitting this parameter is a No-op.
- To clear all external-ids pass an empty value.
- fail_mode:
- version_added: 2.0
- choices : [secure, standalone]
- description:
- - Set bridge fail-mode. The default value (None) is a No-op.
- set:
- version_added: 2.3
- description:
- - Run set command after bridge configuration. This parameter is
- non-idempotent, play will always return I(changed) state if
- present
-'''
-
-EXAMPLES = '''
-# Create a bridge named br-int
-- openvswitch_bridge:
- bridge: br-int
- state: present
-
-# Create a fake bridge named br-int within br-parent on the VLAN 405
-- openvswitch_bridge:
- bridge: br-int
- parent: br-parent
- vlan: 405
- state: present
-
-# Create an integration bridge
-- openvswitch_bridge:
- bridge: br-int
- state: present
- fail_mode: secure
- args:
- external_ids:
- bridge-id: br-int
-'''
-
-from ansible.module_utils.basic import AnsibleModule
-from ansible.module_utils.six import iteritems
-
-
-def _fail_mode_to_str(text):
- if not text:
- return None
- else:
- return text.strip()
-
-
-def _external_ids_to_dict(text):
- if not text:
- return None
- else:
- d = {}
-
- for l in text.splitlines():
- if l:
- k, v = l.split('=')
- d[k] = v
-
- return d
-
-
-def map_obj_to_commands(want, have, module):
- commands = list()
-
- if module.params['state'] == 'absent':
- if have:
- templatized_command = ("%(ovs-vsctl)s -t %(timeout)s del-br"
- " %(bridge)s")
- command = templatized_command % module.params
- commands.append(command)
- else:
- if have:
- if want['fail_mode'] != have['fail_mode']:
- templatized_command = ("%(ovs-vsctl)s -t %(timeout)s"
- " set-fail-mode %(bridge)s"
- " %(fail_mode)s")
- command = templatized_command % module.params
- commands.append(command)
-
- if want['external_ids'] != have['external_ids']:
- templatized_command = ("%(ovs-vsctl)s -t %(timeout)s"
- " br-set-external-id %(bridge)s")
- command = templatized_command % module.params
- if want['external_ids']:
- for k, v in iteritems(want['external_ids']):
- if (k not in have['external_ids']
- or want['external_ids'][k] != have['external_ids'][k]):
- command += " " + k + " " + v
- commands.append(command)
-
- if want['vlan'] and want['vlan'] != have['vlan']:
- templatized_command = ("%(ovs-vsctl)s -t %(timeout)s"
- " set port %(bridge)s tag=%(vlan)s")
- command = templatized_command % module.params
- commands.append(command)
- else:
- templatized_command = ("%(ovs-vsctl)s -t %(timeout)s add-br"
- " %(bridge)s")
- command = templatized_command % module.params
-
- if want['parent']:
- templatized_command = "%(parent)s %(vlan)s"
- command += " " + templatized_command % module.params
-
- if want['set']:
- templatized_command = " -- set %(set)s"
- command += templatized_command % module.params
-
- commands.append(command)
-
- if want['fail_mode']:
- templatized_command = ("%(ovs-vsctl)s -t %(timeout)s"
- " set-fail-mode %(bridge)s"
- " %(fail_mode)s")
- command = templatized_command % module.params
- commands.append(command)
-
- if want['external_ids']:
- for k, v in iteritems(want['external_ids']):
- templatized_command = ("%(ovs-vsctl)s -t %(timeout)s"
- " br-set-external-id %(bridge)s")
- command = templatized_command % module.params
- command += " " + k + " " + v
- commands.append(command)
-
- return commands
-
-
-def map_config_to_obj(module):
- templatized_command = "%(ovs-vsctl)s -t %(timeout)s list-br"
- command = templatized_command % module.params
- rc, out, err = module.run_command(command, check_rc=True)
- if rc != 0:
- module.fail_json(msg=err)
-
- obj = {}
-
- if module.params['bridge'] in out.splitlines():
- obj['bridge'] = module.params['bridge']
-
- templatized_command = ("%(ovs-vsctl)s -t %(timeout)s br-to-parent"
- " %(bridge)s")
- command = templatized_command % module.params
- rc, out, err = module.run_command(command, check_rc=True)
- obj['parent'] = out.strip()
-
- templatized_command = ("%(ovs-vsctl)s -t %(timeout)s br-to-vlan"
- " %(bridge)s")
- command = templatized_command % module.params
- rc, out, err = module.run_command(command, check_rc=True)
- obj['vlan'] = out.strip()
-
- templatized_command = ("%(ovs-vsctl)s -t %(timeout)s get-fail-mode"
- " %(bridge)s")
- command = templatized_command % module.params
- rc, out, err = module.run_command(command, check_rc=True)
- obj['fail_mode'] = _fail_mode_to_str(out)
-
- templatized_command = ("%(ovs-vsctl)s -t %(timeout)s br-get-external-id"
- " %(bridge)s")
- command = templatized_command % module.params
- rc, out, err = module.run_command(command, check_rc=True)
- obj['external_ids'] = _external_ids_to_dict(out)
-
- return obj
-
-
-def map_params_to_obj(module):
- obj = {
- 'bridge': module.params['bridge'],
- 'parent': module.params['parent'],
- 'vlan': module.params['vlan'],
- 'fail_mode': module.params['fail_mode'],
- 'external_ids': module.params['external_ids'],
- 'set': module.params['set']
- }
-
- return obj
-
-
-def main():
- """ Entry point. """
- argument_spec = {
- 'bridge': {'required': True},
- 'parent': {'default': None},
- 'vlan': {'default': None, 'type': 'int'},
- 'state': {'default': 'present', 'choices': ['present', 'absent']},
- 'timeout': {'default': 5, 'type': 'int'},
- 'external_ids': {'default': None, 'type': 'dict'},
- 'fail_mode': {'default': None},
- 'set': {'required': False, 'default': None}
- }
-
- required_if = [('parent', not None, ('vlan',))]
-
- module = AnsibleModule(argument_spec=argument_spec,
- required_if=required_if,
- 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()