def handle_create(self): tenant_id = self.stack.context.tenant_id project_obj = self.vnc_lib().project_read(id=str(uuid.UUID(tenant_id))) vn_obj = vnc_api.VirtualNetwork(name=self.properties[self.NAME], parent_obj=project_obj) vn_params = vnc_api.VirtualNetworkType() if self.properties[self.ALLOW_TRANSIT] == "True": vn_params.set_allow_transit(True) else: vn_params.set_allow_transit(False) vn_params.set_forwarding_mode(self.properties[self.FORWARDING_MODE]) vn_obj.set_virtual_network_properties(vn_params) vn_obj.set_route_target_list( vnc_api.RouteTargetList([ "target:" + route for route in self.properties[self.ROUTE_TARGETS] ])) if self.properties[self.SHARED] == "True": vn_obj.set_is_shared(True) else: vn_obj.set_is_shared(False) if self.properties[self.EXTERNAL] == "True": vn_obj.set_router_external(True) else: vn_obj.set_router_external(False) if self.properties[self.FLOOD_UNKNOWN_UNICAST] == "True": vn_obj.set_flood_unknown_unicast(True) else: vn_obj.set_flood_unknown_unicast(False) vn_uuid = super(ContrailVirtualNetwork, self).resource_create(vn_obj) self.resource_id_set(vn_uuid)
def create(self, name, subnet=None): print "Inside VN Create" fq_name = [self.domain, self.tenant, name] try: self.vnc_handle.virtual_network_read(fq_name=fq_name) print "Virtual Network [{}] already exists".format( self.fqn_to_string(fq_name)) sys.exit(1) except vnc_exc.NoIdError: print "Creating Virtual Network [{}]".format( self.fqn_to_string(fq_name)) proj_obj = self.get_project() self.vn_obj = vnc_api.VirtualNetwork(name=name, parent_obj=proj_obj) prop = vnc_api.VirtualNetworkType( forwarding_mode='l2', rpf='disable', ) self.vn_obj.set_virtual_network_properties(prop) self.vn_obj.set_flood_unknown_unicast(True) (self.ipam_obj, self.ipam_subnet) = self.add_ipam() self.vn_obj.set_network_ipam(ref_obj=self.ipam_obj, ref_data=vnc_api.VnSubnetsType( [self.ipam_subnet])) self.vn_uuid = self.vnc_handle.virtual_network_create(self.vn_obj) if self.vn_uuid: print "Successfully created the virtual network [{}]".format( self.fqn_to_string(fq_name)) return True else: print "Error: Cannot create the virtual network" return False
def handle_update(self, json_snippet, tmpl_diff, prop_diff): try: vn_obj = self.vnc_lib().virtual_network_read(id=self.resource_id) except Exception as ex: LOG.warn(_("Virtual Network %s not found.") % self.name) raise ex vn_params = vnc_api.VirtualNetworkType() if prop_diff.get(self.ALLOW_TRANSIT) == "True": vn_params.set_allow_transit(True) else: vn_params.set_allow_transit(False) if prop_diff.get(self.SHARED) == "True": vn_obj.set_is_shared(True) else: vn_obj.set_is_shared(False) if prop_diff.get(self.EXTERNAL) == "True": vn_obj.set_router_external(True) else: vn_obj.set_router_external(False) fwd_mode = prop_diff.get(self.FORWARDING_MODE) if fwd_mode: vn_params.set_forwarding_mode(fwd_mode) vn_obj.set_virtual_network_properties(vn_params) rt_list = prop_diff.get(self.ROUTE_TARGETS) if rt_list: vn_obj.set_route_target_list( vnc_api.RouteTargetList( ["target:" + route for route in rt_list])) if prop_diff.get(self.FLOOD_UNKNOWN_UNICAST) == "True": vn_obj.set_flood_unknown_unicast(True) else: vn_obj.set_flood_unknown_unicast(False) self.vnc_lib().virtual_network_update(vn_obj)