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

com.microsoft.azure.management.network.VirtualNetworkGateway Maven / Gradle / Ivy

Go to download

This package contains Microsoft Azure Network Management SDK. A new set of management libraries are now Generally Available. For documentation on how to use the new libraries, please see https://aka.ms/azsdk/java/mgmt

There is a newer version: 1.41.4
Show newest version
/**
 * Copyright (c) Microsoft Corporation. All rights reserved.
 * Licensed under the MIT License. See License.txt in the project root for
 * license information.
 */
package com.microsoft.azure.management.network;


import com.microsoft.azure.PagedList;
import com.microsoft.azure.management.apigeneration.Beta;
import com.microsoft.azure.management.apigeneration.Beta.SinceVersion;
import com.microsoft.azure.management.apigeneration.Fluent;
import com.microsoft.azure.management.apigeneration.Method;
import com.microsoft.azure.management.network.implementation.NetworkManager;
import com.microsoft.azure.management.network.implementation.VirtualNetworkGatewayInner;
import com.microsoft.azure.management.network.model.HasPublicIPAddress;
import com.microsoft.azure.management.network.model.UpdatableWithTags;
import com.microsoft.azure.management.resources.fluentcore.arm.models.GroupableResource;
import com.microsoft.azure.management.resources.fluentcore.arm.models.Resource;
import com.microsoft.azure.management.resources.fluentcore.model.Appliable;
import com.microsoft.azure.management.resources.fluentcore.model.Creatable;
import com.microsoft.azure.management.resources.fluentcore.model.Refreshable;
import com.microsoft.azure.management.resources.fluentcore.model.Updatable;
import rx.Completable;
import rx.Observable;

import java.util.Collection;

/**
 * Entry point for Virtual Network Gateway management API in Azure.
 */
