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

package com.azure.resourcemanager.networkcloud.models;

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

/** NetworkInterface represents properties of the network interface. */
@Immutable
public final class NetworkInterface {
    /*
     * The partial address of Peripheral Component Interconnect (PCI).
     */
    @JsonProperty(value = "address", access = JsonProperty.Access.WRITE_ONLY)
    private String address;

    /*
     * The connection type of the device.
     */
    @JsonProperty(value = "deviceConnectionType", access = JsonProperty.Access.WRITE_ONLY)
    private DeviceConnectionType deviceConnectionType;

    /*
     * The model name of the device.
     */
    @JsonProperty(value = "model", access = JsonProperty.Access.WRITE_ONLY)
    private String model;

    /*
     * The physical slot for this device.
     */
    @JsonProperty(value = "physicalSlot", access = JsonProperty.Access.WRITE_ONLY)
    private Long physicalSlot;

    /*
     * The number of ports on the device.
     */
    @JsonProperty(value = "portCount", access = JsonProperty.Access.WRITE_ONLY)
    private Long portCount;

    /*
     * The maximum amount of data in GB that the line card transmits through a port at any given second.
     */
    @JsonProperty(value = "portSpeed", access = JsonProperty.Access.WRITE_ONLY)
    private Long portSpeed;

    /*
     * The vendor name of the device.
     */
    @JsonProperty(value = "vendor", access = JsonProperty.Access.WRITE_ONLY)
    private String vendor;

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

    /**
     * Get the address property: The partial address of Peripheral Component Interconnect (PCI).
     *
     * @return the address value.
     */
    public String address() {
        return this.address;
    }

    /**
     * Get the deviceConnectionType property: The connection type of the device.
     *
     * @return the deviceConnectionType value.
     */
    public DeviceConnectionType deviceConnectionType() {
        return this.deviceConnectionType;
    }

    /**
     * Get the model property: The model name of the device.
     *
     * @return the model value.
     */
    public String model() {
        return this.model;
    }

    /**
     * Get the physicalSlot property: The physical slot for this device.
     *
     * @return the physicalSlot value.
     */
    public Long physicalSlot() {
        return this.physicalSlot;
    }

    /**
     * Get the portCount property: The number of ports on the device.
     *
     * @return the portCount value.
     */
    public Long portCount() {
        return this.portCount;
    }

    /**
     * Get the portSpeed property: The maximum amount of data in GB that the line card transmits through a port at any
     * given second.
     *
     * @return the portSpeed value.
     */
    public Long portSpeed() {
        return this.portSpeed;
    }

    /**
     * Get the vendor property: The vendor name of the device.
     *
     * @return the vendor value.
     */
    public String vendor() {
        return this.vendor;
    }

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