def create_network_interface(self, group_name, location, nic_name, subnet): async_nic_creation = self.network_client.network_interfaces.begin_create_or_update( group_name, nic_name, # model style network_models.NetworkInterface( location=location, ip_configurations=[ network_models.NetworkInterfaceIPConfiguration( name="MyIpConfig", subnet=network_models.Subnet(id=subnet.id)) ]) # json style # { # 'location': location, # 'ip_configurations': [{ # 'name': 'MyIpConfig', # 'subnet': { # 'id': subnet.id # } # }] # } ) nic = async_nic_creation.result() return nic
def create_network_interface(network_client, vm_resource, subnet, nsg, private_ips, pips, offset): # type: (azure.mgmt.network.NetworkManagementClient, # settings.VmResource, networkmodels.Subnet, # networkmodels.NetworkSecurityGroup, List[str], dict, int) -> # msrestazure.azure_operation.AzureOperationPoller """Create a network interface :param azure.mgmt.network.NetworkManagementClient network_client: network client :param settings.VmResource vm_resource: VM Resource :param networkmodels.Subnet subnet: virtual network subnet :param networkmodels.NetworkSecurityGroup nsg: network security group :param list private_ips: list of static private ips :param dict pips: public ip map :param int offset: network interface number :rtype: msrestazure.azure_operation.AzureOperationPoller :return: msrestazure.azure_operation.AzureOperationPoller """ nic_name = settings.generate_network_interface_name(vm_resource, offset) # check and fail if nic exists try: network_client.network_interfaces.get( resource_group_name=vm_resource.resource_group, network_interface_name=nic_name, ) raise RuntimeError('network interface {} exists'.format(nic_name)) except msrestazure.azure_exceptions.CloudError as e: if e.status_code == 404: pass else: raise if util.is_none_or_empty(pips): pip = None logger.debug( 'not assigning public ip to network interface {}'.format(nic_name)) else: pip = pips[offset] logger.debug('assigning public ip {} to network interface {}'.format( pip.name, nic_name)) # create network ip config if private_ips is None: network_ip_config = networkmodels.NetworkInterfaceIPConfiguration( name=vm_resource.hostname_prefix, subnet=subnet, public_ip_address=pip, ) else: network_ip_config = networkmodels.NetworkInterfaceIPConfiguration( name=vm_resource.hostname_prefix, subnet=subnet, public_ip_address=pip, private_ip_address=private_ips[offset], private_ip_allocation_method=networkmodels.IPAllocationMethod. static, private_ip_address_version=networkmodels.IPVersion.ipv4, ) logger.debug('creating network interface: {}'.format(nic_name)) return network_client.network_interfaces.create_or_update( resource_group_name=vm_resource.resource_group, network_interface_name=nic_name, parameters=networkmodels.NetworkInterface( location=vm_resource.location, network_security_group=nsg, ip_configurations=[network_ip_config], enable_accelerated_networking=vm_resource.accelerated_networking, ), )