// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
// Code generated by Microsoft (R) AutoRest Code Generator.

package com.azure.resourcemanager.workloads.models;

import com.azure.core.annotation.Fluent;
import com.fasterxml.jackson.annotation.JsonProperty;
import java.util.List;

/** The resource names object for load balancer and related resources. */
@Fluent
public final class LoadBalancerResourceNames {
    /*
     * The full resource name for load balancer. If this value is not provided, load balancer will be name as
     * {ASCS/DB}-loadBalancer.
     */
    @JsonProperty(value = "loadBalancerName")
    private String loadBalancerName;

    /*
     * The list of frontend IP configuration names. If provided as input, size of this list should be 2 for cs layer
     * and should be 1 for database layer.
     */
    @JsonProperty(value = "frontendIpConfigurationNames")
    private List<String> frontendIpConfigurationNames;

    /*
     * The list of backend pool names. Currently, ACSS deploys only one backend pool and hence, size of this list
     * should be 1
     */
    @JsonProperty(value = "backendPoolNames")
    private List<String> backendPoolNames;

    /*
     * The list of health probe names. If provided as input, size of this list should be 2 for cs layer and should be 1
     * for database layer.
     */
    @JsonProperty(value = "healthProbeNames")
    private List<String> healthProbeNames;

    /** Creates an instance of LoadBalancerResourceNames class. */
    public LoadBalancerResourceNames() {
    }

    /**
     * Get the loadBalancerName property: The full resource name for load balancer. If this value is not provided, load
     * balancer will be name as {ASCS/DB}-loadBalancer.
     *
     * @return the loadBalancerName value.
     */
    public String loadBalancerName() {
        return this.loadBalancerName;
    }

    /**
     * Set the loadBalancerName property: The full resource name for load balancer. If this value is not provided, load
     * balancer will be name as {ASCS/DB}-loadBalancer.
     *
     * @param loadBalancerName the loadBalancerName value to set.
     * @return the LoadBalancerResourceNames object itself.
     */
    public LoadBalancerResourceNames withLoadBalancerName(String loadBalancerName) {
        this.loadBalancerName = loadBalancerName;
        return this;
    }

    /**
     * Get the frontendIpConfigurationNames property: The list of frontend IP configuration names. If provided as input,
     * size of this list should be 2 for cs layer and should be 1 for database layer.
     *
     * @return the frontendIpConfigurationNames value.
     */
    public List<String> frontendIpConfigurationNames() {
        return this.frontendIpConfigurationNames;
    }

    /**
     * Set the frontendIpConfigurationNames property: The list of frontend IP configuration names. If provided as input,
     * size of this list should be 2 for cs layer and should be 1 for database layer.
     *
     * @param frontendIpConfigurationNames the frontendIpConfigurationNames value to set.
     * @return the LoadBalancerResourceNames object itself.
     */
    public LoadBalancerResourceNames withFrontendIpConfigurationNames(List<String> frontendIpConfigurationNames) {
        this.frontendIpConfigurationNames = frontendIpConfigurationNames;
        return this;
    }

    /**
     * Get the backendPoolNames property: The list of backend pool names. Currently, ACSS deploys only one backend pool
     * and hence, size of this list should be 1.
     *
     * @return the backendPoolNames value.
     */
    public List<String> backendPoolNames() {
        return this.backendPoolNames;
    }

    /**
     * Set the backendPoolNames property: The list of backend pool names. Currently, ACSS deploys only one backend pool
     * and hence, size of this list should be 1.
     *
     * @param backendPoolNames the backendPoolNames value to set.
     * @return the LoadBalancerResourceNames object itself.
     */
    public LoadBalancerResourceNames withBackendPoolNames(List<String> backendPoolNames) {
        this.backendPoolNames = backendPoolNames;
        return this;
    }

    /**
     * Get the healthProbeNames property: The list of health probe names. If provided as input, size of this list should
     * be 2 for cs layer and should be 1 for database layer.
     *
     * @return the healthProbeNames value.
     */
    public List<String> healthProbeNames() {
        return this.healthProbeNames;
    }

    /**
     * Set the healthProbeNames property: The list of health probe names. If provided as input, size of this list should
     * be 2 for cs layer and should be 1 for database layer.
     *
     * @param healthProbeNames the healthProbeNames value to set.
     * @return the LoadBalancerResourceNames object itself.
     */
    public LoadBalancerResourceNames withHealthProbeNames(List<String> healthProbeNames) {
        this.healthProbeNames = healthProbeNames;
        return this;
    }

    /**
     * Validates the instance.
     *
     * @throws IllegalArgumentException thrown if the instance is not valid.
     */
    public void validate() {
    }
}
