/// <summary>
 /// Initializes a new instance of the JobInner class.
 /// </summary>
 /// <param name="schedulingPriority">Scheduling priority.</param>
 /// <param name="cluster">Cluster.</param>
 /// <param name="mountVolumes">Mount volumes.</param>
 /// <param name="nodeCount">Number of compute nodes to run the job
 /// on.</param>
 /// <param name="containerSettings">If provided the job will run in the
 /// specified container.</param>
 /// <param name="toolType">The toolkit type of this job.</param>
 /// <param name="cntkSettings">Specifies the settings for CNTK (aka
 /// Microsoft Cognitive Toolkit) job.</param>
 /// <param name="pyTorchSettings">Specifies the settings for pyTorch
 /// job.</param>
 /// <param name="tensorFlowSettings">Specifies the settings for Tensor
 /// Flow job.</param>
 /// <param name="caffeSettings">Specifies the settings for Caffe
 /// job.</param>
 /// <param name="caffe2Settings">Specifies the settings for Caffe2
 /// job.</param>
 /// <param name="chainerSettings">Specifies the settings for Chainer
 /// job.</param>
 /// <param name="customToolkitSettings">Specifies the settings for
 /// custom tool kit job.</param>
 /// <param name="customMpiSettings">Specifies the settings for custom
 /// MPI job.</param>
 /// <param name="horovodSettings">Specifies the settings for Horovod
 /// job.</param>
 /// <param name="jobPreparation">Specifies the actions to be performed
 /// before tool kit is launched.</param>
 /// <param name="jobOutputDirectoryPathSegment">Output directory path
 /// segment.</param>
 /// <param name="stdOutErrPathPrefix">Standard output directory path
 /// prefix.</param>
 /// <param name="inputDirectories">Input directories.</param>
 /// <param name="outputDirectories">Output directories.</param>
 /// <param name="environmentVariables">Environment variables.</param>
 /// <param name="secrets">Secrets.</param>
 /// <param name="constraints">Constraints associated with the
 /// Job.</param>
 /// <param name="creationTime">Creation time.</param>
 /// <param name="provisioningState">Provisioning state.</param>
 /// <param name="provisioningStateTransitionTime">Provisioning state
 /// transition time.</param>
 /// <param name="executionState">Execution state.</param>
 /// <param name="executionStateTransitionTime">Execution state
 /// transition time.</param>
 /// <param name="executionInfo">Information about the execution of a
 /// job.</param>
 public JobInner(string id = default(string), string name = default(string), string type = default(string), JobPriority schedulingPriority = default(JobPriority), ResourceId cluster = default(ResourceId), MountVolumes mountVolumes = default(MountVolumes), int?nodeCount = default(int?), ContainerSettings containerSettings = default(ContainerSettings), ToolType toolType = default(ToolType), CNTKsettings cntkSettings = default(CNTKsettings), PyTorchSettings pyTorchSettings = default(PyTorchSettings), TensorFlowSettings tensorFlowSettings = default(TensorFlowSettings), CaffeSettings caffeSettings = default(CaffeSettings), Caffe2Settings caffe2Settings = default(Caffe2Settings), ChainerSettings chainerSettings = default(ChainerSettings), CustomToolkitSettings customToolkitSettings = default(CustomToolkitSettings), CustomMpiSettings customMpiSettings = default(CustomMpiSettings), HorovodSettings horovodSettings = default(HorovodSettings), JobPreparation jobPreparation = default(JobPreparation), string jobOutputDirectoryPathSegment = default(string), string stdOutErrPathPrefix = default(string), IList <InputDirectory> inputDirectories = default(IList <InputDirectory>), IList <OutputDirectory> outputDirectories = default(IList <OutputDirectory>), IList <EnvironmentVariable> environmentVariables = default(IList <EnvironmentVariable>), IList <EnvironmentVariableWithSecretValue> secrets = default(IList <EnvironmentVariableWithSecretValue>), JobPropertiesConstraints constraints = default(JobPropertiesConstraints), System.DateTime?creationTime = default(System.DateTime?), ProvisioningState provisioningState = default(ProvisioningState), System.DateTime?provisioningStateTransitionTime = default(System.DateTime?), ExecutionState executionState = default(ExecutionState), System.DateTime?executionStateTransitionTime = default(System.DateTime?), JobPropertiesExecutionInfo executionInfo = default(JobPropertiesExecutionInfo))
     : base(id, name, type)
 {
     SchedulingPriority              = schedulingPriority;
     Cluster                         = cluster;
     MountVolumes                    = mountVolumes;
     NodeCount                       = nodeCount;
     ContainerSettings               = containerSettings;
     ToolType                        = toolType;
     CntkSettings                    = cntkSettings;
     PyTorchSettings                 = pyTorchSettings;
     TensorFlowSettings              = tensorFlowSettings;
     CaffeSettings                   = caffeSettings;
     Caffe2Settings                  = caffe2Settings;
     ChainerSettings                 = chainerSettings;
     CustomToolkitSettings           = customToolkitSettings;
     CustomMpiSettings               = customMpiSettings;
     HorovodSettings                 = horovodSettings;
     JobPreparation                  = jobPreparation;
     JobOutputDirectoryPathSegment   = jobOutputDirectoryPathSegment;
     StdOutErrPathPrefix             = stdOutErrPathPrefix;
     InputDirectories                = inputDirectories;
     OutputDirectories               = outputDirectories;
     EnvironmentVariables            = environmentVariables;
     Secrets                         = secrets;
     Constraints                     = constraints;
     CreationTime                    = creationTime;
     ProvisioningState               = provisioningState;
     ProvisioningStateTransitionTime = provisioningStateTransitionTime;
     ExecutionState                  = executionState;
     ExecutionStateTransitionTime    = executionStateTransitionTime;
     ExecutionInfo                   = executionInfo;
     CustomInit();
 }
 /// <summary>
 /// Initializes a new instance of the JobCreateParameters class.
 /// </summary>
 /// <param name="cluster">Cluster.</param>
 /// <param name="nodeCount">Node count.</param>
 /// <param name="stdOutErrPathPrefix">Standard output path
 /// prefix.</param>
 /// <param name="schedulingPriority">Scheduling priority.</param>
 /// <param name="mountVolumes">Mount volumes.</param>
 /// <param name="containerSettings">Container settings.</param>
 /// <param name="cntkSettings">CNTK settings.</param>
 /// <param name="pyTorchSettings">pyTorch settings.</param>
 /// <param name="tensorFlowSettings">TensorFlow settings.</param>
 /// <param name="caffeSettings">Caffe settings.</param>
 /// <param name="caffe2Settings">Caffe2 settings.</param>
 /// <param name="chainerSettings">Chainer settings.</param>
 /// <param name="customToolkitSettings">Custom tool kit job.</param>
 /// <param name="customMpiSettings">Custom MPI settings.</param>
 /// <param name="horovodSettings">Horovod settings.</param>
 /// <param name="jobPreparation">Job preparation.</param>
 /// <param name="inputDirectories">Input directories.</param>
 /// <param name="outputDirectories">Output directories.</param>
 /// <param name="environmentVariables">Environment variables.</param>
 /// <param name="secrets">Secrets.</param>
 /// <param name="constraints">Constraints associated with the
 /// Job.</param>
 public JobCreateParameters(ResourceId cluster, int nodeCount, string stdOutErrPathPrefix, JobPriority schedulingPriority = default(JobPriority), MountVolumes mountVolumes = default(MountVolumes), ContainerSettings containerSettings = default(ContainerSettings), CNTKsettings cntkSettings = default(CNTKsettings), PyTorchSettings pyTorchSettings = default(PyTorchSettings), TensorFlowSettings tensorFlowSettings = default(TensorFlowSettings), CaffeSettings caffeSettings = default(CaffeSettings), Caffe2Settings caffe2Settings = default(Caffe2Settings), ChainerSettings chainerSettings = default(ChainerSettings), CustomToolkitSettings customToolkitSettings = default(CustomToolkitSettings), CustomMpiSettings customMpiSettings = default(CustomMpiSettings), HorovodSettings horovodSettings = default(HorovodSettings), JobPreparation jobPreparation = default(JobPreparation), IList <InputDirectory> inputDirectories = default(IList <InputDirectory>), IList <OutputDirectory> outputDirectories = default(IList <OutputDirectory>), IList <EnvironmentVariable> environmentVariables = default(IList <EnvironmentVariable>), IList <EnvironmentVariableWithSecretValue> secrets = default(IList <EnvironmentVariableWithSecretValue>), JobBasePropertiesConstraints constraints = default(JobBasePropertiesConstraints))
 {
     SchedulingPriority    = schedulingPriority;
     Cluster               = cluster;
     MountVolumes          = mountVolumes;
     NodeCount             = nodeCount;
     ContainerSettings     = containerSettings;
     CntkSettings          = cntkSettings;
     PyTorchSettings       = pyTorchSettings;
     TensorFlowSettings    = tensorFlowSettings;
     CaffeSettings         = caffeSettings;
     Caffe2Settings        = caffe2Settings;
     ChainerSettings       = chainerSettings;
     CustomToolkitSettings = customToolkitSettings;
     CustomMpiSettings     = customMpiSettings;
     HorovodSettings       = horovodSettings;
     JobPreparation        = jobPreparation;
     StdOutErrPathPrefix   = stdOutErrPathPrefix;
     InputDirectories      = inputDirectories;
     OutputDirectories     = outputDirectories;
     EnvironmentVariables  = environmentVariables;
     Secrets               = secrets;
     Constraints           = constraints;
     CustomInit();
 }
 /// <summary>
 /// Validate the object.
 /// </summary>
 /// <exception cref="ValidationException">
 /// Thrown if validation fails
 /// </exception>
 public override void Validate()
 {
     if (Cluster != null)
     {
         Cluster.Validate();
     }
     if (ContainerSettings != null)
     {
         ContainerSettings.Validate();
     }
     if (PyTorchSettings != null)
     {
         PyTorchSettings.Validate();
     }
     if (TensorFlowSettings != null)
     {
         TensorFlowSettings.Validate();
     }
     if (Caffe2Settings != null)
     {
         Caffe2Settings.Validate();
     }
     if (ChainerSettings != null)
     {
         ChainerSettings.Validate();
     }
     if (CustomMpiSettings != null)
     {
         CustomMpiSettings.Validate();
     }
     if (HorovodSettings != null)
     {
         HorovodSettings.Validate();
     }
     if (JobPreparation != null)
     {
         JobPreparation.Validate();
     }
     if (InputDirectories != null)
     {
         foreach (var element in InputDirectories)
         {
             if (element != null)
             {
                 element.Validate();
             }
         }
     }
     if (OutputDirectories != null)
     {
         foreach (var element1 in OutputDirectories)
         {
             if (element1 != null)
             {
                 element1.Validate();
             }
         }
     }
     if (EnvironmentVariables != null)
     {
         foreach (var element2 in EnvironmentVariables)
         {
             if (element2 != null)
             {
                 element2.Validate();
             }
         }
     }
     if (Secrets != null)
     {
         foreach (var element3 in Secrets)
         {
             if (element3 != null)
             {
                 element3.Validate();
             }
         }
     }
 }
 /// <summary>
 /// Validate the object.
 /// </summary>
 /// <exception cref="ValidationException">
 /// Thrown if validation fails
 /// </exception>
 public virtual void Validate()
 {
     if (Cluster == null)
     {
         throw new ValidationException(ValidationRules.CannotBeNull, "Cluster");
     }
     if (StdOutErrPathPrefix == null)
     {
         throw new ValidationException(ValidationRules.CannotBeNull, "StdOutErrPathPrefix");
     }
     if (Cluster != null)
     {
         Cluster.Validate();
     }
     if (ContainerSettings != null)
     {
         ContainerSettings.Validate();
     }
     if (PyTorchSettings != null)
     {
         PyTorchSettings.Validate();
     }
     if (TensorFlowSettings != null)
     {
         TensorFlowSettings.Validate();
     }
     if (Caffe2Settings != null)
     {
         Caffe2Settings.Validate();
     }
     if (ChainerSettings != null)
     {
         ChainerSettings.Validate();
     }
     if (CustomMpiSettings != null)
     {
         CustomMpiSettings.Validate();
     }
     if (HorovodSettings != null)
     {
         HorovodSettings.Validate();
     }
     if (JobPreparation != null)
     {
         JobPreparation.Validate();
     }
     if (InputDirectories != null)
     {
         foreach (var element in InputDirectories)
         {
             if (element != null)
             {
                 element.Validate();
             }
         }
     }
     if (OutputDirectories != null)
     {
         foreach (var element1 in OutputDirectories)
         {
             if (element1 != null)
             {
                 element1.Validate();
             }
         }
     }
     if (EnvironmentVariables != null)
     {
         foreach (var element2 in EnvironmentVariables)
         {
             if (element2 != null)
             {
                 element2.Validate();
             }
         }
     }
     if (Secrets != null)
     {
         foreach (var element3 in Secrets)
         {
             if (element3 != null)
             {
                 element3.Validate();
             }
         }
     }
 }