// @ts-nocheck
/**
 * Argo Workflows API
 * Argo Workflows is an open source container-native workflow engine for orchestrating parallel jobs on Kubernetes. For more information, please see https://argoproj.github.io/argo-workflows/
 *
 * The version of the OpenAPI document: VERSION
 * 
 *
 * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
 * https://openapi-generator.tech
 * Do not edit the class manually.
 */

import { RequestFile } from './models';
import { IoArgoprojWorkflowV1alpha1Inputs } from './ioArgoprojWorkflowV1alpha1Inputs';
import { IoArgoprojWorkflowV1alpha1MemoizationStatus } from './ioArgoprojWorkflowV1alpha1MemoizationStatus';
import { IoArgoprojWorkflowV1alpha1NodeSynchronizationStatus } from './ioArgoprojWorkflowV1alpha1NodeSynchronizationStatus';
import { IoArgoprojWorkflowV1alpha1Outputs } from './ioArgoprojWorkflowV1alpha1Outputs';
import { IoArgoprojWorkflowV1alpha1TemplateRef } from './ioArgoprojWorkflowV1alpha1TemplateRef';

/**
* NodeStatus contains status information about an individual node in the workflow
*/
export class IoArgoprojWorkflowV1alpha1NodeStatus {
    /**
    * BoundaryID indicates the node ID of the associated template root node in which this node belongs to
    */
    'boundaryID'?: string;
    /**
    * Children is a list of child node IDs
    */
    'children'?: Array<string>;
    /**
    * Daemoned tracks whether or not this node was daemoned and need to be terminated
    */
    'daemoned'?: boolean;
    /**
    * DisplayName is a human readable representation of the node. Unique within a template boundary
    */
    'displayName'?: string;
    /**
    * EstimatedDuration in seconds.
    */
    'estimatedDuration'?: number;
    /**
    * Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON.  Wrappers are provided for many of the factory methods that the time package offers.
    */
    'finishedAt'?: Date;
    /**
    * HostNodeName name of the Kubernetes node on which the Pod is running, if applicable
    */
    'hostNodeName'?: string;
    /**
    * ID is a unique identifier of a node within the worklow It is implemented as a hash of the node name, which makes the ID deterministic
    */
    'id': string;
    'inputs'?: IoArgoprojWorkflowV1alpha1Inputs;
    'memoizationStatus'?: IoArgoprojWorkflowV1alpha1MemoizationStatus;
    /**
    * A human readable message indicating details about why the node is in this condition.
    */
    'message'?: string;
    /**
    * Name is unique name in the node tree used to generate the node ID
    */
    'name': string;
    /**
    * OutboundNodes tracks the node IDs which are considered \"outbound\" nodes to a template invocation. For every invocation of a template, there are nodes which we considered as \"outbound\". Essentially, these are last nodes in the execution sequence to run, before the template is considered completed. These nodes are then connected as parents to a following step.  In the case of single pod steps (i.e. container, script, resource templates), this list will be nil since the pod itself is already considered the \"outbound\" node. In the case of DAGs, outbound nodes are the \"target\" tasks (tasks with no children). In the case of steps, outbound nodes are all the containers involved in the last step group. NOTE: since templates are composable, the list of outbound nodes are carried upwards when a DAG/steps template invokes another DAG/steps template. In other words, the outbound nodes of a template, will be a superset of the outbound nodes of its last children.
    */
    'outboundNodes'?: Array<string>;
    'outputs'?: IoArgoprojWorkflowV1alpha1Outputs;
    /**
    * Phase a simple, high-level summary of where the node is in its lifecycle. Can be used as a state machine. Will be one of these values \"Pending\", \"Running\" before the node is completed, or \"Succeeded\", \"Skipped\", \"Failed\", \"Error\", or \"Omitted\" as a final state.
    */
    'phase'?: string;
    /**
    * PodIP captures the IP of the pod for daemoned steps
    */
    'podIP'?: string;
    /**
    * Progress to completion
    */
    'progress'?: string;
    /**
    * ResourcesDuration is indicative, but not accurate, resource duration. This is populated when the nodes completes.
    */
    'resourcesDuration'?: { [key: string]: number; };
    /**
    * Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON.  Wrappers are provided for many of the factory methods that the time package offers.
    */
    'startedAt'?: Date;
    'synchronizationStatus'?: IoArgoprojWorkflowV1alpha1NodeSynchronizationStatus;
    /**
    * TemplateName is the template name which this node corresponds to. Not applicable to virtual nodes (e.g. Retry, StepGroup)
    */
    'templateName'?: string;
    'templateRef'?: IoArgoprojWorkflowV1alpha1TemplateRef;
    /**
    * TemplateScope is the template scope in which the template of this node was retrieved.
    */
    'templateScope'?: string;
    /**
    * Type indicates type of node
    */
    'type': string;

