示例#1
0
    def _set_config(self, want, have, module):
        # Set the interface config based on the want and have config
        commands = []
        interface = "interface " + want["name"]

        # Get the diff b/w want and have
        want_dict = dict_to_set(want)
        have_dict = dict_to_set(have)
        want_trunk = dict(want_dict).get("trunk")
        have_trunk = dict(have_dict).get("trunk")
        if want_trunk and have_trunk:
            diff = set(tuple(dict(want_dict).get("trunk"))) - set(
                tuple(dict(have_dict).get("trunk"))
            )
        else:
            diff = want_dict - have_dict

        if diff:
            diff = dict(diff)

            if diff.get("access"):
                cmd = "switchport access vlan {0}".format(
                    diff.get("access")[0][1]
                )
                add_command_to_config_list(interface, cmd, commands)

            if want_trunk:
                if diff.get("trunk"):
                    diff = dict(diff.get("trunk"))
                if diff.get("encapsulation"):
                    cmd = self.trunk_cmds["encapsulation"] + " {0}".format(
                        diff.get("encapsulation")
                    )
                    add_command_to_config_list(interface, cmd, commands)
                if diff.get("native_vlan"):
                    cmd = self.trunk_cmds["native_vlan"] + " {0}".format(
                        diff.get("native_vlan")
                    )
                    add_command_to_config_list(interface, cmd, commands)
                allowed_vlans = diff.get("allowed_vlans")
                pruning_vlans = diff.get("pruning_vlans")

                if allowed_vlans and self._check_for_correct_vlan_range(
                    allowed_vlans, module
                ):
                    allowed_vlans = ",".join(allowed_vlans)
                    cmd = self.trunk_cmds["allowed_vlans"] + " {0}".format(
                        allowed_vlans
                    )
                    add_command_to_config_list(interface, cmd, commands)
                if pruning_vlans and self._check_for_correct_vlan_range(
                    pruning_vlans, module
                ):
                    pruning_vlans = ",".join(pruning_vlans)
                    cmd = self.trunk_cmds["pruning_vlans"] + " {0}".format(
                        pruning_vlans
                    )
                    add_command_to_config_list(interface, cmd, commands)

        return commands
    def _set_config(self, want, have, module):
        # Set the interface config based on the want and have config
        commands = []
        interface = 'interface ' + want['name']

        # Get the diff b/w want and have
        want_dict = dict_to_set(want)
        have_dict = dict_to_set(have)
        want_trunk = dict(want_dict).get('trunk')
        have_trunk = dict(have_dict).get('trunk')
        if want_trunk and have_trunk:
            diff = set(tuple(dict(want_dict).get('trunk'))) - set(tuple(dict(have_dict).get('trunk')))
        else:
            diff = want_dict - have_dict

        if diff:
            diff = dict(diff)

            if diff.get('access'):
                cmd = 'switchport access vlan {0}'.format(diff.get('access')[0][1])
                add_command_to_config_list(interface, cmd, commands)

            if want_trunk:
                if diff.get('trunk'):
                    diff = dict(diff.get('trunk'))
                if diff.get('encapsulation'):
                    cmd = self.trunk_cmds['encapsulation'] + ' {0}'.format(diff.get('encapsulation'))
                    add_command_to_config_list(interface, cmd, commands)
                if diff.get('native_vlan'):
                    cmd = self.trunk_cmds['native_vlan'] + ' {0}'.format(diff.get('native_vlan'))
                    add_command_to_config_list(interface, cmd, commands)
                allowed_vlans = diff.get('allowed_vlans')
                pruning_vlans = diff.get('pruning_vlans')

                if allowed_vlans and self._check_for_correct_vlan_range(allowed_vlans, module):
                    allowed_vlans = ','.join(allowed_vlans)
                    cmd = self.trunk_cmds['allowed_vlans'] + ' {0}'.format(allowed_vlans)
                    add_command_to_config_list(interface, cmd, commands)
                if pruning_vlans and self._check_for_correct_vlan_range(pruning_vlans, module):
                    pruning_vlans = ','.join(pruning_vlans)
                    cmd = self.trunk_cmds['pruning_vlans'] + ' {0}'.format(pruning_vlans)
                    add_command_to_config_list(interface, cmd, commands)

        return commands
