Server IP : 85.214.239.14 / Your IP : 18.222.60.144 Web Server : Apache/2.4.62 (Debian) System : Linux h2886529.stratoserver.net 4.9.0 #1 SMP Tue Jan 9 19:45:01 MSK 2024 x86_64 User : www-data ( 33) PHP Version : 7.4.18 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare, MySQL : OFF | cURL : OFF | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : OFF Directory : /lib/python3/dist-packages/ansible_collections/community/skydive/plugins/modules/ |
Upload File : |
#!/usr/bin/python # -*- coding: utf-8 -*- # (c) 2019, Ansible by Red Hat, 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 = r""" --- module: skydive_capture author: - Sumit Jaiswal (@sjaiswal) short_description: Module which manages flow capture on interfaces description: - This module manages flow capture on interfaces. The Gremlin expression is continuously evaluated which means that it is possible to define a capture on nodes that do not exist yet. - It is useful when you want to start a capture on all OpenvSwitch whatever the number of Skydive agents you will start. - While starting the capture, user can specify the capture name, capture description and capture type optionally. requirements: - skydive-client extends_documentation_fragment: - community.skydive.skydive options: query: description: - It's the complete gremlin query which the users can input, I(G.V().Has('Name', 'eth0', 'Type', 'device')), to create the capture. And, if the user directly inputs the gremlin query then user is not required to input any other module parameter as gremlin query takes care of creating the flow capture. required: false interface_name: description: - To define flow capture interface name. required: false type: description: - To define flow capture interface type. required: false capture_name: description: - To define flow capture name. required: false default: '' description: description: - Configures a text string to be associated with the instance of this object. default: '' extra_tcp_metric: description: - To define flow capture ExtraTCPMetric. type: bool default: false ip_defrag: description: - To define flow capture IPDefrag. type: bool default: false reassemble_tcp: description: - To define flow capture ReassembleTCP. type: bool default: false layer_key_mode: description: - To define flow capture Layer KeyMode. type: str default: L2 state: description: - State of the flow capture. If value is I(present) flow capture will be created else if it is I(absent) it will be deleted. default: present choices: - present - absent """ EXAMPLES = r""" - name: start a new flow capture directly from gremlin query community.skydive.skydive_capture: query: G.V().Has('Name', 'eth0', 'Type', 'device') state: present provider: endpoint: localhost:8082 username: admin password: admin - name: stop the flow capture directly from gremlin query community.skydive.skydive_capture: query: G.V().Has('Name', 'eth0', 'Type', 'device') state: absent provider: endpoint: localhost:8082 username: admin password: admin - name: start a new flow capture from user's input community.skydive.skydive_capture: interface_name: Node1 type: myhost capture_name: test_capture description: test description extra_tcp_metric: true ip_defrag: true reassemble_tcp: true state: present provider: endpoint: localhost:8082 username: admin password: admin - name: stop the flow capture community.skydive.skydive_capture: interface_name: Node1 type: myhost capture_name: test_capture description: test description extra_tcp_metric: true ip_defrag: true reassemble_tcp: true state: absent provider: endpoint: localhost:8082 username: admin password: admin """ RETURN = r""" # """ from ansible.module_utils.basic import AnsibleModule from ansible_collections.community.skydive.plugins.module_utils.network.skydive.api import ( skydive_flow_capture, ) def main(): """ Main entry point for module execution """ ib_spec = dict( query=dict(required=False, ib_req=True), interface_name=dict(required=False, ib_req=True), type=dict(required=False, ib_req=True), capture_name=dict(required=False, default="", ib_req=True), description=dict(default="", ib_req=True), extra_tcp_metric=dict( type="bool", required=False, ib_req=True, default=False ), ip_defrag=dict( type="bool", required=False, ib_req=True, default=False ), reassemble_tcp=dict( type="bool", required=False, ib_req=True, default=False ), layer_key_mode=dict(required=False, ib_req=True, default="L2"), ) argument_spec = dict( provider=dict(required=False), state=dict(default="present", choices=["present", "absent"]), ) argument_spec.update(ib_spec) argument_spec.update(skydive_flow_capture.provider_spec) module = AnsibleModule( argument_spec=argument_spec, supports_check_mode=True ) skydive_obj = skydive_flow_capture(module) result = skydive_obj.run(ib_spec) module.exit_json(**result) if __name__ == "__main__": main()