def handle_create(self): tenant_id = self.stack.context.tenant_id project_obj = self.vnc_lib().project_read(id=str(uuid.UUID(tenant_id))) ni_obj = vnc_api.NetworkIpam(name=self.properties[self.NAME], parent_obj=project_obj) ni_uuid = super(HeatNetworkIpam, self).resource_create(ni_obj) self.resource_id_set(ni_uuid)
def _create_vn_ri_vmi(self, obj_count=1): vn_objs = [] ipam_objs = [] ri_objs = [] vmi_objs = [] for i in range(obj_count): vn_obj = vnc_api.VirtualNetwork('%s-vn-%s' % (self.id(), i)) ipam_obj = vnc_api.NetworkIpam('%s-ipam-%s' % (self.id(), i)) vn_obj.add_network_ipam(ipam_obj, vnc_api.VnSubnetsType()) self._vnc_lib.network_ipam_create(ipam_obj) ipam_objs.append(ipam_obj) self._vnc_lib.virtual_network_create(vn_obj) vn_objs.append(vn_obj) ri_obj = vnc_api.RoutingInstance('%s-ri-%s' % (self.id(), i), parent_obj=vn_obj) self._vnc_lib.routing_instance_create(ri_obj) ri_objs.append(ri_obj) vmi_obj = vnc_api.VirtualMachineInterface( '%s-vmi-%s' % (self.id(), i), parent_obj=vnc_api.Project()) vmi_obj.add_virtual_network(vn_obj) self._vnc_lib.virtual_machine_interface_create(vmi_obj) vmi_objs.append(vmi_obj) return vn_objs, ipam_objs, ri_objs, vmi_objs
def _get_netipam_obj(self, ipam_fq_name=None, vn_obj=None): if ipam_fq_name: domain_name, project_name, ipam_name = ipam_fq_name domain_obj = vnc_api.Domain(domain_name) project_obj = vnc_api.Project(project_name, domain_obj) netipam_obj = vnc_api.NetworkIpam(ipam_name, project_obj) return netipam_obj if vn_obj: try: ipam_fq_name = vn_obj.get_fq_name()[:-1] ipam_fq_name.append('default-network-ipam') netipam_obj = self._vnc_lib.network_ipam_read( fq_name=ipam_fq_name) except vnc_exc.NoIdError: netipam_obj = vnc_api.NetworkIpam() return netipam_obj
def create_VirtualNetwork(network_name, network_subnet, network_mask, vnc, domain, project_name): """ FUNCTION TO CREATE VIRTUAL-NETWORK """ project = vnc.project_read(fq_name = [domain, project_name]) vn_obj = vnc_api.VirtualNetwork(name=network_name, parent_obj=project) vn_obj.add_network_ipam(vnc_api.NetworkIpam(), vnc_api.VnSubnetsType([vnc_api.IpamSubnetType(subnet = vnc_api.SubnetType(network_subnet,network_mask))])) vnc.virtual_network_create(vn_obj) print 'Network "{}" created successfully\n'.format(network_name)
def create_vn(self, vn_name, vn_subnetmask, vn_gw): print "Create virtual_network %s" % vn_name project = self._vnc_lib.project_read( fq_name=[self._domain, self._tenant_name]) vn_obj = vnc_api.VirtualNetwork(name=vn_name, parent_obj=project) vn_subnet = vn_subnetmask.split('/')[0] vn_mask = int(vn_subnetmask.split('/')[1]) vn_obj.add_network_ipam( vnc_api.NetworkIpam(), vnc_api.VnSubnetsType([ vnc_api.IpamSubnetType(subnet=vnc_api.SubnetType( vn_subnet, vn_mask), default_gateway=vn_gw) ])) self._vnc_lib.virtual_network_create(vn_obj)
def resource_create(self, context, ipam_q): ipam_name = ipam_q.get('name', None) project_id = self._project_id_neutron_to_vnc(ipam_q['tenant_id']) try: project_obj = self._project_read(proj_id=project_id) except vnc_exc.NoIdError: raise self._raise_contrail_exception("ProjectNotFound", project_id=project_id, resource='ipam') ipam_obj = self._ipam_neutron_to_vnc( ipam_q, vnc_api.NetworkIpam(ipam_name, project_obj)) try: self._resource_create(ipam_obj) except vnc_exc.RefsExistError as e: self._raise_contrail_exception('BadRequest', resource='ipam', msg=str(e)) return self._ipam_vnc_to_neutron(ipam_obj)
def virtual_network_locate(vn_name): fq_name = vn_name.split(':') try: vn_instance = client.virtual_network_read(fq_name=fq_name) print "Virtual network '%s' already exists" % vn_name return vn_instance except vnc_api.NoIdError: pass vn_name = fq_name[2] vn_instance = vnc_api.VirtualNetwork(vn_name) vn_instance.add_network_ipam( vnc_api.NetworkIpam(), vnc_api.VnSubnetsType([ vnc_api.IpamSubnetType(subnet=vnc_api.SubnetType('20.1.1.0', 24)) ])) client.virtual_network_create(vn_instance) print "Virtual network '%s' created" % vn_name return vn_instance
def _get_ipam(self): ipam = self.properties[self.IPAM] if ipam: try: ipam_obj = self.vnc_lib().network_ipam_read(id=ipam) except vnc_api.NoIdError: ipam_obj = self.vnc_lib().network_ipam_read(fq_name_str=ipam) else: tenant_id = self.stack.context.tenant_id project_obj = self.vnc_lib().project_read( id=str(uuid.UUID(tenant_id))) ipam_fq_name = project_obj.get_fq_name() + ['default-network-ipam'] try: ipam_obj = self.vnc_lib().network_ipam_read( fq_name=ipam_fq_name) except vnc_api.NoIdError: ipam_obj = vnc_api.NetworkIpam('default-network-ipam', project_obj) ipam_id = self.vnc_lib().network_ipam_create(ipam_obj) ipam_obj = self.vnc_lib().network_ipam_read(id=ipam_id) return ipam_obj
def ipam(project): return vnc_api.NetworkIpam( name='ipam-name', parent_obj=project, )
def construct_ipam(project): return vnc_api.NetworkIpam( name=VNC_VCENTER_IPAM, parent_obj=project )
from vnc_api import vnc_api vnc_lib = vnc_api.VncApi(api_server_host='10.10.7.149') vn_blue_obj = vnc_api.VirtualNetwork('vn-blue') vn_blue_obj.add_network_ipam(vnc_api.NetworkIpam(),vnc_api.VnSubnetsType([vnc_api.IpamSubnetType(subnet = vnc_api.SubnetType('10.0.2.0', 24))])) vnc_lib.virtual_network_create(vn_blue_obj) vn_red_obj = vnc_api.VirtualNetwork('vn-red') vn_red_obj.add_network_ipam(vnc_api.NetworkIpam(),vnc_api.VnSubnetsType([vnc_api.IpamSubnetType(subnet = vnc_api.SubnetType('10.0.3.0', 24))])) vnc_lib.virtual_network_create(vn_red_obj) policy_obj = vnc_api.NetworkPolicy('policy-red-blue',network_policy_entries = vnc_api.PolicyEntriesType([vnc_api.PolicyRuleType(direction='<>',action_list = vnc_api.ActionListType(simple_action='pass'), protocol = 'tcp',src_addresses = [vnc_api.AddressType(virtual_network = vn_blue_obj.get_fq_name_str())], src_ports = [vnc_api.PortType(-1, -1)],dst_addresses = [vnc_api.AddressType(virtual_network = vn_red_obj.get_fq_name_str())], dst_ports = [vnc_api.PortType(80, 80)])])) vnc_lib.network_policy_create(policy_obj) vn_blue_obj.add_network_policy(policy_obj, vnc_api.VirtualNetworkPolicyType(sequence=vnc_api.SequenceType(0, 0))) vn_red_obj.add_network_policy(policy_obj, vnc_api.VirtualNetworkPolicyType(sequence=vnc_api.SequenceType(0, 0))) vnc_lib.virtual_network_update(vn_blue_obj) vnc_lib.virtual_network_update(vn_red_obj) print vnc_lib.virtual_network_read(id = vn_blue_obj.uuid) print vnc_lib.virtual_networks_list()
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.NetworkIpam(name=self.properties[self.NAME], parent_obj=parent_obj) if self.properties.get(self.NETWORK_IPAM_MGMT) is not None: obj_1 = vnc_api.IpamType() if self.properties.get(self.NETWORK_IPAM_MGMT, {}).get(self.NETWORK_IPAM_MGMT_IPAM_METHOD) is not None: obj_1.set_ipam_method(self.properties.get(self.NETWORK_IPAM_MGMT, {}).get(self.NETWORK_IPAM_MGMT_IPAM_METHOD)) if self.properties.get(self.NETWORK_IPAM_MGMT, {}).get(self.NETWORK_IPAM_MGMT_IPAM_DNS_METHOD) is not None: obj_1.set_ipam_dns_method(self.properties.get(self.NETWORK_IPAM_MGMT, {}).get(self.NETWORK_IPAM_MGMT_IPAM_DNS_METHOD)) if self.properties.get(self.NETWORK_IPAM_MGMT, {}).get(self.NETWORK_IPAM_MGMT_IPAM_DNS_SERVER) is not None: obj_2 = vnc_api.IpamDnsAddressType() if self.properties.get(self.NETWORK_IPAM_MGMT, {}).get(self.NETWORK_IPAM_MGMT_IPAM_DNS_SERVER, {}).get(self.NETWORK_IPAM_MGMT_IPAM_DNS_SERVER_TENANT_DNS_SERVER_ADDRESS) is not None: obj_3 = vnc_api.IpAddressesType() if self.properties.get(self.NETWORK_IPAM_MGMT, {}).get(self.NETWORK_IPAM_MGMT_IPAM_DNS_SERVER, {}).get(self.NETWORK_IPAM_MGMT_IPAM_DNS_SERVER_TENANT_DNS_SERVER_ADDRESS, {}).get(self.NETWORK_IPAM_MGMT_IPAM_DNS_SERVER_TENANT_DNS_SERVER_ADDRESS_IP_ADDRESS) is not None: for index_3 in range(len(self.properties.get(self.NETWORK_IPAM_MGMT, {}).get(self.NETWORK_IPAM_MGMT_IPAM_DNS_SERVER, {}).get(self.NETWORK_IPAM_MGMT_IPAM_DNS_SERVER_TENANT_DNS_SERVER_ADDRESS, {}).get(self.NETWORK_IPAM_MGMT_IPAM_DNS_SERVER_TENANT_DNS_SERVER_ADDRESS_IP_ADDRESS))): obj_3.add_ip_address(self.properties.get(self.NETWORK_IPAM_MGMT, {}).get(self.NETWORK_IPAM_MGMT_IPAM_DNS_SERVER, {}).get(self.NETWORK_IPAM_MGMT_IPAM_DNS_SERVER_TENANT_DNS_SERVER_ADDRESS, {}).get(self.NETWORK_IPAM_MGMT_IPAM_DNS_SERVER_TENANT_DNS_SERVER_ADDRESS_IP_ADDRESS)[index_3]) obj_2.set_tenant_dns_server_address(obj_3) if self.properties.get(self.NETWORK_IPAM_MGMT, {}).get(self.NETWORK_IPAM_MGMT_IPAM_DNS_SERVER, {}).get(self.NETWORK_IPAM_MGMT_IPAM_DNS_SERVER_VIRTUAL_DNS_SERVER_NAME) is not None: obj_2.set_virtual_dns_server_name(self.properties.get(self.NETWORK_IPAM_MGMT, {}).get(self.NETWORK_IPAM_MGMT_IPAM_DNS_SERVER, {}).get(self.NETWORK_IPAM_MGMT_IPAM_DNS_SERVER_VIRTUAL_DNS_SERVER_NAME)) obj_1.set_ipam_dns_server(obj_2) if self.properties.get(self.NETWORK_IPAM_MGMT, {}).get(self.NETWORK_IPAM_MGMT_DHCP_OPTION_LIST) is not None: obj_2 = vnc_api.DhcpOptionsListType() if self.properties.get(self.NETWORK_IPAM_MGMT, {}).get(self.NETWORK_IPAM_MGMT_DHCP_OPTION_LIST, {}).get(self.NETWORK_IPAM_MGMT_DHCP_OPTION_LIST_DHCP_OPTION) is not None: for index_2 in range(len(self.properties.get(self.NETWORK_IPAM_MGMT, {}).get(self.NETWORK_IPAM_MGMT_DHCP_OPTION_LIST, {}).get(self.NETWORK_IPAM_MGMT_DHCP_OPTION_LIST_DHCP_OPTION))): obj_3 = vnc_api.DhcpOptionType() if self.properties.get(self.NETWORK_IPAM_MGMT, {}).get(self.NETWORK_IPAM_MGMT_DHCP_OPTION_LIST, {}).get(self.NETWORK_IPAM_MGMT_DHCP_OPTION_LIST_DHCP_OPTION, {})[index_2].get(self.NETWORK_IPAM_MGMT_DHCP_OPTION_LIST_DHCP_OPTION_DHCP_OPTION_NAME) is not None: obj_3.set_dhcp_option_name(self.properties.get(self.NETWORK_IPAM_MGMT, {}).get(self.NETWORK_IPAM_MGMT_DHCP_OPTION_LIST, {}).get(self.NETWORK_IPAM_MGMT_DHCP_OPTION_LIST_DHCP_OPTION, {})[index_2].get(self.NETWORK_IPAM_MGMT_DHCP_OPTION_LIST_DHCP_OPTION_DHCP_OPTION_NAME)) if self.properties.get(self.NETWORK_IPAM_MGMT, {}).get(self.NETWORK_IPAM_MGMT_DHCP_OPTION_LIST, {}).get(self.NETWORK_IPAM_MGMT_DHCP_OPTION_LIST_DHCP_OPTION, {})[index_2].get(self.NETWORK_IPAM_MGMT_DHCP_OPTION_LIST_DHCP_OPTION_DHCP_OPTION_VALUE) is not None: obj_3.set_dhcp_option_value(self.properties.get(self.NETWORK_IPAM_MGMT, {}).get(self.NETWORK_IPAM_MGMT_DHCP_OPTION_LIST, {}).get(self.NETWORK_IPAM_MGMT_DHCP_OPTION_LIST_DHCP_OPTION, {})[index_2].get(self.NETWORK_IPAM_MGMT_DHCP_OPTION_LIST_DHCP_OPTION_DHCP_OPTION_VALUE)) if self.properties.get(self.NETWORK_IPAM_MGMT, {}).get(self.NETWORK_IPAM_MGMT_DHCP_OPTION_LIST, {}).get(self.NETWORK_IPAM_MGMT_DHCP_OPTION_LIST_DHCP_OPTION, {})[index_2].get(self.NETWORK_IPAM_MGMT_DHCP_OPTION_LIST_DHCP_OPTION_DHCP_OPTION_VALUE_BYTES) is not None: obj_3.set_dhcp_option_value_bytes(self.properties.get(self.NETWORK_IPAM_MGMT, {}).get(self.NETWORK_IPAM_MGMT_DHCP_OPTION_LIST, {}).get(self.NETWORK_IPAM_MGMT_DHCP_OPTION_LIST_DHCP_OPTION, {})[index_2].get(self.NETWORK_IPAM_MGMT_DHCP_OPTION_LIST_DHCP_OPTION_DHCP_OPTION_VALUE_BYTES)) obj_2.add_dhcp_option(obj_3) obj_1.set_dhcp_option_list(obj_2) if self.properties.get(self.NETWORK_IPAM_MGMT, {}).get(self.NETWORK_IPAM_MGMT_CIDR_BLOCK) is not None: obj_2 = vnc_api.SubnetType() if self.properties.get(self.NETWORK_IPAM_MGMT, {}).get(self.NETWORK_IPAM_MGMT_CIDR_BLOCK, {}).get(self.NETWORK_IPAM_MGMT_CIDR_BLOCK_IP_PREFIX) is not None: obj_2.set_ip_prefix(self.properties.get(self.NETWORK_IPAM_MGMT, {}).get(self.NETWORK_IPAM_MGMT_CIDR_BLOCK, {}).get(self.NETWORK_IPAM_MGMT_CIDR_BLOCK_IP_PREFIX)) if self.properties.get(self.NETWORK_IPAM_MGMT, {}).get(self.NETWORK_IPAM_MGMT_CIDR_BLOCK, {}).get(self.NETWORK_IPAM_MGMT_CIDR_BLOCK_IP_PREFIX_LEN) is not None: obj_2.set_ip_prefix_len(self.properties.get(self.NETWORK_IPAM_MGMT, {}).get(self.NETWORK_IPAM_MGMT_CIDR_BLOCK, {}).get(self.NETWORK_IPAM_MGMT_CIDR_BLOCK_IP_PREFIX_LEN)) obj_1.set_cidr_block(obj_2) if self.properties.get(self.NETWORK_IPAM_MGMT, {}).get(self.NETWORK_IPAM_MGMT_HOST_ROUTES) is not None: obj_2 = vnc_api.RouteTableType() if self.properties.get(self.NETWORK_IPAM_MGMT, {}).get(self.NETWORK_IPAM_MGMT_HOST_ROUTES, {}).get(self.NETWORK_IPAM_MGMT_HOST_ROUTES_ROUTE) is not None: for index_2 in range(len(self.properties.get(self.NETWORK_IPAM_MGMT, {}).get(self.NETWORK_IPAM_MGMT_HOST_ROUTES, {}).get(self.NETWORK_IPAM_MGMT_HOST_ROUTES_ROUTE))): obj_3 = vnc_api.RouteType() if self.properties.get(self.NETWORK_IPAM_MGMT, {}).get(self.NETWORK_IPAM_MGMT_HOST_ROUTES, {}).get(self.NETWORK_IPAM_MGMT_HOST_ROUTES_ROUTE, {})[index_2].get(self.NETWORK_IPAM_MGMT_HOST_ROUTES_ROUTE_PREFIX) is not None: obj_3.set_prefix(self.properties.get(self.NETWORK_IPAM_MGMT, {}).get(self.NETWORK_IPAM_MGMT_HOST_ROUTES, {}).get(self.NETWORK_IPAM_MGMT_HOST_ROUTES_ROUTE, {})[index_2].get(self.NETWORK_IPAM_MGMT_HOST_ROUTES_ROUTE_PREFIX)) if self.properties.get(self.NETWORK_IPAM_MGMT, {}).get(self.NETWORK_IPAM_MGMT_HOST_ROUTES, {}).get(self.NETWORK_IPAM_MGMT_HOST_ROUTES_ROUTE, {})[index_2].get(self.NETWORK_IPAM_MGMT_HOST_ROUTES_ROUTE_NEXT_HOP) is not None: obj_3.set_next_hop(self.properties.get(self.NETWORK_IPAM_MGMT, {}).get(self.NETWORK_IPAM_MGMT_HOST_ROUTES, {}).get(self.NETWORK_IPAM_MGMT_HOST_ROUTES_ROUTE, {})[index_2].get(self.NETWORK_IPAM_MGMT_HOST_ROUTES_ROUTE_NEXT_HOP)) if self.properties.get(self.NETWORK_IPAM_MGMT, {}).get(self.NETWORK_IPAM_MGMT_HOST_ROUTES, {}).get(self.NETWORK_IPAM_MGMT_HOST_ROUTES_ROUTE, {})[index_2].get(self.NETWORK_IPAM_MGMT_HOST_ROUTES_ROUTE_NEXT_HOP_TYPE) is not None: obj_3.set_next_hop_type(self.properties.get(self.NETWORK_IPAM_MGMT, {}).get(self.NETWORK_IPAM_MGMT_HOST_ROUTES, {}).get(self.NETWORK_IPAM_MGMT_HOST_ROUTES_ROUTE, {})[index_2].get(self.NETWORK_IPAM_MGMT_HOST_ROUTES_ROUTE_NEXT_HOP_TYPE)) if self.properties.get(self.NETWORK_IPAM_MGMT, {}).get(self.NETWORK_IPAM_MGMT_HOST_ROUTES, {}).get(self.NETWORK_IPAM_MGMT_HOST_ROUTES_ROUTE, {})[index_2].get(self.NETWORK_IPAM_MGMT_HOST_ROUTES_ROUTE_COMMUNITY_ATTRIBUTES) is not None: obj_4 = vnc_api.CommunityAttributes() if self.properties.get(self.NETWORK_IPAM_MGMT, {}).get(self.NETWORK_IPAM_MGMT_HOST_ROUTES, {}).get(self.NETWORK_IPAM_MGMT_HOST_ROUTES_ROUTE, {})[index_2].get(self.NETWORK_IPAM_MGMT_HOST_ROUTES_ROUTE_COMMUNITY_ATTRIBUTES, {}).get(self.NETWORK_IPAM_MGMT_HOST_ROUTES_ROUTE_COMMUNITY_ATTRIBUTES_COMMUNITY_ATTRIBUTE) is not None: for index_4 in range(len(self.properties.get(self.NETWORK_IPAM_MGMT, {}).get(self.NETWORK_IPAM_MGMT_HOST_ROUTES, {}).get(self.NETWORK_IPAM_MGMT_HOST_ROUTES_ROUTE, {})[index_2].get(self.NETWORK_IPAM_MGMT_HOST_ROUTES_ROUTE_COMMUNITY_ATTRIBUTES, {}).get(self.NETWORK_IPAM_MGMT_HOST_ROUTES_ROUTE_COMMUNITY_ATTRIBUTES_COMMUNITY_ATTRIBUTE))): obj_4.add_community_attribute(self.properties.get(self.NETWORK_IPAM_MGMT, {}).get(self.NETWORK_IPAM_MGMT_HOST_ROUTES, {}).get(self.NETWORK_IPAM_MGMT_HOST_ROUTES_ROUTE, {})[index_2].get(self.NETWORK_IPAM_MGMT_HOST_ROUTES_ROUTE_COMMUNITY_ATTRIBUTES, {}).get(self.NETWORK_IPAM_MGMT_HOST_ROUTES_ROUTE_COMMUNITY_ATTRIBUTES_COMMUNITY_ATTRIBUTE)[index_4]) obj_3.set_community_attributes(obj_4) obj_2.add_route(obj_3) obj_1.set_host_routes(obj_2) obj_0.set_network_ipam_mgmt(obj_1) if self.properties.get(self.DISPLAY_NAME) is not None: obj_0.set_display_name(self.properties.get(self.DISPLAY_NAME)) # reference to virtual_DNS_refs if self.properties.get(self.VIRTUAL_DNS_REFS): for index_0 in range(len(self.properties.get(self.VIRTUAL_DNS_REFS))): try: ref_obj = self.vnc_lib().virtual_DNS_read( id=self.properties.get(self.VIRTUAL_DNS_REFS)[index_0] ) except vnc_api.NoIdError: ref_obj = self.vnc_lib().virtual_DNS_read( fq_name_str=self.properties.get(self.VIRTUAL_DNS_REFS)[index_0] ) obj_0.add_virtual_DNS(ref_obj) try: obj_uuid = super(ContrailNetworkIpam, self).resource_create(obj_0) except: raise Exception(_('network-ipam %s could not be updated.') % self.name) self.resource_id_set(obj_uuid)