Exemplo n.º 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
Exemplo n.º 2
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_diff(want)
        have_dict = dict_diff(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 ' + 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
Exemplo n.º 4
0
    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):
        # 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