示例#3
0
    def _set_config(self, want, have):
        # Set the interface config based on the want and have config
        commands = []
        interface = 'interface ' + want['name']

        # Get the diff b/w want and have
        want_dict = dict_to_set(want)
        have_dict = dict_to_set(have)
        diff = want_dict - have_dict

        if diff:
            diff = dict(diff)
            for item in self.params:
                if diff.get(item):
                    cmd = item + ' ' + str(want.get(item))
                    add_command_to_config_list(interface, cmd, commands)
            if diff.get('enabled'):
                add_command_to_config_list(interface, 'no shutdown', commands)
            elif diff.get('enabled') is False:
                add_command_to_config_list(interface, 'shutdown', commands)

        return commands
    def _set_config(self, want, have):
        # Set the interface config based on the want and have config
        commands = []
        interface = "interface " + want["name"]

        # Get the diff b/w want and have
        want_dict = dict_to_set(want)
        have_dict = dict_to_set(have)
        diff = want_dict - have_dict

        if diff:
            diff = dict(diff)
            for item in self.params:
                if diff.get(item):
                    cmd = item + " " + str(want.get(item))
                    add_command_to_config_list(interface, cmd, commands)
            if diff.get("enabled"):
                add_command_to_config_list(interface, "no shutdown", commands)
            elif diff.get("enabled") is False:
                add_command_to_config_list(interface, "shutdown", commands)

        return commands
示例#5
0
    def _set_config(self, want, have):
        # Set the interface config based on the want and have config
        commands = []
        interface = "interface " + want["name"]

        want_dict = dict_to_set(want)
        have_dict = dict_to_set(have)
        diff = want_dict - have_dict

        if diff:
            port_priotity = dict(diff).get("port_priority")
            max_bundle = dict(diff).get("max_bundle")
            fast_switchover = dict(diff).get("fast_switchover")
            if port_priotity:
                cmd = "lacp port-priority {0}".format(port_priotity)
                add_command_to_config_list(interface, cmd, commands)
            if max_bundle:
                cmd = "lacp max-bundle {0}".format(max_bundle)
                add_command_to_config_list(interface, cmd, commands)
            if fast_switchover:
                cmd = "lacp fast-switchover"
                add_command_to_config_list(interface, cmd, commands)

        return commands
示例#6
0
    def _set_config(self, want, have):
        # Set the interface config based on the want and have config
        commands = []
        interface = 'interface ' + have['name']

        want_dict = dict_to_set(want)
        have_dict = dict_to_set(have)
        diff = want_dict - have_dict

        if diff:
            port_priotity = dict(diff).get('port_priority')
            max_bundle = dict(diff).get('max_bundle')
            fast_switchover = dict(diff).get('fast_switchover')
            if port_priotity:
                cmd = 'lacp port-priority {0}'.format(port_priotity)
                add_command_to_config_list(interface, cmd, commands)
            if max_bundle:
                cmd = 'lacp max-bundle {0}'.format(max_bundle)
                add_command_to_config_list(interface, cmd, commands)
            if fast_switchover:
                cmd = 'lacp fast-switchover'
                add_command_to_config_list(interface, cmd, commands)

        return commands
