コード例 #1
0
    def update_interface_acl_details(self, aruba_ansible_module, interface_name, acl_name, acl_type, acl_direction, update_type="insert"):
        port = Port()

        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"

        field1 = '{}_{}_cfg'.format(acl_type_prefix, acl_direction)
        value1 = '{}/{}'.format(acl_name, acl_type)

        field2 = '{}_{}_cfg_version'.format(acl_type_prefix, acl_direction)
        value2 = randint(-900719925474099, 900719925474099)

        port_fields = {
            field1: value1,
            field2: value2
        }

        if (update_type == "insert") or (update_type == "update"):
            exisitng_values = port.get_port_field_values(aruba_ansible_module, interface_name, [field1])

            if exisitng_values.has_key(field1):
                if (exisitng_values[field1] != port_fields[field1]):
                    aruba_ansible_module = port.update_port_fields(aruba_ansible_module, interface_name, port_fields)
            else:
                aruba_ansible_module = port.update_port_fields(aruba_ansible_module, interface_name, port_fields)

        elif (update_type == 'delete'):
            aruba_ansible_module = port.delete_port_fields(aruba_ansible_module, interface_name, [field1, field2])

        return aruba_ansible_module
コード例 #2
0
    def update_interface_vrf_details_from_l3(self,
                                             aruba_ansible_module,
                                             vrf_name,
                                             interface_name,
                                             update_type="insert"):
        port = Port()
        vrf = VRF()
        if not port.check_port_exists(aruba_ansible_module, interface_name):
            aruba_ansible_module.module.fail_json(
                msg="Interface {} is not configured".format(interface_name))

        result = port.get_port_field_values(aruba_ansible_module,
                                            interface_name, ['vrf'])
        if 'vrf' in result.keys():
            if result['vrf'] != "" and result['vrf'] != vrf_name:
                aruba_ansible_module.module.fail_json(msg=(
                    "Interface {} is attached to VRF {}. Delete interface and recreate with VRF {}"
                    .format(interface_name, result['vrf'], vrf_name)))

        if not vrf.check_vrf_exists(aruba_ansible_module, vrf_name):
            if vrf_name != "default":
                aruba_ansible_module.module.fail_json(
                    msg="VRF {} does not exist".format(vrf_name))
            aruba_ansible_module = vrf.create_vrf(aruba_ansible_module,
                                                  vrf_name)

        port_field = {"vrf": vrf_name}

        aruba_ansible_module = port.update_port_fields(aruba_ansible_module,
                                                       interface_name,
                                                       port_field)

        return aruba_ansible_module
コード例 #3
0
 def check_if_l3_interface_possible(self, aruba_ansible_module, interface_name):
     port = Port()
     if port.check_port_exists(aruba_ansible_module, interface_name):
         result = port.get_port_field_values(aruba_ansible_module, interface_name, ['vlan_tag', 'vrf'])
         if result.has_key('vrf'):
             return True
         if result.has_key('vlan_tag'):
             return False
         else:
             return True
     else:
         return True
コード例 #4
0
 def check_if_l2_interface_possible(self, aruba_ansible_module, interface_name):
     port = Port()
     if port.check_port_exists(aruba_ansible_module, interface_name):
         result = port.get_port_field_values(aruba_ansible_module, interface_name, ['vrf'])
         if 'vrf' in result.keys():
             if result['vrf'] != "":
                 return False
             else:
                 return True
         else:
             return True
     else:
         return True