    static discriminator: string | undefined = undefined;

    static attributeTypeMap: Array<{name: string, baseName: string, type: string}> = [
        {
            "name": "boundaryID",
            "baseName": "boundaryID",
            "type": "string"
        },
        {
            "name": "children",
            "baseName": "children",
            "type": "Array<string>"
        },
        {
            "name": "daemoned",
            "baseName": "daemoned",
            "type": "boolean"
        },
        {
            "name": "displayName",
            "baseName": "displayName",
            "type": "string"
        },
        {
            "name": "estimatedDuration",
            "baseName": "estimatedDuration",
            "type": "number"
        },
        {
            "name": "finishedAt",
            "baseName": "finishedAt",
            "type": "Date"
        },
        {
            "name": "hostNodeName",
            "baseName": "hostNodeName",
            "type": "string"
        },
        {
            "name": "id",
            "baseName": "id",
            "type": "string"
        },
        {
            "name": "inputs",
            "baseName": "inputs",
            "type": "IoArgoprojWorkflowV1alpha1Inputs"
        },
        {
            "name": "memoizationStatus",
            "baseName": "memoizationStatus",
            "type": "IoArgoprojWorkflowV1alpha1MemoizationStatus"
        },
        {
            "name": "message",
            "baseName": "message",
            "type": "string"
        },
        {
            "name": "name",
            "baseName": "name",
            "type": "string"
        },
        {
            "name": "outboundNodes",
            "baseName": "outboundNodes",
            "type": "Array<string>"
        },
        {
            "name": "outputs",
            "baseName": "outputs",
            "type": "IoArgoprojWorkflowV1alpha1Outputs"
        },
        {
            "name": "phase",
            "baseName": "phase",
            "type": "string"
        },
        {
            "name": "podIP",
            "baseName": "podIP",
            "type": "string"
        },
        {
            "name": "progress",
            "baseName": "progress",
            "type": "string"
        },
        {
            "name": "resourcesDuration",
            "baseName": "resourcesDuration",
            "type": "{ [key: string]: number; }"
        },
        {
            "name": "startedAt",
            "baseName": "startedAt",
            "type": "Date"
        },
        {
            "name": "synchronizationStatus",
            "baseName": "synchronizationStatus",
            "type": "IoArgoprojWorkflowV1alpha1NodeSynchronizationStatus"
        },
        {
            "name": "templateName",
            "baseName": "templateName",
            "type": "string"
        },
        {
            "name": "templateRef",
            "baseName": "templateRef",
            "type": "IoArgoprojWorkflowV1alpha1TemplateRef"
        },
        {
            "name": "templateScope",
            "baseName": "templateScope",
            "type": "string"
        },
        {
            "name": "type",
            "baseName": "type",
            "type": "string"
        }    ];

    static getAttributeTypeMap() {
        return IoArgoprojWorkflowV1alpha1NodeStatus.attributeTypeMap;
    }
}

