def __init__(self, configurations, text=False): _Configuration.__init__(self) self.api_encoder = environment.settings().api.encoder self._configurations = configurations self._text = text self.error = Error() self.scope = Scope() self.tokeniser = Tokeniser(self.scope, self.error, self.logger) params = (self.tokeniser, self.scope, self.error, self.logger) self.section = Section(*params) self.process = ParseProcess(*params) self.template = ParseTemplate(*params) self.template_neighbor = ParseTemplateNeighbor(*params) self.neighbor = ParseNeighbor(*params) self.family = ParseFamily(*params) self.addpath = ParseAddPath(*params) self.capability = ParseCapability(*params) self.api = ParseAPI(*params) self.api_send = ParseSend(*params) self.api_receive = ParseReceive(*params) self.static = ParseStatic(*params) self.static_route = ParseStaticRoute(*params) self.announce = SectionAnnounce(*params) self.announce_ipv4 = AnnounceIPv4(*params) self.announce_ipv6 = AnnounceIPv6(*params) self.announce_l2vpn = AnnounceL2VPN(*params) self.flow = ParseFlow(*params) self.flow_route = ParseFlowRoute(*params) self.flow_match = ParseFlowMatch(*params) self.flow_then = ParseFlowThen(*params) self.flow_scope = ParseFlowScope(*params) self.l2vpn = ParseL2VPN(*params) self.vpls = ParseVPLS(*params) self.operational = ParseOperational(*params) # We should check if name are unique when running Section.__init__ self._structure = { 'root': { 'class': self.section, 'commands': [], 'sections': { 'process': self.process.name, 'neighbor': self.neighbor.name, 'template': self.template.name, }, }, self.process.name: { 'class': self.process, 'commands': self.process.known.keys(), 'sections': {}, }, self.template.name: { 'class': self.template, 'commands': self.template.known.keys(), 'sections': { 'neighbor': self.template_neighbor.name, }, }, self.template_neighbor.name: { 'class': self.template_neighbor, 'commands': self.template_neighbor.known.keys(), 'sections': { 'family': self.family.name, 'capability': self.capability.name, 'add-path': self.addpath.name, 'api': self.api.name, 'static': self.static.name, 'flow': self.flow.name, 'l2vpn': self.l2vpn.name, 'operational': self.operational.name, 'announce': self.announce.name, }, }, self.neighbor.name: { 'class': self.neighbor, 'commands': self.neighbor.known.keys(), 'sections': { 'family': self.family.name, 'capability': self.capability.name, 'add-path': self.addpath.name, 'api': self.api.name, 'static': self.static.name, 'flow': self.flow.name, 'l2vpn': self.l2vpn.name, 'operational': self.operational.name, 'announce': self.announce.name, }, }, self.family.name: { 'class': self.family, 'commands': self.family.known.keys(), 'sections': {}, }, self.capability.name: { 'class': self.capability, 'commands': self.capability.known.keys(), 'sections': {}, }, self.addpath.name: { 'class': self.addpath, 'commands': self.addpath.known.keys(), 'sections': {}, }, self.api.name: { 'class': self.api, 'commands': self.api.known.keys(), 'sections': { 'send': self.api_send.name, 'receive': self.api_receive.name, }, }, self.api_send.name: { 'class': self.api_send, 'commands': self.api_send.known.keys(), 'sections': {}, }, self.api_receive.name: { 'class': self.api_receive, 'commands': self.api_receive.known.keys(), 'sections': {}, }, self.announce.name: { 'class': self.announce, 'commands': self.announce.known.keys(), 'sections': { 'ipv4': self.announce_ipv4.name, 'ipv6': self.announce_ipv6.name, 'l2vpn': self.announce_l2vpn.name, }, }, self.announce_ipv4.name: { 'class': self.announce_ipv4, 'commands': [ 'unicast', 'multicast', 'nlri-mpls', 'mpls-vpn', 'flow', 'flow-vpn' ], 'sections': {}, }, self.announce_ipv6.name: { 'class': self.announce_ipv6, 'commands': [ 'unicast', 'multicast', 'nlri-mpls', 'mpls-vpn', 'flow', 'flow-vpn' ], 'sections': {}, }, self.announce_l2vpn.name: { 'class': self.announce_l2vpn, 'commands': [ 'vpls', ], 'sections': {}, }, self.static.name: { 'class': self.static, 'commands': ['route', 'attributes'], 'sections': { 'route': self.static_route.name, }, }, self.static_route.name: { 'class': self.static_route, 'commands': self.static_route.known.keys(), 'sections': {}, }, self.flow.name: { 'class': self.flow, 'commands': self.flow.known.keys(), 'sections': { 'route': self.flow_route.name, }, }, self.flow_route.name: { 'class': self.flow_route, 'commands': self.flow_route.known.keys(), 'sections': { 'match': self.flow_match.name, 'then': self.flow_then.name, 'scope': self.flow_scope.name, }, }, self.flow_match.name: { 'class': self.flow_match, 'commands': self.flow_match.known.keys(), 'sections': {}, }, self.flow_then.name: { 'class': self.flow_then, 'commands': self.flow_then.known.keys(), 'sections': {}, }, self.flow_scope.name: { 'class': self.flow_scope, 'commands': self.flow_scope.known.keys(), 'sections': {} }, self.l2vpn.name: { 'class': self.l2vpn, 'commands': self.l2vpn.known.keys(), 'sections': { 'vpls': self.vpls.name, }, }, self.vpls.name: { 'class': self.vpls, 'commands': self.l2vpn.known.keys(), 'sections': {}, }, self.operational.name: { 'class': self.operational, 'commands': self.operational.known.keys(), 'sections': {} }, } self._neighbors = {} self._previous_neighbors = {}
def __init__(self, configurations, text=False): _Configuration.__init__(self) self.api_encoder = environment.settings().api.encoder self._configurations = configurations self._text = text self.error = Error() self.scope = Scope() self.tokeniser = Tokeniser(self.scope, self.error, self.logger) generic = Section(self.tokeniser, self.scope, self.error, self.logger) self.process = ParseProcess(self.tokeniser, self.scope, self.error, self.logger) self.template = ParseTemplate(self.tokeniser, self.scope, self.error, self.logger) self.neighbor = ParseNeighbor(self.tokeniser, self.scope, self.error, self.logger) self.family = ParseFamily(self.tokeniser, self.scope, self.error, self.logger) self.capability = ParseCapability(self.tokeniser, self.scope, self.error, self.logger) self.api = ParseAPI(self.tokeniser, self.scope, self.error, self.logger) self.api_send = ParseSend(self.tokeniser, self.scope, self.error, self.logger) self.api_receive = ParseReceive(self.tokeniser, self.scope, self.error, self.logger) self.static = ParseStatic(self.tokeniser, self.scope, self.error, self.logger) self.static_route = ParseStaticRoute(self.tokeniser, self.scope, self.error, self.logger) self.flow = ParseFlow(self.tokeniser, self.scope, self.error, self.logger) self.flow_route = ParseFlowRoute(self.tokeniser, self.scope, self.error, self.logger) self.flow_match = ParseFlowMatch(self.tokeniser, self.scope, self.error, self.logger) self.flow_then = ParseFlowThen(self.tokeniser, self.scope, self.error, self.logger) self.l2vpn = ParseL2VPN(self.tokeniser, self.scope, self.error, self.logger) self.vpls = ParseVPLS(self.tokeniser, self.scope, self.error, self.logger) self.operational = ParseOperational(self.tokeniser, self.scope, self.error, self.logger) # We should check if name are unique when running Section.__init__ self._structure = { 'root': { 'class': generic, 'commands': [], 'sections': { 'process': self.process.name, 'neighbor': self.neighbor.name, 'template': self.template.name, }, }, self.process.name: { 'class': self.process, 'commands': self.process.known.keys(), 'sections': {}, }, self.template.name: { 'class': self.template, 'commands': self.template.known.keys(), 'sections': { 'family': self.family.name, 'capability': self.capability.name, 'api': self.api.name, 'static': self.static.name, 'flow': self.flow.name, 'l2vpn': self.l2vpn.name, 'operational': self.operational.name, }, }, self.neighbor.name: { 'class': self.neighbor, 'commands': self.neighbor.known.keys(), 'sections': { 'family': self.family.name, 'capability': self.capability.name, 'api': self.api.name, 'static': self.static.name, 'flow': self.flow.name, 'l2vpn': self.l2vpn.name, 'operational': self.operational.name, }, }, self.family.name: { 'class': self.family, 'commands': self.family.known.keys(), 'sections': {}, }, self.capability.name: { 'class': self.capability, 'commands': self.capability.known.keys(), 'sections': {}, }, self.api.name: { 'class': self.api, 'commands': self.api.known.keys(), 'sections': { 'send': self.api_send.name, 'receive': self.api_receive.name, }, }, self.api_send.name: { 'class': self.api_send, 'commands': self.api_send.known.keys(), 'sections': {}, }, self.api_receive.name: { 'class': self.api_receive, 'commands': self.api_receive.known.keys(), 'sections': {}, }, self.static.name: { 'class': self.static, 'commands': ['route', 'attributes'], 'sections': { 'route': self.static_route.name, }, }, self.static_route.name: { 'class': self.static_route, 'commands': self.static_route.known.keys(), 'sections': {}, }, self.flow.name: { 'class': self.flow, 'commands': self.flow.known.keys(), 'sections': { 'route': self.flow_route.name, }, }, self.flow_route.name: { 'class': self.flow_route, 'commands': self.flow_route.known.keys(), 'sections': { 'match': self.flow_match.name, 'then': self.flow_then.name, }, }, self.flow_match.name: { 'class': self.flow_match, 'commands': self.flow_match.known.keys(), 'sections': {}, }, self.flow_then.name: { 'class': self.flow_then, 'commands': self.flow_then.known.keys(), 'sections': {}, }, self.l2vpn.name: { 'class': self.l2vpn, 'commands': self.l2vpn.known.keys(), 'sections': { 'vpls': self.vpls.name, }, }, self.vpls.name: { 'class': self.vpls, 'commands': self.l2vpn.known.keys(), 'sections': {}, }, self.operational.name: { 'class': self.operational, 'commands': self.operational.known.keys(), 'sections': {} }, } self._neighbors = {} self._previous_neighbors = {}