All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.azure.resourcemanager.network.models.NetworkInterface Maven / Gradle / Ivy

// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.

package com.azure.resourcemanager.network.models;

import com.azure.core.annotation.Fluent;
import com.azure.resourcemanager.network.NetworkManager;
import com.azure.resourcemanager.network.fluent.models.NetworkInterfaceInner;
import com.azure.resourcemanager.resources.fluentcore.arm.models.GroupableResource;
import com.azure.resourcemanager.resources.fluentcore.arm.models.Resource;
import com.azure.resourcemanager.resources.fluentcore.model.Accepted;
import com.azure.resourcemanager.resources.fluentcore.model.Appliable;
import com.azure.resourcemanager.resources.fluentcore.model.Creatable;
import com.azure.resourcemanager.resources.fluentcore.model.Refreshable;
import com.azure.resourcemanager.resources.fluentcore.model.Updatable;
import java.util.Map;

/** Network interface. */
@Fluent
public interface NetworkInterface
    extends NetworkInterfaceBase,
        GroupableResource,
        Refreshable,
        Updatable,
        UpdatableWithTags {
    /** @return the IP configurations of this network interface, indexed by their names. */
    Map ipConfigurations();

    /** @return the primary IP configuration of this network interface */
    NicIpConfiguration primaryIPConfiguration();

    /** The entirety of the network interface definition. */
    interface Definition
        extends DefinitionStages.Blank,
            DefinitionStages.WithGroup,
            DefinitionStages.WithPrimaryNetwork,
            DefinitionStages.WithPrimaryNetworkSubnet,
            DefinitionStages.WithPrimaryPrivateIP,
            DefinitionStages.WithCreate {
    }

    /** Grouping of network interface definition stages. */
    interface DefinitionStages {
        /** The stage of the network interface definition allowing to associate it with a load balancer. */
        interface WithLoadBalancer {
            /**
             * Associates the network interface's primary IP configuration with a backend of an existing load balancer.
             *
             * @param loadBalancer an existing load balancer
             * @param backendName the name of an existing backend on that load balancer
             * @return the next stage of the definition
             */
            WithCreate withExistingLoadBalancerBackend(LoadBalancer loadBalancer, String backendName);

            /**
             * Associates the network interface's primary IP configuration with an inbound NAT rule of an existing load
             * balancer.
             *
             * @param loadBalancer an existing load balancer
             * @param inboundNatRuleName the name of an existing inbound NAT rule on the selected load balancer
             * @return the next stage of the definition
             */
            WithCreate withExistingLoadBalancerInboundNatRule(LoadBalancer loadBalancer, String inboundNatRuleName);
        }

        /** The first stage of the network interface. */
        interface Blank extends GroupableResource.DefinitionWithRegion {
        }

        /** The stage of the network interface definition allowing to specify the resource group. */
        interface WithGroup extends GroupableResource.DefinitionStages.WithGroup {
        }

        /**
         * The stage of the network interface definition allowing to specify the virtual network for primary IP
         * configuration.
         */
        interface WithPrimaryNetwork {
            /**
             * Create a new virtual network to associate with the network interface's primary IP configuration, based on
             * the provided definition.
             *
             * @param creatable a creatable definition for a new virtual network
             * @return the next stage of the definition
             */
            WithPrimaryPrivateIP withNewPrimaryNetwork(Creatable creatable);

            /**
             * Creates a new virtual network to associate with the network interface's primary IP configuration.
             *
             * 

The virtual network will be created in the same resource group and region as of network interface, it * will be created with the specified address space and a default subnet covering the entirety of the * network IP address space. * * @param name the name of the new virtual network * @param addressSpace the address space for rhe virtual network * @return the next stage of the definition */ WithPrimaryPrivateIP withNewPrimaryNetwork(String name, String addressSpace); /** * Creates a new virtual network to associate with the network interface's primary IP configuration. * *

The virtual network will be created in the same resource group and region as of network interface, it * will be created with the specified address space and a default subnet covering the entirety of the * network IP address space. * * @param addressSpace the address space for the virtual network * @return the next stage of the definition */ WithPrimaryPrivateIP withNewPrimaryNetwork(String addressSpace); /** * Associate an existing virtual network with the network interface's primary IP configuration. * * @param network an existing virtual network * @return the next stage of the definition */ WithPrimaryNetworkSubnet withExistingPrimaryNetwork(Network network); } /** The stage of the network interface definition allowing to specify subnet. */ interface WithPrimaryNetworkSubnet { /** * Associate a subnet with the network interface's primary IP configuration. * * @param name the subnet name * @return the next stage of the definition */ WithPrimaryPrivateIP withSubnet(String name); } /** * The stage of the network interface definition allowing to specify private IP address within a virtual network * subnet. */ interface WithPrimaryPrivateIP { /** * Enables dynamic private IP address allocation within the specified existing virtual network subnet for * the network interface's primary IP configuration. * * @return the next stage of network interface definition */ WithCreate withPrimaryPrivateIPAddressDynamic(); /** * Assigns the specified static private IP address within the specified existing virtual network subnet to * the network interface's primary IP configuration. * * @param staticPrivateIPAddress the static IP address within the specified subnet to assign to the network * interface * @return the next stage of network interface definition */ WithCreate withPrimaryPrivateIPAddressStatic(String staticPrivateIPAddress); } /** * The stage of the network interface definition allowing to associate public IP address with it's primary IP * configuration. */ interface WithPrimaryPublicIPAddress { /** * Create a new public IP address to associate with network interface's primary IP configuration, based on * the provided definition. * * @param creatable a creatable definition for a new public IP * @return the next stage of the definition */ WithCreate withNewPrimaryPublicIPAddress(Creatable creatable); /** * Creates a new public IP address in the same region and group as the resource and associate it with the * network interface's primary IP configuration. * *

the internal name and DNS label for the public IP address will be derived from the network interface * name * * @return the next stage of the definition */ WithCreate withNewPrimaryPublicIPAddress(); /** * Creates a new public IP address in the same region and group as the resource, with the specified DNS * label and associate it with the network interface's primary IP configuration. * *

the internal name for the public IP address will be derived from the DNS label * * @param leafDnsLabel the leaf domain label * @return the next stage of the definition */ WithCreate withNewPrimaryPublicIPAddress(String leafDnsLabel); /** * Associates an existing public IP address with the network interface's primary IP configuration. * * @param publicIPAddress an existing public IP address * @return the next stage of the definition */ WithCreate withExistingPrimaryPublicIPAddress(PublicIpAddress publicIPAddress); } /** The stage of the network interface definition allowing to associate a network security group. */ interface WithNetworkSecurityGroup { /** * Create a new network security group to associate with network interface, based on the provided * definition. * * @param creatable a creatable definition for a new network security group * @return the next stage of the definition */ WithCreate withNewNetworkSecurityGroup(Creatable creatable); /** * Associates an existing network security group with the network interface. * * @param networkSecurityGroup an existing network security group * @return the next stage of the definition */ WithCreate withExistingNetworkSecurityGroup(NetworkSecurityGroup networkSecurityGroup); } /** The stage of the network interface definition allowing to associate a application security group. */ interface WithApplicationSecurityGroup { /** * Associates an existing application security group with the network interface. * * @param applicationSecurityGroup an existing application security group * @return the next stage of the definition */ WithCreate withExistingApplicationSecurityGroup(ApplicationSecurityGroup applicationSecurityGroup); } /** The stage of the network interface definition allowing to associate a secondary IP configurations. */ interface WithSecondaryIPConfiguration { /** * Starts definition of a secondary IP configuration. * * @param name name for the IP configuration * @return the first stage of a secondary IP configuration definition */ NicIpConfiguration.DefinitionStages.Blank defineSecondaryIPConfiguration(String name); } /** The stage of the network interface definition allowing to enable accelerated networking. */ interface WithAcceleratedNetworking { /** * Enables accelerated networking. * *

Note that additional steps need to be taken in the virtual machine itself for the virtual machine * associated with this network interface to be able to take advantage of accelerated networking. This * feature might not be available in some regions, virtual machine sizes, or operating system versions. It * can be enabled only during the creation of a network interface, not during an update. * * @return the next stage of the definition */ WithCreate withAcceleratedNetworking(); } /** The stage of the definition allowing to specify delete options for the public ip address. */ interface WithPublicIPAddressDeleteOptions { /** * Sets delete options for public ip address. * * @param deleteOptions the delete options for primary network interfaces * @return the next stage of the update */ WithCreate withPrimaryPublicIPAddressDeleteOptions(DeleteOptions deleteOptions); } /** * The stage of the network interface definition which contains all the minimum required inputs for the resource * to be created, but also allows for any other optional settings to be specified. */ interface WithCreate extends Creatable, Resource.DefinitionWithTags, WithPrimaryPublicIPAddress, WithNetworkSecurityGroup, WithSecondaryIPConfiguration, WithAcceleratedNetworking, WithLoadBalancer, WithApplicationSecurityGroup, WithPublicIPAddressDeleteOptions { /** * Enables IP forwarding in the network interface. * * @return the next stage of the definition */ WithCreate withIPForwarding(); /** * Specifies the IP address of the custom DNS server to associate with the network interface. * *

Note this method's effect is additive, i.e. each time it is used, the new dns server is added to the * network interface. * * @param ipAddress the IP address of the DNS server * @return the next stage of the definition */ WithCreate withDnsServer(String ipAddress); /** * Specifies the internal DNS name label for the network interface. * * @param dnsNameLabel the internal DNS name label * @return the next stage of the definition */ WithCreate withInternalDnsNameLabel(String dnsNameLabel); /** * Begins creating the network interface resource. * * @return the accepted create operation */ Accepted beginCreate(); } } /** Grouping of network interface update stages. */ interface UpdateStages { /** The stage of the network interface update allowing to specify subnet. */ interface WithPrimaryNetworkSubnet { /** * Associate a subnet with the network interface. * * @param name the subnet name * @return the next stage of the network interface update */ Update withSubnet(String name); } /** * The stage of the network interface update allowing to specify private IP address within a virtual network * subnet. */ interface WithPrimaryPrivateIP { /** * Enables dynamic private IP address allocation within the specified existing virtual network subnet for * the network interface's primary IP configuration. * * @return the next stage of network interface update */ Update withPrimaryPrivateIPAddressDynamic(); /** * Assigns the specified static private IP address within the specified existing virtual network subnet to * the network interface's primary IP configuration. * * @param staticPrivateIPAddress the static IP address within the specified subnet to assign to the primary * IP configuration * @return the next stage of network interface update */ Update withPrimaryPrivateIPAddressStatic(String staticPrivateIPAddress); } /** * The stage of the network interface update allowing to associate public IP address with it's primary IP * configuration. */ interface WithPrimaryPublicIPAddress { /** * Create a new public IP address to associate the network interface's primary IP configuration, based on * the provided definition. * *

if there is public IP associated with the primary IP configuration then that will be removed in favour * of this * * @param creatable a creatable definition for a new public IP * @return the next stage of the network interface update */ Update withNewPrimaryPublicIPAddress(Creatable creatable); /** * Creates a new public IP address in the same region and group as the resource and associate it with the * network interface's primary IP configuration. * *

the internal name and DNS label for the public IP address will be derived from the network interface * name, if there is an existing public IP association then that will be removed in favour of this * * @return the next stage of the network interface update */ Update withNewPrimaryPublicIPAddress(); /** * Creates a new public IP address in the same region and group as the resource, with the specified DNS * label and associate it with the network interface's primary IP configuration. * *

the internal name for the public IP address will be derived from the DNS label, if there is an * existing public IP association then that will be removed in favour of this * * @param leafDnsLabel the leaf domain label * @return the next stage of the network interface update */ Update withNewPrimaryPublicIPAddress(String leafDnsLabel); /** * Specifies that remove any public IP associated with the network interface's primary IP configuration. * * @return the next stage of the network interface update */ Update withoutPrimaryPublicIPAddress(); /** * Associates an existing public IP address with the network interface's primary IP configuration. if there * is an existing public IP association then that will be removed in favour of this * * @param publicIPAddress an existing public IP address * @return the next stage of the network interface update */ Update withExistingPrimaryPublicIPAddress(PublicIpAddress publicIPAddress); } /** The stage of the network interface update allowing to associate network security group. */ interface WithNetworkSecurityGroup { /** * Create a new network security group to associate with network interface, based on the provided * definition. * * @param creatable a creatable definition for a new network security group * @return the next stage of the network interface update */ Update withNewNetworkSecurityGroup(Creatable creatable); /** * Associates an existing network security group with the network interface. * * @param networkSecurityGroup an existing network security group * @return the next stage of the network interface update */ Update withExistingNetworkSecurityGroup(NetworkSecurityGroup networkSecurityGroup); /** * Specifies that remove any network security group associated with the network interface. * * @return the next stage of the network interface update */ Update withoutNetworkSecurityGroup(); } /** The stage of the network interface update allowing to associate a application security group. */ interface WithApplicationSecurityGroup { /** * Associates an existing application security group with the network interface. * * @param applicationSecurityGroup an existing application security group * @return the next stage of the update */ Update withExistingApplicationSecurityGroup(ApplicationSecurityGroup applicationSecurityGroup); /** * Removes the application security group from the network interface. * * @param applicationSecurityGroupName the name of the application security group * @return the next stage of the update */ Update withoutApplicationSecurityGroup(String applicationSecurityGroupName); } /** The stage of the network interface update allowing to enable or disable IP forwarding. */ interface WithIPForwarding { /** * Enable IP forwarding in the network interface. * * @return the next stage of the network interface update */ Update withIPForwarding(); /** * Disable IP forwarding in the network interface. * * @return the next stage of the network interface update */ Update withoutIPForwarding(); } /** The stage of the network interface update allowing to specify DNS servers. */ interface WithDnsServer { /** * Specifies the IP address of the custom DNS server to associate with the network interface. * *

Note this method's effect is additive, i.e. each time it is used, the new dns server is added to the * network interface. * * @param ipAddress the IP address of the DNS server * @return the next stage of the network interface update */ Update withDnsServer(String ipAddress); /** * Removes a DNS server associated with the network interface. * * @param ipAddress the IP address of the DNS server * @return the next stage of the network interface update */ Update withoutDnsServer(String ipAddress); /** * Specifies to use the default Azure DNS server for the network interface. * *

Using azure DNS server will remove any custom DNS server associated with this network interface. * * @return the next stage of the network interface update */ Update withAzureDnsServer(); } /** The stage of the network interface update allowing to configure IP configuration. */ interface WithIPConfiguration { /** * Starts definition of a secondary IP configuration. * * @param name name for the IP configuration * @return the first stage of the update */ NicIpConfiguration.UpdateDefinitionStages.Blank defineSecondaryIPConfiguration( String name); /** * Starts update of an IP configuration. * * @param name name of the IP configuration * @return the first stage of the update */ NicIpConfiguration.Update updateIPConfiguration(String name); /** * Removes the specified IP configuration. * * @param name the name of an existing IP configuration * @return the next stage of the update */ Update withoutIPConfiguration(String name); } /** The stage of the network interface definition allowing to specify accelerated networking. */ interface WithAcceleratedNetworking { /** * Enables accelerated networking. *

* Note that additional steps need to be taken in the virtual machine itself for the virtual machine * associated with this network interface to be able to take advantage of accelerated networking. * This feature might not be available in some regions, virtual machine sizes, or operating system versions. * It cannot be enabled if it has already been attached to a running virtual machine. * @return the next stage of the update */ Update withAcceleratedNetworking(); /** * Disables accelerated networking. * * @return the next stage of the update */ Update withoutAcceleratedNetworking(); } /** The stage of the network interface update allowing to associate it with a load balancer. */ interface WithLoadBalancer { /** * Associates the network interface's primary IP configuration with a backend of an existing load balancer. * * @param loadBalancer an existing load balancer * @param backendName the name of an existing backend on that load balancer * @return the next stage of the update */ Update withExistingLoadBalancerBackend(LoadBalancer loadBalancer, String backendName); /** * Associates the network interface's primary IP configuration with an inbound NAT rule of an existing load * balancer. * * @param loadBalancer an existing load balancer * @param inboundNatRuleName the name of an existing inbound NAT rule on the selected load balancer * @return the next stage of the update */ Update withExistingLoadBalancerInboundNatRule(LoadBalancer loadBalancer, String inboundNatRuleName); /** * Removes all the existing associations with any load balancer backends. * * @return the next stage of the update */ Update withoutLoadBalancerBackends(); /** * Removes all the existing associations with any load balancer inbound NAT rules. * * @return the next stage of the update */ Update withoutLoadBalancerInboundNatRules(); } /** The stage of the network interface update allowing to specify delete options for the public ip address. */ interface WithPublicIPAddressDeleteOptions { /** * Sets delete options for public ip address. * * @param deleteOptions the delete options for primary network interfaces * @return the next stage of the update */ Update withPrimaryPublicIPAddressDeleteOptions(DeleteOptions deleteOptions); } } /** The template for an update operation, containing all the settings that can be modified. */ interface Update extends Appliable, Resource.UpdateWithTags, UpdateStages.WithPrimaryNetworkSubnet, UpdateStages.WithPrimaryPrivateIP, UpdateStages.WithPrimaryPublicIPAddress, UpdateStages.WithNetworkSecurityGroup, UpdateStages.WithIPForwarding, UpdateStages.WithDnsServer, UpdateStages.WithIPConfiguration, UpdateStages.WithLoadBalancer, UpdateStages.WithAcceleratedNetworking, UpdateStages.WithApplicationSecurityGroup, UpdateStages.WithPublicIPAddressDeleteOptions { } }





© 2015 - 2025 Weber Informatics LLC | Privacy Policy