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

package com.azure.analytics.synapse.artifacts.models;

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

/** Session properties. */
@Fluent
public final class NotebookSessionProperties {
    /*
     * Amount of memory to use for the driver process.
     */
    @JsonProperty(value = "driverMemory", required = true)
    private String driverMemory;

    /*
     * Number of cores to use for the driver.
     */
    @JsonProperty(value = "driverCores", required = true)
    private int driverCores;

    /*
     * Amount of memory to use per executor process.
     */
    @JsonProperty(value = "executorMemory", required = true)
    private String executorMemory;

    /*
     * Number of cores to use for each executor.
     */
    @JsonProperty(value = "executorCores", required = true)
    private int executorCores;

    /*
     * Number of executors to launch for this session.
     */
    @JsonProperty(value = "numExecutors", required = true)
    private int numExecutors;

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

    /**
     * Get the driverMemory property: Amount of memory to use for the driver process.
     *
     * @return the driverMemory value.
     */
    public String getDriverMemory() {
        return this.driverMemory;
    }

    /**
     * Set the driverMemory property: Amount of memory to use for the driver process.
     *
     * @param driverMemory the driverMemory value to set.
     * @return the NotebookSessionProperties object itself.
     */
    public NotebookSessionProperties setDriverMemory(String driverMemory) {
        this.driverMemory = driverMemory;
        return this;
    }

    /**
     * Get the driverCores property: Number of cores to use for the driver.
     *
     * @return the driverCores value.
     */
    public int getDriverCores() {
        return this.driverCores;
    }

    /**
     * Set the driverCores property: Number of cores to use for the driver.
     *
     * @param driverCores the driverCores value to set.
     * @return the NotebookSessionProperties object itself.
     */
    public NotebookSessionProperties setDriverCores(int driverCores) {
        this.driverCores = driverCores;
        return this;
    }

    /**
     * Get the executorMemory property: Amount of memory to use per executor process.
     *
     * @return the executorMemory value.
     */
    public String getExecutorMemory() {
        return this.executorMemory;
    }

    /**
     * Set the executorMemory property: Amount of memory to use per executor process.
     *
     * @param executorMemory the executorMemory value to set.
     * @return the NotebookSessionProperties object itself.
     */
    public NotebookSessionProperties setExecutorMemory(String executorMemory) {
        this.executorMemory = executorMemory;
        return this;
    }

    /**
     * Get the executorCores property: Number of cores to use for each executor.
     *
     * @return the executorCores value.
     */
    public int getExecutorCores() {
        return this.executorCores;
    }

    /**
     * Set the executorCores property: Number of cores to use for each executor.
     *
     * @param executorCores the executorCores value to set.
     * @return the NotebookSessionProperties object itself.
     */
    public NotebookSessionProperties setExecutorCores(int executorCores) {
        this.executorCores = executorCores;
        return this;
    }

    /**
     * Get the numExecutors property: Number of executors to launch for this session.
     *
     * @return the numExecutors value.
     */
    public int getNumExecutors() {
        return this.numExecutors;
    }

    /**
     * Set the numExecutors property: Number of executors to launch for this session.
     *
     * @param numExecutors the numExecutors value to set.
     * @return the NotebookSessionProperties object itself.
     */
    public NotebookSessionProperties setNumExecutors(int numExecutors) {
        this.numExecutors = numExecutors;
        return this;
    }
}
