diff --git a/lib/ansible/modules/network/openswitch/ops_command.py b/lib/ansible/modules/network/openswitch/ops_command.py index b0354ba126c..27a668ff203 100644 --- a/lib/ansible/modules/network/openswitch/ops_command.py +++ b/lib/ansible/modules/network/openswitch/ops_command.py @@ -24,7 +24,7 @@ author: "Peter sprygada (@privateip)" short_description: Run arbitrary commands on OpenSwitch devices. description: - Sends arbitrary commands to an OpenSwitch node and returns the results - read from the device. The M(ops_command) module includes an + read from the device. This module includes an argument that will cause the module to wait for a specific condition before returning or timing out if the condition is not met. extends_documentation_fragment: openswitch @@ -42,7 +42,7 @@ options: - List of conditions to evaluate against the output of the command. The task will wait for a each condition to be true before moving forward. If the conditional is not true - within the configured number of retries, the task fails. + within the configured number of I(retries), the task fails. See examples. required: false default: null @@ -51,12 +51,12 @@ options: - Specifies the number of retries a command should by tried before it is considered failed. The command is run on the target device every retry and evaluated against the - waitfor conditions. + I(waitfor) conditions. required: false default: 10 interval: description: - - Configures the interval in seconds to wait between retries + - Configures the interval in seconds to wait between I(retries) of the command. If the command does not pass the specified conditions, the interval indicates how long to wait before trying the command again. @@ -104,12 +104,14 @@ failed_conditions: import time + def to_lines(stdout): for item in stdout: if isinstance(item, basestring): item = str(item).split('\n') yield item + def main(): spec = dict( commands=dict(type='list'), @@ -163,4 +165,3 @@ from ansible.module_utils.netcfg import * from ansible.module_utils.openswitch import * if __name__ == '__main__': main() - diff --git a/lib/ansible/modules/network/openswitch/ops_config.py b/lib/ansible/modules/network/openswitch/ops_config.py index 56814fec280..37960038b2b 100644 --- a/lib/ansible/modules/network/openswitch/ops_config.py +++ b/lib/ansible/modules/network/openswitch/ops_config.py @@ -23,8 +23,8 @@ version_added: "2.1" author: "Peter sprygada (@privateip)" short_description: Manage OpenSwitch configuration using CLI description: - - OpenSwitch configurations use a simple block indent file sytanx - for segementing configuration into sections. This module provides + - OpenSwitch configurations use a simple block indent file syntax + for segmenting configuration into sections. This module provides an implementation for working with ops configuration sections in a deterministic way. extends_documentation_fragment: openswitch @@ -51,7 +51,7 @@ options: a change needs to be made. This allows the playbook designer the opportunity to perform configuration commands prior to pushing any changes without affecting how the set of commands are matched - against the system + against the system. required: false default: null after: @@ -80,7 +80,7 @@ options: the modified lines are pushed to the device in configuration mode. If the replace argument is set to I(block) then the entire command block is pushed to the device in configuration mode if any - line is not correct + line is not correct. required: false default: line choices: ['line', 'block'] @@ -100,8 +100,8 @@ options: against the contents of source. There are times when it is not desirable to have the task get the current running-config for every task in a playbook. The I(config) argument allows the - implementer to pass in the configuruation to use as the base - config for comparision. + implementer to pass in the configuration to use as the base + config for comparison. required: false default: null """ @@ -142,6 +142,7 @@ def get_config(module): config = module.config return config + def build_candidate(lines, parents, config, strategy): candidate = list() @@ -244,4 +245,3 @@ from ansible.module_utils.netcfg import * from ansible.module_utils.openswitch import * if __name__ == '__main__': main() - diff --git a/lib/ansible/modules/network/openswitch/ops_facts.py b/lib/ansible/modules/network/openswitch/ops_facts.py index d88f9aff3e5..df33ca8958e 100644 --- a/lib/ansible/modules/network/openswitch/ops_facts.py +++ b/lib/ansible/modules/network/openswitch/ops_facts.py @@ -32,21 +32,24 @@ options: description: - When enabled, this argument will collect the current running configuration from the remote device. If the - transport is C(rest) then the collected configuration will + C(transport=rest) then the collected configuration will be the full system configuration. required: false + choices: + - true + - false default: false endpoints: description: - Accepts a list of endpoints to retrieve from the remote device using the REST API. The endpoints should be valid - endpoints availble on the device. This argument is only - valid when the transport is C(rest). + endpoints available on the device. This argument is only + valid when the C(transport=rest). required: false default: null notes: - The use of the REST transport is still experimental until it is - fully implemented + fully implemented. """ EXAMPLES = """ @@ -91,12 +94,14 @@ endpoints: """ import re + def get(module, url, expected_status=200): response = module.connection.get(url) if response.headers['status'] != expected_status: module.fail_json(**response.headers) return response + def get_config(module): if module.params['transport'] == 'ssh': rc, out, err = module.run_command('vtysh -c "show running-config"') @@ -108,6 +113,7 @@ def get_config(module): response = module.connection.send('show running-config') return response[0] + def get_facts(module): if module.params['transport'] == 'rest': response = get(module, '/system') @@ -167,4 +173,3 @@ from ansible.module_utils.openswitch import * if __name__ == '__main__': main() - diff --git a/lib/ansible/modules/network/openswitch/ops_template.py b/lib/ansible/modules/network/openswitch/ops_template.py index 974048a65ff..644e103e2ee 100644 --- a/lib/ansible/modules/network/openswitch/ops_template.py +++ b/lib/ansible/modules/network/openswitch/ops_template.py @@ -62,8 +62,8 @@ options: against the contents of source. There are times when it is not desirable to have the task get the current running-config for every task in a playbook. The I(config) argument allows the - implementer to pass in the configuruation to use as the base - config for comparision. + implementer to pass in the configuration to use as the base + config for comparison. required: false default: null """ @@ -97,6 +97,7 @@ responses: """ import copy + def compare(this, other): parents = [item.text for item in this.parents] for entry in other: @@ -104,6 +105,7 @@ def compare(this, other): return None return this + def expand(obj, queue): block = [item.raw for item in obj.parents] block.append(obj.raw) @@ -117,23 +119,27 @@ def expand(obj, queue): if c.raw not in current_level: current_level[c.raw] = collections.OrderedDict() + def flatten(data, obj): for k, v in data.items(): obj.append(k) flatten(v, obj) return obj + def get_config(module): config = module.params['config'] or dict() if not config and not module.params['force']: config = module.config return config + def sort(val): if isinstance(val, (list, set)): return sorted(val) return val + def diff(this, other, path=None): updates = list() path = path or list() @@ -152,6 +158,7 @@ def diff(this, other, path=None): updates.append((list(path), key, value, other_value)) return updates + def merge(changeset, config=None): config = config or dict() for path, key, value, _ in changeset: @@ -163,6 +170,7 @@ def merge(changeset, config=None): current_level[key] = value return config + def main(): """ main entry point for module execution """ @@ -242,4 +250,3 @@ from ansible.module_utils.openswitch import * if __name__ == '__main__': main() -