com.microsoft.azure.management.network.implementation.PublicIPAddressImpl Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of azure-mgmt-network Show documentation
Show all versions of azure-mgmt-network Show documentation
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
/**
* 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.implementation;
import com.microsoft.azure.management.apigeneration.LangDefinition;
import com.microsoft.azure.management.network.IPConfiguration;
import com.microsoft.azure.management.network.IPAllocationMethod;
import com.microsoft.azure.management.network.IPVersion;
import com.microsoft.azure.management.network.IpTag;
import com.microsoft.azure.management.network.LoadBalancer;
import com.microsoft.azure.management.network.NetworkInterface;
import com.microsoft.azure.management.network.NicIPConfiguration;
import com.microsoft.azure.management.network.LoadBalancerPublicFrontend;
import com.microsoft.azure.management.network.PublicIPAddressDnsSettings;
import com.microsoft.azure.management.network.PublicIPAddress;
import com.microsoft.azure.management.network.PublicIPSkuType;
import com.microsoft.azure.management.network.model.AppliableWithTags;
import com.microsoft.azure.management.resources.fluentcore.arm.AvailabilityZoneId;
import com.microsoft.azure.management.resources.fluentcore.arm.ResourceUtils;
import com.microsoft.azure.management.resources.fluentcore.arm.models.implementation.GroupableResourceImpl;
import com.microsoft.azure.management.resources.fluentcore.utils.Utils;
import com.microsoft.rest.ServiceCallback;
import com.microsoft.rest.ServiceFuture;
import rx.Observable;
import rx.functions.Func1;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
/**
* Implementation for PublicIPAddress and its create and update interfaces.
*/
@LangDefinition
class PublicIPAddressImpl
extends GroupableResourceImpl<
PublicIPAddress,
PublicIPAddressInner,
PublicIPAddressImpl,
NetworkManager>
implements
PublicIPAddress,
PublicIPAddress.Definition,
PublicIPAddress.Update,
AppliableWithTags {
PublicIPAddressImpl(String name,
PublicIPAddressInner innerModel,
final NetworkManager networkManager) {
super(name, innerModel, networkManager);
}
// Verbs
@Override
protected Observable getInnerAsync() {
return this.manager().inner().publicIPAddresses().getByResourceGroupAsync(this.resourceGroupName(), this.name());
}
// Setters (fluent)
@Override
public PublicIPAddressImpl withIdleTimeoutInMinutes(int minutes) {
this.inner().withIdleTimeoutInMinutes(minutes);
return this;
}
@Override
public PublicIPAddressImpl withStaticIP() {
this.inner().withPublicIPAllocationMethod(IPAllocationMethod.STATIC);
return this;
}
@Override
public PublicIPAddressImpl withDynamicIP() {
this.inner().withPublicIPAllocationMethod(IPAllocationMethod.DYNAMIC);
return this;
}
@Override
public PublicIPAddressImpl withLeafDomainLabel(String dnsName) {
if (this.inner().dnsSettings() == null) {
this.inner().withDnsSettings(new PublicIPAddressDnsSettings());
}
this.inner().dnsSettings().withDomainNameLabel((dnsName == null) ? null : dnsName.toLowerCase());
return this;
}
@Override
public PublicIPAddressImpl withAvailabilityZone(AvailabilityZoneId zoneId) {
// Note: Zone is not updatable as of now, so this is available only during definition time.
// Service return `ResourceAvailabilityZonesCannotBeModified` upon attempt to append a new
// zone or remove one. Trying to remove the last one means attempt to change resource from
// zonal to regional, which is not supported.
//
if (this.inner().zones() == null) {
this.inner().withZones(new ArrayList());
}
this.inner().zones().add(zoneId.toString());
return this;
}
@Override
public PublicIPAddressImpl withSku(PublicIPSkuType skuType) {
// Note: SKU is not updatable as of now, so this is available only during definition time.
// Service return `SkuCannotBeChangedOnUpdate` upon attempt to change it.
// Service default is PublicIPSkuType.BASIC
//
this.inner().withSku(skuType.sku());
return this;
}
@Override
public PublicIPAddressImpl withoutLeafDomainLabel() {
this.inner().withDnsSettings(null);
return this;
}
@Override
public PublicIPAddressImpl withReverseFqdn(String reverseFqdn) {
if (this.inner().dnsSettings() == null) {
this.inner().withDnsSettings(new PublicIPAddressDnsSettings());
}
this.inner().dnsSettings().withReverseFqdn(reverseFqdn != null ? reverseFqdn.toLowerCase() : null);
return this;
}
@Override
public PublicIPAddressImpl withoutReverseFqdn() {
return this.withReverseFqdn(null);
}
// Getters
@Override
public int idleTimeoutInMinutes() {
return Utils.toPrimitiveInt(this.inner().idleTimeoutInMinutes());
}
@Override
public IPAllocationMethod ipAllocationMethod() {
return this.inner().publicIPAllocationMethod();
}
@Override
public IPVersion version() {
return this.inner().publicIPAddressVersion();
}
@Override
public String fqdn() {
if (this.inner().dnsSettings() != null) {
return this.inner().dnsSettings().fqdn();
} else {
return null;
}
}
@Override
public String reverseFqdn() {
if (this.inner().dnsSettings() != null) {
return this.inner().dnsSettings().reverseFqdn();
} else {
return null;
}
}
@Override
public String ipAddress() {
return this.inner().ipAddress();
}
@Override
public String leafDomainLabel() {
if (this.inner().dnsSettings() == null) {
return null;
} else {
return this.inner().dnsSettings().domainNameLabel();
}
}
// CreateUpdateTaskGroup.ResourceCreator implementation
@Override
public Observable createResourceAsync() {
// Clean up empty DNS settings
final PublicIPAddressDnsSettings dnsSettings = this.inner().dnsSettings();
if (dnsSettings != null) {
if ((dnsSettings.domainNameLabel() == null || dnsSettings.domainNameLabel().isEmpty())
&& (dnsSettings.fqdn() == null || dnsSettings.fqdn().isEmpty())
&& (dnsSettings.reverseFqdn() == null || dnsSettings.reverseFqdn().isEmpty())) {
this.inner().withDnsSettings(null);
}
}
return this.manager().inner().publicIPAddresses().createOrUpdateAsync(
this.resourceGroupName(), this.name(), this.inner())
.map(innerToFluentMap(this));
}
private boolean equalsResourceType(String resourceType) {
IPConfiguration ipConfig = this.inner().ipConfiguration();
if (ipConfig == null || resourceType == null) {
return false;
} else {
final String refId = this.inner().ipConfiguration().id();
final String resourceType2 = ResourceUtils.resourceTypeFromResourceId(refId);
return resourceType.equalsIgnoreCase(resourceType2);
}
}
@Override
public boolean hasAssignedLoadBalancer() {
return equalsResourceType("frontendIPConfigurations");
}
@Override
public LoadBalancerPublicFrontend getAssignedLoadBalancerFrontend() {
if (this.hasAssignedLoadBalancer()) {
final String refId = this.inner().ipConfiguration().id();
final String loadBalancerId = ResourceUtils.parentResourceIdFromResourceId(refId);
final LoadBalancer lb = this.myManager.loadBalancers().getById(loadBalancerId);
final String frontendName = ResourceUtils.nameFromResourceId(refId);
return (LoadBalancerPublicFrontend) lb.frontends().get(frontendName);
} else {
return null;
}
}
@Override
public boolean hasAssignedNetworkInterface() {
return equalsResourceType("ipConfigurations");
}
@Override
public Set availabilityZones() {
Set zones = new HashSet<>();
if (this.inner().zones() != null) {
for (String zone : this.inner().zones()) {
zones.add(AvailabilityZoneId.fromString(zone));
}
}
return Collections.unmodifiableSet(zones);
}
@Override
public PublicIPSkuType sku() {
return PublicIPSkuType.fromSku(this.inner().sku());
}
@Override
public List ipTags() {
return Collections.unmodifiableList(inner().ipTags() == null ? new ArrayList() : inner().ipTags());
}
@Override
public NicIPConfiguration getAssignedNetworkInterfaceIPConfiguration() {
if (this.hasAssignedNetworkInterface()) {
final String refId = this.inner().ipConfiguration().id();
final String parentId = ResourceUtils.parentResourceIdFromResourceId(refId);
final NetworkInterface nic = this.myManager.networkInterfaces().getById(parentId);
final String childName = ResourceUtils.nameFromResourceId(refId);
return nic.ipConfigurations().get(childName);
} else {
return null;
}
}
@Override
public PublicIPAddressImpl updateTags() {
return this;
}
@Override
public PublicIPAddress applyTags() {
return applyTagsAsync().toBlocking().last();
}
@Override
public Observable applyTagsAsync() {
return this.manager().inner().publicIPAddresses().updateTagsAsync(resourceGroupName(), name(), inner().getTags())
.flatMap(new Func1>() {
@Override
public Observable call(PublicIPAddressInner inner) {
setInner(inner);
return Observable.just((PublicIPAddress) PublicIPAddressImpl.this); }
});
}
@Override
public ServiceFuture applyTagsAsync(ServiceCallback callback) {
return ServiceFuture.fromBody(applyTagsAsync(), callback);
}
@Override
public PublicIPAddressImpl withIpTag(String tag) {
if (inner().ipTags() == null) {
inner().withIpTags(new ArrayList());
}
ipTags().add(new IpTag().withTag(tag));
return this;
}
@Override
public PublicIPAddressImpl withIpTag(String tag, String ipTagType) {
if (inner().ipTags() == null) {
inner().withIpTags(new ArrayList());
}
inner().ipTags().add(new IpTag().withTag(tag).withIpTagType(ipTagType));
return this;
}
@Override
public PublicIPAddressImpl withoutIpTag(String tag) {
if (tag != null && inner().ipTags() != null) {
for (IpTag ipTag : inner().ipTags()) {
if (tag.equals(ipTag.tag())) {
inner().ipTags().remove(ipTag);
return this;
}
}
}
return this;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy