Exemple #1
0
    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
Exemple #2
0
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,
        ),
    )