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

package com.azure.resourcemanager.devcenter.fluent.models;

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

/** Properties of network connection. These properties can be updated after the resource has been created. */
@Fluent
public class NetworkConnectionUpdateProperties {
    /*
     * The subnet to attach Virtual Machines to
     */
    @JsonProperty(value = "subnetId")
    private String subnetId;

    /*
     * Active Directory domain name
     */
    @JsonProperty(value = "domainName")
    private String domainName;

    /*
     * Active Directory domain Organization Unit (OU)
     */
    @JsonProperty(value = "organizationUnit")
    private String organizationUnit;

    /*
     * The username of an Active Directory account (user or service account) that has permissions to create computer
     * objects in Active Directory. Required format: admin@contoso.com.
     */
    @JsonProperty(value = "domainUsername")
    private String domainUsername;

    /*
     * The password for the account used to join domain
     */
    @JsonProperty(value = "domainPassword")
    private String domainPassword;

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

    /**
     * Get the subnetId property: The subnet to attach Virtual Machines to.
     *
     * @return the subnetId value.
     */
    public String subnetId() {
        return this.subnetId;
    }

    /**
     * Set the subnetId property: The subnet to attach Virtual Machines to.
     *
     * @param subnetId the subnetId value to set.
     * @return the NetworkConnectionUpdateProperties object itself.
     */
    public NetworkConnectionUpdateProperties withSubnetId(String subnetId) {
        this.subnetId = subnetId;
        return this;
    }

    /**
     * Get the domainName property: Active Directory domain name.
     *
     * @return the domainName value.
     */
    public String domainName() {
        return this.domainName;
    }

    /**
     * Set the domainName property: Active Directory domain name.
     *
     * @param domainName the domainName value to set.
     * @return the NetworkConnectionUpdateProperties object itself.
     */
    public NetworkConnectionUpdateProperties withDomainName(String domainName) {
        this.domainName = domainName;
        return this;
    }

    /**
     * Get the organizationUnit property: Active Directory domain Organization Unit (OU).
     *
     * @return the organizationUnit value.
     */
    public String organizationUnit() {
        return this.organizationUnit;
    }

    /**
     * Set the organizationUnit property: Active Directory domain Organization Unit (OU).
     *
     * @param organizationUnit the organizationUnit value to set.
     * @return the NetworkConnectionUpdateProperties object itself.
     */
    public NetworkConnectionUpdateProperties withOrganizationUnit(String organizationUnit) {
        this.organizationUnit = organizationUnit;
        return this;
    }

    /**
     * Get the domainUsername property: The username of an Active Directory account (user or service account) that has
     * permissions to create computer objects in Active Directory. Required format: admin@contoso.com.
     *
     * @return the domainUsername value.
     */
    public String domainUsername() {
        return this.domainUsername;
    }

    /**
     * Set the domainUsername property: The username of an Active Directory account (user or service account) that has
     * permissions to create computer objects in Active Directory. Required format: admin@contoso.com.
     *
     * @param domainUsername the domainUsername value to set.
     * @return the NetworkConnectionUpdateProperties object itself.
     */
    public NetworkConnectionUpdateProperties withDomainUsername(String domainUsername) {
        this.domainUsername = domainUsername;
        return this;
    }

    /**
     * Get the domainPassword property: The password for the account used to join domain.
     *
     * @return the domainPassword value.
     */
    public String domainPassword() {
        return this.domainPassword;
    }

    /**
     * Set the domainPassword property: The password for the account used to join domain.
     *
     * @param domainPassword the domainPassword value to set.
     * @return the NetworkConnectionUpdateProperties object itself.
     */
    public NetworkConnectionUpdateProperties withDomainPassword(String domainPassword) {
        this.domainPassword = domainPassword;
        return this;
    }

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