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

package com.azure.resourcemanager.recoveryservicessiterecovery.models;

import com.azure.core.annotation.Fluent;
import com.fasterxml.jackson.annotation.JsonProperty;

/** Logical Network Properties. */
@Fluent
public final class LogicalNetworkProperties {
    /*
     * The Friendly Name.
     */
    @JsonProperty(value = "friendlyName")
    private String friendlyName;

    /*
     * A value indicating whether Network Virtualization is enabled for the logical network.
     */
    @JsonProperty(value = "networkVirtualizationStatus")
    private String networkVirtualizationStatus;

    /*
     * A value indicating whether logical network is used as private test network by test failover.
     */
    @JsonProperty(value = "logicalNetworkUsage")
    private String logicalNetworkUsage;

    /*
     * A value indicating whether logical network definitions are isolated.
     */
    @JsonProperty(value = "logicalNetworkDefinitionsStatus")
    private String logicalNetworkDefinitionsStatus;

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

    /**
     * Get the friendlyName property: The Friendly Name.
     *
     * @return the friendlyName value.
     */
    public String friendlyName() {
        return this.friendlyName;
    }

    /**
     * Set the friendlyName property: The Friendly Name.
     *
     * @param friendlyName the friendlyName value to set.
     * @return the LogicalNetworkProperties object itself.
     */
    public LogicalNetworkProperties withFriendlyName(String friendlyName) {
        this.friendlyName = friendlyName;
        return this;
    }

    /**
     * Get the networkVirtualizationStatus property: A value indicating whether Network Virtualization is enabled for
     * the logical network.
     *
     * @return the networkVirtualizationStatus value.
     */
    public String networkVirtualizationStatus() {
        return this.networkVirtualizationStatus;
    }

    /**
     * Set the networkVirtualizationStatus property: A value indicating whether Network Virtualization is enabled for
     * the logical network.
     *
     * @param networkVirtualizationStatus the networkVirtualizationStatus value to set.
     * @return the LogicalNetworkProperties object itself.
     */
    public LogicalNetworkProperties withNetworkVirtualizationStatus(String networkVirtualizationStatus) {
        this.networkVirtualizationStatus = networkVirtualizationStatus;
        return this;
    }

    /**
     * Get the logicalNetworkUsage property: A value indicating whether logical network is used as private test network
     * by test failover.
     *
     * @return the logicalNetworkUsage value.
     */
    public String logicalNetworkUsage() {
        return this.logicalNetworkUsage;
    }

    /**
     * Set the logicalNetworkUsage property: A value indicating whether logical network is used as private test network
     * by test failover.
     *
     * @param logicalNetworkUsage the logicalNetworkUsage value to set.
     * @return the LogicalNetworkProperties object itself.
     */
    public LogicalNetworkProperties withLogicalNetworkUsage(String logicalNetworkUsage) {
        this.logicalNetworkUsage = logicalNetworkUsage;
        return this;
    }

    /**
     * Get the logicalNetworkDefinitionsStatus property: A value indicating whether logical network definitions are
     * isolated.
     *
     * @return the logicalNetworkDefinitionsStatus value.
     */
    public String logicalNetworkDefinitionsStatus() {
        return this.logicalNetworkDefinitionsStatus;
    }

    /**
     * Set the logicalNetworkDefinitionsStatus property: A value indicating whether logical network definitions are
     * isolated.
     *
     * @param logicalNetworkDefinitionsStatus the logicalNetworkDefinitionsStatus value to set.
     * @return the LogicalNetworkProperties object itself.
     */
    public LogicalNetworkProperties withLogicalNetworkDefinitionsStatus(String logicalNetworkDefinitionsStatus) {
        this.logicalNetworkDefinitionsStatus = logicalNetworkDefinitionsStatus;
        return this;
    }

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