def main(): module_args = dict(vlan_id=dict(type='int', required=True), name=dict(type='str', default=None), description=dict(type='str', default=None), admin_state=dict(type='str', default=None, choices=[None, 'up', 'down']), state=dict(type='str', default='create', choices=['create', 'delete', 'update'])) aruba_ansible_module = ArubaAnsibleModule(module_args=module_args) vlan_id = aruba_ansible_module.module.params['vlan_id'] vlan_name = aruba_ansible_module.module.params['name'] description = aruba_ansible_module.module.params['description'] admin_state = aruba_ansible_module.module.params['admin_state'] state = aruba_ansible_module.module.params['state'] vlan = VLAN() if state == 'delete': aruba_ansible_module = vlan.delete_vlan(aruba_ansible_module, vlan_id) if state == 'create': aruba_ansible_module = vlan.create_vlan(aruba_ansible_module, vlan_id) if vlan_name is not None: name = vlan_name else: name = "VLAN " + str(vlan_id) if admin_state is None: admin_state = 'up' vlan_fields = {"name": name, "admin": admin_state, "type": "static"} if description is not None: vlan_fields["description"] = description aruba_ansible_module = vlan.update_vlan_fields(aruba_ansible_module, vlan_id, vlan_fields, update_type='insert') if state == 'update': vlan_fields = {} if admin_state is not None: vlan_fields['admin'] = admin_state if description is not None: vlan_fields['description'] = description if state is not None: vlan_fields['state'] = state aruba_ansible_module = vlan.update_vlan_fields(aruba_ansible_module, vlan_id, vlan_fields, update_type='update') aruba_ansible_module.update_switch_config()
def main(): module_args = dict( vlan_id=dict(type='str', required=True), admin_state=dict(type='str', required=False, choices=['up', 'down']), state=dict(default='create', choices=['create', 'delete', 'update']), ipv4=dict(type='list', default=None), description=dict(type='str', default=None), ipv6=dict(type='list', default=None), vrf=dict(type='str', default=None), ip_helper_address=dict(type='list', default=None), active_gateway_ip=dict(type='str', default=None), active_gateway_mac_v4=dict(type='str', default=None), ) aruba_ansible_module = ArubaAnsibleModule(module_args) vlan_id = aruba_ansible_module.module.params['vlan_id'] admin_state = aruba_ansible_module.module.params['admin_state'] ipv4 = aruba_ansible_module.module.params['ipv4'] ipv6 = aruba_ansible_module.module.params['ipv6'] vrf = aruba_ansible_module.module.params['vrf'] description = aruba_ansible_module.module.params['description'] ip_helper_address = aruba_ansible_module.module.params['ip_helper_address'] active_gateway_ip = aruba_ansible_module.module.params['active_gateway_ip'] active_gateway_mac_v4 = aruba_ansible_module.module.params[ 'active_gateway_mac_v4'] # NOQA state = aruba_ansible_module.module.params['state'] vlan = VLAN() port = Port() interface = Interface() vlan_interface_id = "vlan" + vlan_id if not vlan.check_vlan_exist(aruba_ansible_module, vlan_id): aruba_ansible_module.module.fail_json(msg="VLAN {} does not exist. " "VLAN needs to be created " "before adding or deleting " "interfaces".format(vlan_id)) if state == 'create': aruba_ansible_module = port.create_port(aruba_ansible_module, vlan_interface_id) aruba_ansible_module = interface.create_interface( aruba_ansible_module, vlan_interface_id) if admin_state is None: admin_state = 'up' user_config = { "admin": admin_state, } interface_fields = { "name": vlan_interface_id, "type": "vlan", "user_config": user_config } aruba_ansible_module = interface.update_interface_fields( aruba_ansible_module, vlan_interface_id, interface_fields) # NOQA if vrf is not None: vrf_name = vrf else: vrf_name = "default" port_fields = { "interfaces": [vlan_interface_id], "vlan_tag": vlan_id, "vrf": vrf_name, "admin": admin_state } aruba_ansible_module = port.update_port_fields(aruba_ansible_module, vlan_interface_id, port_fields) if (state == 'create') or (state == 'update'): if not port.check_port_exists(aruba_ansible_module, vlan_interface_id): aruba_ansible_module.module.fail_json(msg="VLAN interface does not" " exist") if admin_state is not None: port_fields = {"admin": admin_state} user_config = {"admin": admin_state} interface_fields = {"user_config": user_config} aruba_ansible_module = port.update_port_fields(aruba_ansible_module, vlan_interface_id, port_fields) aruba_ansible_module = interface.update_interface_fields( aruba_ansible_module, vlan_interface_id, interface_fields) # NOQA if description is not None: port_fields = {"description": description} aruba_ansible_module = port.update_port_fields( aruba_ansible_module, vlan_interface_id, port_fields) # NOQA if ipv4 is not None: l3_interface = L3_Interface() aruba_ansible_module = l3_interface.update_interface_ipv4_address( aruba_ansible_module, vlan_interface_id, ipv4) # NOQA if ipv6 is not None: l3_interface = L3_Interface() aruba_ansible_module = l3_interface.update_interface_ipv6_address( aruba_ansible_module, vlan_interface_id, ipv6) # NOQA if ip_helper_address is not None: l3_interface = L3_Interface() if vrf is None: vrf = "default" aruba_ansible_module = l3_interface.update_interface_ip_helper_address( aruba_ansible_module, vrf, vlan_interface_id, ip_helper_address) # NOQA if vrf is not None: l3_interface = L3_Interface() aruba_ansible_module = l3_interface.update_interface_vrf_details_from_l3( aruba_ansible_module, vrf, vlan_interface_id, update_type="insert") # NOQA if (active_gateway_ip is not None) and (active_gateway_mac_v4 is None): aruba_ansible_module.module.fail_json( msg= " Both active_gateway_ip and active_gateway_mac_v4 are required for configure active gateway." ) # NOQA elif (active_gateway_ip is None) and (active_gateway_mac_v4 is not None): # NOQA aruba_ansible_module.module.fail_json( msg= " Both active_gateway_ip and active_gateway_mac_v4 are required for configure active gateway." ) # NOQA elif (active_gateway_ip is not None) and (active_gateway_mac_v4 is not None): # NOQA port_fields = { "vsx_virtual_ip4": active_gateway_ip, "vsx_virtual_gw_mac_v4": active_gateway_mac_v4 } aruba_ansible_module = port.update_port_fields( aruba_ansible_module, vlan_interface_id, port_fields) # NOQA if state == 'delete': aruba_ansible_module = port.delete_port(aruba_ansible_module, vlan_interface_id) aruba_ansible_module = interface.delete_interface( aruba_ansible_module, vlan_interface_id) aruba_ansible_module.update_switch_config()
def main(): module_args = dict(acl_name=dict(type='str', required=True), acl_type=dict(type='str', required=True, choices=['ipv4', 'ipv6', 'mac']), acl_vlan_list=dict(type='list', required=True), acl_direction=dict(type='str', default='in', choices=['in', 'out']), state=dict(type='str', default='create', choices=['create', 'delete'])) # Version management try: from ansible.module_utils.aoscx_pyaoscx import Session from pyaoscx.session import Session as Pyaoscx_Session from pyaoscx.device import Device USE_PYAOSCX_SDK = True except ImportError: USE_PYAOSCX_SDK = False # Use PYAOSCX SDK if USE_PYAOSCX_SDK: from ansible.module_utils.basic import AnsibleModule # ArubaModule ansible_module = AnsibleModule(argument_spec=module_args, supports_check_mode=True) # Session session = Session(ansible_module) # Set Variables acl_name = ansible_module.params['acl_name'] acl_vlan_list = ansible_module.params['acl_vlan_list'] # NOQA acl_type = ansible_module.params['acl_type'] acl_direction = ansible_module.params['acl_direction'] state = ansible_module.params['state'] result = dict(changed=False) if ansible_module.check_mode: ansible_module.exit_json(**result) # Get session serialized information session_info = session.get_session() # Create pyaoscx.session object s = Pyaoscx_Session.from_session(session_info['s'], session_info['url']) # Create a Device Object device = Device(s) for vlan_name in acl_vlan_list: if state == 'delete': # Create VLAN Object vlan = device.vlan(vlan_name) # Delete acl if acl_direction == 'in': vlan.detach_acl_in(acl_name, acl_type) if acl_direction == 'out': vlan.detach_acl_out(acl_name, acl_type) # Changed result['changed'] = True if state == 'create' or state == 'update': # Create VLAN Object vlan = device.vlan(vlan_name) # Verify if interface was create if vlan.was_modified(): # Changed result['changed'] = True # Set variables modified_op1 = False modified_op2 = False # Update ACL inside VLAN if acl_direction == 'in': modified_op1 = vlan.attach_acl_in(acl_name, acl_type) if acl_direction == 'out': modified_op2 = vlan.attach_acl_out(acl_name, acl_type) if modified_op1 or modified_op2: # Changed result['changed'] = True # Exit ansible_module.exit_json(**result) # Use Older version else: aruba_ansible_module = ArubaAnsibleModule(module_args) acl_name = aruba_ansible_module.module.params['acl_name'] acl_vlan_list = aruba_ansible_module.module.params['acl_vlan_list'] acl_type = aruba_ansible_module.module.params['acl_type'] acl_direction = aruba_ansible_module.module.params['acl_direction'] state = aruba_ansible_module.module.params['state'] acl_type_prefix = "" if acl_type == "ipv4": acl_type_prefix = "aclv4" elif acl_type == "ipv6": acl_type_prefix = "aclv6" elif acl_type == "mac": acl_type_prefix = "aclmac" vlan = VLAN() for vlan_id in acl_vlan_list: field1 = '{type}_{dir}_cfg'.format(type=acl_type_prefix, dir=acl_direction) value1 = '{name}/{type}'.format(name=acl_name, type=acl_type) field2 = '{type}_{dir}_cfg_version'.format(type=acl_type_prefix, dir=acl_direction) value2 = randint(-900719925474099, 900719925474099) vlan_fields = {field1: value1, field2: value2} if (state == 'create') or (state == 'update'): existing_values = vlan.get_vlan_fields_values( aruba_ansible_module, vlan_id, [field1]) if field1 in existing_values.keys(): if existing_values[field1] != vlan_fields[field1]: aruba_ansible_module = vlan.update_vlan_fields( aruba_ansible_module, vlan_id, vlan_fields, update_type='insert') # NOQA else: aruba_ansible_module = vlan.update_vlan_fields( aruba_ansible_module, vlan_id, vlan_fields, update_type='insert') # NOQA if state == 'create': aruba_ansible_module.module.log( msg=" Inserted ACL {name} of " "type {type} to VLAN {id}" "".format(name=acl_name, type=acl_type, id=vlan_id)) # NOQA if state == 'update': aruba_ansible_module.module.log( msg=" Updated ACL {name} of " "type {type} to VLAN {id}" "".format(name=acl_name, type=acl_type, id=vlan_id)) # NOQA elif state == 'delete': aruba_ansible_module = vlan.update_vlan_fields( aruba_ansible_module, vlan_id, vlan_fields, update_type='delete') # NOQA aruba_ansible_module.module.log( msg="Deleted ACL {name} of type " "{type} from VLAN {id}" "".format(name=acl_name, type=acl_type, id=vlan_id)) # NOQA aruba_ansible_module.update_switch_config()
def main(): module_args = dict(acl_name=dict(type='str', required=True), acl_type=dict(type='str', required=True, choices=['ipv4', 'ipv6', 'mac']), acl_vlan_list=dict(type='list', required=True), acl_direction=dict(type='str', default='in', choices=['in', 'out']), state=dict(type='str', default='create', choices=['create', 'delete'])) aruba_ansible_module = ArubaAnsibleModule(module_args) acl_name = aruba_ansible_module.module.params['acl_name'] acl_vlan_list = aruba_ansible_module.module.params['acl_vlan_list'] acl_type = aruba_ansible_module.module.params['acl_type'] acl_direction = aruba_ansible_module.module.params['acl_direction'] state = aruba_ansible_module.module.params['state'] acl_type_prefix = "" if acl_type == "ipv4": acl_type_prefix = "aclv4" elif acl_type == "ipv6": acl_type_prefix = "aclv6" elif acl_type == "mac": acl_type_prefix = "aclmac" vlan = VLAN() for vlan_id in acl_vlan_list: field1 = '{type}_{dir}_cfg'.format(type=acl_type_prefix, dir=acl_direction) value1 = '{name}/{type}'.format(name=acl_name, type=acl_type) field2 = '{type}_{dir}_cfg_version'.format(type=acl_type_prefix, dir=acl_direction) value2 = randint(-900719925474099, 900719925474099) vlan_fields = {field1: value1, field2: value2} if (state == 'create') or (state == 'update'): existing_values = vlan.get_vlan_fields_values( aruba_ansible_module, vlan_id, [field1]) if field1 in existing_values.keys(): if existing_values[field1] != vlan_fields[field1]: aruba_ansible_module = vlan.update_vlan_fields( aruba_ansible_module, vlan_id, vlan_fields, update_type='insert') # NOQA else: aruba_ansible_module = vlan.update_vlan_fields( aruba_ansible_module, vlan_id, vlan_fields, update_type='insert') # NOQA if state == 'create': aruba_ansible_module.module.log(msg=" Inserted ACL {name} of " "type {type} to VLAN {id}" "".format(name=acl_name, type=acl_type, id=vlan_id)) # NOQA if state == 'update': aruba_ansible_module.module.log(msg=" Updated ACL {name} of " "type {type} to VLAN {id}" "".format(name=acl_name, type=acl_type, id=vlan_id)) # NOQA elif state == 'delete': aruba_ansible_module = vlan.update_vlan_fields( aruba_ansible_module, vlan_id, vlan_fields, update_type='delete') # NOQA aruba_ansible_module.module.log(msg="Deleted ACL {name} of type " "{type} from VLAN {id}" "".format(name=acl_name, type=acl_type, id=vlan_id)) # NOQA aruba_ansible_module.update_switch_config()
def main(): module_args = dict(vlan_id=dict(type='int', required=True), name=dict(type='str', default=None), description=dict(type='str', default=None), admin_state=dict(type='str', default=None, choices=['up', 'down']), state=dict(type='str', default='create', choices=['create', 'delete', 'update'])) # Version management try: from ansible.module_utils.aoscx_pyaoscx import Session from pyaoscx.session import Session as Pyaoscx_Session from pyaoscx.device import Device USE_PYAOSCX_SDK = True except ImportError: USE_PYAOSCX_SDK = False # Use PYAOSCX SDK if USE_PYAOSCX_SDK: from ansible.module_utils.basic import AnsibleModule # ArubaModule ansible_module = AnsibleModule(argument_spec=module_args, supports_check_mode=True) # Session session = Session(ansible_module) # Set Variables vlan_id = ansible_module.params['vlan_id'] vlan_name = ansible_module.params['name'] if vlan_name is None: vlan_name = "VLAN{vlan_id}".format(vlan_id=vlan_id) description = ansible_module.params['description'] admin_state = ansible_module.params['admin_state'] state = ansible_module.params['state'] result = dict(changed=False) if ansible_module.check_mode: ansible_module.exit_json(**result) # Get session serialized information session_info = session.get_session() # Create pyaoscx.session object s = Pyaoscx_Session.from_session(session_info['s'], session_info['url']) # Create a Device Object device = Device(s) if state == 'delete': # Create Vlan Object vlan = device.vlan(vlan_id) # Delete it vlan.delete() # Changed result['changed'] = True elif state == 'update' or state == 'create': # Create Vlan with incoming attributes, in case VLAN does not exist # inside device vlan = device.vlan(vlan_id, vlan_name, description, "static", admin_state) if vlan.was_modified(): # Changed result['changed'] = True # Exit ansible_module.exit_json(**result) # Use Older version else: aruba_ansible_module = ArubaAnsibleModule(module_args=module_args) vlan_id = aruba_ansible_module.module.params['vlan_id'] vlan_name = aruba_ansible_module.module.params['name'] description = aruba_ansible_module.module.params['description'] admin_state = aruba_ansible_module.module.params['admin_state'] state = aruba_ansible_module.module.params['state'] vlan = VLAN() if state == 'delete': aruba_ansible_module = vlan.delete_vlan(aruba_ansible_module, vlan_id) if state == 'create': aruba_ansible_module = vlan.create_vlan(aruba_ansible_module, vlan_id) if vlan_name is not None: name = vlan_name else: name = "VLAN " + str(vlan_id) if admin_state is None: admin_state = 'up' vlan_fields = { "name": name, "admin": admin_state, "type": "static" } if description is not None: vlan_fields["description"] = description aruba_ansible_module = vlan.update_vlan_fields( aruba_ansible_module, vlan_id, vlan_fields, update_type='insert') if state == 'update': vlan_fields = {} if admin_state is not None: vlan_fields['admin'] = admin_state if description is not None: vlan_fields['description'] = description if state is not None: vlan_fields['state'] = state aruba_ansible_module = vlan.update_vlan_fields( aruba_ansible_module, vlan_id, vlan_fields, update_type='update') aruba_ansible_module.update_switch_config()
def main(): module_args = dict( interface=dict(type='str', required=True), admin_state=dict(type='str', default='up', choices=['up', 'down']), description=dict(type='str', default=None), vlan_mode=dict(type='str', default=None, choices=['access', 'trunk']), vlan_access=dict(type='str', default=None), vlan_trunks=dict(type='list', default=None), trunk_allowed_all=dict(type='bool', default=None), native_vlan_id=dict(type='str', default=None), native_vlan_tag=dict(type='bool', default=None), interface_qos_schedule_profile=dict(type='dict', default=None), interface_qos_rate=dict(type='dict', default=None), state=dict(type='str', default='create', choices=['create', 'delete', 'update']) ) aruba_ansible_module = ArubaAnsibleModule(module_args) params = {} for param in aruba_ansible_module.module.params.keys(): params[param] = aruba_ansible_module.module.params[param] state = aruba_ansible_module.module.params['state'] admin_state = aruba_ansible_module.module.params['admin_state'] interface_name = aruba_ansible_module.module.params['interface'] description = aruba_ansible_module.module.params['description'] interface_qos_rate = aruba_ansible_module.module.params[ 'interface_qos_rate'] interface_qos_schedule_profile = aruba_ansible_module.module.params[ 'interface_qos_schedule_profile'] l2_interface = L2_Interface() interface = Interface() vlan = VLAN() interface_vlan_dict = {} if params['state'] == 'create': aruba_ansible_module = l2_interface.create_l2_interface( aruba_ansible_module, interface_name) if params['vlan_mode'] == 'access': interface_vlan_dict['vlan_mode'] = 'access' if params['vlan_access'] is None: interface_vlan_dict['vlan_tag'] = 1 elif vlan.check_vlan_exist(aruba_ansible_module, params['vlan_access']): interface_vlan_dict['vlan_tag'] = params['vlan_access'] else: aruba_ansible_module.module.fail_json(msg="VLAN {id} is not " "configured" "".format(id=params['vlan_access'])) # NOQA elif params['vlan_mode'] == 'trunk': if params['native_vlan_id']: if params['native_vlan_id'] == '1': interface_vlan_dict['vlan_tag'] = '1' if params['native_vlan_tag']: interface_vlan_dict['vlan_mode'] = 'native-tagged' else: interface_vlan_dict['vlan_mode'] = 'native-untagged' elif vlan.check_vlan_exist(aruba_ansible_module, params['native_vlan_id']): if params['native_vlan_tag']: interface_vlan_dict['vlan_mode'] = 'native-tagged' else: interface_vlan_dict['vlan_mode'] = 'native-untagged' interface_vlan_dict['vlan_tag'] = params['native_vlan_id'] else: aruba_ansible_module.module.fail_json( msg="VLAN {id} is not configured".format( id=params['native_vlan_id'])) elif params['native_vlan_tag']: interface_vlan_dict['vlan_mode'] = 'native-tagged' interface_vlan_dict['vlan_tag'] = '1' else: interface_vlan_dict['vlan_mode'] = 'native-untagged' interface_vlan_dict['vlan_tag'] = '1' if not params['trunk_allowed_all'] and params['vlan_trunks']: if 'vlan_mode' not in interface_vlan_dict.keys(): interface_vlan_dict['vlan_mode'] = 'native-untagged' interface_vlan_dict['vlan_trunks'] = [] for id in params['vlan_trunks']: if vlan.check_vlan_exist(aruba_ansible_module, id): interface_vlan_dict['vlan_trunks'].append(str(id)) else: aruba_ansible_module.module.fail_json( msg="VLAN {id} is not configured".format(id=id)) elif params['trunk_allowed_all']: if 'vlan_mode' not in interface_vlan_dict.keys(): interface_vlan_dict['vlan_mode'] = 'native-untagged' else: interface_vlan_dict['vlan_mode'] = 'access' interface_vlan_dict['vlan_tag'] = 1 aruba_ansible_module = l2_interface.update_interface_vlan_details( aruba_ansible_module, interface_name, interface_vlan_dict) if state == 'delete': aruba_ansible_module = l2_interface.delete_l2_interface( aruba_ansible_module, interface_name) if (state == 'update') or (state == 'create'): if admin_state is not None: aruba_ansible_module = interface.update_interface_admin_state( aruba_ansible_module, interface_name, admin_state) if description is not None: aruba_ansible_module = interface.update_interface_description( aruba_ansible_module, interface_name, description) if interface_qos_rate is not None: aruba_ansible_module = l2_interface.update_interface_qos_rate( aruba_ansible_module, interface_name, interface_qos_rate) if interface_qos_schedule_profile is not None: aruba_ansible_module = l2_interface.update_interface_qos_profile( aruba_ansible_module, interface_name, interface_qos_schedule_profile) aruba_ansible_module.update_switch_config()
def main(): module_args = dict( vlan_id=dict(type='str', required=True), admin_state=dict(type='str', required=False, choices=['up', 'down']), state=dict(default='create', choices=['create', 'delete', 'update']), ipv4=dict(type='list', default=None), description=dict(type='str', default=None), ipv6=dict(type='list', default=None), vrf=dict(type='str', default=None), ip_helper_address=dict(type='list', default=None), active_gateway_ip=dict(type='str', default=None), active_gateway_mac_v4=dict(type='str', default=None), ) # Version management try: from ansible.module_utils.aoscx_pyaoscx import Session from pyaoscx.session import Session as Pyaoscx_Session from pyaoscx.device import Device USE_PYAOSCX_SDK = True except ImportError: USE_PYAOSCX_SDK = False if USE_PYAOSCX_SDK: from ansible.module_utils.basic import AnsibleModule # ArubaModule ansible_module = AnsibleModule(argument_spec=module_args, supports_check_mode=True) vlan_id = ansible_module.params['vlan_id'] admin_state = ansible_module.params['admin_state'] ipv4 = ansible_module.params['ipv4'] ipv6 = ansible_module.params['ipv6'] vrf = ansible_module.params['vrf'] description = ansible_module.params['description'] ip_helper_address = ansible_module.params['ip_helper_address'] # NOQA active_gateway_ip = ansible_module.params['active_gateway_ip'] active_gateway_mac_v4 = ansible_module.params['active_gateway_mac_v4'] state = ansible_module.params['state'] # Set IP variable as empty arrays if ipv4 == ['']: ipv4 = [] if ipv6 == ['']: ipv6 = [] # Session session = Session(ansible_module) # Set variables vlan_interface_id = "vlan" + vlan_id if admin_state is None: admin_state = 'up' if vrf is not None: vrf_name = vrf else: vrf_name = "default" # Set result var result = dict(changed=False) if ansible_module.check_mode: ansible_module.exit_json(**result) # Get session serialized information session_info = session.get_session() # Create pyaoscx.session object s = Pyaoscx_Session.from_session(session_info['s'], session_info['url']) # Create a Device Object device = Device(s) if state == 'delete': # Create Interface Object vlan_interface = device.interface(vlan_interface_id) # Delete it vlan_interface.delete() # Changed result['changed'] = True if state == 'create' or state == 'update': # Create Interface with incoming attributes vlan_interface = device.interface(vlan_interface_id) # Verify if interface was create if vlan_interface.was_modified(): # Changed result['changed'] = True # Configure SVI # Verify if object was changed modified_op = vlan_interface.configure_svi(vlan=int(vlan_id), ipv4=ipv4, ipv6=ipv6, vrf=vrf, description=description, user_config=admin_state) if active_gateway_ip is not None and active_gateway_mac_v4 is not None: modified_op2 = vlan_interface.set_active_gateaway( active_gateway_ip, active_gateway_mac_v4) modified_op = modified_op2 or modified_op if ip_helper_address is not None: # Create DHCP_Relay object dhcp_relay = device.dhcp_relay(vrf=vrf, port=vlan_interface_id) # Add helper addresses modified_dhcp_relay = dhcp_relay.add_ipv4_addresses( ip_helper_address) modified_op = modified_op or modified_dhcp_relay if modified_op: # Changed result['changed'] = True # Exit ansible_module.exit_json(**result) # Use Older version else: aruba_ansible_module = ArubaAnsibleModule(module_args) vlan_id = aruba_ansible_module.module.params['vlan_id'] admin_state = aruba_ansible_module.module.params['admin_state'] ipv4 = aruba_ansible_module.module.params['ipv4'] ipv6 = aruba_ansible_module.module.params['ipv6'] vrf = aruba_ansible_module.module.params['vrf'] description = aruba_ansible_module.module.params['description'] ip_helper_address = aruba_ansible_module.module.params[ 'ip_helper_address'] active_gateway_ip = aruba_ansible_module.module.params[ 'active_gateway_ip'] active_gateway_mac_v4 = aruba_ansible_module.module.params[ 'active_gateway_mac_v4'] # NOQA state = aruba_ansible_module.module.params['state'] vlan = VLAN() port = Port() interface = Interface() vlan_interface_id = "vlan" + vlan_id if not vlan.check_vlan_exist(aruba_ansible_module, vlan_id): aruba_ansible_module.module.fail_json( msg="VLAN {id} does not exist. " "VLAN needs to be created " "before adding or deleting " "interfaces" "".format(id=vlan_id)) if state == 'create': aruba_ansible_module = port.create_port(aruba_ansible_module, vlan_interface_id) aruba_ansible_module = interface.create_interface( aruba_ansible_module, vlan_interface_id, type='vlan') if admin_state is None: admin_state = 'up' user_config = { "admin": admin_state, } interface_fields = { "name": vlan_interface_id, "type": "vlan", "user_config": user_config } aruba_ansible_module = interface.update_interface_fields( aruba_ansible_module, vlan_interface_id, interface_fields) # NOQA if vrf is not None: vrf_name = vrf else: vrf_name = "default" port_fields = { "interfaces": [vlan_interface_id], "vlan_tag": vlan_id, "vrf": vrf_name, "admin": admin_state } aruba_ansible_module = port.update_port_fields( aruba_ansible_module, vlan_interface_id, port_fields) if (state == 'create') or (state == 'update'): if not port.check_port_exists(aruba_ansible_module, vlan_interface_id): aruba_ansible_module.module.fail_json( msg="VLAN interface does not" " exist") if admin_state is not None: port_fields = {"admin": admin_state} user_config = {"admin": admin_state} interface_fields = {"user_config": user_config} aruba_ansible_module = port.update_port_fields( aruba_ansible_module, vlan_interface_id, port_fields) aruba_ansible_module = interface.update_interface_fields( aruba_ansible_module, vlan_interface_id, interface_fields) # NOQA if description is not None: port_fields = {"description": description} aruba_ansible_module = port.update_port_fields( aruba_ansible_module, vlan_interface_id, port_fields) # NOQA if ipv4 is not None: l3_interface = L3_Interface() aruba_ansible_module = l3_interface.update_interface_ipv4_address( aruba_ansible_module, vlan_interface_id, ipv4) # NOQA if ipv6 is not None: l3_interface = L3_Interface() aruba_ansible_module = l3_interface.update_interface_ipv6_address( aruba_ansible_module, vlan_interface_id, ipv6) # NOQA if ip_helper_address is not None: l3_interface = L3_Interface() if vrf is None: vrf = "default" aruba_ansible_module = l3_interface.update_interface_ip_helper_address( aruba_ansible_module, vrf, vlan_interface_id, ip_helper_address) # NOQA if vrf is not None: l3_interface = L3_Interface() aruba_ansible_module = l3_interface.update_interface_vrf_details_from_l3( aruba_ansible_module, vrf, vlan_interface_id, update_type="insert") # NOQA if (active_gateway_ip is not None) and (active_gateway_mac_v4 is None): aruba_ansible_module.module.fail_json( msg= " Both active_gateway_ip and active_gateway_mac_v4 are required for configure active gateway." ) # NOQA elif (active_gateway_ip is None) and (active_gateway_mac_v4 is not None): # NOQA aruba_ansible_module.module.fail_json( msg= " Both active_gateway_ip and active_gateway_mac_v4 are required for configure active gateway." ) # NOQA elif (active_gateway_ip is not None) and (active_gateway_mac_v4 is not None): # NOQA port_fields = { "vsx_virtual_ip4": active_gateway_ip, "vsx_virtual_gw_mac_v4": active_gateway_mac_v4 } aruba_ansible_module = port.update_port_fields( aruba_ansible_module, vlan_interface_id, port_fields) # NOQA if state == 'delete': aruba_ansible_module = port.delete_port(aruba_ansible_module, vlan_interface_id) aruba_ansible_module = interface.delete_interface( aruba_ansible_module, vlan_interface_id, type='vlan') aruba_ansible_module.update_switch_config()