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

com.azure.resourcemanager.network.implementation.LoadBalancerOutboundRuleImpl Maven / Gradle / Ivy

Go to download

This package contains Microsoft Azure Network Management SDK. For documentation on how to use this package, please see https://aka.ms/azsdk/java/mgmt

The newest version!
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
package com.azure.resourcemanager.network.implementation;

import com.azure.core.management.SubResource;
import com.azure.resourcemanager.network.fluent.models.OutboundRuleInner;
import com.azure.resourcemanager.network.models.LoadBalancer;
import com.azure.resourcemanager.network.models.LoadBalancerBackend;
import com.azure.resourcemanager.network.models.LoadBalancerFrontend;
import com.azure.resourcemanager.network.models.LoadBalancerOutboundRule;
import com.azure.resourcemanager.network.models.LoadBalancerOutboundRuleProtocol;
import com.azure.resourcemanager.network.models.ProvisioningState;
import com.azure.resourcemanager.resources.fluentcore.arm.ResourceUtils;
import com.azure.resourcemanager.resources.fluentcore.arm.models.implementation.ChildResourceImpl;
import com.azure.resourcemanager.resources.fluentcore.utils.ResourceManagerUtils;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.TreeMap;

public class LoadBalancerOutboundRuleImpl extends ChildResourceImpl
    implements LoadBalancerOutboundRule,
    LoadBalancerOutboundRule.Definition,
    LoadBalancerOutboundRule.Update {

    LoadBalancerOutboundRuleImpl(OutboundRuleInner inner, LoadBalancerImpl parent) {
        super(inner, parent);
    }

    // Getters
    @Override
    public LoadBalancerOutboundRuleProtocol protocol() {
        return this.innerModel().protocol();
    }

    @Override
    public Map frontends() {
        Map nameToFrontEndMap = new TreeMap<>();
        if (this.innerModel().frontendIpConfigurations() != null && !this.innerModel().frontendIpConfigurations().isEmpty()) {
            for (SubResource frontendIpConfiguration : this.innerModel().frontendIpConfigurations()) {
                LoadBalancerFrontend frontend = this.parent()
                    .frontends()
                    .get(ResourceUtils.nameFromResourceId(frontendIpConfiguration.id()));
                nameToFrontEndMap.put(frontend.name(), frontend);
            }
        }
        return Collections.unmodifiableMap(nameToFrontEndMap);
    }

    @Override
    public LoadBalancerBackend backend() {
        return this
            .parent()
            .backends()
            .get(ResourceUtils.nameFromResourceId(this.innerModel().backendAddressPool().id()));
    }

    @Override
    public int allocatedOutboundPorts() {
        return this.innerModel().allocatedOutboundPorts();
    }

    @Override
    public ProvisioningState provisioningState() {
        return this.innerModel().provisioningState();
    }

    @Override
    public int idleTimeoutInMinutes() {
        return ResourceManagerUtils.toPrimitiveInt(this.innerModel().idleTimeoutInMinutes());
    }

    @Override
    public boolean tcpResetEnabled() {
        return this.innerModel().enableTcpReset().booleanValue();
    }

    @Override
    public String name() {
        return this.innerModel().name();
    }

    // Fluent setters

    @Override
    public LoadBalancerOutboundRuleImpl withProtocol(LoadBalancerOutboundRuleProtocol protocol) {
        this.innerModel().withProtocol(protocol);
        return this;
    }

    @Override
    public LoadBalancerOutboundRuleImpl fromBackend(String name) {
        // Ensure existence of backend, creating one if needed
        this.parent().defineBackend(name).attach();

        SubResource backendRef =
            new SubResource().withId(this.parent().futureResourceId() + "/backendAddressPools/" + name);
        this.innerModel().withBackendAddressPool(backendRef);
        return this;
    }

    @Override
    public LoadBalancerOutboundRuleImpl toFrontend(String name) {
        SubResource frontendRef = this.parent().ensureFrontendRef(name);
        if (frontendRef != null) {
            this.innerModel().withFrontendIpConfigurations(Arrays.asList(frontendRef));
        }
        return this;
    }

    @Override
    public LoadBalancerOutboundRuleImpl toFrontends(List names) {
        List frontendRefs = new ArrayList<>();
        if (names != null && !names.isEmpty()) {
            for (String name : names) {
                SubResource frontendRef = this.parent().ensureFrontendRef(name);
                frontendRefs.add(frontendRef);
            }
        }
        this.innerModel().withFrontendIpConfigurations(frontendRefs);
        return this;
    }

    @Override
    public LoadBalancerOutboundRuleImpl withIdleTimeoutInMinutes(int minutes) {
        this.innerModel().withIdleTimeoutInMinutes(minutes);
        return this;
    }

    @Override
    public LoadBalancerOutboundRuleImpl withEnableTcpReset(boolean enableTcpReset) {
        this.innerModel().withEnableTcpReset(enableTcpReset);
        return this;
    }

    // Verbs
    @Override
    public LoadBalancerImpl attach() {
        return this.parent().withOutboundRule(this);
    }

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy