def _create_router(self, router_q): project_id = self._project_id_neutron_to_vnc(router_q['tenant_id']) project_obj = self._project_read(proj_id=project_id) id_perms = vnc_api.IdPermsType(enable=True) return vnc_api.LogicalRouter(router_q.get('name'), project_obj, id_perms=id_perms)
def handle_create(self): parent_obj = None if parent_obj is None and self.properties.get(self.PROJECT): try: parent_obj = self.vnc_lib().project_read(id=self.properties.get(self.PROJECT)) except vnc_api.NoIdError: parent_obj = self.vnc_lib().project_read(fq_name_str=self.properties.get(self.PROJECT)) except: parent_obj = None if parent_obj is None: tenant_id = self.stack.context.tenant_id parent_obj = self.vnc_lib().project_read(id=str(uuid.UUID(tenant_id))) if parent_obj is None: raise Exception('Error: parent is not specified in template!') obj_0 = vnc_api.LogicalRouter(name=self.properties[self.NAME], parent_obj=parent_obj) if self.properties.get(self.DISPLAY_NAME) is not None: obj_0.set_display_name(self.properties.get(self.DISPLAY_NAME)) if self.properties.get(self.CONFIGURED_ROUTE_TARGET_LIST) is not None: obj_1 = vnc_api.RouteTargetList() if self.properties.get(self.CONFIGURED_ROUTE_TARGET_LIST, {}).get(self.CONFIGURED_ROUTE_TARGET_LIST_ROUTE_TARGET) is not None: for index_1 in range(len(self.properties.get(self.CONFIGURED_ROUTE_TARGET_LIST, {}).get(self.CONFIGURED_ROUTE_TARGET_LIST_ROUTE_TARGET))): obj_1.add_route_target(self.properties.get(self.CONFIGURED_ROUTE_TARGET_LIST, {}).get(self.CONFIGURED_ROUTE_TARGET_LIST_ROUTE_TARGET)[index_1]) obj_0.set_configured_route_target_list(obj_1) # reference to virtual_network_refs if self.properties.get(self.VIRTUAL_NETWORK_REFS): for index_0 in range(len(self.properties.get(self.VIRTUAL_NETWORK_REFS))): try: ref_obj = self.vnc_lib().virtual_network_read( id=self.properties.get(self.VIRTUAL_NETWORK_REFS)[index_0] ) except vnc_api.NoIdError: ref_obj = self.vnc_lib().virtual_network_read( fq_name_str=self.properties.get(self.VIRTUAL_NETWORK_REFS)[index_0] ) obj_0.add_virtual_network(ref_obj) # reference to service_instance_refs if self.properties.get(self.SERVICE_INSTANCE_REFS): for index_0 in range(len(self.properties.get(self.SERVICE_INSTANCE_REFS))): try: ref_obj = self.vnc_lib().service_instance_read( id=self.properties.get(self.SERVICE_INSTANCE_REFS)[index_0] ) except vnc_api.NoIdError: ref_obj = self.vnc_lib().service_instance_read( fq_name_str=self.properties.get(self.SERVICE_INSTANCE_REFS)[index_0] ) obj_0.add_service_instance(ref_obj) # reference to route_table_refs if self.properties.get(self.ROUTE_TABLE_REFS): for index_0 in range(len(self.properties.get(self.ROUTE_TABLE_REFS))): try: ref_obj = self.vnc_lib().route_table_read( id=self.properties.get(self.ROUTE_TABLE_REFS)[index_0] ) except vnc_api.NoIdError: ref_obj = self.vnc_lib().route_table_read( fq_name_str=self.properties.get(self.ROUTE_TABLE_REFS)[index_0] ) obj_0.add_route_table(ref_obj) # reference to virtual_machine_interface_refs if self.properties.get(self.VIRTUAL_MACHINE_INTERFACE_REFS): for index_0 in range(len(self.properties.get(self.VIRTUAL_MACHINE_INTERFACE_REFS))): try: ref_obj = self.vnc_lib().virtual_machine_interface_read( id=self.properties.get(self.VIRTUAL_MACHINE_INTERFACE_REFS)[index_0] ) except vnc_api.NoIdError: ref_obj = self.vnc_lib().virtual_machine_interface_read( fq_name_str=self.properties.get(self.VIRTUAL_MACHINE_INTERFACE_REFS)[index_0] ) obj_0.add_virtual_machine_interface(ref_obj) # reference to route_target_refs if self.properties.get(self.ROUTE_TARGET_REFS): for index_0 in range(len(self.properties.get(self.ROUTE_TARGET_REFS))): try: ref_obj = self.vnc_lib().route_target_read( id=self.properties.get(self.ROUTE_TARGET_REFS)[index_0] ) except vnc_api.NoIdError: ref_obj = self.vnc_lib().route_target_read( fq_name_str=self.properties.get(self.ROUTE_TARGET_REFS)[index_0] ) obj_0.add_route_target(ref_obj) try: obj_uuid = super(ContrailLogicalRouter, self).resource_create(obj_0) except: raise Exception(_('logical-router %s could not be updated.') % self.name) self.resource_id_set(obj_uuid)