示例#7
0
    def _set_config(self, want, have, module):
        # Set the interface config based on the want and have config
        commands = []
        interface = "interface " + want["name"]

        # Get the diff b/w want and have
        want_dict = dict_to_set(want)
        have_dict = dict_to_set(have)
        want_trunk = dict(want_dict).get("trunk")
        have_trunk = dict(have_dict).get("trunk")
        if want_trunk and have_trunk:
            diff = set(tuple(dict(want_dict).get("trunk"))) - set(
                tuple(dict(have_dict).get("trunk"))
            )
        else:
            diff = want_dict - have_dict

        if diff:
            diff = dict(diff)
            mode = diff.get("mode")
            access = diff.get("access")
            trunk = diff.get("trunk")

            if access:
                cmd = "switchport access vlan {0}".format(access[0][1])
                add_command_to_config_list(interface, cmd, commands)

            if diff.get("voice"):
                cmd = "switchport voice vlan {0}".format(
                    diff.get("voice")[0][1]
                )
                add_command_to_config_list(interface, cmd, commands)

            if want_trunk:
                if trunk:
                    diff = dict(trunk)
                if diff.get("encapsulation"):
                    cmd = self.trunk_cmds["encapsulation"] + " {0}".format(
                        diff.get("encapsulation")
                    )
                    add_command_to_config_list(interface, cmd, commands)
                if diff.get("native_vlan"):
                    cmd = self.trunk_cmds["native_vlan"] + " {0}".format(
                        diff.get("native_vlan")
                    )
                    add_command_to_config_list(interface, cmd, commands)
                allowed_vlans = diff.get("allowed_vlans")
                pruning_vlans = diff.get("pruning_vlans")

                if allowed_vlans and self._check_for_correct_vlan_range(
                    allowed_vlans, module
                ):
                    if self.state == "merged":
                        have_trunk = have.get("trunk")
                        if have_trunk and have_trunk.get("allowed_vlans"):
                            have_allowed_vlans = have_trunk.get(
                                "allowed_vlans"
                            )
                            allowed_vlans = list(allowed_vlans)
                            if set(allowed_vlans).difference(
                                set(have_allowed_vlans)
                            ):
                                allowed_vlans.extend(list(have_allowed_vlans))
                            else:
                                allowed_vlans = tuple()
                    allowed_vlans = ",".join(allowed_vlans)
                    if allowed_vlans:
                        cmd = self.trunk_cmds["allowed_vlans"] + " {0}".format(
                            allowed_vlans
                        )
                        add_command_to_config_list(interface, cmd, commands)
                if pruning_vlans and self._check_for_correct_vlan_range(
                    pruning_vlans, module
                ):
                    if self.state == "merged":
                        have_trunk = have.get("trunk")
                        if have_trunk and have_trunk.get("pruning_vlans"):
                            have_pruning_vlans = have_trunk.get(
                                "pruning_vlans"
                            )
                            pruning_vlans = list(pruning_vlans)
                            if set(pruning_vlans).difference(
                                set(have_pruning_vlans)
                            ):
                                pruning_vlans.extend(list(have_pruning_vlans))
                            else:
                                pruning_vlans = tuple()
                    pruning_vlans = ",".join(pruning_vlans)
                    if pruning_vlans:
                        cmd = self.trunk_cmds["pruning_vlans"] + " {0}".format(
                            pruning_vlans
                        )
                        add_command_to_config_list(interface, cmd, commands)
            if mode:
                cmd = "switchport mode {0}".format(mode)
                add_command_to_config_list(interface, cmd, commands)

        return commands
    def _set_config(self, want, have):
        # Set the interface config based on the want and have config
        commands = []

        interface = 'interface ' + have['name']
        # Get the diff b/w want and have
        want_dict = dict_to_set(want)
        have_dict = dict_to_set(have)
        diff = want_dict - have_dict

        if diff:
            diff = dict(diff)
            receive = diff.get('receive')
            transmit = diff.get('transmit')
            med_tlv_select = diff.get('med_tlv_select')
            tlv_select = diff.get('tlv_select')
            if receive:
                cmd = 'lldp receive'
                add_command_to_config_list(interface, cmd, commands)
            elif receive is False:
                cmd = 'no lldp receive'
                add_command_to_config_list(interface, cmd, commands)
            if transmit:
                cmd = 'lldp transmit'
                add_command_to_config_list(interface, cmd, commands)
            elif transmit is False:
                cmd = 'no lldp transmit'
                add_command_to_config_list(interface, cmd, commands)

            if med_tlv_select:
                med_tlv_select = dict(med_tlv_select)
                if med_tlv_select.get('inventory_management'):
                    add_command_to_config_list(
                        interface, 'lldp med-tlv-select inventory-management',
                        commands)
            if tlv_select:
                tlv_select = dict(tlv_select)
                if tlv_select.get('power_management'):
                    add_command_to_config_list(
                        interface, 'lldp tlv-select power-management',
                        commands)

        return commands
