コード例 #1
0
            def build_config(self, apply=True, attributes=None, unconfig=False, **kwargs):
                assert not apply
                assert not kwargs
                attributes = AttributesHelper(self, attributes)
                configurations = CliConfigBuilder(unconfig=unconfig)

                with configurations.submode_context(attributes.format(
                    'address-family {address_family.value}', force=True)):
                    if unconfig and attributes.iswildcard:
                        configurations.submode_unconfig()

                    # import_from_global_map
                    if attributes.value('import_from_global_map'):
                        configurations.append_line(
                            attributes.format('import {address_family.value} '
                                              'map {import_from_global_map}', force=True))

                    # export_to_global_map
                    if attributes.value('export_to_global_map'):
                        configurations.append_line(
                            attributes.format('export {address_family.value} '
                                              'map {export_to_global_map}', force=True))

                    # routing_table_limit_number
                    if attributes.value('routing_table_limit_number') and \
                       attributes.value('alert_percent_value'):
                        configurations.append_line(
                            attributes.format('maximum routes {routing_table_limit_number} '
                                              '{alert_percent_value}'))
                    elif attributes.value('routing_table_limit_number') and \
                       attributes.value('simple_alert'):
                        configurations.append_line(
                            attributes.format('maximum routes {routing_table_limit_number} '
                                              'warning-only'))

                    # keep old handle
                    if self.address_family.value == 'ipv4 unicast':
                        if attributes.value('export_route_targets'):
                            for v, attributes3 in attributes.sequence_values('export_route_targets'):
                                configurations.append_line('route-target export {}'.format(v.route_target))

                        if attributes.value('import_route_targets'):
                            for v, attributes3 in attributes.sequence_values('import_route_targets'):
                                configurations.append_line('route-target import {}'.format(v.route_target))
                    
                    if attributes.value('maximum_routes'):
                        configurations.append(attributes.format('maximum routes {maximum_routes}'))


                    # loop over all route-target
                    for sub, attributes2 in attributes.mapping_values(
                            'route_target_attr', keys=self.route_target_attr.keys(), sort=True):
                        configurations.append_block(sub.build_config(apply=False,
                            attributes=attributes2, unconfig=unconfig, **kwargs))

                return str(configurations)
コード例 #2
0
        def build_config(self,
                         links=None,
                         apply=True,
                         attributes=None,
                         unconfig=False,
                         **kwargs):
            '''Device build config'''
            assert not apply
            attributes = AttributesHelper(self, attributes)
            configurations = CliConfigBuilder(unconfig=unconfig)

            if attributes.value('sig_gr', force=True):
                configurations.append(
                    attributes.format(
                        'ip rsvp signalling hello graceful-restart mode {sig_gr_mode}'
                    ))

            configurations.append_line(
                attributes.format(
                    'ip rsvp signalling hello graceful-restart refresh interval {sig_hello_gr_refresh_interval}'
                ))

            configurations.append_line(
                attributes.format(
                    'ip rsvp signalling hello graceful-restart refresh misses {sig_hello_gr_refresh_misses}'
                ))

            # Add per-interface config
            for sub, attributes2 in attributes.mapping_values(
                    'interface_attr', keys=self.interfaces, sort=True):
                configurations.append_block(
                    sub.build_config(apply=False,
                                     attributes=attributes2,
                                     unconfig=unconfig,
                                     **kwargs))

            # # Add per-neighbor config
            # for sub, attributes2 in attributes.mapping_values('neighbor_attr', keys=self.neighbors, sort=True):
            #     configurations.append_block(sub.build_config(apply=False, attributes=attributes2, unconfig=unconfig, **kwargs))

            # # Add per-controller config
            # for sub, attributes2 in attributes.mapping_values('controller_attr', keys=self.controllers, sort=True):
            #     configurations.append_block(sub.build_config(apply=False, attributes=attributes2, unconfig=unconfig, **kwargs))

            return CliConfig(device=self.device,
                             unconfig=unconfig,
                             cli_config=configurations)
コード例 #3
0
ファイル: evpn.py プロジェクト: wilbeacham85/genielibs
        def build_config(self,
                         interfaces=None,
                         apply=True,
                         attributes=None,
                         unconfig=False,
                         **kwargs):
            assert not apply
            attributes = AttributesHelper(self, attributes)
            configurations = CliConfigBuilder(unconfig=unconfig)

            if interfaces is None:
                interfaces = set(self.interfaces)
            else:
                interfaces = set(self.interfaces).intersection(interfaces)

            with configurations.submode_context('l2vpn evpn'):
                if unconfig and attributes.iswildcard:
                    configurations.submode_unconfig()

                if attributes.value('arp_flooding_suppression') is not None:
                    if attributes.value('arp_flooding_suppression') is False:
                        configurations.append(
                            'arp flooding-suppression disable')

                configurations.append_line(
                    attributes.format('replication-type {replication_type}'))
                configurations.append_line(
                    attributes.format('mpls label mode {label_mode}'))

            for evi, attributes2 in attributes.sequence_values('evis',
                                                               sort=True):
                if unconfig:
                    configurations.append_block(
                        evi.build_unconfig(apply=False,
                                           attributes=attributes2))
                else:
                    configurations.append_block(
                        evi.build_config(apply=False, attributes=attributes2))

            if apply:
                if configurations:
                    self.device.configure(configurations, fail_invalid=True)
            else:
                return str(configurations)