Server IP : 85.214.239.14 / Your IP : 18.220.49.32 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/netbox/netbox/plugins/modules/ |
Upload File : |
#!/usr/bin/python # -*- coding: utf-8 -*- # © 2020 Nokia # Licensed under the GNU General Public License v3.0 only # SPDX-License-Identifier: GPL-3.0-only from __future__ import absolute_import, division, print_function __metaclass__ = type DOCUMENTATION = r""" --- module: netbox_cable short_description: Create, update or delete cables within NetBox description: - Creates, updates or removes cables from NetBox notes: - Tags should be defined as a YAML list - This should be ran with connection C(local) and hosts C(localhost) author: - Tobias Groß (@toerb) requirements: - pynetbox version_added: '0.3.0' extends_documentation_fragment: - netbox.netbox.common options: data: type: dict required: true description: - Defines the cable configuration suboptions: termination_a_type: description: - The type of the termination a choices: - circuits.circuittermination - dcim.consoleport - dcim.consoleserverport - dcim.frontport - dcim.interface - dcim.powerfeed - dcim.poweroutlet - dcim.powerport - dcim.rearport required: true type: str termination_a: description: - The termination a required: true type: raw termination_b_type: description: - The type of the termination b choices: - circuits.circuittermination - dcim.consoleport - dcim.consoleserverport - dcim.frontport - dcim.interface - dcim.powerfeed - dcim.poweroutlet - dcim.powerport - dcim.rearport required: true type: str termination_b: description: - The termination b required: true type: raw type: description: - The type of the cable choices: - cat3 - cat5 - cat5e - cat6 - cat6a - cat7 - dac-active - dac-passive - mrj21-trunk - coaxial - mmf - mmf-om1 - mmf-om2 - mmf-om3 - mmf-om4 - smf - smf-os1 - smf-os2 - aoc - power required: false type: str status: description: - The status of the cable choices: - connected - planned - decommissioning required: false type: str label: description: - The label of the cable required: false type: str color: description: - The color of the cable required: false type: str length: description: - The length of the cable required: false type: float length_unit: description: - The unit in which the length of the cable is measured choices: - m - cm - ft - in required: false type: str description: description: - Description of the provider required: false type: str version_added: "3.10.0" comments: description: - Comments related to the provider required: false type: str version_added: "3.10.0" tags: description: - Any tags that the cable may need to be associated with required: false type: list elements: raw custom_fields: description: - Must exist in NetBox required: false type: dict version_added: "3.6.0" """ EXAMPLES = r""" - name: "Test NetBox modules" connection: local hosts: localhost gather_facts: False tasks: - name: Create cable within NetBox with only required information netbox.netbox.netbox_cable: netbox_url: http://netbox.local netbox_token: thisIsMyToken data: termination_a_type: dcim.interface termination_a: device: Test Nexus Child One name: Ethernet2/2 termination_b_type: dcim.interface termination_b: device: Test Nexus Child One name: Ethernet2/1 state: present - name: Update cable with other fields netbox.netbox.netbox_cable: netbox_url: http://netbox.local netbox_token: thisIsMyToken data: termination_a_type: dcim.interface termination_a: device: Test Nexus Child One name: Ethernet2/2 termination_b_type: dcim.interface termination_b: device: Test Nexus Child One name: Ethernet2/1 type: mmf-om4 status: planned label: label123 color: abcdef length: 30 length_unit: m tags: - foo state: present - name: Delete cable within netbox netbox.netbox.netbox_cable: netbox_url: http://netbox.local netbox_token: thisIsMyToken data: termination_a_type: dcim.interface termination_a: device: Test Nexus Child One name: Ethernet2/2 termination_b_type: dcim.interface termination_b: device: Test Nexus Child One name: Ethernet2/1 state: absent """ RETURN = r""" cable: description: Serialized object as created or already existent within NetBox returned: success (when I(state=present)) type: dict msg: description: Message indicating failure or info about what has been achieved returned: always type: str """ from ansible_collections.netbox.netbox.plugins.module_utils.netbox_utils import ( NetboxAnsibleModule, NETBOX_ARG_SPEC, ) from ansible_collections.netbox.netbox.plugins.module_utils.netbox_dcim import ( NetboxDcimModule, NB_CABLES, ) from copy import deepcopy def main(): """ Main entry point for module execution """ argument_spec = deepcopy(NETBOX_ARG_SPEC) argument_spec.update( dict( data=dict( type="dict", required=True, options=dict( termination_a_type=dict( required=True, choices=[ "circuits.circuittermination", "dcim.consoleport", "dcim.consoleserverport", "dcim.frontport", "dcim.interface", "dcim.powerfeed", "dcim.poweroutlet", "dcim.powerport", "dcim.rearport", ], type="str", ), termination_a=dict(required=True, type="raw"), termination_b_type=dict( required=True, choices=[ "circuits.circuittermination", "dcim.consoleport", "dcim.consoleserverport", "dcim.frontport", "dcim.interface", "dcim.powerfeed", "dcim.poweroutlet", "dcim.powerport", "dcim.rearport", ], type="str", ), termination_b=dict(required=True, type="raw"), type=dict( required=False, choices=[ "cat3", "cat5", "cat5e", "cat6", "cat6a", "cat7", "dac-active", "dac-passive", "mrj21-trunk", "coaxial", "mmf", "mmf-om1", "mmf-om2", "mmf-om3", "mmf-om4", "smf", "smf-os1", "smf-os2", "aoc", "power", ], type="str", ), status=dict( required=False, choices=["connected", "planned", "decommissioning"], type="str", ), label=dict(required=False, type="str"), color=dict(required=False, type="str"), length=dict(required=False, type="float"), length_unit=dict( required=False, choices=["m", "cm", "ft", "in"], type="str" ), description=dict(required=False, type="str"), comments=dict(required=False, type="str"), tags=dict(required=False, type="list", elements="raw"), custom_fields=dict(required=False, type="dict"), ), ), ) ) required_if = [ ( "state", "present", [ "termination_a_type", "termination_a", "termination_b_type", "termination_b", ], ), ( "state", "absent", [ "termination_a_type", "termination_a", "termination_b_type", "termination_b", ], ), ] module = NetboxAnsibleModule( argument_spec=argument_spec, supports_check_mode=True, required_if=required_if ) netbox_cable = NetboxDcimModule(module, NB_CABLES) netbox_cable.run() if __name__ == "__main__": # pragma: no cover main()