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,
               v4subnet,
               v4gateway,
               v6subnet=None,
               v6gateway=None,
               rtList=None):
        try:
            ipam_obj = self.vnc_client.network_ipam_read(fq_name=[
                'default-domain', 'default-project', 'default-network-ipam'
            ])
        except Exception as e:
            logging.debug('ERROR: %s' % (str(e)))
            return
        cidr = v4subnet.split('/')
        subnet = vnc_api.SubnetType(ip_prefix=cidr[0],
                                    ip_prefix_len=int(cidr[1]))

        v4DnsServer = IPNetwork(v4subnet)[-2]

        if v4gateway:
            ipam_subnet = vnc_api.IpamSubnetType(subnet=subnet,
                                                 default_gateway=v4gateway)
        else:
            ipam_subnet = vnc_api.IpamSubnetType(
                subnet=subnet, dns_server_address=v4DnsServer)

        if v6subnet:
            v6DnsServer = IPNetwork(v6subnet)[-2]
            v6cidr = v6subnet.split('/')
            v6subnet = vnc_api.SubnetType(ip_prefix=v6cidr[0],
                                          ip_prefix_len=int(v6cidr[1]))
            if v6gateway:
                v6gateway = v6gateway.split('/')[0]
                ipam_v6subnet = vnc_api.IpamSubnetType(
                    subnet=v6subnet, default_gateway=v6gateway)
            else:
                ipam_v6subnet = vnc_api.IpamSubnetType(
                    subnet=v6subnet, dns_server_address=v6DnsServer)
            self.obj.add_network_ipam(ref_obj=ipam_obj,
                                      ref_data=vnc_api.VnSubnetsType(
                                          [ipam_subnet, ipam_v6subnet]))
        else:
            self.obj.add_network_ipam(ref_obj=ipam_obj,
                                      ref_data=vnc_api.VnSubnetsType(
                                          [ipam_subnet]))

        if rtList:
            rtObj = vnc_api.RouteTargetList()
            self.obj.set_route_target_list(rtObj)
            for rt in rtList:
                rtObj.add_route_target('target:%s' % (rt))
        try:
            self.vnc_client.virtual_network_create(self.obj)
        except Exception as e:
            logging.debug('ERROR: %s' % (str(e)))
        '''
示例#3
0
 def createNw(self, subnet, gateway=None, rtList=None):
     self.createSubnet(subnet, gateway)
     if rtList:
         rtObj = vnc_api.RouteTargetList()
         self.obj.set_route_target_list(rtObj)
         for rt in rtList:
             rtObj.add_route_target('target:%s' % (rt))
     try:
         self.vnc_client.virtual_network_create(self.obj)
     except Exception as e:
         print 'ERROR: %s' % (str(e))
示例#4
0
    def _neutron_dict_to_bgpvpn(self, bgpvpn_obj, bgpvpn_dict):
        if 'name' in bgpvpn_dict:
            bgpvpn_obj.set_display_name(bgpvpn_dict['name'])

        if 'type' in bgpvpn_dict:
            bgpvpn_obj.set_bgpvpn_type(bgpvpn_dict['type'])

        if 'route_targets' in bgpvpn_dict:
            rt_list = vnc_api.RouteTargetList(
                ['target:' + rt for rt in bgpvpn_dict['route_targets']])
            bgpvpn_obj.set_route_target_list(rt_list)

        if 'import_targets' in bgpvpn_dict:
            import_rt_list = vnc_api.RouteTargetList(
                ['target:' + rt for rt in bgpvpn_dict['import_targets']])
            bgpvpn_obj.set_import_route_target_list(import_rt_list)

        if 'export_targets' in bgpvpn_dict:
            export_rt_list = vnc_api.RouteTargetList(
                ['target:' + rt for rt in bgpvpn_dict['export_targets']])
            bgpvpn_obj.set_export_route_target_list(export_rt_list)

        return bgpvpn_obj
    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)
示例#6
0
文件: ppServer.py 项目: Inmarsat/tcc
def createVirtualNetwork(tenant, vnName, v4subnet, rt):
    project = vnc_client.project_read(fq_name_str = 'default-domain:' + tenant)
    vn = vnc_api.VirtualNetwork(name = vnName,
                    parent_obj = project)
    ipam_obj = vnc_client.network_ipam_read(fq_name = ['default-domain',
                                           'default-project', 'default-network-ipam'])
    cidr = v4subnet.split('/')
    subnet = vnc_api.SubnetType(ip_prefix = cidr[0],
                ip_prefix_len = int(cidr[1]))
    v4DnsServer = str(IPNetwork(v4subnet)[+2])
    v4gateway = str(IPNetwork(v4subnet)[+1])
    ipam_subnet = vnc_api.IpamSubnetType(subnet = subnet, dns_server_address = v4DnsServer,
                default_gateway = v4gateway, enable_dhcp = False)
    vn.add_network_ipam(ref_obj = ipam_obj,
                 ref_data = vnc_api.VnSubnetsType([ipam_subnet]))
    rtObj = vnc_api.RouteTargetList()
    vn.set_route_target_list(rtObj)
    rtObj.add_route_target('target:%s' %(rt))
    vnc_client.virtual_network_create(vn)
    vnObj = vnc_client.virtual_network_read(fq_name_str = 'default-domain:' + tenant + ':' + vnName)
    return vnObj
    def handle_update(self, json_snippet, tmpl_diff, prop_diff):
        try:
            obj_0 = self.vnc_lib().logical_router_read(
                id=self.resource_id
            )
        except:
            raise Exception(_('logical-router %s not found.') % self.name)

        if prop_diff.get(self.DISPLAY_NAME) is not None:
            obj_0.set_display_name(prop_diff.get(self.DISPLAY_NAME))
        if prop_diff.get(self.CONFIGURED_ROUTE_TARGET_LIST) is not None:
            obj_1 = vnc_api.RouteTargetList()
            if prop_diff.get(self.CONFIGURED_ROUTE_TARGET_LIST, {}).get(self.CONFIGURED_ROUTE_TARGET_LIST_ROUTE_TARGET) is not None:
                for index_1 in range(len(prop_diff.get(self.CONFIGURED_ROUTE_TARGET_LIST, {}).get(self.CONFIGURED_ROUTE_TARGET_LIST_ROUTE_TARGET))):
                    obj_1.add_route_target(prop_diff.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
        ref_obj_list = []
        ref_data_list = []
        if self.VIRTUAL_NETWORK_REFS in prop_diff:
            for index_0 in range(len(prop_diff.get(self.VIRTUAL_NETWORK_REFS) or [])):
                try:
                    ref_obj = self.vnc_lib().virtual_network_read(
                        id=prop_diff.get(self.VIRTUAL_NETWORK_REFS)[index_0]
                    )
                except:
                    ref_obj = self.vnc_lib().virtual_network_read(
                        fq_name_str=prop_diff.get(self.VIRTUAL_NETWORK_REFS)[index_0]
                    )
                ref_obj_list.append(ref_obj.fq_name)

            obj_0.set_virtual_network_list(ref_obj_list)
            # End: reference to virtual_network_refs

        # reference to service_instance_refs
        ref_obj_list = []
        ref_data_list = []
        if self.SERVICE_INSTANCE_REFS in prop_diff:
            for index_0 in range(len(prop_diff.get(self.SERVICE_INSTANCE_REFS) or [])):
                try:
                    ref_obj = self.vnc_lib().service_instance_read(
                        id=prop_diff.get(self.SERVICE_INSTANCE_REFS)[index_0]
                    )
                except:
                    ref_obj = self.vnc_lib().service_instance_read(
                        fq_name_str=prop_diff.get(self.SERVICE_INSTANCE_REFS)[index_0]
                    )
                ref_obj_list.append(ref_obj.fq_name)

            obj_0.set_service_instance_list(ref_obj_list)
            # End: reference to service_instance_refs

        # reference to route_table_refs
        ref_obj_list = []
        ref_data_list = []
        if self.ROUTE_TABLE_REFS in prop_diff:
            for index_0 in range(len(prop_diff.get(self.ROUTE_TABLE_REFS) or [])):
                try:
                    ref_obj = self.vnc_lib().route_table_read(
                        id=prop_diff.get(self.ROUTE_TABLE_REFS)[index_0]
                    )
                except:
                    ref_obj = self.vnc_lib().route_table_read(
                        fq_name_str=prop_diff.get(self.ROUTE_TABLE_REFS)[index_0]
                    )
                ref_obj_list.append(ref_obj.fq_name)

            obj_0.set_route_table_list(ref_obj_list)
            # End: reference to route_table_refs

        # reference to virtual_machine_interface_refs
        ref_obj_list = []
        ref_data_list = []
        if self.VIRTUAL_MACHINE_INTERFACE_REFS in prop_diff:
            for index_0 in range(len(prop_diff.get(self.VIRTUAL_MACHINE_INTERFACE_REFS) or [])):
                try:
                    ref_obj = self.vnc_lib().virtual_machine_interface_read(
                        id=prop_diff.get(self.VIRTUAL_MACHINE_INTERFACE_REFS)[index_0]
                    )
                except:
                    ref_obj = self.vnc_lib().virtual_machine_interface_read(
                        fq_name_str=prop_diff.get(self.VIRTUAL_MACHINE_INTERFACE_REFS)[index_0]
                    )
                ref_obj_list.append(ref_obj.fq_name)

            obj_0.set_virtual_machine_interface_list(ref_obj_list)
            # End: reference to virtual_machine_interface_refs

        # reference to route_target_refs
        ref_obj_list = []
        ref_data_list = []
        if self.ROUTE_TARGET_REFS in prop_diff:
            for index_0 in range(len(prop_diff.get(self.ROUTE_TARGET_REFS) or [])):
                try:
                    ref_obj = self.vnc_lib().route_target_read(
                        id=prop_diff.get(self.ROUTE_TARGET_REFS)[index_0]
                    )
                except:
                    ref_obj = self.vnc_lib().route_target_read(
                        fq_name_str=prop_diff.get(self.ROUTE_TARGET_REFS)[index_0]
                    )
                ref_obj_list.append(ref_obj.fq_name)

            obj_0.set_route_target_list(ref_obj_list)
            # End: reference to route_target_refs

        try:
            self.vnc_lib().logical_router_update(obj_0)
        except:
            raise Exception(_('logical-router %s could not be updated.') % self.name)
    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)
示例#9
0
def create_rt_list(rts, asn):
    rtl = vnc_api.RouteTargetList()
    for rt in rts:
        tar = "target:" + str(asn) + ":" + str(rt)
        rtl.add_route_target(tar)
    return rtl
vnc = vnc_api.VncApi(username="******",
                     password="******",
                     tenant_name="admin",
                     api_server_host="Contrail_IP")
tenant = vnc.project_read(fq_name=['default-domain', 'vCenter'])
ipam = vnc.network_ipam_read(
    fq_name=['default-domain', 'vCenter', 'vCenter-ipam'])

for subnet in subnets:
    start_addr = str(subnet[10])
    end_addr = str(subnet[100])
    vn = vnc_api.VirtualNetwork(name="Customer_" + str(network_number),
                                parent_obj=tenant)
    cidr = str(subnet)
    print subnet, "RD", str(AS) + ":" + str(network_number)
    prefix, prefix_len = cidr.split('/')
    subnet = vnc_api.SubnetType(ip_prefix=prefix, ip_prefix_len=prefix_len)
    alloc_pools = []
    alloc_pools.append(
        vnc_api.AllocationPoolType(start=start_addr, end=end_addr))
    ipam_subnet = vnc_api.IpamSubnetType(subnet=subnet,
                                         advertise_default=True,
                                         allocation_pools=alloc_pools)
    vn.set_network_ipam(ref_obj=ipam,
                        ref_data=vnc_api.VnSubnetsType([ipam_subnet]))
    route_targets = vnc_api.RouteTargetList(
        ['target:' + str(AS) + ":" + str(network_number)])
    vn.set_route_target_list(route_targets)
    vnc.virtual_network_create(vn)
    network_number = network_number + 1