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

package com.azure.resourcemanager.desktopvirtualization.models;

import com.azure.core.management.SystemData;
import com.azure.resourcemanager.desktopvirtualization.fluent.models.SessionHostInner;
import java.time.OffsetDateTime;
import java.util.List;

/** An immutable client-side representation of SessionHost. */
public interface SessionHost {
    /**
     * Gets the id property: Fully qualified resource Id for the resource.
     *
     * @return the id value.
     */
    String id();

    /**
     * Gets the name property: The name of the resource.
     *
     * @return the name value.
     */
    String name();

    /**
     * Gets the type property: The type of the resource.
     *
     * @return the type value.
     */
    String type();

    /**
     * Gets the systemData property: Metadata pertaining to creation and last modification of the resource.
     *
     * @return the systemData value.
     */
    SystemData systemData();

    /**
     * Gets the objectId property: ObjectId of SessionHost. (internal use).
     *
     * @return the objectId value.
     */
    String objectId();

    /**
     * Gets the lastHeartBeat property: Last heart beat from SessionHost.
     *
     * @return the lastHeartBeat value.
     */
    OffsetDateTime lastHeartBeat();

    /**
     * Gets the sessions property: Number of sessions on SessionHost.
     *
     * @return the sessions value.
     */
    Integer sessions();

    /**
     * Gets the agentVersion property: Version of agent on SessionHost.
     *
     * @return the agentVersion value.
     */
    String agentVersion();

    /**
     * Gets the allowNewSession property: Allow a new session.
     *
     * @return the allowNewSession value.
     */
    Boolean allowNewSession();

    /**
     * Gets the virtualMachineId property: Virtual Machine Id of SessionHost's underlying virtual machine.
     *
     * @return the virtualMachineId value.
     */
    String virtualMachineId();

    /**
     * Gets the resourceId property: Resource Id of SessionHost's underlying virtual machine.
     *
     * @return the resourceId value.
     */
    String resourceId();

    /**
     * Gets the assignedUser property: User assigned to SessionHost.
     *
     * @return the assignedUser value.
     */
    String assignedUser();

    /**
     * Gets the friendlyName property: Friendly name of SessionHost.
     *
     * @return the friendlyName value.
     */
    String friendlyName();

    /**
     * Gets the status property: Status for a SessionHost.
     *
     * @return the status value.
     */
    Status status();

    /**
     * Gets the statusTimestamp property: The timestamp of the status.
     *
     * @return the statusTimestamp value.
     */
    OffsetDateTime statusTimestamp();

    /**
     * Gets the osVersion property: The version of the OS on the session host.
     *
     * @return the osVersion value.
     */
    String osVersion();

    /**
     * Gets the sxSStackVersion property: The version of the side by side stack on the session host.
     *
     * @return the sxSStackVersion value.
     */
    String sxSStackVersion();

    /**
     * Gets the updateState property: Update state of a SessionHost.
     *
     * @return the updateState value.
     */
    UpdateState updateState();

    /**
     * Gets the lastUpdateTime property: The timestamp of the last update.
     *
     * @return the lastUpdateTime value.
     */
    OffsetDateTime lastUpdateTime();

    /**
     * Gets the updateErrorMessage property: The error message.
     *
     * @return the updateErrorMessage value.
     */
    String updateErrorMessage();

    /**
     * Gets the sessionHostHealthCheckResults property: List of SessionHostHealthCheckReports.
     *
     * @return the sessionHostHealthCheckResults value.
     */
    List<SessionHostHealthCheckReport> sessionHostHealthCheckResults();

    /**
     * Gets the inner com.azure.resourcemanager.desktopvirtualization.fluent.models.SessionHostInner object.
     *
     * @return the inner object.
     */
    SessionHostInner innerModel();
}