示例#9
0
    def _set_config(self, want, have):
        # Set the interface config based on the want and have config
        commands = []

        interface = "interface " + want["name"]
        # Get the diff b/w want and have
        want_dict = dict_to_set(want)
        have_dict = dict_to_set(have)
        diff = want_dict - have_dict

        if diff:
            diff = dict(diff)
            receive = diff.get("receive")
            transmit = diff.get("transmit")
            med_tlv_select = diff.get("med_tlv_select")
            tlv_select = diff.get("tlv_select")
            if receive:
                cmd = "lldp receive"
                add_command_to_config_list(interface, cmd, commands)
            elif receive is False:
                cmd = "no lldp receive"
                add_command_to_config_list(interface, cmd, commands)
            if transmit:
                cmd = "lldp transmit"
                add_command_to_config_list(interface, cmd, commands)
            elif transmit is False:
                cmd = "no lldp transmit"
                add_command_to_config_list(interface, cmd, commands)

            if med_tlv_select:
                med_tlv_select = dict(med_tlv_select)
                if med_tlv_select.get("inventory_management"):
                    add_command_to_config_list(
                        interface,
                        "lldp med-tlv-select inventory-management",
                        commands,
                    )
            if tlv_select:
                tlv_select = dict(tlv_select)
                if tlv_select.get("power_management"):
                    add_command_to_config_list(
                        interface, "lldp tlv-select power-management",
                        commands)

        return commands
    def _set_config(self, want, have, module):
        # Set the interface config based on the want and have config
        commands = []
        interface = "interface " + want["name"]

        # To handle L3 IPV4 configuration
        if want.get("ipv4"):
            for each in want.get("ipv4"):
                if each.get("address") != "dhcp":
                    ip_addr_want = validate_n_expand_ipv4(module, each)
                    each["address"] = ip_addr_want

        # Convert the want and have dict to set
        want_dict = dict_to_set(want)
        have_dict = dict_to_set(have)

        # To handle L3 IPV4 configuration
        if want.get("ipv4"):
            # Get the diff b/w want and have IPV4
            if have.get("ipv4"):
                ipv4 = tuple(
                    set(dict(want_dict).get("ipv4")) -
                    set(dict(have_dict).get("ipv4")))
                if ipv4:
                    ipv4 = (ipv4 if self.verify_diff_again(
                        dict(want_dict).get("ipv4"),
                        dict(have_dict).get("ipv4"),
                    ) else ())
            else:
                diff = want_dict - have_dict
                ipv4 = dict(diff).get("ipv4")
            if ipv4:
                for each in ipv4:
                    ipv4_dict = dict(each)
                    if ipv4_dict.get("address") != "dhcp":
                        cmd = "ip address {0}".format(ipv4_dict["address"])
                        if ipv4_dict.get("secondary"):
                            cmd += " secondary"
                    elif ipv4_dict.get("address") == "dhcp":
                        cmd = "ip address dhcp"
                        if ipv4_dict.get(
                                "dhcp_client") is not None and ipv4_dict.get(
                                    "dhcp_hostname"):
                            cmd = "ip address dhcp client-id GigabitEthernet 0/{0} hostname {1}".format(
                                ipv4_dict.get("dhcp_client"),
                                ipv4_dict.get("dhcp_hostname"),
                            )
                        elif ipv4_dict.get(
                                "dhcp_client"
                        ) and not ipv4_dict.get("dhcp_hostname"):
                            cmd = "ip address dhcp client-id GigabitEthernet 0/{0}".format(
                                ipv4_dict.get("dhcp_client"))
                        elif not ipv4_dict.get(
                                "dhcp_client") and ipv4_dict.get(
                                    "dhcp_hostname"):
                            cmd = "ip address dhcp hostname {0}".format(
                                ipv4_dict.get("dhcp_client"))

                    add_command_to_config_list(interface, cmd, commands)

        # To handle L3 IPV6 configuration
        if want.get("ipv6"):
            # Get the diff b/w want and have IPV6
            if have.get("ipv6"):
                ipv6 = tuple(
                    set(dict(want_dict).get("ipv6")) -
                    set(dict(have_dict).get("ipv6")))
            else:
                diff = want_dict - have_dict
                ipv6 = dict(diff).get("ipv6")
            if ipv6:
                for each in ipv6:
                    ipv6_dict = dict(each)
                    validate_ipv6(ipv6_dict.get("address"), module)
                    cmd = "ipv6 address {0}".format(ipv6_dict.get("address"))
                    add_command_to_config_list(interface, cmd, commands)

        return commands
    def _set_config(self, want, have, module):
        # Set the interface config based on the want and have config
        commands = []
        interface = "interface " + want["name"]

        # expand a have allowed and pruning vlan if any
        if have.get("trunk") and want.get("trunk"):
            for each in ["allowed_vlans", "pruning_vlans"]:
                if have["trunk"].get(each) and want["trunk"].get(each):
                    (check, want["trunk"][each]) = self._expand_vlan_range_if_any(
                        "want",
                        want["trunk"][each],
                    )
                    if not check:
                        (check, have["trunk"][each]) = self._expand_vlan_range_if_any(
                            "have",
                            have["trunk"][each],
                        )

        # Get the diff b/w want and have
        diff = set()
        want_dict = dict_to_set(want)
        have_dict = dict_to_set(have)
        want_trunk = dict(want_dict).get("trunk")
        have_trunk = dict(have_dict).get("trunk")
        if want_trunk and have_trunk:
            diff = set(tuple(dict(want_dict).get("trunk"))) - set(
                tuple(dict(have_dict).get("trunk")),
            )
            _want_dict = dict(want_dict)
            _have_dict = dict(have_dict)
            if _want_dict.get("trunk"):
                del _want_dict["trunk"]
            if _have_dict.get("trunk"):
                del _have_dict["trunk"]
            _want_dict = dict_to_set(_want_dict)
            _have_dict = dict_to_set(_have_dict)
            diff.update(_want_dict - _have_dict)
        else:
            diff = want_dict - have_dict

        if diff:
            diff = dict(diff)
            mode = diff.get("mode")
            access = diff.get("access")
            trunk = diff.get("trunk")

            if access:
                if access[0][0] == "vlan":
                    cmd = "switchport access vlan {0}".format(access[0][1])
                if access[0][0] == "vlan_name":
                    cmd = "switchport access vlan name {0}".format(access[0][1])
                add_command_to_config_list(interface, cmd, commands)

            if diff.get("voice"):
                if diff.get("voice")[0][0] == "vlan" or diff.get("voice")[0][0] == "vlan_tag":
                    cmd = "switchport voice vlan {0}".format(
                        diff.get("voice")[0][1],
                    )
                if diff.get("voice")[0][0] == "vlan_name":
                    cmd = "switchport voice vlan name {0}".format(
                        diff.get("voice")[0][1],
                    )
                add_command_to_config_list(interface, cmd, commands)

            if want_trunk:
                if trunk:
                    diff = dict(trunk)
                if diff.get("encapsulation"):
                    cmd = self.trunk_cmds["encapsulation"] + " {0}".format(
                        diff.get("encapsulation"),
                    )
                    add_command_to_config_list(interface, cmd, commands)
                if diff.get("native_vlan"):
                    cmd = self.trunk_cmds["native_vlan"] + " {0}".format(
                        diff.get("native_vlan"),
                    )
                    add_command_to_config_list(interface, cmd, commands)
                allowed_vlans = diff.get("allowed_vlans")
                pruning_vlans = diff.get("pruning_vlans")

                if allowed_vlans and self._check_for_correct_vlan_range(
                    allowed_vlans,
                    module,
                ):
                    diff = None
                    if self.state == "merged":
                        have_trunk = have.get("trunk")
                        if have_trunk and have_trunk.get("allowed_vlans"):
                            have_allowed_vlans = have_trunk.get(
                                "allowed_vlans",
                            )
                            allowed_vlans = list(allowed_vlans)
                            diff = set(allowed_vlans).difference(
                                set(have_allowed_vlans),
                            )
                            allowed_vlans = list(diff) if diff else tuple()
                    allowed_vlans = ",".join(allowed_vlans)
                    if allowed_vlans:
                        trunk_cmd = (
                            self.trunk_cmds["allowed_vlans_add"]
                            if self.state == "merged" and diff
                            else self.trunk_cmds["allowed_vlans"]
                        )
                        cmd = trunk_cmd + " {0}".format(allowed_vlans)
                        add_command_to_config_list(interface, cmd, commands)
                if pruning_vlans and self._check_for_correct_vlan_range(
                    pruning_vlans,
                    module,
                ):
                    diff = None
                    if self.state == "merged":
                        have_trunk = have.get("trunk")
                        if have_trunk and have_trunk.get("pruning_vlans"):
                            have_pruning_vlans = have_trunk.get(
                                "pruning_vlans",
                            )
                            pruning_vlans = list(pruning_vlans)
                            diff = set(pruning_vlans).difference(
                                set(have_pruning_vlans),
                            )
                            pruning_vlans = list(diff) if diff else tuple()
                    pruning_vlans = ",".join(pruning_vlans)
                    if pruning_vlans:
                        trunk_cmd = (
                            self.trunk_cmds["pruning_vlans_add"]
                            if self.state == "merged" and diff
                            else self.trunk_cmds["pruning_vlans"]
                        )
                        cmd = trunk_cmd + " {0}".format(pruning_vlans)
                        add_command_to_config_list(interface, cmd, commands)
            if mode:
                cmd = "switchport mode {0}".format(mode)
                add_command_to_config_list(interface, cmd, commands)

        return commands