def get_tree(): """ Will build an object tree with attributes in each object :return: """ tenant = Tenant('tenant') tenant.dn = '/tn-tenant' app1 = AppProfile('app1', tenant) app1.dn = app1._parent.dn + '/app-app1' app2 = AppProfile('app2', tenant) app2.dn = app2._parent.dn + '/app-app2' epg11 = EPG('epg11', app1) epg11.dn = epg11._parent.dn + '/epg-epg11' epg12 = EPG('epg12', app1) epg12.dn = epg12._parent.dn + '/epg-epg12' epg21 = EPG('epg21', app2) epg21.dn = epg21._parent.dn + '/epg-epg21' epg22 = EPG('epg22', app2) epg22.dn = epg22._parent.dn + '/epg-epg22' bd1 = BridgeDomain('bd1', tenant) bd1.dn = bd1._parent.dn + '/bd-bd1' bd2 = BridgeDomain('bd2', tenant) bd2.dn = bd2._parent.dn + '/bd-bd2' epg11.add_bd(bd1) epg12.add_bd(bd2) epg21.add_bd(bd1) epg22.add_bd(bd2) context = Context('ctx', tenant) context.dn = context._parent.dn + '/ctx-ctx' bd1.add_context(context) bd2.add_context(context) contract1 = Contract('contract-1', tenant) contract1.dn = contract1._parent.dn + '/con-contract1' entry1 = FilterEntry('entry1', applyToFrag='no', arpOpc='unspecified', dFromPort='80', dToPort='80', etherT='ip', prot='tcp', sFromPort='1', sToPort='65535', tcpRules='unspecified', parent=contract1) subjects = contract1.get_children(ContractSubject) for subject in subjects: subject.dn = subject._parent.dn + '/subj-' + subject.name filters = tenant.get_children(Filter) for atk_filter in filters: atk_filter.dn = atk_filter._parent.dn + '/flt-' + atk_filter.name entry1.dn = entry1._parent.dn + '/flte-entry1' epg11.provide(contract1) epg11.consume(contract1) epg12.consume(contract1) epg11.value1 = 'value2' bd1.value2 = 'value1' return tenant
def _add_inherited_relation(self, tenants, epg, relation, deleted=False): tenant_found = False # Find the tenant. Add if necessary for tenant in tenants: if tenant.name == epg.tenant: tenant_found = True break if not tenant_found: tenant = Tenant(epg.tenant) tenants.append(tenant) # Find the EPG Container. Add if necessary if epg.is_l3out(): epg_container_class = OutsideL3 else: epg_container_class = AppProfile epg_containers = tenant.get_children(only_class=epg_container_class) epg_container_found = False for epg_container in epg_containers: if epg_container.name == epg.epg_container_name: epg_container_found = True break if not epg_container_found: epg_container = epg_container_class(epg.epg_container_name, tenant) # Find the EPG. Add if necessary if epg.is_l3out(): epg_class = OutsideEPG else: epg_class = EPG epgs = tenant.get_children(only_class=epg_class) epg_found = False for tenant_epg in epgs: if tenant_epg.name == epg.name: epg_found = True break if not epg_found: tenant_epg = epg_class(epg.name, epg_container) # Add the relation (relation_type, relation_name) = relation if relation_type == 'fvRsProv': contract = Contract(relation_name, tenant) tenant_epg.provide(contract) if deleted: tenant_epg.provide(contract) tenant_epg.dont_provide(contract) elif relation_type == 'fvRsCons': contract = Contract(relation_name, tenant) tenant_epg.consume(contract) if deleted: tenant_epg.consume(contract) tenant_epg.dont_consume(contract) elif relation_type == 'fvRsConsIf': contract_interface = ContractInterface(relation_name, tenant) tenant_epg.consume_cif(contract_interface) if deleted: tenant_epg.consume_cif(contract_interface) tenant_epg.dont_consume_cif(contract_interface) elif relation_type == 'fvRsProtBy': taboo = Taboo(relation_name, tenant) tenant_epg.protect(taboo) if deleted: tenant_epg.protect(taboo) tenant_epg.dont_protect(taboo) tenant_epg.add_tag('inherited:%s:%s' % (relation_type, relation_name)) if deleted: tenant_epg.delete_tag('inherited:%s:%s' % (relation_type, relation_name)) return tenants
def _add_inherited_relation(self, tenants, epg, relation, deleted=False): tenant_found = False # Find the tenant. Add if necessary for tenant in tenants: if tenant.name == epg.tenant: tenant_found = True break if not tenant_found: tenant = Tenant(epg.tenant) tenants.append(tenant) # Find the EPG Container. Add if necessary if epg.is_l3out: epg_container_class = OutsideL3 else: epg_container_class = AppProfile epg_containers = tenant.get_children(only_class=epg_container_class) epg_container_found = False for epg_container in epg_containers: if epg_container.name == epg.epg_container_name: epg_container_found = True break if not epg_container_found: epg_container = epg_container_class(epg.epg_container_name, tenant) # Find the EPG. Add if necessary if epg.is_l3out: epg_class = OutsideEPG else: epg_class = EPG epgs = tenant.get_children(only_class=epg_class) epg_found = False for tenant_epg in epgs: if tenant_epg.name == epg.name: epg_found = True break if not epg_found: tenant_epg = epg_class(epg.name, epg_container) # Add the relation (relation_type, relation_name) = relation if relation_type == 'fvRsProv': contract = Contract(relation_name, tenant) tenant_epg.provide(contract) if deleted: tenant_epg.provide(contract) tenant_epg.dont_provide(contract) elif relation_type == 'fvRsCons': contract = Contract(relation_name, tenant) tenant_epg.consume(contract) if deleted: tenant_epg.consume(contract) tenant_epg.dont_consume(contract) elif relation_type == 'fvRsConsIf': contract_interface = ContractInterface(relation_name, tenant) tenant_epg.consume_cif(contract_interface) if deleted: tenant_epg.consume_cif(contract_interface) tenant_epg.dont_consume_cif(contract_interface) elif relation_type == 'fvRsProtBy': taboo = Taboo(relation_name, tenant) tenant_epg.protect(taboo) if deleted: tenant_epg.protect(taboo) tenant_epg.dont_protect(taboo) tenant_epg.add_tag('inherited:%s:%s' % (relation_type, relation_name)) if deleted: tenant_epg.delete_tag('inherited:%s:%s' % (relation_type, relation_name)) return tenants