Пример #1
0
 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)
Пример #2
0
 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
Пример #3
0
    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)