@Fluent
@Beta(SinceVersion.V1_3_0)
public interface VirtualNetworkGateway extends
        GroupableResource,
        Refreshable,
        Updatable,
        UpdatableWithTags {

    // Actions

    /**
     * Resets the primary of the virtual network gateway.
     */
    @Method
    void reset();

    /**
     * Resets the primary of the virtual network gateway asynchronously.
     * @return a representation of the deferred computation of this call
     */
    @Method
    Completable resetAsync();

    /**
     * @return all the connections associated with this virtual network gateway
     */
    @Method
    PagedList listConnections();

    /**
     * Get all the connections associated with this virtual network gateway asynchronously.
     * @return all the connections associated with this virtual network gateway
     */
    @Method
    Observable listConnectionsAsync();

    /**
     * Generates VPN profile for P2S client of the virtual network gateway in the specified resource group. Used for IKEV2 and radius based authentication.
     * @return String object if successful
     */
    @Method
    String generateVpnProfile();

    /**
     * Generates asynchronously VPN profile for P2S client of the virtual network gateway in the specified resource group. Used for IKEV2 and radius based authentication.
     * @return String object if successful
     */
    @Method
    Observable generateVpnProfileAsync();

    /**
     * @return the entry point to virtual network gateway connections management API for this virtual network gateway
     */
    VirtualNetworkGatewayConnections connections();

    // Getters

    /**
     * @return the gatewayType value
     */
    VirtualNetworkGatewayType gatewayType();

    /**
     * @return the type of this virtual network gateway
     */
    VpnType vpnType();

    /**
     * @return whether BGP is enabled for this virtual network gateway or not
     */
    boolean isBgpEnabled();

    /**
     * @return activeActive flag
     */
    boolean activeActive();

    /**
     * @return the resource id of the LocalNetworkGateway resource which represents local network site having default routes
     */
    String gatewayDefaultSiteResourceId();

    /**
     * @return the SKU of this virtual network gateway
     */
    VirtualNetworkGatewaySku sku();

    /**
     * @return the reference of the VpnClientConfiguration resource which represents the P2S VpnClient configurations
     */
    VpnClientConfiguration vpnClientConfiguration();

    /**
     * @return virtual network gateway's BGP speaker settings
     */
    BgpSettings bgpSettings();

    /**
     * @return IP configurations for virtual network gateway
     */
    Collection ipConfigurations();

    /**
     * The entirety of the virtual network gateway definition.
     */
    interface Definition extends
            DefinitionStages.Blank,
            DefinitionStages.WithGroup,
            DefinitionStages.WithGatewayType,
            DefinitionStages.WithSku,
            DefinitionStages.WithNetwork,
            DefinitionStages.WithBgp,
            DefinitionStages.WithCreate {
    }

    /**
     * Grouping of virtual network gateway definition stages.
     */
    interface DefinitionStages {
        /**
         * The first stage of a virtual network gateway definition.
         */
        interface Blank extends GroupableResource.DefinitionWithRegion {
        }

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

        /**
         * The stage of virtual network gateway definition allowing to specify virtual network gateway type.
         */
        interface WithGatewayType {
            /**
             * Use Express route gateway type.
             * @return the next stage of the definition
             */
            WithSku withExpressRoute();
            /**
             * Use Route-based VPN type.
             * @return the next stage of the definition
             */
            WithSku withRouteBasedVpn();
            /**
             * Use Policy-based VPN type. Note: this is available only for Basic SKU.
             * @return the next stage of the definition
             */
            WithCreate withPolicyBasedVpn();
        }

        /**
         * The stage of the virtual network gateway definition allowing to specify the virtual network.
         */
        interface WithNetwork {
            /**
             * Create a new virtual network to associate with the virtual network gateway,
             * based on the provided definition.
             *
             * @param creatable a creatable definition for a new virtual network
             * @return the next stage of the definition
             */
            WithGatewayType withNewNetwork(Creatable creatable);

            /**
             * Creates a new virtual network to associate with the virtual network gateway.
             * the virtual network will be created in the same resource group and region as of parent
             * virtual network gateway, it will be created with the specified address space and a subnet for virtual network gateway.
             *
             * @param name the name of the new virtual network
             * @param addressSpace the address space for the virtual network
             * @param subnetAddressSpaceCidr the address space for the subnet
             * @return the next stage of the definition
             */
            WithGatewayType withNewNetwork(String name, String addressSpace, String subnetAddressSpaceCidr);

            /**
             * Creates a new virtual network to associate with the virtual network gateway.
             * the virtual network will be created in the same resource group and region as of parent virtual network gateway,
             * it will be created with the specified address space and a default subnet for virtual network gateway.
             *
             * @param addressSpaceCidr the address space for the virtual network
             * @param subnetAddressSpaceCidr the address space for the subnet
             * @return the next stage of the definition
             */
            WithGatewayType withNewNetwork(String addressSpaceCidr, String subnetAddressSpaceCidr);

            /**
             * Associate an existing virtual network with the virtual network gateway.
             * @param network an existing virtual network
             * @return the next stage of the definition
             */
            WithGatewayType withExistingNetwork(Network network);
        }

        /**
         * The stage of virtual network gateway definition allowing to specify SKU.
         */
        interface WithSku {
            WithCreate withSku(VirtualNetworkGatewaySkuName skuName);
        }

        /**
         * The stage of virtual network gateway definition allowing to specify public IP address for IP configuration.
         */
        interface WithPublicIPAddress extends HasPublicIPAddress.DefinitionStages.WithPublicIPAddressNoDnsLabel {
        }

        /**
         * The stage of definition allowing to specify virtual network gateway's BGP speaker settings.
         * Note: BGP is supported on Route-Based VPN gateways only.
         */
        interface WithBgp {
            /**
             * @param asn the BGP speaker's ASN
             * @param bgpPeeringAddress the BGP peering address and BGP identifier of this BGP speaker
             * @return the next stage of the definition
             */
            WithCreate withBgp(long asn, String bgpPeeringAddress);
        }

        /**
         * The stage of the virtual network gateway 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,
                DefinitionStages.WithPublicIPAddress,
                DefinitionStages.WithBgp {
        }
    }

    /**
     * Grouping of virtual network gateway update stages.
     */
    interface UpdateStages {
        /**
         * The stage of virtual network gateway update allowing to change SKU.
         */
        interface WithSku {
            Update withSku(VirtualNetworkGatewaySkuName skuName);
        }

        /**
         * The stage of update allowing to specify virtual network gateway's BGP speaker settings.
         * Note: BGP is supported on Route-Based VPN gateways only.
         */
        interface WithBgp {
            /**
             * Enables BGP.
             * @param asn the BGP speaker's ASN
             * @param bgpPeeringAddress the BGP peering address and BGP identifier of this BGP speaker
             * @return the next stage of the update
             */
            Update withBgp(long asn, String bgpPeeringAddress);

            /**
             * Disables BGP for this virtual network gateway.
             * @return the next stage of the update
             */
            @Method
            Update withoutBgp();
        }

        /**
         * The stage of update allowing to specify virtual network gateway's point-to-site configuration.
         */
        interface WithPointToSiteConfiguration {

            /**
             * Begins the definition of point-to-site configuration to be added to this virtual network gateway.
             * @return the first stage of the point-to-site configuration definition
             */
            PointToSiteConfiguration.DefinitionStages.Blank definePointToSiteConfiguration();

            PointToSiteConfiguration.Update updatePointToSiteConfiguration();
        }
    }

    /**
     * The template for a virtual network gateway update operation, containing all the settings that
     * can be modified.
     */
    interface Update extends
            Appliable,
            Resource.UpdateWithTags,
            UpdateStages.WithSku,
            UpdateStages.WithBgp,
            UpdateStages.WithPointToSiteConfiguration {
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy