/*
 * Tapis Applications API
 *
 * The Tapis Applications API provides for management of Tapis applications including permissions.
 *
 * The version of the OpenAPI document: 26Q1.0
 * Contact: cicsupport@tacc.utexas.edu
 * Generated by: https://openapi-generator.tech
 */

use crate::models;
use serde::{Deserialize, Serialize};

#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
pub struct JobAttributes {
    #[serde(rename = "description", skip_serializing_if = "Option::is_none")]
    pub description: Option<String>,
    #[serde(rename = "dynamicExecSystem", skip_serializing_if = "Option::is_none")]
    pub dynamic_exec_system: Option<bool>,
    #[serde(
        rename = "execSystemConstraints",
        skip_serializing_if = "Option::is_none"
    )]
    pub exec_system_constraints: Option<Vec<String>>,
    #[serde(rename = "execSystemId", skip_serializing_if = "Option::is_none")]
    pub exec_system_id: Option<String>,
    #[serde(rename = "execSystemExecDir", skip_serializing_if = "Option::is_none")]
    pub exec_system_exec_dir: Option<String>,
    #[serde(rename = "execSystemInputDir", skip_serializing_if = "Option::is_none")]
    pub exec_system_input_dir: Option<String>,
    #[serde(
        rename = "execSystemOutputDir",
        skip_serializing_if = "Option::is_none"
    )]
    pub exec_system_output_dir: Option<String>,
    #[serde(rename = "dtnSystemInputDir", skip_serializing_if = "Option::is_none")]
    pub dtn_system_input_dir: Option<String>,
    #[serde(rename = "dtnSystemOutputDir", skip_serializing_if = "Option::is_none")]
    pub dtn_system_output_dir: Option<String>,
    #[serde(
        rename = "execSystemLogicalQueue",
        skip_serializing_if = "Option::is_none"
    )]
    pub exec_system_logical_queue: Option<String>,
    #[serde(rename = "archiveSystemId", skip_serializing_if = "Option::is_none")]
    pub archive_system_id: Option<String>,
    #[serde(rename = "archiveSystemDir", skip_serializing_if = "Option::is_none")]
    pub archive_system_dir: Option<String>,
    #[serde(rename = "archiveOnAppError", skip_serializing_if = "Option::is_none")]
    pub archive_on_app_error: Option<bool>,
    #[serde(rename = "archiveMode", skip_serializing_if = "Option::is_none")]
    pub archive_mode: Option<models::ArchiveModeEnum>,
    #[serde(rename = "isMpi", skip_serializing_if = "Option::is_none")]
    pub is_mpi: Option<bool>,
    #[serde(rename = "mpiCmd", skip_serializing_if = "Option::is_none")]
    pub mpi_cmd: Option<String>,
    #[serde(rename = "cmdPrefix", skip_serializing_if = "Option::is_none")]
    pub cmd_prefix: Option<String>,
    #[serde(rename = "parameterSet", skip_serializing_if = "Option::is_none")]
    pub parameter_set: Option<Box<models::ParameterSet>>,
    #[serde(rename = "fileInputs", skip_serializing_if = "Option::is_none")]
    pub file_inputs: Option<Vec<models::AppFileInput>>,
    #[serde(rename = "fileInputArrays", skip_serializing_if = "Option::is_none")]
    pub file_input_arrays: Option<Vec<models::AppFileInputArray>>,
    #[serde(rename = "nodeCount", skip_serializing_if = "Option::is_none")]
    pub node_count: Option<i32>,
    #[serde(rename = "coresPerNode", skip_serializing_if = "Option::is_none")]
    pub cores_per_node: Option<i32>,
    #[serde(rename = "memoryMB", skip_serializing_if = "Option::is_none")]
    pub memory_mb: Option<i32>,
    #[serde(rename = "maxMinutes", skip_serializing_if = "Option::is_none")]
    pub max_minutes: Option<i32>,
    #[serde(rename = "subscriptions", skip_serializing_if = "Option::is_none")]
    pub subscriptions: Option<Vec<models::ReqSubscribe>>,
    #[serde(rename = "tags", skip_serializing_if = "Option::is_none")]
    pub tags: Option<Vec<String>>,
}

impl JobAttributes {
    pub fn new() -> JobAttributes {
        JobAttributes {
            description: None,
            dynamic_exec_system: None,
            exec_system_constraints: None,
            exec_system_id: None,
            exec_system_exec_dir: None,
            exec_system_input_dir: None,
            exec_system_output_dir: None,
            dtn_system_input_dir: None,
            dtn_system_output_dir: None,
            exec_system_logical_queue: None,
            archive_system_id: None,
            archive_system_dir: None,
            archive_on_app_error: None,
            archive_mode: None,
            is_mpi: None,
            mpi_cmd: None,
            cmd_prefix: None,
            parameter_set: None,
            file_inputs: None,
            file_input_arrays: None,
            node_count: None,
            cores_per_node: None,
            memory_mb: None,
            max_minutes: None,
            subscriptions: None,
            tags: None,
        }
    }
}