コード例 #5
0
    def update_interface_vrf_details_from_vrf(self,
                                              aruba_ansible_module,
                                              vrf_name,
                                              interface_name,
                                              update_type="insert"):
        port = Port()
        vrf = VRF()
        if not port.check_port_exists(aruba_ansible_module, interface_name):
            aruba_ansible_module.module.fail_json(
                msg="Interface {int} is not "
                "configured"
                "".format(int=interface_name)  # NOQA
            )

        result = port.get_port_field_values(aruba_ansible_module,
                                            interface_name, ['vrf'])
        if 'vrf' in result.keys():
            if result['vrf'] != "" and result['vrf'] != vrf_name:
                aruba_ansible_module.module.fail_json(
                    msg=("Interface {int} is attached to VRF {vrf}. "
                         "Delete interface"
                         " and recreate with VRF "
                         "{vrf_name}".format(int=interface_name,
                                             vrf=result['vrf'],
                                             vrf_name=vrf_name)))

        if not vrf.check_vrf_exists(aruba_ansible_module, vrf_name):
            if vrf_name != "default":
                aruba_ansible_module.module.fail_json(
                    msg="VRF {vrf} does not "
                    "exist"
                    "".format(vrf=vrf_name))  # NOQA
            aruba_ansible_module = vrf.create_vrf(aruba_ansible_module,
                                                  vrf_name)

        port_field = {"vrf": vrf_name}

        aruba_ansible_module = port.update_port_fields(aruba_ansible_module,
                                                       interface_name,
                                                       port_field)
        try:
            aruba_ansible_module = port.delete_port_fields(
                aruba_ansible_module, interface_name, ['ip4_address'])  # NOQA
            aruba_ansible_module = port.delete_port_fields(
                aruba_ansible_module, interface_name, ['ip6_address'])  # NOQA
        except Exception:
            pass

        return aruba_ansible_module
コード例 #6
0
    def delete_vlan(self, aruba_ansible_module, vlan_id):

        port = Port()
        interface = Interface()

        interface_vlan_id = "vlan{id}".format(id=vlan_id)

        if not self.check_vlan_exist(aruba_ansible_module, vlan_id):
            aruba_ansible_module.warnings.append("VLAN ID {id} is not "
                                                 "configured"
                                                 "".format(id=vlan_id))
            return aruba_ansible_module

        if interface.check_interface_exists(aruba_ansible_module,
                                            interface_vlan_id):
            aruba_ansible_module.module.fail_json(msg="VLAN ID {id} is "
                                                  "configured as interface"
                                                  " VLAN"
                                                  "".format(id=vlan_id))
            return aruba_ansible_module

        port_list = port.get_configured_port_list(aruba_ansible_module)

        vlan_port_fields = [
            "vlan_tag", "vlan_mode", "vlans_per_protocol", "vlan_trunks"
        ]

        vlan_id_str = str(vlan_id)

        for port_name in port_list:

            vlan_field_values = port.get_port_field_values(
                aruba_ansible_module, port_name, vlan_port_fields)  # NOQA

            if vlan_field_values["vlan_tag"] == vlan_id_str:
                aruba_ansible_module = port.update_port_fields(
                    aruba_ansible_module, port_name, {"vlan_tag": "1"})  # NOQA

            if vlan_id_str in vlan_field_values["vlan_trunks"] and type(
                    vlan_field_values["vlan_trunks"]) is list:  # NOQA
                vlan_field_values["vlan_trunks"].remove(vlan_id_str)
                aruba_ansible_module = port.update_port_fields(
                    aruba_ansible_module, port_name,
                    {"vlan_trunks": vlan_field_values["vlan_trunks"]})  # NOQA

        aruba_ansible_module.running_config["VLAN"].pop(vlan_id_str)

        return aruba_ansible_module
コード例 #7
0
    def update_interface_acl_details(self,
                                     aruba_ansible_module,
                                     interface_name,
                                     acl_name,
                                     acl_type,
                                     acl_direction,
                                     update_type="insert"):
        port = Port()

        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"

        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)

        port_fields = {field1: value1, field2: value2}

        if (update_type == "insert") or (update_type == "update"):
            exisitng_values = port.get_port_field_values(
                aruba_ansible_module, interface_name, [field1])

            if field1 in exisitng_values.keys():
                if exisitng_values[field1] != port_fields[field1]:
                    aruba_ansible_module = port.update_port_fields(
                        aruba_ansible_module, interface_name,
                        port_fields)  # NOQA
            else:
                aruba_ansible_module = port.update_port_fields(
                    aruba_ansible_module, interface_name, port_fields)  # NOQA

        elif update_type == 'delete':
            aruba_ansible_module = port.delete_port_fields(
                aruba_ansible_module, interface_name, [field1, field2])  # NOQA

        return aruba_ansible_module