package com.microsoft.azure.management.network.implementation;
import com.microsoft.azure.SubResource;
import com.microsoft.azure.management.apigeneration.LangDefinition;
import com.microsoft.azure.management.network.IPAllocationMethod;
import com.microsoft.azure.management.network.Network;
import com.microsoft.azure.management.network.PublicIPAddress;
import com.microsoft.azure.management.network.Subnet;
import com.microsoft.azure.management.network.VirtualNetworkGateway;
import com.microsoft.azure.management.network.VirtualNetworkGatewayIPConfiguration;
import com.microsoft.azure.management.resources.fluentcore.arm.ResourceUtils;
import com.microsoft.azure.management.resources.fluentcore.arm.models.implementation.ChildResourceImpl;
@LangDefinition
class VirtualNetworkGatewayIPConfigurationImpl
extends ChildResourceImpl<VirtualNetworkGatewayIPConfigurationInner, VirtualNetworkGatewayImpl, VirtualNetworkGateway>
implements
VirtualNetworkGatewayIPConfiguration,
VirtualNetworkGatewayIPConfiguration.Definition<VirtualNetworkGateway.DefinitionStages.WithCreate>,
VirtualNetworkGatewayIPConfiguration.UpdateDefinition<VirtualNetworkGateway.Update>,
VirtualNetworkGatewayIPConfiguration.Update {
VirtualNetworkGatewayIPConfigurationImpl(VirtualNetworkGatewayIPConfigurationInner inner, VirtualNetworkGatewayImpl parent) {
super(inner, parent);
}
@Override
public String name() {
return this.inner().name();
}
@Override
public String publicIPAddressId() {
if (this.inner().publicIPAddress() != null) {
return this.inner().publicIPAddress().id();
} else {
return null;
}
}
@Override
public String networkId() {
SubResource subnetRef = this.inner().subnet();
if (subnetRef != null) {
return ResourceUtils.parentResourceIdFromResourceId(subnetRef.id());
} else {
return null;
}
}
@Override
public String subnetName() {
SubResource subnetRef = this.inner().subnet();
if (subnetRef != null) {
return ResourceUtils.nameFromResourceId(subnetRef.id());
} else {
return null;
}
}
@Override
public IPAllocationMethod privateIPAllocationMethod() {
return inner().privateIPAllocationMethod();
}
@Override
public Subnet getSubnet() {
return this.parent().manager().getAssociatedSubnet(this.inner().subnet());
}
@Override
public VirtualNetworkGatewayIPConfigurationImpl withExistingSubnet(String networkId, String subnetName) {
SubResource subnetRef = new SubResource().withId(networkId + "/subnets/" + subnetName);
this.inner().withSubnet(subnetRef);
return this;
}
@Override
public VirtualNetworkGatewayIPConfigurationImpl withExistingSubnet(Subnet subnet) {
return this.withExistingSubnet(subnet.parent().id(), subnet.name());
}
@Override
public VirtualNetworkGatewayIPConfigurationImpl withExistingSubnet(Network network, String subnetName) {
return this.withExistingSubnet(network.id(), subnetName);
}
@Override
public VirtualNetworkGatewayImpl attach() {
return this.parent().withConfig(this);
}
@Override
public VirtualNetworkGatewayIPConfigurationImpl withExistingPublicIPAddress(PublicIPAddress pip) {
return this.withExistingPublicIPAddress(pip.id());
}
@Override
public VirtualNetworkGatewayIPConfigurationImpl withExistingPublicIPAddress(String resourceId) {
SubResource pipRef = new SubResource().withId(resourceId);
this.inner().withPublicIPAddress(pipRef);
return this;
}
}