From 561ea1f9c3dad4682602f2c53413d64eac546c4a Mon Sep 17 00:00:00 2001 From: Alex Collins Date: Mon, 24 Feb 2020 16:33:58 -0800 Subject: [PATCH] Updated to sdks --- .gitignore | 21 + .openapi-generator-ignore | 23 + .openapi-generator/VERSION | 1 + .travis.yml | 22 + README.md | 145 +- build.gradle | 114 ++ build.sbt | 23 + docs/ArchiveStrategy.md | 14 + docs/Arguments.md | 14 + docs/Artifact.md | 26 + docs/ArtifactLocation.md | 19 + docs/ArtifactRepositoryRef.md | 13 + docs/ArtifactoryArtifact.md | 15 + docs/ArtifactoryAuth.md | 14 + docs/Backoff.md | 14 + docs/ContinueOn.md | 14 + docs/DAGTask.md | 22 + docs/DAGTemplate.md | 15 + docs/ExecutorConfig.md | 13 + docs/GitArtifact.md | 20 + docs/HDFSArtifact.md | 22 + docs/HDFSConfig.md | 20 + docs/HDFSKrbConfig.md | 18 + docs/HTTPArtifact.md | 13 + docs/Inputs.md | 14 + docs/ItemValue.md | 17 + docs/Metadata.md | 14 + docs/NodeStatus.md | 32 + docs/Outputs.md | 15 + docs/ParallelSteps.md | 12 + docs/Parameter.md | 17 + docs/PodGC.md | 13 + docs/RawArtifact.md | 13 + docs/ResourceTemplate.md | 18 + docs/RetryStrategy.md | 15 + docs/S3Artifact.md | 20 + docs/S3Bucket.md | 19 + docs/ScriptTemplate.md | 35 + docs/Sequence.md | 16 + docs/SuspendTemplate.md | 13 + docs/Template.md | 45 + docs/TemplateRef.md | 15 + docs/UserContainer.md | 35 + docs/ValueFrom.md | 16 + docs/Workflow.md | 17 + docs/WorkflowList.md | 16 + docs/WorkflowSpec.md | 41 + docs/WorkflowStatus.md | 21 + docs/WorkflowStep.md | 21 + docs/WorkflowTemplate.md | 16 + docs/WorkflowTemplateList.md | 16 + docs/WorkflowTemplateSpec.md | 14 + git_push.sh | 58 + gradle.properties | 2 + gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 58702 bytes gradle/wrapper/gradle-wrapper.properties | 5 + gradlew | 183 +++ gradlew.bat | 100 ++ pom.xml | 267 ++++ settings.gradle | 1 + src/main/AndroidManifest.xml | 3 + .../io/argoproj/workflow/ApiCallback.java | 62 + .../java/io/argoproj/workflow/ApiClient.java | 1318 +++++++++++++++++ .../io/argoproj/workflow/ApiException.java | 91 ++ .../io/argoproj/workflow/ApiResponse.java | 59 + .../io/argoproj/workflow/Configuration.java | 39 + .../workflow/GzipRequestInterceptor.java | 85 ++ src/main/java/io/argoproj/workflow/JSON.java | 396 +++++ src/main/java/io/argoproj/workflow/Pair.java | 61 + .../workflow/ProgressRequestBody.java | 73 + .../workflow/ProgressResponseBody.java | 72 + .../java/io/argoproj/workflow/StringUtil.java | 61 + .../io/argoproj/workflow/auth/ApiKeyAuth.java | 77 + .../workflow/auth/Authentication.java | 30 + .../argoproj/workflow/auth/HttpBasicAuth.java | 54 + .../workflow/auth/HttpBearerAuth.java | 60 + .../workflow/models/ArchiveStrategy.java | 129 ++ .../argoproj/workflow/models/Arguments.java | 149 ++ .../io/argoproj/workflow/models/Artifact.java | 483 ++++++ .../workflow/models/ArtifactLocation.java | 280 ++++ .../models/ArtifactRepositoryRef.java | 128 ++ .../workflow/models/ArtifactoryArtifact.java | 157 ++ .../workflow/models/ArtifactoryAuth.java | 129 ++ .../io/argoproj/workflow/models/Backoff.java | 157 ++ .../argoproj/workflow/models/ContinueOn.java | 129 ++ .../io/argoproj/workflow/models/DAGTask.java | 381 +++++ .../argoproj/workflow/models/DAGTemplate.java | 165 +++ .../workflow/models/ExecutorConfig.java | 100 ++ .../argoproj/workflow/models/GitArtifact.java | 312 ++++ .../workflow/models/HDFSArtifact.java | 366 +++++ .../argoproj/workflow/models/HDFSConfig.java | 309 ++++ .../workflow/models/HDFSKrbConfig.java | 245 +++ .../workflow/models/HTTPArtifact.java | 99 ++ .../io/argoproj/workflow/models/Inputs.java | 149 ++ .../argoproj/workflow/models/ItemValue.java | 252 ++++ .../io/argoproj/workflow/models/Metadata.java | 148 ++ .../argoproj/workflow/models/NodeStatus.java | 669 +++++++++ .../io/argoproj/workflow/models/Outputs.java | 178 +++ .../workflow/models/ParallelSteps.java | 106 ++ .../argoproj/workflow/models/Parameter.java | 216 +++ .../io/argoproj/workflow/models/PodGC.java | 100 ++ .../argoproj/workflow/models/RawArtifact.java | 99 ++ .../workflow/models/ResourceTemplate.java | 243 +++ .../workflow/models/RetryStrategy.java | 159 ++ .../argoproj/workflow/models/S3Artifact.java | 298 ++++ .../io/argoproj/workflow/models/S3Bucket.java | 270 ++++ .../workflow/models/ScriptTemplate.java | 794 ++++++++++ .../io/argoproj/workflow/models/Sequence.java | 187 +++ .../workflow/models/SuspendTemplate.java | 100 ++ .../io/argoproj/workflow/models/Template.java | 1101 ++++++++++++++ .../argoproj/workflow/models/TemplateRef.java | 158 ++ .../workflow/models/UserContainer.java | 795 ++++++++++ .../argoproj/workflow/models/ValueFrom.java | 187 +++ .../io/argoproj/workflow/models/Workflow.java | 216 +++ .../workflow/models/WorkflowList.java | 194 +++ .../workflow/models/WorkflowSpec.java | 972 ++++++++++++ .../workflow/models/WorkflowStatus.java | 364 +++++ .../workflow/models/WorkflowStep.java | 346 +++++ .../workflow/models/WorkflowTemplate.java | 188 +++ .../workflow/models/WorkflowTemplateList.java | 194 +++ .../workflow/models/WorkflowTemplateSpec.java | 137 ++ 121 files changed, 16885 insertions(+), 1 deletion(-) create mode 100644 .gitignore create mode 100644 .openapi-generator-ignore create mode 100644 .openapi-generator/VERSION create mode 100644 .travis.yml create mode 100644 build.gradle create mode 100644 build.sbt create mode 100644 docs/ArchiveStrategy.md create mode 100644 docs/Arguments.md create mode 100644 docs/Artifact.md create mode 100644 docs/ArtifactLocation.md create mode 100644 docs/ArtifactRepositoryRef.md create mode 100644 docs/ArtifactoryArtifact.md create mode 100644 docs/ArtifactoryAuth.md create mode 100644 docs/Backoff.md create mode 100644 docs/ContinueOn.md create mode 100644 docs/DAGTask.md create mode 100644 docs/DAGTemplate.md create mode 100644 docs/ExecutorConfig.md create mode 100644 docs/GitArtifact.md create mode 100644 docs/HDFSArtifact.md create mode 100644 docs/HDFSConfig.md create mode 100644 docs/HDFSKrbConfig.md create mode 100644 docs/HTTPArtifact.md create mode 100644 docs/Inputs.md create mode 100644 docs/ItemValue.md create mode 100644 docs/Metadata.md create mode 100644 docs/NodeStatus.md create mode 100644 docs/Outputs.md create mode 100644 docs/ParallelSteps.md create mode 100644 docs/Parameter.md create mode 100644 docs/PodGC.md create mode 100644 docs/RawArtifact.md create mode 100644 docs/ResourceTemplate.md create mode 100644 docs/RetryStrategy.md create mode 100644 docs/S3Artifact.md create mode 100644 docs/S3Bucket.md create mode 100644 docs/ScriptTemplate.md create mode 100644 docs/Sequence.md create mode 100644 docs/SuspendTemplate.md create mode 100644 docs/Template.md create mode 100644 docs/TemplateRef.md create mode 100644 docs/UserContainer.md create mode 100644 docs/ValueFrom.md create mode 100644 docs/Workflow.md create mode 100644 docs/WorkflowList.md create mode 100644 docs/WorkflowSpec.md create mode 100644 docs/WorkflowStatus.md create mode 100644 docs/WorkflowStep.md create mode 100644 docs/WorkflowTemplate.md create mode 100644 docs/WorkflowTemplateList.md create mode 100644 docs/WorkflowTemplateSpec.md create mode 100644 git_push.sh create mode 100644 gradle.properties create mode 100644 gradle/wrapper/gradle-wrapper.jar create mode 100644 gradle/wrapper/gradle-wrapper.properties create mode 100644 gradlew create mode 100644 gradlew.bat create mode 100644 pom.xml create mode 100644 settings.gradle create mode 100644 src/main/AndroidManifest.xml create mode 100644 src/main/java/io/argoproj/workflow/ApiCallback.java create mode 100644 src/main/java/io/argoproj/workflow/ApiClient.java create mode 100644 src/main/java/io/argoproj/workflow/ApiException.java create mode 100644 src/main/java/io/argoproj/workflow/ApiResponse.java create mode 100644 src/main/java/io/argoproj/workflow/Configuration.java create mode 100644 src/main/java/io/argoproj/workflow/GzipRequestInterceptor.java create mode 100644 src/main/java/io/argoproj/workflow/JSON.java create mode 100644 src/main/java/io/argoproj/workflow/Pair.java create mode 100644 src/main/java/io/argoproj/workflow/ProgressRequestBody.java create mode 100644 src/main/java/io/argoproj/workflow/ProgressResponseBody.java create mode 100644 src/main/java/io/argoproj/workflow/StringUtil.java create mode 100644 src/main/java/io/argoproj/workflow/auth/ApiKeyAuth.java create mode 100644 src/main/java/io/argoproj/workflow/auth/Authentication.java create mode 100644 src/main/java/io/argoproj/workflow/auth/HttpBasicAuth.java create mode 100644 src/main/java/io/argoproj/workflow/auth/HttpBearerAuth.java create mode 100644 src/main/java/io/argoproj/workflow/models/ArchiveStrategy.java create mode 100644 src/main/java/io/argoproj/workflow/models/Arguments.java create mode 100644 src/main/java/io/argoproj/workflow/models/Artifact.java create mode 100644 src/main/java/io/argoproj/workflow/models/ArtifactLocation.java create mode 100644 src/main/java/io/argoproj/workflow/models/ArtifactRepositoryRef.java create mode 100644 src/main/java/io/argoproj/workflow/models/ArtifactoryArtifact.java create mode 100644 src/main/java/io/argoproj/workflow/models/ArtifactoryAuth.java create mode 100644 src/main/java/io/argoproj/workflow/models/Backoff.java create mode 100644 src/main/java/io/argoproj/workflow/models/ContinueOn.java create mode 100644 src/main/java/io/argoproj/workflow/models/DAGTask.java create mode 100644 src/main/java/io/argoproj/workflow/models/DAGTemplate.java create mode 100644 src/main/java/io/argoproj/workflow/models/ExecutorConfig.java create mode 100644 src/main/java/io/argoproj/workflow/models/GitArtifact.java create mode 100644 src/main/java/io/argoproj/workflow/models/HDFSArtifact.java create mode 100644 src/main/java/io/argoproj/workflow/models/HDFSConfig.java create mode 100644 src/main/java/io/argoproj/workflow/models/HDFSKrbConfig.java create mode 100644 src/main/java/io/argoproj/workflow/models/HTTPArtifact.java create mode 100644 src/main/java/io/argoproj/workflow/models/Inputs.java create mode 100644 src/main/java/io/argoproj/workflow/models/ItemValue.java create mode 100644 src/main/java/io/argoproj/workflow/models/Metadata.java create mode 100644 src/main/java/io/argoproj/workflow/models/NodeStatus.java create mode 100644 src/main/java/io/argoproj/workflow/models/Outputs.java create mode 100644 src/main/java/io/argoproj/workflow/models/ParallelSteps.java create mode 100644 src/main/java/io/argoproj/workflow/models/Parameter.java create mode 100644 src/main/java/io/argoproj/workflow/models/PodGC.java create mode 100644 src/main/java/io/argoproj/workflow/models/RawArtifact.java create mode 100644 src/main/java/io/argoproj/workflow/models/ResourceTemplate.java create mode 100644 src/main/java/io/argoproj/workflow/models/RetryStrategy.java create mode 100644 src/main/java/io/argoproj/workflow/models/S3Artifact.java create mode 100644 src/main/java/io/argoproj/workflow/models/S3Bucket.java create mode 100644 src/main/java/io/argoproj/workflow/models/ScriptTemplate.java create mode 100644 src/main/java/io/argoproj/workflow/models/Sequence.java create mode 100644 src/main/java/io/argoproj/workflow/models/SuspendTemplate.java create mode 100644 src/main/java/io/argoproj/workflow/models/Template.java create mode 100644 src/main/java/io/argoproj/workflow/models/TemplateRef.java create mode 100644 src/main/java/io/argoproj/workflow/models/UserContainer.java create mode 100644 src/main/java/io/argoproj/workflow/models/ValueFrom.java create mode 100644 src/main/java/io/argoproj/workflow/models/Workflow.java create mode 100644 src/main/java/io/argoproj/workflow/models/WorkflowList.java create mode 100644 src/main/java/io/argoproj/workflow/models/WorkflowSpec.java create mode 100644 src/main/java/io/argoproj/workflow/models/WorkflowStatus.java create mode 100644 src/main/java/io/argoproj/workflow/models/WorkflowStep.java create mode 100644 src/main/java/io/argoproj/workflow/models/WorkflowTemplate.java create mode 100644 src/main/java/io/argoproj/workflow/models/WorkflowTemplateList.java create mode 100644 src/main/java/io/argoproj/workflow/models/WorkflowTemplateSpec.java diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..a530464a --- /dev/null +++ b/.gitignore @@ -0,0 +1,21 @@ +*.class + +# Mobile Tools for Java (J2ME) +.mtj.tmp/ + +# Package Files # +*.jar +*.war +*.ear + +# exclude jar for gradle wrapper +!gradle/wrapper/*.jar + +# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml +hs_err_pid* + +# build files +**/target +target +.gradle +build diff --git a/.openapi-generator-ignore b/.openapi-generator-ignore new file mode 100644 index 00000000..7484ee59 --- /dev/null +++ b/.openapi-generator-ignore @@ -0,0 +1,23 @@ +# OpenAPI Generator Ignore +# Generated by openapi-generator https://github.com/openapitools/openapi-generator + +# Use this file to prevent files from being overwritten by the generator. +# The patterns follow closely to .gitignore or .dockerignore. + +# As an example, the C# client generator defines ApiClient.cs. +# You can make changes and tell OpenAPI Generator to ignore just this file by uncommenting the following line: +#ApiClient.cs + +# You can match any string of characters against a directory, file or extension with a single asterisk (*): +#foo/*/qux +# The above matches foo/bar/qux and foo/baz/qux, but not foo/bar/baz/qux + +# You can recursively match patterns against a directory, file or extension with a double asterisk (**): +#foo/**/qux +# This matches foo/bar/qux, foo/baz/qux, and foo/bar/baz/qux + +# You can also negate patterns with an exclamation (!). +# For example, you can ignore all files in a docs folder with the file extension .md: +#docs/*.md +# Then explicitly reverse the ignore rule for a single file: +#!docs/README.md diff --git a/.openapi-generator/VERSION b/.openapi-generator/VERSION new file mode 100644 index 00000000..ec87108d --- /dev/null +++ b/.openapi-generator/VERSION @@ -0,0 +1 @@ +4.2.3 \ No newline at end of file diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 00000000..e3bdf2af --- /dev/null +++ b/.travis.yml @@ -0,0 +1,22 @@ +# +# Generated by OpenAPI Generator: https://openapi-generator.tech +# +# Ref: https://docs.travis-ci.com/user/languages/java/ +# +language: java +jdk: + - openjdk12 + - openjdk11 + - openjdk10 + - openjdk9 + - openjdk8 +before_install: + # ensure gradlew has proper permission + - chmod a+x ./gradlew +script: + # test using maven + #- mvn test + # test using gradle + - gradle test + # test using sbt + # - sbt test diff --git a/README.md b/README.md index 071af601..00985ffa 100644 --- a/README.md +++ b/README.md @@ -1 +1,144 @@ -# argo-client-java \ No newline at end of file +# argo-client-java + +Argo +- API version: v2.4.0 + +No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + + +*Automatically generated by the [OpenAPI Generator](https://openapi-generator.tech)* + + +## Requirements + +Building the API client library requires: +1. Java 1.7+ +2. Maven/Gradle + +## Installation + +To install the API client library to your local Maven repository, simply execute: + +```shell +mvn clean install +``` + +To deploy it to a remote Maven repository instead, configure the settings of the repository and execute: + +```shell +mvn clean deploy +``` + +Refer to the [OSSRH Guide](http://central.sonatype.org/pages/ossrh-guide.html) for more information. + +### Maven users + +Add this dependency to your project's POM: + +```xml + + io.argoproj.workflow + argo-client-java + sdks + compile + +``` + +### Gradle users + +Add this dependency to your project's build file: + +```groovy +compile "io.argoproj.workflow:argo-client-java:sdks" +``` + +### Others + +At first generate the JAR by executing: + +```shell +mvn clean package +``` + +Then manually install the following JARs: + +* `target/argo-client-java-sdks.jar` +* `target/lib/*.jar` + +## Getting Started + +Please follow the [installation](#installation) instruction and execute the following Java code: + +```java + +``` + +## Documentation for API Endpoints + +All URIs are relative to *http://localhost* + +Class | Method | HTTP request | Description +------------ | ------------- | ------------- | ------------- + + +## Documentation for Models + + - [ArchiveStrategy](docs/ArchiveStrategy.md) + - [Arguments](docs/Arguments.md) + - [Artifact](docs/Artifact.md) + - [ArtifactLocation](docs/ArtifactLocation.md) + - [ArtifactRepositoryRef](docs/ArtifactRepositoryRef.md) + - [ArtifactoryArtifact](docs/ArtifactoryArtifact.md) + - [ArtifactoryAuth](docs/ArtifactoryAuth.md) + - [Backoff](docs/Backoff.md) + - [ContinueOn](docs/ContinueOn.md) + - [DAGTask](docs/DAGTask.md) + - [DAGTemplate](docs/DAGTemplate.md) + - [ExecutorConfig](docs/ExecutorConfig.md) + - [GitArtifact](docs/GitArtifact.md) + - [HDFSArtifact](docs/HDFSArtifact.md) + - [HDFSConfig](docs/HDFSConfig.md) + - [HDFSKrbConfig](docs/HDFSKrbConfig.md) + - [HTTPArtifact](docs/HTTPArtifact.md) + - [Inputs](docs/Inputs.md) + - [ItemValue](docs/ItemValue.md) + - [Metadata](docs/Metadata.md) + - [NodeStatus](docs/NodeStatus.md) + - [Outputs](docs/Outputs.md) + - [ParallelSteps](docs/ParallelSteps.md) + - [Parameter](docs/Parameter.md) + - [PodGC](docs/PodGC.md) + - [RawArtifact](docs/RawArtifact.md) + - [ResourceTemplate](docs/ResourceTemplate.md) + - [RetryStrategy](docs/RetryStrategy.md) + - [S3Artifact](docs/S3Artifact.md) + - [S3Bucket](docs/S3Bucket.md) + - [ScriptTemplate](docs/ScriptTemplate.md) + - [Sequence](docs/Sequence.md) + - [SuspendTemplate](docs/SuspendTemplate.md) + - [Template](docs/Template.md) + - [TemplateRef](docs/TemplateRef.md) + - [UserContainer](docs/UserContainer.md) + - [ValueFrom](docs/ValueFrom.md) + - [Workflow](docs/Workflow.md) + - [WorkflowList](docs/WorkflowList.md) + - [WorkflowSpec](docs/WorkflowSpec.md) + - [WorkflowStatus](docs/WorkflowStatus.md) + - [WorkflowStep](docs/WorkflowStep.md) + - [WorkflowTemplate](docs/WorkflowTemplate.md) + - [WorkflowTemplateList](docs/WorkflowTemplateList.md) + - [WorkflowTemplateSpec](docs/WorkflowTemplateSpec.md) + + +## Documentation for Authorization + +All endpoints do not require authorization. +Authentication schemes defined for the API: + +## Recommendation + +It's recommended to create an instance of `ApiClient` per thread in a multithreaded environment to avoid any potential issues. + +## Author + + diff --git a/build.gradle b/build.gradle new file mode 100644 index 00000000..07f670d2 --- /dev/null +++ b/build.gradle @@ -0,0 +1,114 @@ +apply plugin: 'idea' +apply plugin: 'eclipse' +apply plugin: 'java' + +group = 'io.argoproj.workflow' +version = 'sdks' + +buildscript { + repositories { + maven { url "https://repo1.maven.org/maven2" } + jcenter() + } + dependencies { + classpath 'com.android.tools.build:gradle:2.3.+' + classpath 'com.github.dcendents:android-maven-gradle-plugin:1.5' + } +} + +repositories { + jcenter() +} +sourceSets { + main.java.srcDirs = ['src/main/java'] +} + +if(hasProperty('target') && target == 'android') { + + apply plugin: 'com.android.library' + apply plugin: 'com.github.dcendents.android-maven' + + android { + compileSdkVersion 25 + buildToolsVersion '25.0.2' + defaultConfig { + minSdkVersion 14 + targetSdkVersion 25 + } + compileOptions { + sourceCompatibility JavaVersion.VERSION_1_7 + targetCompatibility JavaVersion.VERSION_1_7 + } + + // Rename the aar correctly + libraryVariants.all { variant -> + variant.outputs.each { output -> + def outputFile = output.outputFile + if (outputFile != null && outputFile.name.endsWith('.aar')) { + def fileName = "${project.name}-${variant.baseName}-${version}.aar" + output.outputFile = new File(outputFile.parent, fileName) + } + } + } + + dependencies { + provided 'javax.annotation:jsr250-api:1.0' + } + } + + afterEvaluate { + android.libraryVariants.all { variant -> + def task = project.tasks.create "jar${variant.name.capitalize()}", Jar + task.description = "Create jar artifact for ${variant.name}" + task.dependsOn variant.javaCompile + task.from variant.javaCompile.destinationDir + task.destinationDir = project.file("${project.buildDir}/outputs/jar") + task.archiveName = "${project.name}-${variant.baseName}-${version}.jar" + artifacts.add('archives', task); + } + } + + task sourcesJar(type: Jar) { + from android.sourceSets.main.java.srcDirs + classifier = 'sources' + } + + artifacts { + archives sourcesJar + } + +} else { + + apply plugin: 'java' + apply plugin: 'maven' + + sourceCompatibility = JavaVersion.VERSION_1_7 + targetCompatibility = JavaVersion.VERSION_1_7 + + install { + repositories.mavenInstaller { + pom.artifactId = 'argo-client-java' + } + } + + task execute(type:JavaExec) { + main = System.getProperty('mainClass') + classpath = sourceSets.main.runtimeClasspath + } +} + +dependencies { + compile 'io.swagger:swagger-annotations:1.5.22' + compile "com.google.code.findbugs:jsr305:3.0.2" + compile 'com.squareup.okhttp3:okhttp:3.14.2' + compile 'com.squareup.okhttp3:logging-interceptor:3.14.2' + compile 'com.google.code.gson:gson:2.8.5' + compile 'io.gsonfire:gson-fire:1.8.3' + compile group: 'org.apache.commons', name: 'commons-lang3', version: '3.9' + compile 'joda-time:joda-time:2.9.9' + testCompile 'junit:junit:4.13' +} + +javadoc { + options.tags = [ "http.response.details:a:Http Response Details" ] +} diff --git a/build.sbt b/build.sbt new file mode 100644 index 00000000..474f98fe --- /dev/null +++ b/build.sbt @@ -0,0 +1,23 @@ +lazy val root = (project in file(".")). + settings( + organization := "io.argoproj.workflow", + name := "argo-client-java", + version := "sdks", + scalaVersion := "2.11.4", + scalacOptions ++= Seq("-feature"), + javacOptions in compile ++= Seq("-Xlint:deprecation"), + publishArtifact in (Compile, packageDoc) := false, + resolvers += Resolver.mavenLocal, + libraryDependencies ++= Seq( + "io.swagger" % "swagger-annotations" % "1.5.22", + "com.squareup.okhttp3" % "okhttp" % "3.14.2", + "com.squareup.okhttp3" % "logging-interceptor" % "3.14.2", + "com.google.code.gson" % "gson" % "2.8.5", + "org.apache.commons" % "commons-lang3" % "3.9", + "joda-time" % "joda-time" % "2.9.9" % "compile", + "io.gsonfire" % "gson-fire" % "1.8.3" % "compile", + "javax.annotation" % "jsr250-api" % "1.0" % "compile", + "junit" % "junit" % "4.13" % "test", + "com.novocode" % "junit-interface" % "0.10" % "test" + ) + ) diff --git a/docs/ArchiveStrategy.md b/docs/ArchiveStrategy.md new file mode 100644 index 00000000..2d26f110 --- /dev/null +++ b/docs/ArchiveStrategy.md @@ -0,0 +1,14 @@ + + +# ArchiveStrategy + +ArchiveStrategy describes how to archive files/directory when saving artifacts +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**none** | [**Object**](.md) | NoneStrategy indicates to skip tar process and upload the files or directory tree as independent files. Note that if the artifact is a directory, the artifact driver must support the ability to save/load the directory appropriately. | [optional] +**tar** | [**Object**](.md) | TarStrategy will tar and gzip the file or directory when saving | [optional] + + + diff --git a/docs/Arguments.md b/docs/Arguments.md new file mode 100644 index 00000000..8f83542d --- /dev/null +++ b/docs/Arguments.md @@ -0,0 +1,14 @@ + + +# Arguments + +Arguments to a template +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**artifacts** | [**List<Artifact>**](Artifact.md) | Artifacts is the list of artifacts to pass to the template or workflow | [optional] +**parameters** | [**List<Parameter>**](Parameter.md) | Parameters is the list of parameters to pass to the template or workflow | [optional] + + + diff --git a/docs/Artifact.md b/docs/Artifact.md new file mode 100644 index 00000000..04c5d357 --- /dev/null +++ b/docs/Artifact.md @@ -0,0 +1,26 @@ + + +# Artifact + +Artifact indicates an artifact to place at a specified path +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**archive** | [**ArchiveStrategy**](ArchiveStrategy.md) | | [optional] +**archiveLogs** | **Boolean** | ArchiveLogs indicates if the container logs should be archived | [optional] +**artifactory** | [**ArtifactoryArtifact**](ArtifactoryArtifact.md) | | [optional] +**from** | **String** | From allows an artifact to reference an artifact from a previous step | [optional] +**git** | [**GitArtifact**](GitArtifact.md) | | [optional] +**globalName** | **String** | GlobalName exports an output artifact to the global scope, making it available as '{{workflow.outputs.artifacts.XXXX}} and in workflow.status.outputs.artifacts | [optional] +**hdfs** | [**HDFSArtifact**](HDFSArtifact.md) | | [optional] +**http** | [**HTTPArtifact**](HTTPArtifact.md) | | [optional] +**mode** | **Integer** | mode bits to use on this file, must be a value between 0 and 0777 set when loading input artifacts. | [optional] +**name** | **String** | name of the artifact. must be unique within a template's inputs/outputs. | +**optional** | **Boolean** | Make Artifacts optional, if Artifacts doesn't generate or exist | [optional] +**path** | **String** | Path is the container path to the artifact | [optional] +**raw** | [**RawArtifact**](RawArtifact.md) | | [optional] +**s3** | [**S3Artifact**](S3Artifact.md) | | [optional] + + + diff --git a/docs/ArtifactLocation.md b/docs/ArtifactLocation.md new file mode 100644 index 00000000..a7ca5ce5 --- /dev/null +++ b/docs/ArtifactLocation.md @@ -0,0 +1,19 @@ + + +# ArtifactLocation + +ArtifactLocation describes a location for a single or multiple artifacts. It is used as single artifact in the context of inputs/outputs (e.g. outputs.artifacts.artname). It is also used to describe the location of multiple artifacts such as the archive location of a single workflow step, which the executor will use as a default location to store its files. +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**archiveLogs** | **Boolean** | ArchiveLogs indicates if the container logs should be archived | [optional] +**artifactory** | [**ArtifactoryArtifact**](ArtifactoryArtifact.md) | | [optional] +**git** | [**GitArtifact**](GitArtifact.md) | | [optional] +**hdfs** | [**HDFSArtifact**](HDFSArtifact.md) | | [optional] +**http** | [**HTTPArtifact**](HTTPArtifact.md) | | [optional] +**raw** | [**RawArtifact**](RawArtifact.md) | | [optional] +**s3** | [**S3Artifact**](S3Artifact.md) | | [optional] + + + diff --git a/docs/ArtifactRepositoryRef.md b/docs/ArtifactRepositoryRef.md new file mode 100644 index 00000000..4f34f0d9 --- /dev/null +++ b/docs/ArtifactRepositoryRef.md @@ -0,0 +1,13 @@ + + +# ArtifactRepositoryRef + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**configMap** | **String** | | [optional] +**key** | **String** | | [optional] + + + diff --git a/docs/ArtifactoryArtifact.md b/docs/ArtifactoryArtifact.md new file mode 100644 index 00000000..52aee276 --- /dev/null +++ b/docs/ArtifactoryArtifact.md @@ -0,0 +1,15 @@ + + +# ArtifactoryArtifact + +ArtifactoryArtifact is the location of an artifactory artifact +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**passwordSecret** | [**io.kubernetes.client.models.V1SecretKeySelector**](io.kubernetes.client.models.V1SecretKeySelector.md) | | [optional] +**url** | **String** | URL of the artifact | +**usernameSecret** | [**io.kubernetes.client.models.V1SecretKeySelector**](io.kubernetes.client.models.V1SecretKeySelector.md) | | [optional] + + + diff --git a/docs/ArtifactoryAuth.md b/docs/ArtifactoryAuth.md new file mode 100644 index 00000000..7a39381f --- /dev/null +++ b/docs/ArtifactoryAuth.md @@ -0,0 +1,14 @@ + + +# ArtifactoryAuth + +ArtifactoryAuth describes the secret selectors required for authenticating to artifactory +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**passwordSecret** | [**io.kubernetes.client.models.V1SecretKeySelector**](io.kubernetes.client.models.V1SecretKeySelector.md) | | [optional] +**usernameSecret** | [**io.kubernetes.client.models.V1SecretKeySelector**](io.kubernetes.client.models.V1SecretKeySelector.md) | | [optional] + + + diff --git a/docs/Backoff.md b/docs/Backoff.md new file mode 100644 index 00000000..5c7ceb86 --- /dev/null +++ b/docs/Backoff.md @@ -0,0 +1,14 @@ + + +# Backoff + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**duration** | **String** | | [optional] +**factor** | **Integer** | | [optional] +**maxDuration** | **String** | | [optional] + + + diff --git a/docs/ContinueOn.md b/docs/ContinueOn.md new file mode 100644 index 00000000..acb32a15 --- /dev/null +++ b/docs/ContinueOn.md @@ -0,0 +1,14 @@ + + +# ContinueOn + +ContinueOn defines if a workflow should continue even if a task or step fails/errors. It can be specified if the workflow should continue when the pod errors, fails or both. +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**error** | **Boolean** | | [optional] +**failed** | **Boolean** | | [optional] + + + diff --git a/docs/DAGTask.md b/docs/DAGTask.md new file mode 100644 index 00000000..7b29dfb5 --- /dev/null +++ b/docs/DAGTask.md @@ -0,0 +1,22 @@ + + +# DAGTask + +DAGTask represents a node in the graph during DAG execution +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**arguments** | [**Arguments**](Arguments.md) | | [optional] +**continueOn** | [**ContinueOn**](ContinueOn.md) | | [optional] +**dependencies** | **List<String>** | Dependencies are name of other targets which this depends on | [optional] +**name** | **String** | Name is the name of the target | +**template** | **String** | Name of template to execute | +**templateRef** | [**TemplateRef**](TemplateRef.md) | | [optional] +**when** | **String** | When is an expression in which the task should conditionally execute | [optional] +**withItems** | **List<String>** | WithItems expands a task into multiple parallel tasks from the items in the list | [optional] +**withParam** | **String** | WithParam expands a task into multiple parallel tasks from the value in the parameter, which is expected to be a JSON list. | [optional] +**withSequence** | [**Sequence**](Sequence.md) | | [optional] + + + diff --git a/docs/DAGTemplate.md b/docs/DAGTemplate.md new file mode 100644 index 00000000..4dbc3393 --- /dev/null +++ b/docs/DAGTemplate.md @@ -0,0 +1,15 @@ + + +# DAGTemplate + +DAGTemplate is a template subtype for directed acyclic graph templates +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**failFast** | **Boolean** | This flag is for DAG logic. The DAG logic has a built-in \"fail fast\" feature to stop scheduling new steps, as soon as it detects that one of the DAG nodes is failed. Then it waits until all DAG nodes are completed before failing the DAG itself. The FailFast flag default is true, if set to false, it will allow a DAG to run all branches of the DAG to completion (either success or failure), regardless of the failed outcomes of branches in the DAG. More info and example about this feature at https://github.com/argoproj/argo/issues/1442 | [optional] +**target** | **String** | Target are one or more names of targets to execute in a DAG | [optional] +**tasks** | [**List<DAGTask>**](DAGTask.md) | Tasks are a list of DAG tasks | + + + diff --git a/docs/ExecutorConfig.md b/docs/ExecutorConfig.md new file mode 100644 index 00000000..bac3b88b --- /dev/null +++ b/docs/ExecutorConfig.md @@ -0,0 +1,13 @@ + + +# ExecutorConfig + +ExecutorConfig holds configurations of an executor container. +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**serviceAccountName** | **String** | ServiceAccountName specifies the service account name of the executor container. | [optional] + + + diff --git a/docs/GitArtifact.md b/docs/GitArtifact.md new file mode 100644 index 00000000..5bbdf35c --- /dev/null +++ b/docs/GitArtifact.md @@ -0,0 +1,20 @@ + + +# GitArtifact + +GitArtifact is the location of an git artifact +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**depth** | **Long** | Depth specifies clones/fetches should be shallow and include the given number of commits from the branch tip | [optional] +**fetch** | **List<String>** | Fetch specifies a number of refs that should be fetched before checkout | [optional] +**insecureIgnoreHostKey** | **Boolean** | InsecureIgnoreHostKey disables SSH strict host key checking during git clone | [optional] +**passwordSecret** | [**io.kubernetes.client.models.V1SecretKeySelector**](io.kubernetes.client.models.V1SecretKeySelector.md) | | [optional] +**repo** | **String** | Repo is the git repository | +**revision** | **String** | Revision is the git commit, tag, branch to checkout | [optional] +**sshPrivateKeySecret** | [**io.kubernetes.client.models.V1SecretKeySelector**](io.kubernetes.client.models.V1SecretKeySelector.md) | | [optional] +**usernameSecret** | [**io.kubernetes.client.models.V1SecretKeySelector**](io.kubernetes.client.models.V1SecretKeySelector.md) | | [optional] + + + diff --git a/docs/HDFSArtifact.md b/docs/HDFSArtifact.md new file mode 100644 index 00000000..b42d5c70 --- /dev/null +++ b/docs/HDFSArtifact.md @@ -0,0 +1,22 @@ + + +# HDFSArtifact + +HDFSArtifact is the location of an HDFS artifact +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**addresses** | **List<String>** | Addresses is accessible addresses of HDFS name nodes | +**force** | **Boolean** | Force copies a file forcibly even if it exists (default: false) | [optional] +**hdfsUser** | **String** | HDFSUser is the user to access HDFS file system. It is ignored if either ccache or keytab is used. | [optional] +**krbCCacheSecret** | [**io.kubernetes.client.models.V1SecretKeySelector**](io.kubernetes.client.models.V1SecretKeySelector.md) | | [optional] +**krbConfigConfigMap** | [**io.kubernetes.client.models.V1ConfigMapKeySelector**](io.kubernetes.client.models.V1ConfigMapKeySelector.md) | | [optional] +**krbKeytabSecret** | [**io.kubernetes.client.models.V1SecretKeySelector**](io.kubernetes.client.models.V1SecretKeySelector.md) | | [optional] +**krbRealm** | **String** | KrbRealm is the Kerberos realm used with Kerberos keytab It must be set if keytab is used. | [optional] +**krbServicePrincipalName** | **String** | KrbServicePrincipalName is the principal name of Kerberos service It must be set if either ccache or keytab is used. | [optional] +**krbUsername** | **String** | KrbUsername is the Kerberos username used with Kerberos keytab It must be set if keytab is used. | [optional] +**path** | **String** | Path is a file path in HDFS | + + + diff --git a/docs/HDFSConfig.md b/docs/HDFSConfig.md new file mode 100644 index 00000000..877562df --- /dev/null +++ b/docs/HDFSConfig.md @@ -0,0 +1,20 @@ + + +# HDFSConfig + +HDFSConfig is configurations for HDFS +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**addresses** | **List<String>** | Addresses is accessible addresses of HDFS name nodes | +**hdfsUser** | **String** | HDFSUser is the user to access HDFS file system. It is ignored if either ccache or keytab is used. | [optional] +**krbCCacheSecret** | [**io.kubernetes.client.models.V1SecretKeySelector**](io.kubernetes.client.models.V1SecretKeySelector.md) | | [optional] +**krbConfigConfigMap** | [**io.kubernetes.client.models.V1ConfigMapKeySelector**](io.kubernetes.client.models.V1ConfigMapKeySelector.md) | | [optional] +**krbKeytabSecret** | [**io.kubernetes.client.models.V1SecretKeySelector**](io.kubernetes.client.models.V1SecretKeySelector.md) | | [optional] +**krbRealm** | **String** | KrbRealm is the Kerberos realm used with Kerberos keytab It must be set if keytab is used. | [optional] +**krbServicePrincipalName** | **String** | KrbServicePrincipalName is the principal name of Kerberos service It must be set if either ccache or keytab is used. | [optional] +**krbUsername** | **String** | KrbUsername is the Kerberos username used with Kerberos keytab It must be set if keytab is used. | [optional] + + + diff --git a/docs/HDFSKrbConfig.md b/docs/HDFSKrbConfig.md new file mode 100644 index 00000000..e8e13f91 --- /dev/null +++ b/docs/HDFSKrbConfig.md @@ -0,0 +1,18 @@ + + +# HDFSKrbConfig + +HDFSKrbConfig is auth configurations for Kerberos +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**krbCCacheSecret** | [**io.kubernetes.client.models.V1SecretKeySelector**](io.kubernetes.client.models.V1SecretKeySelector.md) | | [optional] +**krbConfigConfigMap** | [**io.kubernetes.client.models.V1ConfigMapKeySelector**](io.kubernetes.client.models.V1ConfigMapKeySelector.md) | | [optional] +**krbKeytabSecret** | [**io.kubernetes.client.models.V1SecretKeySelector**](io.kubernetes.client.models.V1SecretKeySelector.md) | | [optional] +**krbRealm** | **String** | KrbRealm is the Kerberos realm used with Kerberos keytab It must be set if keytab is used. | [optional] +**krbServicePrincipalName** | **String** | KrbServicePrincipalName is the principal name of Kerberos service It must be set if either ccache or keytab is used. | [optional] +**krbUsername** | **String** | KrbUsername is the Kerberos username used with Kerberos keytab It must be set if keytab is used. | [optional] + + + diff --git a/docs/HTTPArtifact.md b/docs/HTTPArtifact.md new file mode 100644 index 00000000..9c509abe --- /dev/null +++ b/docs/HTTPArtifact.md @@ -0,0 +1,13 @@ + + +# HTTPArtifact + +HTTPArtifact allows an file served on HTTP to be placed as an input artifact in a container +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**url** | **String** | URL of the artifact | + + + diff --git a/docs/Inputs.md b/docs/Inputs.md new file mode 100644 index 00000000..c524c0da --- /dev/null +++ b/docs/Inputs.md @@ -0,0 +1,14 @@ + + +# Inputs + +Inputs are the mechanism for passing parameters, artifacts, volumes from one template to another +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**artifacts** | [**List<Artifact>**](Artifact.md) | Artifact are a list of artifacts passed as inputs | [optional] +**parameters** | [**List<Parameter>**](Parameter.md) | Parameters are a list of parameters passed as inputs | [optional] + + + diff --git a/docs/ItemValue.md b/docs/ItemValue.md new file mode 100644 index 00000000..65045ddf --- /dev/null +++ b/docs/ItemValue.md @@ -0,0 +1,17 @@ + + +# ItemValue + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**boolVal** | **Boolean** | | +**listVal** | **List<byte[]>** | | +**mapVal** | **Map<String, String>** | | +**numVal** | **String** | | +**strVal** | **String** | | +**type** | **Integer** | | + + + diff --git a/docs/Metadata.md b/docs/Metadata.md new file mode 100644 index 00000000..f2889a4a --- /dev/null +++ b/docs/Metadata.md @@ -0,0 +1,14 @@ + + +# Metadata + +Pod metdata +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**annotations** | **Map<String, String>** | | [optional] +**labels** | **Map<String, String>** | | [optional] + + + diff --git a/docs/NodeStatus.md b/docs/NodeStatus.md new file mode 100644 index 00000000..4bdd39dc --- /dev/null +++ b/docs/NodeStatus.md @@ -0,0 +1,32 @@ + + +# NodeStatus + +NodeStatus contains status information about an individual node in the workflow +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**boundaryID** | **String** | BoundaryID indicates the node ID of the associated template root node in which this node belongs to | [optional] +**children** | **List<String>** | Children is a list of child node IDs | [optional] +**daemoned** | **Boolean** | Daemoned tracks whether or not this node was daemoned and need to be terminated | [optional] +**displayName** | **String** | DisplayName is a human readable representation of the node. Unique within a template boundary | +**finishedAt** | [**IoK8sApimachineryPkgApisMetaV1Time**](IoK8sApimachineryPkgApisMetaV1Time.md) | | [optional] +**id** | **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 | +**inputs** | [**Inputs**](Inputs.md) | | [optional] +**message** | **String** | A human readable message indicating details about why the node is in this condition. | [optional] +**name** | **String** | Name is unique name in the node tree used to generate the node ID | +**outboundNodes** | **List<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. | [optional] +**outputs** | [**Outputs**](Outputs.md) | | [optional] +**phase** | **String** | Phase a simple, high-level summary of where the node is in its lifecycle. Can be used as a state machine. | [optional] +**podIP** | **String** | PodIP captures the IP of the pod for daemoned steps | [optional] +**startedAt** | [**IoK8sApimachineryPkgApisMetaV1Time**](IoK8sApimachineryPkgApisMetaV1Time.md) | | [optional] +**storedTemplateID** | **String** | StoredTemplateID is the ID of stored template. DEPRECATED: This value is not used anymore. | [optional] +**templateName** | **String** | TemplateName is the template name which this node corresponds to. Not applicable to virtual nodes (e.g. Retry, StepGroup) | [optional] +**templateRef** | [**TemplateRef**](TemplateRef.md) | | [optional] +**templateScope** | **String** | TemplateScope is the template scope in which the template of this node was retrieved. | [optional] +**type** | **String** | Type indicates type of node | +**workflowTemplateName** | **String** | WorkflowTemplateName is the WorkflowTemplate resource name on which the resolved template of this node is retrieved. DEPRECATED: This value is not used anymore. | [optional] + + + diff --git a/docs/Outputs.md b/docs/Outputs.md new file mode 100644 index 00000000..9c259abe --- /dev/null +++ b/docs/Outputs.md @@ -0,0 +1,15 @@ + + +# Outputs + +Outputs hold parameters, artifacts, and results from a step +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**artifacts** | [**List<Artifact>**](Artifact.md) | Artifacts holds the list of output artifacts produced by a step | [optional] +**parameters** | [**List<Parameter>**](Parameter.md) | Parameters holds the list of output parameters produced by a step | [optional] +**result** | **String** | Result holds the result (stdout) of a script template | [optional] + + + diff --git a/docs/ParallelSteps.md b/docs/ParallelSteps.md new file mode 100644 index 00000000..dc86f73d --- /dev/null +++ b/docs/ParallelSteps.md @@ -0,0 +1,12 @@ + + +# ParallelSteps + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**steps** | [**List<WorkflowStep>**](WorkflowStep.md) | | + + + diff --git a/docs/Parameter.md b/docs/Parameter.md new file mode 100644 index 00000000..00faf538 --- /dev/null +++ b/docs/Parameter.md @@ -0,0 +1,17 @@ + + +# Parameter + +Parameter indicate a passed string parameter to a service template with an optional default value +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**_default** | **String** | Default is the default value to use for an input parameter if a value was not supplied | [optional] +**globalName** | **String** | GlobalName exports an output parameter to the global scope, making it available as '{{workflow.outputs.parameters.XXXX}} and in workflow.status.outputs.parameters | [optional] +**name** | **String** | Name is the parameter name | +**value** | **String** | Value is the literal value to use for the parameter. If specified in the context of an input parameter, the value takes precedence over any passed values | [optional] +**valueFrom** | [**ValueFrom**](ValueFrom.md) | | [optional] + + + diff --git a/docs/PodGC.md b/docs/PodGC.md new file mode 100644 index 00000000..4209b079 --- /dev/null +++ b/docs/PodGC.md @@ -0,0 +1,13 @@ + + +# PodGC + +PodGC describes how to delete completed pods as they complete +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**strategy** | **String** | | [optional] + + + diff --git a/docs/RawArtifact.md b/docs/RawArtifact.md new file mode 100644 index 00000000..8f0c72d8 --- /dev/null +++ b/docs/RawArtifact.md @@ -0,0 +1,13 @@ + + +# RawArtifact + +RawArtifact allows raw string content to be placed as an artifact in a container +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**data** | **String** | Data is the string contents of the artifact | + + + diff --git a/docs/ResourceTemplate.md b/docs/ResourceTemplate.md new file mode 100644 index 00000000..011cc4b7 --- /dev/null +++ b/docs/ResourceTemplate.md @@ -0,0 +1,18 @@ + + +# ResourceTemplate + +ResourceTemplate is a template subtype to manipulate kubernetes resources +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**action** | **String** | Action is the action to perform to the resource. Must be one of: get, create, apply, delete, replace, patch | +**failureCondition** | **String** | FailureCondition is a label selector expression which describes the conditions of the k8s resource in which the step was considered failed | [optional] +**manifest** | **String** | Manifest contains the kubernetes manifest | +**mergeStrategy** | **String** | MergeStrategy is the strategy used to merge a patch. It defaults to \"strategic\" Must be one of: strategic, merge, json | [optional] +**setOwnerReference** | **Boolean** | SetOwnerReference sets the reference to the workflow on the OwnerReference of generated resource. | [optional] +**successCondition** | **String** | SuccessCondition is a label selector expression which describes the conditions of the k8s resource in which it is acceptable to proceed to the following step | [optional] + + + diff --git a/docs/RetryStrategy.md b/docs/RetryStrategy.md new file mode 100644 index 00000000..7bc0a5c9 --- /dev/null +++ b/docs/RetryStrategy.md @@ -0,0 +1,15 @@ + + +# RetryStrategy + +RetryStrategy provides controls on how to retry a workflow step +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**backoff** | [**Backoff**](Backoff.md) | | [optional] +**limit** | **Integer** | Limit is the maximum number of attempts when retrying a container | [optional] +**retryPolicy** | **String** | RetryPolicy is a policy of NodePhase statuses that will be retried | [optional] + + + diff --git a/docs/S3Artifact.md b/docs/S3Artifact.md new file mode 100644 index 00000000..cc6d32de --- /dev/null +++ b/docs/S3Artifact.md @@ -0,0 +1,20 @@ + + +# S3Artifact + +S3Artifact is the location of an S3 artifact +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**accessKeySecret** | [**io.kubernetes.client.models.V1SecretKeySelector**](io.kubernetes.client.models.V1SecretKeySelector.md) | | +**bucket** | **String** | Bucket is the name of the bucket | +**endpoint** | **String** | Endpoint is the hostname of the bucket endpoint | +**insecure** | **Boolean** | Insecure will connect to the service with TLS | [optional] +**key** | **String** | Key is the key in the bucket where the artifact resides | +**region** | **String** | Region contains the optional bucket region | [optional] +**roleARN** | **String** | RoleARN is the Amazon Resource Name (ARN) of the role to assume. | [optional] +**secretKeySecret** | [**io.kubernetes.client.models.V1SecretKeySelector**](io.kubernetes.client.models.V1SecretKeySelector.md) | | + + + diff --git a/docs/S3Bucket.md b/docs/S3Bucket.md new file mode 100644 index 00000000..7c0018d9 --- /dev/null +++ b/docs/S3Bucket.md @@ -0,0 +1,19 @@ + + +# S3Bucket + +S3Bucket contains the access information required for interfacing with an S3 bucket +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**accessKeySecret** | [**io.kubernetes.client.models.V1SecretKeySelector**](io.kubernetes.client.models.V1SecretKeySelector.md) | | +**bucket** | **String** | Bucket is the name of the bucket | +**endpoint** | **String** | Endpoint is the hostname of the bucket endpoint | +**insecure** | **Boolean** | Insecure will connect to the service with TLS | [optional] +**region** | **String** | Region contains the optional bucket region | [optional] +**roleARN** | **String** | RoleARN is the Amazon Resource Name (ARN) of the role to assume. | [optional] +**secretKeySecret** | [**io.kubernetes.client.models.V1SecretKeySelector**](io.kubernetes.client.models.V1SecretKeySelector.md) | | + + + diff --git a/docs/ScriptTemplate.md b/docs/ScriptTemplate.md new file mode 100644 index 00000000..8a81f411 --- /dev/null +++ b/docs/ScriptTemplate.md @@ -0,0 +1,35 @@ + + +# ScriptTemplate + +ScriptTemplate is a template subtype to enable scripting through code steps +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**args** | **List<String>** | Arguments to the entrypoint. The docker image's CMD is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell | [optional] +**command** | **List<String>** | Entrypoint array. Not executed within a shell. The docker image's ENTRYPOINT is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell | [optional] +**env** | [**List<io.kubernetes.client.models.V1EnvVar>**](io.kubernetes.client.models.V1EnvVar.md) | List of environment variables to set in the container. Cannot be updated. | [optional] +**envFrom** | [**List<io.kubernetes.client.models.V1EnvFromSource>**](io.kubernetes.client.models.V1EnvFromSource.md) | List of sources to populate environment variables in the container. The keys defined within a source must be a C_IDENTIFIER. All invalid keys will be reported as an event when the container is starting. When a key exists in multiple sources, the value associated with the last source will take precedence. Values defined by an Env with a duplicate key will take precedence. Cannot be updated. | [optional] +**image** | **String** | Docker image name. More info: https://kubernetes.io/docs/concepts/containers/images This field is optional to allow higher level config management to default or override container images in workload controllers like Deployments and StatefulSets. | [optional] +**imagePullPolicy** | **String** | Image pull policy. One of Always, Never, IfNotPresent. Defaults to Always if :latest tag is specified, or IfNotPresent otherwise. Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images | [optional] +**lifecycle** | [**io.kubernetes.client.models.V1Lifecycle**](io.kubernetes.client.models.V1Lifecycle.md) | | [optional] +**livenessProbe** | [**io.kubernetes.client.models.V1Probe**](io.kubernetes.client.models.V1Probe.md) | | [optional] +**name** | **String** | Name of the container specified as a DNS_LABEL. Each container in a pod must have a unique name (DNS_LABEL). Cannot be updated. | +**ports** | [**List<io.kubernetes.client.models.V1ContainerPort>**](io.kubernetes.client.models.V1ContainerPort.md) | List of ports to expose from the container. Exposing a port here gives the system additional information about the network connections a container uses, but is primarily informational. Not specifying a port here DOES NOT prevent that port from being exposed. Any port which is listening on the default \"0.0.0.0\" address inside a container will be accessible from the network. Cannot be updated. | [optional] +**readinessProbe** | [**io.kubernetes.client.models.V1Probe**](io.kubernetes.client.models.V1Probe.md) | | [optional] +**resources** | [**io.kubernetes.client.models.V1ResourceRequirements**](io.kubernetes.client.models.V1ResourceRequirements.md) | | [optional] +**securityContext** | [**io.kubernetes.client.models.V1SecurityContext**](io.kubernetes.client.models.V1SecurityContext.md) | | [optional] +**source** | **String** | Source contains the source code of the script to execute | +**startupProbe** | [**io.kubernetes.client.models.V1Probe**](io.kubernetes.client.models.V1Probe.md) | | [optional] +**stdin** | **Boolean** | Whether this container should allocate a buffer for stdin in the container runtime. If this is not set, reads from stdin in the container will always result in EOF. Default is false. | [optional] +**stdinOnce** | **Boolean** | Whether the container runtime should close the stdin channel after it has been opened by a single attach. When stdin is true the stdin stream will remain open across multiple attach sessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the first client attaches to stdin, and then remains open and accepts data until the client disconnects, at which time stdin is closed and remains closed until the container is restarted. If this flag is false, a container processes that reads from stdin will never receive an EOF. Default is false | [optional] +**terminationMessagePath** | **String** | Optional: Path at which the file to which the container's termination message will be written is mounted into the container's filesystem. Message written is intended to be brief final status, such as an assertion failure message. Will be truncated by the node if greater than 4096 bytes. The total message length across all containers will be limited to 12kb. Defaults to /dev/termination-log. Cannot be updated. | [optional] +**terminationMessagePolicy** | **String** | Indicate how the termination message should be populated. File will use the contents of terminationMessagePath to populate the container status message on both success and failure. FallbackToLogsOnError will use the last chunk of container log output if the termination message file is empty and the container exited with an error. The log output is limited to 2048 bytes or 80 lines, whichever is smaller. Defaults to File. Cannot be updated. | [optional] +**tty** | **Boolean** | Whether this container should allocate a TTY for itself, also requires 'stdin' to be true. Default is false. | [optional] +**volumeDevices** | [**List<io.kubernetes.client.models.V1VolumeDevice>**](io.kubernetes.client.models.V1VolumeDevice.md) | volumeDevices is the list of block devices to be used by the container. This is a beta feature. | [optional] +**volumeMounts** | [**List<io.kubernetes.client.models.V1VolumeMount>**](io.kubernetes.client.models.V1VolumeMount.md) | Pod volumes to mount into the container's filesystem. Cannot be updated. | [optional] +**workingDir** | **String** | Container's working directory. If not specified, the container runtime's default will be used, which might be configured in the container image. Cannot be updated. | [optional] + + + diff --git a/docs/Sequence.md b/docs/Sequence.md new file mode 100644 index 00000000..1a3509cc --- /dev/null +++ b/docs/Sequence.md @@ -0,0 +1,16 @@ + + +# Sequence + +Sequence expands a workflow step into numeric range +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**count** | **String** | Count is number of elements in the sequence (default: 0). Not to be used with end | [optional] +**end** | **String** | Number at which to end the sequence (default: 0). Not to be used with Count | [optional] +**format** | **String** | Format is a printf format string to format the value in the sequence | [optional] +**start** | **String** | Number at which to start the sequence (default: 0) | [optional] + + + diff --git a/docs/SuspendTemplate.md b/docs/SuspendTemplate.md new file mode 100644 index 00000000..204a4eac --- /dev/null +++ b/docs/SuspendTemplate.md @@ -0,0 +1,13 @@ + + +# SuspendTemplate + +SuspendTemplate is a template subtype to suspend a workflow at a predetermined point in time +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**duration** | **String** | Duration is the seconds to wait before automatically resuming a template | [optional] + + + diff --git a/docs/Template.md b/docs/Template.md new file mode 100644 index 00000000..d93ce19d --- /dev/null +++ b/docs/Template.md @@ -0,0 +1,45 @@ + + +# Template + +Template is a reusable and composable unit of execution in a workflow +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**activeDeadlineSeconds** | **Long** | Optional duration in seconds relative to the StartTime that the pod may be active on a node before the system actively tries to terminate the pod; value must be positive integer This field is only applicable to container and script templates. | [optional] +**affinity** | [**io.kubernetes.client.models.V1Affinity**](io.kubernetes.client.models.V1Affinity.md) | | [optional] +**archiveLocation** | [**ArtifactLocation**](ArtifactLocation.md) | | [optional] +**arguments** | [**Arguments**](Arguments.md) | | [optional] +**automountServiceAccountToken** | **Boolean** | AutomountServiceAccountToken indicates whether a service account token should be automatically mounted in pods. ServiceAccountName of ExecutorConfig must be specified if this value is false. | [optional] +**container** | [**io.kubernetes.client.models.V1Container**](io.kubernetes.client.models.V1Container.md) | | [optional] +**daemon** | **Boolean** | Deamon will allow a workflow to proceed to the next step so long as the container reaches readiness | [optional] +**dag** | [**DAGTemplate**](DAGTemplate.md) | | [optional] +**executor** | [**ExecutorConfig**](ExecutorConfig.md) | | [optional] +**hostAliases** | [**List<io.kubernetes.client.models.V1HostAlias>**](io.kubernetes.client.models.V1HostAlias.md) | HostAliases is an optional list of hosts and IPs that will be injected into the pod spec | [optional] +**initContainers** | [**List<UserContainer>**](UserContainer.md) | InitContainers is a list of containers which run before the main container. | [optional] +**inputs** | [**Inputs**](Inputs.md) | | [optional] +**metadata** | [**Metadata**](Metadata.md) | | [optional] +**name** | **String** | Name is the name of the template | +**nodeSelector** | **Map<String, String>** | NodeSelector is a selector to schedule this step of the workflow to be run on the selected node(s). Overrides the selector set at the workflow level. | [optional] +**outputs** | [**Outputs**](Outputs.md) | | [optional] +**parallelism** | **Long** | Parallelism limits the max total parallel pods that can execute at the same time within the boundaries of this template invocation. If additional steps/dag templates are invoked, the pods created by those templates will not be counted towards this total. | [optional] +**podSpecPatch** | **String** | PodSpecPatch holds strategic merge patch to apply against the pod spec. Allows parameterization of container fields which are not strings (e.g. resource limits). | [optional] +**priority** | **Integer** | Priority to apply to workflow pods. | [optional] +**priorityClassName** | **String** | PriorityClassName to apply to workflow pods. | [optional] +**resource** | [**ResourceTemplate**](ResourceTemplate.md) | | [optional] +**retryStrategy** | [**RetryStrategy**](RetryStrategy.md) | | [optional] +**schedulerName** | **String** | If specified, the pod will be dispatched by specified scheduler. Or it will be dispatched by workflow scope scheduler if specified. If neither specified, the pod will be dispatched by default scheduler. | [optional] +**script** | [**ScriptTemplate**](ScriptTemplate.md) | | [optional] +**securityContext** | [**io.kubernetes.client.models.V1PodSecurityContext**](io.kubernetes.client.models.V1PodSecurityContext.md) | | [optional] +**serviceAccountName** | **String** | ServiceAccountName to apply to workflow pods | [optional] +**sidecars** | [**List<UserContainer>**](UserContainer.md) | Sidecars is a list of containers which run alongside the main container Sidecars are automatically killed when the main container completes | [optional] +**steps** | [**List<ParallelSteps>**](ParallelSteps.md) | Steps define a series of sequential/parallel workflow steps | [optional] +**suspend** | [**SuspendTemplate**](SuspendTemplate.md) | | [optional] +**template** | **String** | Template is the name of the template which is used as the base of this template. | [optional] +**templateRef** | [**TemplateRef**](TemplateRef.md) | | [optional] +**tolerations** | [**List<io.kubernetes.client.models.V1Toleration>**](io.kubernetes.client.models.V1Toleration.md) | Tolerations to apply to workflow pods. | [optional] +**volumes** | [**List<io.kubernetes.client.models.V1Volume>**](io.kubernetes.client.models.V1Volume.md) | Volumes is a list of volumes that can be mounted by containers in a template. | [optional] + + + diff --git a/docs/TemplateRef.md b/docs/TemplateRef.md new file mode 100644 index 00000000..1f59161e --- /dev/null +++ b/docs/TemplateRef.md @@ -0,0 +1,15 @@ + + +# TemplateRef + +TemplateRef is a reference of template resource. +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**name** | **String** | Name is the resource name of the template. | [optional] +**runtimeResolution** | **Boolean** | RuntimeResolution skips validation at creation time. By enabling this option, you can create the referred workflow template before the actual runtime. | [optional] +**template** | **String** | Template is the name of referred template in the resource. | [optional] + + + diff --git a/docs/UserContainer.md b/docs/UserContainer.md new file mode 100644 index 00000000..5fc71f88 --- /dev/null +++ b/docs/UserContainer.md @@ -0,0 +1,35 @@ + + +# UserContainer + +UserContainer is a container specified by a user. +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**args** | **List<String>** | Arguments to the entrypoint. The docker image's CMD is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell | [optional] +**command** | **List<String>** | Entrypoint array. Not executed within a shell. The docker image's ENTRYPOINT is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell | [optional] +**env** | [**List<io.kubernetes.client.models.V1EnvVar>**](io.kubernetes.client.models.V1EnvVar.md) | List of environment variables to set in the container. Cannot be updated. | [optional] +**envFrom** | [**List<io.kubernetes.client.models.V1EnvFromSource>**](io.kubernetes.client.models.V1EnvFromSource.md) | List of sources to populate environment variables in the container. The keys defined within a source must be a C_IDENTIFIER. All invalid keys will be reported as an event when the container is starting. When a key exists in multiple sources, the value associated with the last source will take precedence. Values defined by an Env with a duplicate key will take precedence. Cannot be updated. | [optional] +**image** | **String** | Docker image name. More info: https://kubernetes.io/docs/concepts/containers/images This field is optional to allow higher level config management to default or override container images in workload controllers like Deployments and StatefulSets. | [optional] +**imagePullPolicy** | **String** | Image pull policy. One of Always, Never, IfNotPresent. Defaults to Always if :latest tag is specified, or IfNotPresent otherwise. Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images | [optional] +**lifecycle** | [**io.kubernetes.client.models.V1Lifecycle**](io.kubernetes.client.models.V1Lifecycle.md) | | [optional] +**livenessProbe** | [**io.kubernetes.client.models.V1Probe**](io.kubernetes.client.models.V1Probe.md) | | [optional] +**mirrorVolumeMounts** | **Boolean** | MirrorVolumeMounts will mount the same volumes specified in the main container to the container (including artifacts), at the same mountPaths. This enables dind daemon to partially see the same filesystem as the main container in order to use features such as docker volume binding | [optional] +**name** | **String** | Name of the container specified as a DNS_LABEL. Each container in a pod must have a unique name (DNS_LABEL). Cannot be updated. | +**ports** | [**List<io.kubernetes.client.models.V1ContainerPort>**](io.kubernetes.client.models.V1ContainerPort.md) | List of ports to expose from the container. Exposing a port here gives the system additional information about the network connections a container uses, but is primarily informational. Not specifying a port here DOES NOT prevent that port from being exposed. Any port which is listening on the default \"0.0.0.0\" address inside a container will be accessible from the network. Cannot be updated. | [optional] +**readinessProbe** | [**io.kubernetes.client.models.V1Probe**](io.kubernetes.client.models.V1Probe.md) | | [optional] +**resources** | [**io.kubernetes.client.models.V1ResourceRequirements**](io.kubernetes.client.models.V1ResourceRequirements.md) | | [optional] +**securityContext** | [**io.kubernetes.client.models.V1SecurityContext**](io.kubernetes.client.models.V1SecurityContext.md) | | [optional] +**startupProbe** | [**io.kubernetes.client.models.V1Probe**](io.kubernetes.client.models.V1Probe.md) | | [optional] +**stdin** | **Boolean** | Whether this container should allocate a buffer for stdin in the container runtime. If this is not set, reads from stdin in the container will always result in EOF. Default is false. | [optional] +**stdinOnce** | **Boolean** | Whether the container runtime should close the stdin channel after it has been opened by a single attach. When stdin is true the stdin stream will remain open across multiple attach sessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the first client attaches to stdin, and then remains open and accepts data until the client disconnects, at which time stdin is closed and remains closed until the container is restarted. If this flag is false, a container processes that reads from stdin will never receive an EOF. Default is false | [optional] +**terminationMessagePath** | **String** | Optional: Path at which the file to which the container's termination message will be written is mounted into the container's filesystem. Message written is intended to be brief final status, such as an assertion failure message. Will be truncated by the node if greater than 4096 bytes. The total message length across all containers will be limited to 12kb. Defaults to /dev/termination-log. Cannot be updated. | [optional] +**terminationMessagePolicy** | **String** | Indicate how the termination message should be populated. File will use the contents of terminationMessagePath to populate the container status message on both success and failure. FallbackToLogsOnError will use the last chunk of container log output if the termination message file is empty and the container exited with an error. The log output is limited to 2048 bytes or 80 lines, whichever is smaller. Defaults to File. Cannot be updated. | [optional] +**tty** | **Boolean** | Whether this container should allocate a TTY for itself, also requires 'stdin' to be true. Default is false. | [optional] +**volumeDevices** | [**List<io.kubernetes.client.models.V1VolumeDevice>**](io.kubernetes.client.models.V1VolumeDevice.md) | volumeDevices is the list of block devices to be used by the container. This is a beta feature. | [optional] +**volumeMounts** | [**List<io.kubernetes.client.models.V1VolumeMount>**](io.kubernetes.client.models.V1VolumeMount.md) | Pod volumes to mount into the container's filesystem. Cannot be updated. | [optional] +**workingDir** | **String** | Container's working directory. If not specified, the container runtime's default will be used, which might be configured in the container image. Cannot be updated. | [optional] + + + diff --git a/docs/ValueFrom.md b/docs/ValueFrom.md new file mode 100644 index 00000000..d370f029 --- /dev/null +++ b/docs/ValueFrom.md @@ -0,0 +1,16 @@ + + +# ValueFrom + +ValueFrom describes a location in which to obtain the value to a parameter +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**jqFilter** | **String** | JQFilter expression against the resource object in resource templates | [optional] +**jsonPath** | **String** | JSONPath of a resource to retrieve an output parameter value from in resource templates | [optional] +**parameter** | **String** | Parameter reference to a step or dag task in which to retrieve an output parameter value from (e.g. '{{steps.mystep.outputs.myparam}}') | [optional] +**path** | **String** | Path in the container to retrieve an output parameter value from in container templates | [optional] + + + diff --git a/docs/Workflow.md b/docs/Workflow.md new file mode 100644 index 00000000..d171eff6 --- /dev/null +++ b/docs/Workflow.md @@ -0,0 +1,17 @@ + + +# Workflow + +Workflow is the definition of a workflow resource +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**apiVersion** | **String** | APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources | [optional] +**kind** | **String** | Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds | [optional] +**metadata** | [**IoK8sApimachineryPkgApisMetaV1ObjectMeta**](IoK8sApimachineryPkgApisMetaV1ObjectMeta.md) | | +**spec** | [**WorkflowSpec**](WorkflowSpec.md) | | +**status** | [**WorkflowStatus**](WorkflowStatus.md) | | + + + diff --git a/docs/WorkflowList.md b/docs/WorkflowList.md new file mode 100644 index 00000000..261a8f79 --- /dev/null +++ b/docs/WorkflowList.md @@ -0,0 +1,16 @@ + + +# WorkflowList + +WorkflowList is list of Workflow resources +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**apiVersion** | **String** | APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources | [optional] +**items** | [**List<Workflow>**](Workflow.md) | | +**kind** | **String** | Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds | [optional] +**metadata** | [**IoK8sApimachineryPkgApisMetaV1ListMeta**](IoK8sApimachineryPkgApisMetaV1ListMeta.md) | | + + + diff --git a/docs/WorkflowSpec.md b/docs/WorkflowSpec.md new file mode 100644 index 00000000..5246384e --- /dev/null +++ b/docs/WorkflowSpec.md @@ -0,0 +1,41 @@ + + +# WorkflowSpec + +WorkflowSpec is the specification of a Workflow. +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**activeDeadlineSeconds** | **Long** | Optional duration in seconds relative to the workflow start time which the workflow is allowed to run before the controller terminates the workflow. A value of zero is used to terminate a Running workflow | [optional] +**affinity** | [**io.kubernetes.client.models.V1Affinity**](io.kubernetes.client.models.V1Affinity.md) | | [optional] +**arguments** | [**Arguments**](Arguments.md) | | [optional] +**artifactRepositoryRef** | [**ArtifactRepositoryRef**](ArtifactRepositoryRef.md) | | [optional] +**automountServiceAccountToken** | **Boolean** | AutomountServiceAccountToken indicates whether a service account token should be automatically mounted in pods. ServiceAccountName of ExecutorConfig must be specified if this value is false. | [optional] +**dnsConfig** | [**io.kubernetes.client.models.V1PodDNSConfig**](io.kubernetes.client.models.V1PodDNSConfig.md) | | [optional] +**dnsPolicy** | **String** | Set DNS policy for the pod. Defaults to \"ClusterFirst\". Valid values are 'ClusterFirstWithHostNet', 'ClusterFirst', 'Default' or 'None'. DNS parameters given in DNSConfig will be merged with the policy selected with DNSPolicy. To have DNS options set along with hostNetwork, you have to specify DNS policy explicitly to 'ClusterFirstWithHostNet'. | [optional] +**entrypoint** | **String** | Entrypoint is a template reference to the starting point of the workflow | +**executor** | [**ExecutorConfig**](ExecutorConfig.md) | | [optional] +**hostAliases** | [**List<io.kubernetes.client.models.V1HostAlias>**](io.kubernetes.client.models.V1HostAlias.md) | | [optional] +**hostNetwork** | **Boolean** | Host networking requested for this workflow pod. Default to false. | [optional] +**imagePullSecrets** | [**List<io.kubernetes.client.models.V1LocalObjectReference>**](io.kubernetes.client.models.V1LocalObjectReference.md) | ImagePullSecrets is a list of references to secrets in the same namespace to use for pulling any images in pods that reference this ServiceAccount. ImagePullSecrets are distinct from Secrets because Secrets can be mounted in the pod, but ImagePullSecrets are only accessed by the kubelet. More info: https://kubernetes.io/docs/concepts/containers/images/#specifying-imagepullsecrets-on-a-pod | [optional] +**nodeSelector** | **Map<String, String>** | NodeSelector is a selector which will result in all pods of the workflow to be scheduled on the selected node(s). This is able to be overridden by a nodeSelector specified in the template. | [optional] +**onExit** | **String** | OnExit is a template reference which is invoked at the end of the workflow, irrespective of the success, failure, or error of the primary workflow. | [optional] +**parallelism** | **Long** | Parallelism limits the max total parallel pods that can execute at the same time in a workflow | [optional] +**podGC** | [**PodGC**](PodGC.md) | | [optional] +**podPriority** | **Integer** | Priority to apply to workflow pods. | [optional] +**podPriorityClassName** | **String** | PriorityClassName to apply to workflow pods. | [optional] +**podSpecPatch** | **String** | PodSpecPatch holds strategic merge patch to apply against the pod spec. Allows parameterization of container fields which are not strings (e.g. resource limits). | [optional] +**priority** | **Integer** | Priority is used if controller is configured to process limited number of workflows in parallel. Workflows with higher priority are processed first. | [optional] +**schedulerName** | **String** | Set scheduler name for all pods. Will be overridden if container/script template's scheduler name is set. Default scheduler will be used if neither specified. | [optional] +**securityContext** | [**io.kubernetes.client.models.V1PodSecurityContext**](io.kubernetes.client.models.V1PodSecurityContext.md) | | [optional] +**serviceAccountName** | **String** | ServiceAccountName is the name of the ServiceAccount to run all pods of the workflow as. | [optional] +**suspend** | **Boolean** | Suspend will suspend the workflow and prevent execution of any future steps in the workflow | [optional] +**templates** | [**List<Template>**](Template.md) | Templates is a list of workflow templates used in a workflow | +**tolerations** | [**List<io.kubernetes.client.models.V1Toleration>**](io.kubernetes.client.models.V1Toleration.md) | Tolerations to apply to workflow pods. | [optional] +**ttlSecondsAfterFinished** | **Integer** | TTLSecondsAfterFinished limits the lifetime of a Workflow that has finished execution (Succeeded, Failed, Error). If this field is set, once the Workflow finishes, it will be deleted after ttlSecondsAfterFinished expires. If this field is unset, ttlSecondsAfterFinished will not expire. If this field is set to zero, ttlSecondsAfterFinished expires immediately after the Workflow finishes. | [optional] +**volumeClaimTemplates** | [**List<io.kubernetes.client.models.V1PersistentVolumeClaim>**](io.kubernetes.client.models.V1PersistentVolumeClaim.md) | VolumeClaimTemplates is a list of claims that containers are allowed to reference. The Workflow controller will create the claims at the beginning of the workflow and delete the claims upon completion of the workflow | [optional] +**volumes** | [**List<io.kubernetes.client.models.V1Volume>**](io.kubernetes.client.models.V1Volume.md) | Volumes is a list of volumes that can be mounted by containers in a workflow. | [optional] + + + diff --git a/docs/WorkflowStatus.md b/docs/WorkflowStatus.md new file mode 100644 index 00000000..fd508b57 --- /dev/null +++ b/docs/WorkflowStatus.md @@ -0,0 +1,21 @@ + + +# WorkflowStatus + +WorkflowStatus contains overall status information about a workflow +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**compressedNodes** | **String** | Compressed and base64 decoded Nodes map | [optional] +**finishedAt** | [**IoK8sApimachineryPkgApisMetaV1Time**](IoK8sApimachineryPkgApisMetaV1Time.md) | | [optional] +**message** | **String** | A human readable message indicating details about why the workflow is in this condition. | [optional] +**nodes** | [**Map<String, NodeStatus>**](NodeStatus.md) | Nodes is a mapping between a node ID and the node's status. | [optional] +**outputs** | [**Outputs**](Outputs.md) | | [optional] +**persistentVolumeClaims** | [**List<io.kubernetes.client.models.V1Volume>**](io.kubernetes.client.models.V1Volume.md) | PersistentVolumeClaims tracks all PVCs that were created as part of the workflow. The contents of this list are drained at the end of the workflow. | [optional] +**phase** | **String** | Phase a simple, high-level summary of where the workflow is in its lifecycle. | [optional] +**startedAt** | [**IoK8sApimachineryPkgApisMetaV1Time**](IoK8sApimachineryPkgApisMetaV1Time.md) | | [optional] +**storedTemplates** | [**Map<String, Template>**](Template.md) | StoredTemplates is a mapping between a template ref and the node's status. | [optional] + + + diff --git a/docs/WorkflowStep.md b/docs/WorkflowStep.md new file mode 100644 index 00000000..310a7945 --- /dev/null +++ b/docs/WorkflowStep.md @@ -0,0 +1,21 @@ + + +# WorkflowStep + +WorkflowStep is a reference to a template to execute in a series of step +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**arguments** | [**Arguments**](Arguments.md) | | [optional] +**continueOn** | [**ContinueOn**](ContinueOn.md) | | [optional] +**name** | **String** | Name of the step | [optional] +**template** | **String** | Template is the name of the template to execute as the step | [optional] +**templateRef** | [**TemplateRef**](TemplateRef.md) | | [optional] +**when** | **String** | When is an expression in which the step should conditionally execute | [optional] +**withItems** | **List<String>** | WithItems expands a step into multiple parallel steps from the items in the list | [optional] +**withParam** | **String** | WithParam expands a step into multiple parallel steps from the value in the parameter, which is expected to be a JSON list. | [optional] +**withSequence** | [**Sequence**](Sequence.md) | | [optional] + + + diff --git a/docs/WorkflowTemplate.md b/docs/WorkflowTemplate.md new file mode 100644 index 00000000..83647085 --- /dev/null +++ b/docs/WorkflowTemplate.md @@ -0,0 +1,16 @@ + + +# WorkflowTemplate + +WorkflowTemplate is the definition of a workflow template resource +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**apiVersion** | **String** | APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources | [optional] +**kind** | **String** | Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds | [optional] +**metadata** | [**IoK8sApimachineryPkgApisMetaV1ObjectMeta**](IoK8sApimachineryPkgApisMetaV1ObjectMeta.md) | | [optional] +**spec** | [**WorkflowTemplateSpec**](WorkflowTemplateSpec.md) | | + + + diff --git a/docs/WorkflowTemplateList.md b/docs/WorkflowTemplateList.md new file mode 100644 index 00000000..6e4f22b7 --- /dev/null +++ b/docs/WorkflowTemplateList.md @@ -0,0 +1,16 @@ + + +# WorkflowTemplateList + +WorkflowTemplateList is list of WorkflowTemplate resources +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**apiVersion** | **String** | APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources | [optional] +**items** | [**List<WorkflowTemplate>**](WorkflowTemplate.md) | | +**kind** | **String** | Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds | [optional] +**metadata** | [**IoK8sApimachineryPkgApisMetaV1ListMeta**](IoK8sApimachineryPkgApisMetaV1ListMeta.md) | | + + + diff --git a/docs/WorkflowTemplateSpec.md b/docs/WorkflowTemplateSpec.md new file mode 100644 index 00000000..52c8d9ff --- /dev/null +++ b/docs/WorkflowTemplateSpec.md @@ -0,0 +1,14 @@ + + +# WorkflowTemplateSpec + +WorkflowTemplateSpec is a spec of WorkflowTemplate. +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**arguments** | [**Arguments**](Arguments.md) | | [optional] +**templates** | [**List<Template>**](Template.md) | Templates is a list of workflow templates. | + + + diff --git a/git_push.sh b/git_push.sh new file mode 100644 index 00000000..ced3be2b --- /dev/null +++ b/git_push.sh @@ -0,0 +1,58 @@ +#!/bin/sh +# ref: https://help.github.com/articles/adding-an-existing-project-to-github-using-the-command-line/ +# +# Usage example: /bin/sh ./git_push.sh wing328 openapi-pestore-perl "minor update" "gitlab.com" + +git_user_id=$1 +git_repo_id=$2 +release_note=$3 +git_host=$4 + +if [ "$git_host" = "" ]; then + git_host="github.com" + echo "[INFO] No command line input provided. Set \$git_host to $git_host" +fi + +if [ "$git_user_id" = "" ]; then + git_user_id="GIT_USER_ID" + echo "[INFO] No command line input provided. Set \$git_user_id to $git_user_id" +fi + +if [ "$git_repo_id" = "" ]; then + git_repo_id="GIT_REPO_ID" + echo "[INFO] No command line input provided. Set \$git_repo_id to $git_repo_id" +fi + +if [ "$release_note" = "" ]; then + release_note="Minor update" + echo "[INFO] No command line input provided. Set \$release_note to $release_note" +fi + +# Initialize the local directory as a Git repository +git init + +# Adds the files in the local repository and stages them for commit. +git add . + +# Commits the tracked changes and prepares them to be pushed to a remote repository. +git commit -m "$release_note" + +# Sets the new remote +git_remote=`git remote` +if [ "$git_remote" = "" ]; then # git remote not defined + + if [ "$GIT_TOKEN" = "" ]; then + echo "[INFO] \$GIT_TOKEN (environment variable) is not set. Using the git credential in your environment." + git remote add origin https://${git_host}/${git_user_id}/${git_repo_id}.git + else + git remote add origin https://${git_user_id}:${GIT_TOKEN}@${git_host}/${git_user_id}/${git_repo_id}.git + fi + +fi + +git pull origin master + +# Pushes (Forces) the changes in the local repository up to the remote repository +echo "Git pushing to https://${git_host}/${git_user_id}/${git_repo_id}.git" +git push origin master 2>&1 | grep -v 'To https' + diff --git a/gradle.properties b/gradle.properties new file mode 100644 index 00000000..05644f07 --- /dev/null +++ b/gradle.properties @@ -0,0 +1,2 @@ +# Uncomment to build for Android +#target = android \ No newline at end of file diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000000000000000000000000000000000000..cc4fdc293d0e50b0ad9b65c16e7ddd1db2f6025b GIT binary patch literal 58702 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

@up^y4&I8N>~wvL%f(S2W%NN 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 D613UA literal 0 HcmV?d00001 diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 00000000..94920145 --- /dev/null +++ b/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,5 @@ +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-6.0.1-bin.zip +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists diff --git a/gradlew b/gradlew new file mode 100644 index 00000000..2fe81a7d --- /dev/null +++ b/gradlew @@ -0,0 +1,183 @@ +#!/usr/bin/env sh + +# +# Copyright 2015 the original author or authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +############################################################################## +## +## Gradle start up script for UN*X +## +############################################################################## + +# Attempt to set APP_HOME +# Resolve links: $0 may be a link +PRG="$0" +# Need this for relative symlinks. +while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`"/$link" + fi +done +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >/dev/null +APP_HOME="`pwd -P`" +cd "$SAVED" >/dev/null + +APP_NAME="Gradle" +APP_BASE_NAME=`basename "$0"` + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD="maximum" + +warn () { + echo "$*" +} + +die () { + echo + echo "$*" + echo + exit 1 +} + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "`uname`" in + CYGWIN* ) + cygwin=true + ;; + Darwin* ) + darwin=true + ;; + MINGW* ) + msys=true + ;; + NONSTOP* ) + nonstop=true + ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD="java" + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then + MAX_FD_LIMIT=`ulimit -H -n` + if [ $? -eq 0 ] ; then + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then + MAX_FD="$MAX_FD_LIMIT" + fi + ulimit -n $MAX_FD + if [ $? -ne 0 ] ; then + warn "Could not set maximum file descriptor limit: $MAX_FD" + fi + else + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" + fi +fi + +# For Darwin, add options to specify how the application appears in the dock +if $darwin; then + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" +fi + +# For Cygwin or MSYS, switch paths to Windows format before running java +if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then + APP_HOME=`cygpath --path --mixed "$APP_HOME"` + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + JAVACMD=`cygpath --unix "$JAVACMD"` + + # We build the pattern for arguments to be converted via cygpath + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` + SEP="" + for dir in $ROOTDIRSRAW ; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ] ; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@" ; do + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` + else + eval `echo args$i`="\"$arg\"" + fi + i=`expr $i + 1` + done + case $i in + 0) set -- ;; + 1) set -- "$args0" ;; + 2) set -- "$args0" "$args1" ;; + 3) set -- "$args0" "$args1" "$args2" ;; + 4) set -- "$args0" "$args1" "$args2" "$args3" ;; + 5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + 6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + 7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + 8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + 9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + esac +fi + +# Escape application args +save () { + for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done + echo " " +} +APP_ARGS=`save "$@"` + +# Collect all arguments for the java command, following the shell quoting and substitution rules +eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" + +exec "$JAVACMD" "$@" diff --git a/gradlew.bat b/gradlew.bat new file mode 100644 index 00000000..9618d8d9 --- /dev/null +++ b/gradlew.bat @@ -0,0 +1,100 @@ +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem + +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto init + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto init + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:init +@rem Get command-line arguments, handling Windows variants + +if not "%OS%" == "Windows_NT" goto win9xME_args + +:win9xME_args +@rem Slurp the command line arguments. +set CMD_LINE_ARGS= +set _SKIP=2 + +:win9xME_args_slurp +if "x%~1" == "x" goto execute + +set CMD_LINE_ARGS=%* + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/pom.xml b/pom.xml new file mode 100644 index 00000000..9af2756e --- /dev/null +++ b/pom.xml @@ -0,0 +1,267 @@ + + 4.0.0 + io.argoproj.workflow + argo-client-java + jar + argo-client-java + sdks + https://github.com/openapitools/openapi-generator + OpenAPI Java + + scm:git:git@github.com:openapitools/openapi-generator.git + scm:git:git@github.com:openapitools/openapi-generator.git + https://github.com/openapitools/openapi-generator + + + + + Unlicense + http://unlicense.org + repo + + + + + + OpenAPI-Generator Contributors + team@openapitools.org + OpenAPITools.org + http://openapitools.org + + + + + + + org.apache.maven.plugins + maven-enforcer-plugin + 3.0.0-M1 + + + enforce-maven + + enforce + + + + + 2.2.0 + + + + + + + + org.apache.maven.plugins + maven-surefire-plugin + 2.12 + + + + loggerPath + conf/log4j.properties + + + -Xms512m -Xmx1500m + methods + pertest + + + + maven-dependency-plugin + + + package + + copy-dependencies + + + ${project.build.directory}/lib + + + + + + + + org.apache.maven.plugins + maven-jar-plugin + 2.2 + + + + jar + test-jar + + + + + + + + + org.codehaus.mojo + build-helper-maven-plugin + 1.10 + + + add_sources + generate-sources + + add-source + + + + src/main/java + + + + + add_test_sources + generate-test-sources + + add-test-source + + + + src/test/java + + + + + + + org.apache.maven.plugins + maven-javadoc-plugin + 2.10.4 + + + attach-javadocs + + jar + + + + + + + http.response.details + a + Http Response Details: + + + + + + org.apache.maven.plugins + maven-source-plugin + 2.2.1 + + + attach-sources + + jar-no-fork + + + + + + + + + + sign-artifacts + + + + org.apache.maven.plugins + maven-gpg-plugin + 1.5 + + + sign-artifacts + verify + + sign + + + + + + + + + + io.kubernetesclient-java5.0.0 + + io.swagger + swagger-annotations + ${swagger-core-version} + + + + com.google.code.findbugs + jsr305 + 3.0.2 + + + com.squareup.okhttp3 + okhttp + ${okhttp-version} + + + com.squareup.okhttp3 + logging-interceptor + ${okhttp-version} + + + com.google.code.gson + gson + ${gson-version} + + + io.gsonfire + gson-fire + ${gson-fire-version} + + + org.apache.commons + commons-lang3 + ${commons-lang3-version} + + + joda-time + joda-time + ${jodatime-version} + + + javax.annotation + jsr250-api + ${javax-annotation-version} + + + + junit + junit + ${junit-version} + test + + + + 1.7 + ${java.version} + ${java.version} + 1.8.3 + 1.5.22 + 3.14.2 + 2.8.5 + 3.9 + 2.9.9 + 1.0.0 + 1.0 + 4.13 + UTF-8 + + diff --git a/settings.gradle b/settings.gradle new file mode 100644 index 00000000..6de09a8c --- /dev/null +++ b/settings.gradle @@ -0,0 +1 @@ +rootProject.name = "argo-client-java" \ No newline at end of file diff --git a/src/main/AndroidManifest.xml b/src/main/AndroidManifest.xml new file mode 100644 index 00000000..020b4690 --- /dev/null +++ b/src/main/AndroidManifest.xml @@ -0,0 +1,3 @@ + + + diff --git a/src/main/java/io/argoproj/workflow/ApiCallback.java b/src/main/java/io/argoproj/workflow/ApiCallback.java new file mode 100644 index 00000000..7f6ec3f4 --- /dev/null +++ b/src/main/java/io/argoproj/workflow/ApiCallback.java @@ -0,0 +1,62 @@ +/* + * Argo + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: v2.4.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package io.argoproj.workflow; + +import java.io.IOException; + +import java.util.Map; +import java.util.List; + +/** + * Callback for asynchronous API call. + * + * @param The return type + */ +public interface ApiCallback { + /** + * This is called when the API call fails. + * + * @param e The exception causing the failure + * @param statusCode Status code of the response if available, otherwise it would be 0 + * @param responseHeaders Headers of the response if available, otherwise it would be null + */ + void onFailure(ApiException e, int statusCode, Map> responseHeaders); + + /** + * This is called when the API call succeeded. + * + * @param result The result deserialized from response + * @param statusCode Status code of the response + * @param responseHeaders Headers of the response + */ + void onSuccess(T result, int statusCode, Map> responseHeaders); + + /** + * This is called when the API upload processing. + * + * @param bytesWritten bytes Written + * @param contentLength content length of request body + * @param done write end + */ + void onUploadProgress(long bytesWritten, long contentLength, boolean done); + + /** + * This is called when the API downlond processing. + * + * @param bytesRead bytes Read + * @param contentLength content lenngth of the response + * @param done Read end + */ + void onDownloadProgress(long bytesRead, long contentLength, boolean done); +} diff --git a/src/main/java/io/argoproj/workflow/ApiClient.java b/src/main/java/io/argoproj/workflow/ApiClient.java new file mode 100644 index 00000000..728eb187 --- /dev/null +++ b/src/main/java/io/argoproj/workflow/ApiClient.java @@ -0,0 +1,1318 @@ +/* + * Argo + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: v2.4.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package io.argoproj.workflow; + +import okhttp3.*; +import okhttp3.internal.http.HttpMethod; +import okhttp3.internal.tls.OkHostnameVerifier; +import okhttp3.logging.HttpLoggingInterceptor; +import okhttp3.logging.HttpLoggingInterceptor.Level; +import okio.BufferedSink; +import okio.Okio; +import org.joda.time.DateTime; +import org.joda.time.LocalDate; +import org.joda.time.format.DateTimeFormatter; + +import javax.net.ssl.*; +import java.io.File; +import java.io.IOException; +import java.io.InputStream; +import java.io.UnsupportedEncodingException; +import java.lang.reflect.Type; +import java.net.URLConnection; +import java.net.URLEncoder; +import java.security.GeneralSecurityException; +import java.security.KeyStore; +import java.security.SecureRandom; +import java.security.cert.Certificate; +import java.security.cert.CertificateException; +import java.security.cert.CertificateFactory; +import java.security.cert.X509Certificate; +import java.text.DateFormat; +import java.util.*; +import java.util.Map.Entry; +import java.util.concurrent.TimeUnit; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +import io.argoproj.workflow.auth.Authentication; +import io.argoproj.workflow.auth.HttpBasicAuth; +import io.argoproj.workflow.auth.HttpBearerAuth; +import io.argoproj.workflow.auth.ApiKeyAuth; + +public class ApiClient { + + private String basePath = "http://localhost"; + private boolean debugging = false; + private Map defaultHeaderMap = new HashMap(); + private Map defaultCookieMap = new HashMap(); + private String tempFolderPath = null; + + private Map authentications; + + private DateFormat dateFormat; + private DateFormat datetimeFormat; + private boolean lenientDatetimeFormat; + private int dateLength; + + private InputStream sslCaCert; + private boolean verifyingSsl; + private KeyManager[] keyManagers; + + private OkHttpClient httpClient; + private JSON json; + + private HttpLoggingInterceptor loggingInterceptor; + + /* + * Basic constructor for ApiClient + */ + public ApiClient() { + init(); + + // Setup authentications (key: authentication name, value: authentication). + // Prevent the authentications from being modified. + authentications = Collections.unmodifiableMap(authentications); + } + + private void init() { + OkHttpClient.Builder builder = new OkHttpClient.Builder(); + builder.addNetworkInterceptor(getProgressInterceptor()); + httpClient = builder.build(); + + + verifyingSsl = true; + + json = new JSON(); + + // Set default User-Agent. + setUserAgent("OpenAPI-Generator/sdks/java"); + + authentications = new HashMap(); + } + + /** + * Get base path + * + * @return Base path + */ + public String getBasePath() { + return basePath; + } + + /** + * Set base path + * + * @param basePath Base path of the URL (e.g http://localhost + * @return An instance of OkHttpClient + */ + public ApiClient setBasePath(String basePath) { + this.basePath = basePath; + return this; + } + + /** + * Get HTTP client + * + * @return An instance of OkHttpClient + */ + public OkHttpClient getHttpClient() { + return httpClient; + } + + /** + * Set HTTP client, which must never be null. + * + * @param newHttpClient An instance of OkHttpClient + * @return Api Client + * @throws NullPointerException when newHttpClient is null + */ + public ApiClient setHttpClient(OkHttpClient newHttpClient) { + this.httpClient = Objects.requireNonNull(newHttpClient, "HttpClient must not be null!"); + return this; + } + + /** + * Get JSON + * + * @return JSON object + */ + public JSON getJSON() { + return json; + } + + /** + * Set JSON + * + * @param json JSON object + * @return Api client + */ + public ApiClient setJSON(JSON json) { + this.json = json; + return this; + } + + /** + * True if isVerifyingSsl flag is on + * + * @return True if isVerifySsl flag is on + */ + public boolean isVerifyingSsl() { + return verifyingSsl; + } + + /** + * Configure whether to verify certificate and hostname when making https requests. + * Default to true. + * NOTE: Do NOT set to false in production code, otherwise you would face multiple types of cryptographic attacks. + * + * @param verifyingSsl True to verify TLS/SSL connection + * @return ApiClient + */ + public ApiClient setVerifyingSsl(boolean verifyingSsl) { + this.verifyingSsl = verifyingSsl; + applySslSettings(); + return this; + } + + /** + * Get SSL CA cert. + * + * @return Input stream to the SSL CA cert + */ + public InputStream getSslCaCert() { + return sslCaCert; + } + + /** + * Configure the CA certificate to be trusted when making https requests. + * Use null to reset to default. + * + * @param sslCaCert input stream for SSL CA cert + * @return ApiClient + */ + public ApiClient setSslCaCert(InputStream sslCaCert) { + this.sslCaCert = sslCaCert; + applySslSettings(); + return this; + } + + public KeyManager[] getKeyManagers() { + return keyManagers; + } + + /** + * Configure client keys to use for authorization in an SSL session. + * Use null to reset to default. + * + * @param managers The KeyManagers to use + * @return ApiClient + */ + public ApiClient setKeyManagers(KeyManager[] managers) { + this.keyManagers = managers; + applySslSettings(); + return this; + } + + public DateFormat getDateFormat() { + return dateFormat; + } + + public ApiClient setDateFormat(DateFormat dateFormat) { + this.json.setDateFormat(dateFormat); + return this; + } + + public ApiClient setSqlDateFormat(DateFormat dateFormat) { + this.json.setSqlDateFormat(dateFormat); + return this; + } + + public ApiClient setDateTimeFormat(DateTimeFormatter dateFormat) { + this.json.setDateTimeFormat(dateFormat); + return this; + } + + public ApiClient setLocalDateFormat(DateTimeFormatter dateFormat) { + this.json.setLocalDateFormat(dateFormat); + return this; + } + + public ApiClient setLenientOnJson(boolean lenientOnJson) { + this.json.setLenientOnJson(lenientOnJson); + return this; + } + + /** + * Get authentications (key: authentication name, value: authentication). + * + * @return Map of authentication objects + */ + public Map getAuthentications() { + return authentications; + } + + /** + * Get authentication for the given name. + * + * @param authName The authentication name + * @return The authentication, null if not found + */ + public Authentication getAuthentication(String authName) { + return authentications.get(authName); + } + + /** + * Helper method to set username for the first HTTP basic authentication. + * + * @param username Username + */ + public void setUsername(String username) { + for (Authentication auth : authentications.values()) { + if (auth instanceof HttpBasicAuth) { + ((HttpBasicAuth) auth).setUsername(username); + return; + } + } + throw new RuntimeException("No HTTP basic authentication configured!"); + } + + /** + * Helper method to set password for the first HTTP basic authentication. + * + * @param password Password + */ + public void setPassword(String password) { + for (Authentication auth : authentications.values()) { + if (auth instanceof HttpBasicAuth) { + ((HttpBasicAuth) auth).setPassword(password); + return; + } + } + throw new RuntimeException("No HTTP basic authentication configured!"); + } + + /** + * Helper method to set API key value for the first API key authentication. + * + * @param apiKey API key + */ + public void setApiKey(String apiKey) { + for (Authentication auth : authentications.values()) { + if (auth instanceof ApiKeyAuth) { + ((ApiKeyAuth) auth).setApiKey(apiKey); + return; + } + } + throw new RuntimeException("No API key authentication configured!"); + } + + /** + * Helper method to set API key prefix for the first API key authentication. + * + * @param apiKeyPrefix API key prefix + */ + public void setApiKeyPrefix(String apiKeyPrefix) { + for (Authentication auth : authentications.values()) { + if (auth instanceof ApiKeyAuth) { + ((ApiKeyAuth) auth).setApiKeyPrefix(apiKeyPrefix); + return; + } + } + throw new RuntimeException("No API key authentication configured!"); + } + + /** + * Helper method to set access token for the first OAuth2 authentication. + * + * @param accessToken Access token + */ + public void setAccessToken(String accessToken) { + throw new RuntimeException("No OAuth2 authentication configured!"); + } + + /** + * Set the User-Agent header's value (by adding to the default header map). + * + * @param userAgent HTTP request's user agent + * @return ApiClient + */ + public ApiClient setUserAgent(String userAgent) { + addDefaultHeader("User-Agent", userAgent); + return this; + } + + /** + * Add a default header. + * + * @param key The header's key + * @param value The header's value + * @return ApiClient + */ + public ApiClient addDefaultHeader(String key, String value) { + defaultHeaderMap.put(key, value); + return this; + } + + /** + * Add a default cookie. + * + * @param key The cookie's key + * @param value The cookie's value + * @return ApiClient + */ + public ApiClient addDefaultCookie(String key, String value) { + defaultCookieMap.put(key, value); + return this; + } + + /** + * Check that whether debugging is enabled for this API client. + * + * @return True if debugging is enabled, false otherwise. + */ + public boolean isDebugging() { + return debugging; + } + + /** + * Enable/disable debugging for this API client. + * + * @param debugging To enable (true) or disable (false) debugging + * @return ApiClient + */ + public ApiClient setDebugging(boolean debugging) { + if (debugging != this.debugging) { + if (debugging) { + loggingInterceptor = new HttpLoggingInterceptor(); + loggingInterceptor.setLevel(Level.BODY); + httpClient = httpClient.newBuilder().addInterceptor(loggingInterceptor).build(); + } else { + httpClient.interceptors().remove(loggingInterceptor); + loggingInterceptor = null; + } + } + this.debugging = debugging; + return this; + } + + /** + * The path of temporary folder used to store downloaded files from endpoints + * with file response. The default value is null, i.e. using + * the system's default tempopary folder. + * + * @see createTempFile + * @return Temporary folder path + */ + public String getTempFolderPath() { + return tempFolderPath; + } + + /** + * Set the temporary folder path (for downloading files) + * + * @param tempFolderPath Temporary folder path + * @return ApiClient + */ + public ApiClient setTempFolderPath(String tempFolderPath) { + this.tempFolderPath = tempFolderPath; + return this; + } + + /** + * Get connection timeout (in milliseconds). + * + * @return Timeout in milliseconds + */ + public int getConnectTimeout() { + return httpClient.connectTimeoutMillis(); + } + + /** + * Sets the connect timeout (in milliseconds). + * A value of 0 means no timeout, otherwise values must be between 1 and + * {@link Integer#MAX_VALUE}. + * + * @param connectionTimeout connection timeout in milliseconds + * @return Api client + */ + public ApiClient setConnectTimeout(int connectionTimeout) { + httpClient = httpClient.newBuilder().connectTimeout(connectionTimeout, TimeUnit.MILLISECONDS).build(); + return this; + } + + /** + * Get read timeout (in milliseconds). + * + * @return Timeout in milliseconds + */ + public int getReadTimeout() { + return httpClient.readTimeoutMillis(); + } + + /** + * Sets the read timeout (in milliseconds). + * A value of 0 means no timeout, otherwise values must be between 1 and + * {@link Integer#MAX_VALUE}. + * + * @param readTimeout read timeout in milliseconds + * @return Api client + */ + public ApiClient setReadTimeout(int readTimeout) { + httpClient = httpClient.newBuilder().readTimeout(readTimeout, TimeUnit.MILLISECONDS).build(); + return this; + } + + /** + * Get write timeout (in milliseconds). + * + * @return Timeout in milliseconds + */ + public int getWriteTimeout() { + return httpClient.writeTimeoutMillis(); + } + + /** + * Sets the write timeout (in milliseconds). + * A value of 0 means no timeout, otherwise values must be between 1 and + * {@link Integer#MAX_VALUE}. + * + * @param writeTimeout connection timeout in milliseconds + * @return Api client + */ + public ApiClient setWriteTimeout(int writeTimeout) { + httpClient = httpClient.newBuilder().writeTimeout(writeTimeout, TimeUnit.MILLISECONDS).build(); + return this; + } + + + /** + * Format the given parameter object into string. + * + * @param param Parameter + * @return String representation of the parameter + */ + public String parameterToString(Object param) { + if (param == null) { + return ""; + } else if (param instanceof Date || param instanceof DateTime || param instanceof LocalDate) { + //Serialize to json string and remove the " enclosing characters + String jsonStr = json.serialize(param); + return jsonStr.substring(1, jsonStr.length() - 1); + } else if (param instanceof Collection) { + StringBuilder b = new StringBuilder(); + for (Object o : (Collection) param) { + if (b.length() > 0) { + b.append(","); + } + b.append(String.valueOf(o)); + } + return b.toString(); + } else { + return String.valueOf(param); + } + } + + /** + * Formats the specified query parameter to a list containing a single {@code Pair} object. + * + * Note that {@code value} must not be a collection. + * + * @param name The name of the parameter. + * @param value The value of the parameter. + * @return A list containing a single {@code Pair} object. + */ + public List parameterToPair(String name, Object value) { + List params = new ArrayList(); + + // preconditions + if (name == null || name.isEmpty() || value == null || value instanceof Collection) { + return params; + } + + params.add(new Pair(name, parameterToString(value))); + return params; + } + + /** + * Formats the specified collection query parameters to a list of {@code Pair} objects. + * + * Note that the values of each of the returned Pair objects are percent-encoded. + * + * @param collectionFormat The collection format of the parameter. + * @param name The name of the parameter. + * @param value The value of the parameter. + * @return A list of {@code Pair} objects. + */ + public List parameterToPairs(String collectionFormat, String name, Collection value) { + List params = new ArrayList(); + + // preconditions + if (name == null || name.isEmpty() || value == null || value.isEmpty()) { + return params; + } + + // create the params based on the collection format + if ("multi".equals(collectionFormat)) { + for (Object item : value) { + params.add(new Pair(name, escapeString(parameterToString(item)))); + } + return params; + } + + // collectionFormat is assumed to be "csv" by default + String delimiter = ","; + + // escape all delimiters except commas, which are URI reserved + // characters + if ("ssv".equals(collectionFormat)) { + delimiter = escapeString(" "); + } else if ("tsv".equals(collectionFormat)) { + delimiter = escapeString("\t"); + } else if ("pipes".equals(collectionFormat)) { + delimiter = escapeString("|"); + } + + StringBuilder sb = new StringBuilder(); + for (Object item : value) { + sb.append(delimiter); + sb.append(escapeString(parameterToString(item))); + } + + params.add(new Pair(name, sb.substring(delimiter.length()))); + + return params; + } + + /** + * Formats the specified collection path parameter to a string value. + * + * @param collectionFormat The collection format of the parameter. + * @param value The value of the parameter. + * @return String representation of the parameter + */ + public String collectionPathParameterToString(String collectionFormat, Collection value) { + // create the value based on the collection format + if ("multi".equals(collectionFormat)) { + // not valid for path params + return parameterToString(value); + } + + // collectionFormat is assumed to be "csv" by default + String delimiter = ","; + + if ("ssv".equals(collectionFormat)) { + delimiter = " "; + } else if ("tsv".equals(collectionFormat)) { + delimiter = "\t"; + } else if ("pipes".equals(collectionFormat)) { + delimiter = "|"; + } + + StringBuilder sb = new StringBuilder() ; + for (Object item : value) { + sb.append(delimiter); + sb.append(parameterToString(item)); + } + + return sb.substring(delimiter.length()); + } + + /** + * Sanitize filename by removing path. + * e.g. ../../sun.gif becomes sun.gif + * + * @param filename The filename to be sanitized + * @return The sanitized filename + */ + public String sanitizeFilename(String filename) { + return filename.replaceAll(".*[/\\\\]", ""); + } + + /** + * Check if the given MIME is a JSON MIME. + * JSON MIME examples: + * application/json + * application/json; charset=UTF8 + * APPLICATION/JSON + * application/vnd.company+json + * "* / *" is also default to JSON + * @param mime MIME (Multipurpose Internet Mail Extensions) + * @return True if the given MIME is JSON, false otherwise. + */ + public boolean isJsonMime(String mime) { + String jsonMime = "(?i)^(application/json|[^;/ \t]+/[^;/ \t]+[+]json)[ \t]*(;.*)?$"; + return mime != null && (mime.matches(jsonMime) || mime.equals("*/*")); + } + + /** + * Select the Accept header's value from the given accepts array: + * if JSON exists in the given array, use it; + * otherwise use all of them (joining into a string) + * + * @param accepts The accepts array to select from + * @return The Accept header to use. If the given array is empty, + * null will be returned (not to set the Accept header explicitly). + */ + public String selectHeaderAccept(String[] accepts) { + if (accepts.length == 0) { + return null; + } + for (String accept : accepts) { + if (isJsonMime(accept)) { + return accept; + } + } + return StringUtil.join(accepts, ","); + } + + /** + * Select the Content-Type header's value from the given array: + * if JSON exists in the given array, use it; + * otherwise use the first one of the array. + * + * @param contentTypes The Content-Type array to select from + * @return The Content-Type header to use. If the given array is empty, + * or matches "any", JSON will be used. + */ + public String selectHeaderContentType(String[] contentTypes) { + if (contentTypes.length == 0 || contentTypes[0].equals("*/*")) { + return "application/json"; + } + for (String contentType : contentTypes) { + if (isJsonMime(contentType)) { + return contentType; + } + } + return contentTypes[0]; + } + + /** + * Escape the given string to be used as URL query value. + * + * @param str String to be escaped + * @return Escaped string + */ + public String escapeString(String str) { + try { + return URLEncoder.encode(str, "utf8").replaceAll("\\+", "%20"); + } catch (UnsupportedEncodingException e) { + return str; + } + } + + /** + * Deserialize response body to Java object, according to the return type and + * the Content-Type response header. + * + * @param Type + * @param response HTTP response + * @param returnType The type of the Java object + * @return The deserialized Java object + * @throws ApiException If fail to deserialize response body, i.e. cannot read response body + * or the Content-Type of the response is not supported. + */ + @SuppressWarnings("unchecked") + public T deserialize(Response response, Type returnType) throws ApiException { + if (response == null || returnType == null) { + return null; + } + + if ("byte[]".equals(returnType.toString())) { + // Handle binary response (byte array). + try { + return (T) response.body().bytes(); + } catch (IOException e) { + throw new ApiException(e); + } + } else if (returnType.equals(File.class)) { + // Handle file downloading. + return (T) downloadFileFromResponse(response); + } + + String respBody; + try { + if (response.body() != null) + respBody = response.body().string(); + else + respBody = null; + } catch (IOException e) { + throw new ApiException(e); + } + + if (respBody == null || "".equals(respBody)) { + return null; + } + + String contentType = response.headers().get("Content-Type"); + if (contentType == null) { + // ensuring a default content type + contentType = "application/json"; + } + if (isJsonMime(contentType)) { + return json.deserialize(respBody, returnType); + } else if (returnType.equals(String.class)) { + // Expecting string, return the raw response body. + return (T) respBody; + } else { + throw new ApiException( + "Content type \"" + contentType + "\" is not supported for type: " + returnType, + response.code(), + response.headers().toMultimap(), + respBody); + } + } + + /** + * Serialize the given Java object into request body according to the object's + * class and the request Content-Type. + * + * @param obj The Java object + * @param contentType The request Content-Type + * @return The serialized request body + * @throws ApiException If fail to serialize the given object + */ + public RequestBody serialize(Object obj, String contentType) throws ApiException { + if (obj instanceof byte[]) { + // Binary (byte array) body parameter support. + return RequestBody.create(MediaType.parse(contentType), (byte[]) obj); + } else if (obj instanceof File) { + // File body parameter support. + return RequestBody.create(MediaType.parse(contentType), (File) obj); + } else if (isJsonMime(contentType)) { + String content; + if (obj != null) { + content = json.serialize(obj); + } else { + content = null; + } + return RequestBody.create(MediaType.parse(contentType), content); + } else { + throw new ApiException("Content type \"" + contentType + "\" is not supported"); + } + } + + /** + * Download file from the given response. + * + * @param response An instance of the Response object + * @throws ApiException If fail to read file content from response and write to disk + * @return Downloaded file + */ + public File downloadFileFromResponse(Response response) throws ApiException { + try { + File file = prepareDownloadFile(response); + BufferedSink sink = Okio.buffer(Okio.sink(file)); + sink.writeAll(response.body().source()); + sink.close(); + return file; + } catch (IOException e) { + throw new ApiException(e); + } + } + + /** + * Prepare file for download + * + * @param response An instance of the Response object + * @return Prepared file for the download + * @throws IOException If fail to prepare file for download + */ + public File prepareDownloadFile(Response response) throws IOException { + String filename = null; + String contentDisposition = response.header("Content-Disposition"); + if (contentDisposition != null && !"".equals(contentDisposition)) { + // Get filename from the Content-Disposition header. + Pattern pattern = Pattern.compile("filename=['\"]?([^'\"\\s]+)['\"]?"); + Matcher matcher = pattern.matcher(contentDisposition); + if (matcher.find()) { + filename = sanitizeFilename(matcher.group(1)); + } + } + + String prefix = null; + String suffix = null; + if (filename == null) { + prefix = "download-"; + suffix = ""; + } else { + int pos = filename.lastIndexOf("."); + if (pos == -1) { + prefix = filename + "-"; + } else { + prefix = filename.substring(0, pos) + "-"; + suffix = filename.substring(pos); + } + // File.createTempFile requires the prefix to be at least three characters long + if (prefix.length() < 3) + prefix = "download-"; + } + + if (tempFolderPath == null) + return File.createTempFile(prefix, suffix); + else + return File.createTempFile(prefix, suffix, new File(tempFolderPath)); + } + + /** + * {@link #execute(Call, Type)} + * + * @param Type + * @param call An instance of the Call object + * @return ApiResponse<T> + * @throws ApiException If fail to execute the call + */ + public ApiResponse execute(Call call) throws ApiException { + return execute(call, null); + } + + /** + * Execute HTTP call and deserialize the HTTP response body into the given return type. + * + * @param returnType The return type used to deserialize HTTP response body + * @param The return type corresponding to (same with) returnType + * @param call Call + * @return ApiResponse object containing response status, headers and + * data, which is a Java object deserialized from response body and would be null + * when returnType is null. + * @throws ApiException If fail to execute the call + */ + public ApiResponse execute(Call call, Type returnType) throws ApiException { + try { + Response response = call.execute(); + T data = handleResponse(response, returnType); + return new ApiResponse(response.code(), response.headers().toMultimap(), data); + } catch (IOException e) { + throw new ApiException(e); + } + } + + /** + * {@link #executeAsync(Call, Type, ApiCallback)} + * + * @param Type + * @param call An instance of the Call object + * @param callback ApiCallback<T> + */ + public void executeAsync(Call call, ApiCallback callback) { + executeAsync(call, null, callback); + } + + /** + * Execute HTTP call asynchronously. + * + * @param Type + * @param call The callback to be executed when the API call finishes + * @param returnType Return type + * @param callback ApiCallback + * @see #execute(Call, Type) + */ + @SuppressWarnings("unchecked") + public void executeAsync(Call call, final Type returnType, final ApiCallback callback) { + call.enqueue(new Callback() { + @Override + public void onFailure(Call call, IOException e) { + callback.onFailure(new ApiException(e), 0, null); + } + + @Override + public void onResponse(Call call, Response response) throws IOException { + T result; + try { + result = (T) handleResponse(response, returnType); + } catch (ApiException e) { + callback.onFailure(e, response.code(), response.headers().toMultimap()); + return; + } + callback.onSuccess(result, response.code(), response.headers().toMultimap()); + } + }); + } + + /** + * Handle the given response, return the deserialized object when the response is successful. + * + * @param Type + * @param response Response + * @param returnType Return type + * @return Type + * @throws ApiException If the response has an unsuccessful status code or + * fail to deserialize the response body + */ + public T handleResponse(Response response, Type returnType) throws ApiException { + if (response.isSuccessful()) { + if (returnType == null || response.code() == 204) { + // returning null if the returnType is not defined, + // or the status code is 204 (No Content) + if (response.body() != null) { + try { + response.body().close(); + } catch (Exception e) { + throw new ApiException(response.message(), e, response.code(), response.headers().toMultimap()); + } + } + return null; + } else { + return deserialize(response, returnType); + } + } else { + String respBody = null; + if (response.body() != null) { + try { + respBody = response.body().string(); + } catch (IOException e) { + throw new ApiException(response.message(), e, response.code(), response.headers().toMultimap()); + } + } + throw new ApiException(response.message(), response.code(), response.headers().toMultimap(), respBody); + } + } + + /** + * Build HTTP call with the given options. + * + * @param path The sub-path of the HTTP URL + * @param method The request method, one of "GET", "HEAD", "OPTIONS", "POST", "PUT", "PATCH" and "DELETE" + * @param queryParams The query parameters + * @param collectionQueryParams The collection query parameters + * @param body The request body object + * @param headerParams The header parameters + * @param cookieParams The cookie parameters + * @param formParams The form parameters + * @param authNames The authentications to apply + * @param callback Callback for upload/download progress + * @return The HTTP call + * @throws ApiException If fail to serialize the request body object + */ + public Call buildCall(String path, String method, List queryParams, List collectionQueryParams, Object body, Map headerParams, Map cookieParams, Map formParams, String[] authNames, ApiCallback callback) throws ApiException { + Request request = buildRequest(path, method, queryParams, collectionQueryParams, body, headerParams, cookieParams, formParams, authNames, callback); + + return httpClient.newCall(request); + } + + /** + * Build an HTTP request with the given options. + * + * @param path The sub-path of the HTTP URL + * @param method The request method, one of "GET", "HEAD", "OPTIONS", "POST", "PUT", "PATCH" and "DELETE" + * @param queryParams The query parameters + * @param collectionQueryParams The collection query parameters + * @param body The request body object + * @param headerParams The header parameters + * @param cookieParams The cookie parameters + * @param formParams The form parameters + * @param authNames The authentications to apply + * @param callback Callback for upload/download progress + * @return The HTTP request + * @throws ApiException If fail to serialize the request body object + */ + public Request buildRequest(String path, String method, List queryParams, List collectionQueryParams, Object body, Map headerParams, Map cookieParams, Map formParams, String[] authNames, ApiCallback callback) throws ApiException { + updateParamsForAuth(authNames, queryParams, headerParams, cookieParams); + + final String url = buildUrl(path, queryParams, collectionQueryParams); + final Request.Builder reqBuilder = new Request.Builder().url(url); + processHeaderParams(headerParams, reqBuilder); + processCookieParams(cookieParams, reqBuilder); + + String contentType = (String) headerParams.get("Content-Type"); + // ensuring a default content type + if (contentType == null) { + contentType = "application/json"; + } + + RequestBody reqBody; + if (!HttpMethod.permitsRequestBody(method)) { + reqBody = null; + } else if ("application/x-www-form-urlencoded".equals(contentType)) { + reqBody = buildRequestBodyFormEncoding(formParams); + } else if ("multipart/form-data".equals(contentType)) { + reqBody = buildRequestBodyMultipart(formParams); + } else if (body == null) { + if ("DELETE".equals(method)) { + // allow calling DELETE without sending a request body + reqBody = null; + } else { + // use an empty request body (for POST, PUT and PATCH) + reqBody = RequestBody.create(MediaType.parse(contentType), ""); + } + } else { + reqBody = serialize(body, contentType); + } + + // Associate callback with request (if not null) so interceptor can + // access it when creating ProgressResponseBody + reqBuilder.tag(callback); + + Request request = null; + + if (callback != null && reqBody != null) { + ProgressRequestBody progressRequestBody = new ProgressRequestBody(reqBody, callback); + request = reqBuilder.method(method, progressRequestBody).build(); + } else { + request = reqBuilder.method(method, reqBody).build(); + } + + return request; + } + + /** + * Build full URL by concatenating base path, the given sub path and query parameters. + * + * @param path The sub path + * @param queryParams The query parameters + * @param collectionQueryParams The collection query parameters + * @return The full URL + */ + public String buildUrl(String path, List queryParams, List collectionQueryParams) { + final StringBuilder url = new StringBuilder(); + url.append(basePath).append(path); + + if (queryParams != null && !queryParams.isEmpty()) { + // support (constant) query string in `path`, e.g. "/posts?draft=1" + String prefix = path.contains("?") ? "&" : "?"; + for (Pair param : queryParams) { + if (param.getValue() != null) { + if (prefix != null) { + url.append(prefix); + prefix = null; + } else { + url.append("&"); + } + String value = parameterToString(param.getValue()); + url.append(escapeString(param.getName())).append("=").append(escapeString(value)); + } + } + } + + if (collectionQueryParams != null && !collectionQueryParams.isEmpty()) { + String prefix = url.toString().contains("?") ? "&" : "?"; + for (Pair param : collectionQueryParams) { + if (param.getValue() != null) { + if (prefix != null) { + url.append(prefix); + prefix = null; + } else { + url.append("&"); + } + String value = parameterToString(param.getValue()); + // collection query parameter value already escaped as part of parameterToPairs + url.append(escapeString(param.getName())).append("=").append(value); + } + } + } + + return url.toString(); + } + + /** + * Set header parameters to the request builder, including default headers. + * + * @param headerParams Header parameters in the form of Map + * @param reqBuilder Request.Builder + */ + public void processHeaderParams(Map headerParams, Request.Builder reqBuilder) { + for (Entry param : headerParams.entrySet()) { + reqBuilder.header(param.getKey(), parameterToString(param.getValue())); + } + for (Entry header : defaultHeaderMap.entrySet()) { + if (!headerParams.containsKey(header.getKey())) { + reqBuilder.header(header.getKey(), parameterToString(header.getValue())); + } + } + } + + /** + * Set cookie parameters to the request builder, including default cookies. + * + * @param cookieParams Cookie parameters in the form of Map + * @param reqBuilder Request.Builder + */ + public void processCookieParams(Map cookieParams, Request.Builder reqBuilder) { + for (Entry param : cookieParams.entrySet()) { + reqBuilder.addHeader("Cookie", String.format("%s=%s", param.getKey(), param.getValue())); + } + for (Entry param : defaultCookieMap.entrySet()) { + if (!cookieParams.containsKey(param.getKey())) { + reqBuilder.addHeader("Cookie", String.format("%s=%s", param.getKey(), param.getValue())); + } + } + } + + /** + * Update query and header parameters based on authentication settings. + * + * @param authNames The authentications to apply + * @param queryParams List of query parameters + * @param headerParams Map of header parameters + * @param cookieParams Map of cookie parameters + */ + public void updateParamsForAuth(String[] authNames, List queryParams, Map headerParams, Map cookieParams) { + for (String authName : authNames) { + Authentication auth = authentications.get(authName); + if (auth == null) { + throw new RuntimeException("Authentication undefined: " + authName); + } + auth.applyToParams(queryParams, headerParams, cookieParams); + } + } + + /** + * Build a form-encoding request body with the given form parameters. + * + * @param formParams Form parameters in the form of Map + * @return RequestBody + */ + public RequestBody buildRequestBodyFormEncoding(Map formParams) { + okhttp3.FormBody.Builder formBuilder = new okhttp3.FormBody.Builder(); + for (Entry param : formParams.entrySet()) { + formBuilder.add(param.getKey(), parameterToString(param.getValue())); + } + return formBuilder.build(); + } + + /** + * Build a multipart (file uploading) request body with the given form parameters, + * which could contain text fields and file fields. + * + * @param formParams Form parameters in the form of Map + * @return RequestBody + */ + public RequestBody buildRequestBodyMultipart(Map formParams) { + MultipartBody.Builder mpBuilder = new MultipartBody.Builder().setType(MultipartBody.FORM); + for (Entry param : formParams.entrySet()) { + if (param.getValue() instanceof File) { + File file = (File) param.getValue(); + Headers partHeaders = Headers.of("Content-Disposition", "form-data; name=\"" + param.getKey() + "\"; filename=\"" + file.getName() + "\""); + MediaType mediaType = MediaType.parse(guessContentTypeFromFile(file)); + mpBuilder.addPart(partHeaders, RequestBody.create(mediaType, file)); + } else { + Headers partHeaders = Headers.of("Content-Disposition", "form-data; name=\"" + param.getKey() + "\""); + mpBuilder.addPart(partHeaders, RequestBody.create(null, parameterToString(param.getValue()))); + } + } + return mpBuilder.build(); + } + + /** + * Guess Content-Type header from the given file (defaults to "application/octet-stream"). + * + * @param file The given file + * @return The guessed Content-Type + */ + public String guessContentTypeFromFile(File file) { + String contentType = URLConnection.guessContentTypeFromName(file.getName()); + if (contentType == null) { + return "application/octet-stream"; + } else { + return contentType; + } + } + + /** + * Get network interceptor to add it to the httpClient to track download progress for + * async requests. + */ + private Interceptor getProgressInterceptor() { + return new Interceptor() { + @Override + public Response intercept(Interceptor.Chain chain) throws IOException { + final Request request = chain.request(); + final Response originalResponse = chain.proceed(request); + if (request.tag() instanceof ApiCallback) { + final ApiCallback callback = (ApiCallback) request.tag(); + return originalResponse.newBuilder() + .body(new ProgressResponseBody(originalResponse.body(), callback)) + .build(); + } + return originalResponse; + } + }; + } + + /** + * Apply SSL related settings to httpClient according to the current values of + * verifyingSsl and sslCaCert. + */ + private void applySslSettings() { + try { + TrustManager[] trustManagers; + HostnameVerifier hostnameVerifier; + if (!verifyingSsl) { + trustManagers = new TrustManager[]{ + new X509TrustManager() { + @Override + public void checkClientTrusted(java.security.cert.X509Certificate[] chain, String authType) throws CertificateException { + } + + @Override + public void checkServerTrusted(java.security.cert.X509Certificate[] chain, String authType) throws CertificateException { + } + + @Override + public java.security.cert.X509Certificate[] getAcceptedIssuers() { + return new java.security.cert.X509Certificate[]{}; + } + } + }; + hostnameVerifier = new HostnameVerifier() { + @Override + public boolean verify(String hostname, SSLSession session) { + return true; + } + }; + } else { + TrustManagerFactory trustManagerFactory = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm()); + + if (sslCaCert == null) { + trustManagerFactory.init((KeyStore) null); + } else { + char[] password = null; // Any password will work. + CertificateFactory certificateFactory = CertificateFactory.getInstance("X.509"); + Collection certificates = certificateFactory.generateCertificates(sslCaCert); + if (certificates.isEmpty()) { + throw new IllegalArgumentException("expected non-empty set of trusted certificates"); + } + KeyStore caKeyStore = newEmptyKeyStore(password); + int index = 0; + for (Certificate certificate : certificates) { + String certificateAlias = "ca" + Integer.toString(index++); + caKeyStore.setCertificateEntry(certificateAlias, certificate); + } + trustManagerFactory.init(caKeyStore); + } + trustManagers = trustManagerFactory.getTrustManagers(); + hostnameVerifier = OkHostnameVerifier.INSTANCE; + } + + SSLContext sslContext = SSLContext.getInstance("TLS"); + sslContext.init(keyManagers, trustManagers, new SecureRandom()); + httpClient = httpClient.newBuilder() + .sslSocketFactory(sslContext.getSocketFactory(), (X509TrustManager) trustManagers[0]) + .hostnameVerifier(hostnameVerifier) + .build(); + } catch (GeneralSecurityException e) { + throw new RuntimeException(e); + } + } + + private KeyStore newEmptyKeyStore(char[] password) throws GeneralSecurityException { + try { + KeyStore keyStore = KeyStore.getInstance(KeyStore.getDefaultType()); + keyStore.load(null, password); + return keyStore; + } catch (IOException e) { + throw new AssertionError(e); + } + } +} diff --git a/src/main/java/io/argoproj/workflow/ApiException.java b/src/main/java/io/argoproj/workflow/ApiException.java new file mode 100644 index 00000000..33ceb4c3 --- /dev/null +++ b/src/main/java/io/argoproj/workflow/ApiException.java @@ -0,0 +1,91 @@ +/* + * Argo + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: v2.4.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package io.argoproj.workflow; + +import java.util.Map; +import java.util.List; + + +public class ApiException extends Exception { + private int code = 0; + private Map> responseHeaders = null; + private String responseBody = null; + + public ApiException() {} + + public ApiException(Throwable throwable) { + super(throwable); + } + + public ApiException(String message) { + super(message); + } + + public ApiException(String message, Throwable throwable, int code, Map> responseHeaders, String responseBody) { + super(message, throwable); + this.code = code; + this.responseHeaders = responseHeaders; + this.responseBody = responseBody; + } + + public ApiException(String message, int code, Map> responseHeaders, String responseBody) { + this(message, (Throwable) null, code, responseHeaders, responseBody); + } + + public ApiException(String message, Throwable throwable, int code, Map> responseHeaders) { + this(message, throwable, code, responseHeaders, null); + } + + public ApiException(int code, Map> responseHeaders, String responseBody) { + this((String) null, (Throwable) null, code, responseHeaders, responseBody); + } + + public ApiException(int code, String message) { + super(message); + this.code = code; + } + + public ApiException(int code, String message, Map> responseHeaders, String responseBody) { + this(code, message); + this.responseHeaders = responseHeaders; + this.responseBody = responseBody; + } + + /** + * Get the HTTP status code. + * + * @return HTTP status code + */ + public int getCode() { + return code; + } + + /** + * Get the HTTP response headers. + * + * @return A map of list of string + */ + public Map> getResponseHeaders() { + return responseHeaders; + } + + /** + * Get the HTTP response body. + * + * @return Response body in the form of string + */ + public String getResponseBody() { + return responseBody; + } +} diff --git a/src/main/java/io/argoproj/workflow/ApiResponse.java b/src/main/java/io/argoproj/workflow/ApiResponse.java new file mode 100644 index 00000000..888e140c --- /dev/null +++ b/src/main/java/io/argoproj/workflow/ApiResponse.java @@ -0,0 +1,59 @@ +/* + * Argo + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: v2.4.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package io.argoproj.workflow; + +import java.util.List; +import java.util.Map; + +/** + * API response returned by API call. + * + * @param The type of data that is deserialized from response body + */ +public class ApiResponse { + final private int statusCode; + final private Map> headers; + final private T data; + + /** + * @param statusCode The status code of HTTP response + * @param headers The headers of HTTP response + */ + public ApiResponse(int statusCode, Map> headers) { + this(statusCode, headers, null); + } + + /** + * @param statusCode The status code of HTTP response + * @param headers The headers of HTTP response + * @param data The object deserialized from response bod + */ + public ApiResponse(int statusCode, Map> headers, T data) { + this.statusCode = statusCode; + this.headers = headers; + this.data = data; + } + + public int getStatusCode() { + return statusCode; + } + + public Map> getHeaders() { + return headers; + } + + public T getData() { + return data; + } +} diff --git a/src/main/java/io/argoproj/workflow/Configuration.java b/src/main/java/io/argoproj/workflow/Configuration.java new file mode 100644 index 00000000..c8a768ea --- /dev/null +++ b/src/main/java/io/argoproj/workflow/Configuration.java @@ -0,0 +1,39 @@ +/* + * Argo + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: v2.4.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package io.argoproj.workflow; + + +public class Configuration { + private static ApiClient defaultApiClient = new ApiClient(); + + /** + * Get the default API client, which would be used when creating API + * instances without providing an API client. + * + * @return Default API client + */ + public static ApiClient getDefaultApiClient() { + return defaultApiClient; + } + + /** + * Set the default API client, which would be used when creating API + * instances without providing an API client. + * + * @param apiClient API client + */ + public static void setDefaultApiClient(ApiClient apiClient) { + defaultApiClient = apiClient; + } +} diff --git a/src/main/java/io/argoproj/workflow/GzipRequestInterceptor.java b/src/main/java/io/argoproj/workflow/GzipRequestInterceptor.java new file mode 100644 index 00000000..8ed2dae3 --- /dev/null +++ b/src/main/java/io/argoproj/workflow/GzipRequestInterceptor.java @@ -0,0 +1,85 @@ +/* + * Argo + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: v2.4.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package io.argoproj.workflow; + +import okhttp3.*; +import okio.Buffer; +import okio.BufferedSink; +import okio.GzipSink; +import okio.Okio; + +import java.io.IOException; + +/** + * Encodes request bodies using gzip. + * + * Taken from https://github.com/square/okhttp/issues/350 + */ +class GzipRequestInterceptor implements Interceptor { + @Override + public Response intercept(Chain chain) throws IOException { + Request originalRequest = chain.request(); + if (originalRequest.body() == null || originalRequest.header("Content-Encoding") != null) { + return chain.proceed(originalRequest); + } + + Request compressedRequest = originalRequest.newBuilder() + .header("Content-Encoding", "gzip") + .method(originalRequest.method(), forceContentLength(gzip(originalRequest.body()))) + .build(); + return chain.proceed(compressedRequest); + } + + private RequestBody forceContentLength(final RequestBody requestBody) throws IOException { + final Buffer buffer = new Buffer(); + requestBody.writeTo(buffer); + return new RequestBody() { + @Override + public MediaType contentType() { + return requestBody.contentType(); + } + + @Override + public long contentLength() { + return buffer.size(); + } + + @Override + public void writeTo(BufferedSink sink) throws IOException { + sink.write(buffer.snapshot()); + } + }; + } + + private RequestBody gzip(final RequestBody body) { + return new RequestBody() { + @Override + public MediaType contentType() { + return body.contentType(); + } + + @Override + public long contentLength() { + return -1; // We don't know the compressed length in advance! + } + + @Override + public void writeTo(BufferedSink sink) throws IOException { + BufferedSink gzipSink = Okio.buffer(new GzipSink(sink)); + body.writeTo(gzipSink); + gzipSink.close(); + } + }; + } +} diff --git a/src/main/java/io/argoproj/workflow/JSON.java b/src/main/java/io/argoproj/workflow/JSON.java new file mode 100644 index 00000000..b2ec799d --- /dev/null +++ b/src/main/java/io/argoproj/workflow/JSON.java @@ -0,0 +1,396 @@ +/* + * Argo + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: v2.4.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package io.argoproj.workflow; + +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; +import com.google.gson.JsonParseException; +import com.google.gson.TypeAdapter; +import com.google.gson.internal.bind.util.ISO8601Utils; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import com.google.gson.JsonElement; +import io.gsonfire.GsonFireBuilder; +import io.gsonfire.TypeSelector; +import org.joda.time.DateTime; +import org.joda.time.LocalDate; +import org.joda.time.format.DateTimeFormatter; +import org.joda.time.format.DateTimeFormatterBuilder; +import org.joda.time.format.ISODateTimeFormat; + +import io.argoproj.workflow.models.*; +import okio.ByteString; + +import java.io.IOException; +import java.io.StringReader; +import java.lang.reflect.Type; +import java.text.DateFormat; +import java.text.ParseException; +import java.text.ParsePosition; +import java.util.Date; +import java.util.Locale; +import java.util.Map; +import java.util.HashMap; + +public class JSON { + private Gson gson; + private boolean isLenientOnJson = false; + private DateTypeAdapter dateTypeAdapter = new DateTypeAdapter(); + private SqlDateTypeAdapter sqlDateTypeAdapter = new SqlDateTypeAdapter(); + private DateTimeTypeAdapter dateTimeTypeAdapter = new DateTimeTypeAdapter(); + private LocalDateTypeAdapter localDateTypeAdapter = new LocalDateTypeAdapter(); + private ByteArrayAdapter byteArrayAdapter = new ByteArrayAdapter(); + + public static GsonBuilder createGson() { + GsonFireBuilder fireBuilder = new GsonFireBuilder() + ; + GsonBuilder builder = fireBuilder.createGsonBuilder(); + return builder; + } + + private static String getDiscriminatorValue(JsonElement readElement, String discriminatorField) { + JsonElement element = readElement.getAsJsonObject().get(discriminatorField); + if (null == element) { + throw new IllegalArgumentException("missing discriminator field: <" + discriminatorField + ">"); + } + return element.getAsString(); + } + + private static Class getClassByDiscriminator(Map classByDiscriminatorValue, String discriminatorValue) { + Class clazz = (Class) classByDiscriminatorValue.get(discriminatorValue.toUpperCase(Locale.ROOT)); + if (null == clazz) { + throw new IllegalArgumentException("cannot determine model class of name: <" + discriminatorValue + ">"); + } + return clazz; + } + + public JSON() { + gson = createGson() + .registerTypeAdapter(Date.class, dateTypeAdapter) + .registerTypeAdapter(java.sql.Date.class, sqlDateTypeAdapter) + .registerTypeAdapter(DateTime.class, dateTimeTypeAdapter) + .registerTypeAdapter(LocalDate.class, localDateTypeAdapter) + .registerTypeAdapter(byte[].class, byteArrayAdapter) + .create(); + } + + /** + * Get Gson. + * + * @return Gson + */ + public Gson getGson() { + return gson; + } + + /** + * Set Gson. + * + * @param gson Gson + * @return JSON + */ + public JSON setGson(Gson gson) { + this.gson = gson; + return this; + } + + public JSON setLenientOnJson(boolean lenientOnJson) { + isLenientOnJson = lenientOnJson; + return this; + } + + /** + * Serialize the given Java object into JSON string. + * + * @param obj Object + * @return String representation of the JSON + */ + public String serialize(Object obj) { + return gson.toJson(obj); + } + + /** + * Deserialize the given JSON string to Java object. + * + * @param Type + * @param body The JSON string + * @param returnType The type to deserialize into + * @return The deserialized Java object + */ + @SuppressWarnings("unchecked") + public T deserialize(String body, Type returnType) { + try { + if (isLenientOnJson) { + JsonReader jsonReader = new JsonReader(new StringReader(body)); + // see https://google-gson.googlecode.com/svn/trunk/gson/docs/javadocs/com/google/gson/stream/JsonReader.html#setLenient(boolean) + jsonReader.setLenient(true); + return gson.fromJson(jsonReader, returnType); + } else { + return gson.fromJson(body, returnType); + } + } catch (JsonParseException e) { + // Fallback processing when failed to parse JSON form response body: + // return the response body string directly for the String return type; + if (returnType.equals(String.class)) { + return (T) body; + } else { + throw (e); + } + } + } + + /** + * Gson TypeAdapter for Byte Array type + */ + public class ByteArrayAdapter extends TypeAdapter { + + @Override + public void write(JsonWriter out, byte[] value) throws IOException { + if (value == null) { + out.nullValue(); + } else { + out.value(ByteString.of(value).base64()); + } + } + + @Override + public byte[] read(JsonReader in) throws IOException { + switch (in.peek()) { + case NULL: + in.nextNull(); + return null; + default: + String bytesAsBase64 = in.nextString(); + ByteString byteString = ByteString.decodeBase64(bytesAsBase64); + return byteString.toByteArray(); + } + } + } + + /** + * Gson TypeAdapter for Joda DateTime type + */ + public static class DateTimeTypeAdapter extends TypeAdapter { + + private DateTimeFormatter formatter; + + public DateTimeTypeAdapter() { + this(new DateTimeFormatterBuilder() + .append(ISODateTimeFormat.dateTime().getPrinter(), ISODateTimeFormat.dateOptionalTimeParser().getParser()) + .toFormatter()); + } + + public DateTimeTypeAdapter(DateTimeFormatter formatter) { + this.formatter = formatter; + } + + public void setFormat(DateTimeFormatter dateFormat) { + this.formatter = dateFormat; + } + + @Override + public void write(JsonWriter out, DateTime date) throws IOException { + if (date == null) { + out.nullValue(); + } else { + out.value(formatter.print(date)); + } + } + + @Override + public DateTime read(JsonReader in) throws IOException { + switch (in.peek()) { + case NULL: + in.nextNull(); + return null; + default: + String date = in.nextString(); + return formatter.parseDateTime(date); + } + } + } + + /** + * Gson TypeAdapter for Joda LocalDate type + */ + public class LocalDateTypeAdapter extends TypeAdapter { + + private DateTimeFormatter formatter; + + public LocalDateTypeAdapter() { + this(ISODateTimeFormat.date()); + } + + public LocalDateTypeAdapter(DateTimeFormatter formatter) { + this.formatter = formatter; + } + + public void setFormat(DateTimeFormatter dateFormat) { + this.formatter = dateFormat; + } + + @Override + public void write(JsonWriter out, LocalDate date) throws IOException { + if (date == null) { + out.nullValue(); + } else { + out.value(formatter.print(date)); + } + } + + @Override + public LocalDate read(JsonReader in) throws IOException { + switch (in.peek()) { + case NULL: + in.nextNull(); + return null; + default: + String date = in.nextString(); + return formatter.parseLocalDate(date); + } + } + } + + public JSON setDateTimeFormat(DateTimeFormatter dateFormat) { + dateTimeTypeAdapter.setFormat(dateFormat); + return this; + } + + public JSON setLocalDateFormat(DateTimeFormatter dateFormat) { + localDateTypeAdapter.setFormat(dateFormat); + return this; + } + + /** + * Gson TypeAdapter for java.sql.Date type + * If the dateFormat is null, a simple "yyyy-MM-dd" format will be used + * (more efficient than SimpleDateFormat). + */ + public static class SqlDateTypeAdapter extends TypeAdapter { + + private DateFormat dateFormat; + + public SqlDateTypeAdapter() {} + + public SqlDateTypeAdapter(DateFormat dateFormat) { + this.dateFormat = dateFormat; + } + + public void setFormat(DateFormat dateFormat) { + this.dateFormat = dateFormat; + } + + @Override + public void write(JsonWriter out, java.sql.Date date) throws IOException { + if (date == null) { + out.nullValue(); + } else { + String value; + if (dateFormat != null) { + value = dateFormat.format(date); + } else { + value = date.toString(); + } + out.value(value); + } + } + + @Override + public java.sql.Date read(JsonReader in) throws IOException { + switch (in.peek()) { + case NULL: + in.nextNull(); + return null; + default: + String date = in.nextString(); + try { + if (dateFormat != null) { + return new java.sql.Date(dateFormat.parse(date).getTime()); + } + return new java.sql.Date(ISO8601Utils.parse(date, new ParsePosition(0)).getTime()); + } catch (ParseException e) { + throw new JsonParseException(e); + } + } + } + } + + /** + * Gson TypeAdapter for java.util.Date type + * If the dateFormat is null, ISO8601Utils will be used. + */ + public static class DateTypeAdapter extends TypeAdapter { + + private DateFormat dateFormat; + + public DateTypeAdapter() {} + + public DateTypeAdapter(DateFormat dateFormat) { + this.dateFormat = dateFormat; + } + + public void setFormat(DateFormat dateFormat) { + this.dateFormat = dateFormat; + } + + @Override + public void write(JsonWriter out, Date date) throws IOException { + if (date == null) { + out.nullValue(); + } else { + String value; + if (dateFormat != null) { + value = dateFormat.format(date); + } else { + value = ISO8601Utils.format(date, true); + } + out.value(value); + } + } + + @Override + public Date read(JsonReader in) throws IOException { + try { + switch (in.peek()) { + case NULL: + in.nextNull(); + return null; + default: + String date = in.nextString(); + try { + if (dateFormat != null) { + return dateFormat.parse(date); + } + return ISO8601Utils.parse(date, new ParsePosition(0)); + } catch (ParseException e) { + throw new JsonParseException(e); + } + } + } catch (IllegalArgumentException e) { + throw new JsonParseException(e); + } + } + } + + public JSON setDateFormat(DateFormat dateFormat) { + dateTypeAdapter.setFormat(dateFormat); + return this; + } + + public JSON setSqlDateFormat(DateFormat dateFormat) { + sqlDateTypeAdapter.setFormat(dateFormat); + return this; + } + +} diff --git a/src/main/java/io/argoproj/workflow/Pair.java b/src/main/java/io/argoproj/workflow/Pair.java new file mode 100644 index 00000000..758ea781 --- /dev/null +++ b/src/main/java/io/argoproj/workflow/Pair.java @@ -0,0 +1,61 @@ +/* + * Argo + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: v2.4.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package io.argoproj.workflow; + + +public class Pair { + private String name = ""; + private String value = ""; + + public Pair (String name, String value) { + setName(name); + setValue(value); + } + + private void setName(String name) { + if (!isValidString(name)) { + return; + } + + this.name = name; + } + + private void setValue(String value) { + if (!isValidString(value)) { + return; + } + + this.value = value; + } + + public String getName() { + return this.name; + } + + public String getValue() { + return this.value; + } + + private boolean isValidString(String arg) { + if (arg == null) { + return false; + } + + if (arg.trim().isEmpty()) { + return false; + } + + return true; + } +} diff --git a/src/main/java/io/argoproj/workflow/ProgressRequestBody.java b/src/main/java/io/argoproj/workflow/ProgressRequestBody.java new file mode 100644 index 00000000..b7c7f4a8 --- /dev/null +++ b/src/main/java/io/argoproj/workflow/ProgressRequestBody.java @@ -0,0 +1,73 @@ +/* + * Argo + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: v2.4.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package io.argoproj.workflow; + +import okhttp3.MediaType; +import okhttp3.RequestBody; + +import java.io.IOException; + +import okio.Buffer; +import okio.BufferedSink; +import okio.ForwardingSink; +import okio.Okio; +import okio.Sink; + +public class ProgressRequestBody extends RequestBody { + + private final RequestBody requestBody; + + private final ApiCallback callback; + + public ProgressRequestBody(RequestBody requestBody, ApiCallback callback) { + this.requestBody = requestBody; + this.callback = callback; + } + + @Override + public MediaType contentType() { + return requestBody.contentType(); + } + + @Override + public long contentLength() throws IOException { + return requestBody.contentLength(); + } + + @Override + public void writeTo(BufferedSink sink) throws IOException { + BufferedSink bufferedSink = Okio.buffer(sink(sink)); + requestBody.writeTo(bufferedSink); + bufferedSink.flush(); + } + + private Sink sink(Sink sink) { + return new ForwardingSink(sink) { + + long bytesWritten = 0L; + long contentLength = 0L; + + @Override + public void write(Buffer source, long byteCount) throws IOException { + super.write(source, byteCount); + if (contentLength == 0) { + contentLength = contentLength(); + } + + bytesWritten += byteCount; + callback.onUploadProgress(bytesWritten, contentLength, bytesWritten == contentLength); + } + }; + } +} diff --git a/src/main/java/io/argoproj/workflow/ProgressResponseBody.java b/src/main/java/io/argoproj/workflow/ProgressResponseBody.java new file mode 100644 index 00000000..2740afb5 --- /dev/null +++ b/src/main/java/io/argoproj/workflow/ProgressResponseBody.java @@ -0,0 +1,72 @@ +/* + * Argo + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: v2.4.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package io.argoproj.workflow; + +import okhttp3.MediaType; +import okhttp3.ResponseBody; + +import java.io.IOException; + +import okio.Buffer; +import okio.BufferedSource; +import okio.ForwardingSource; +import okio.Okio; +import okio.Source; + +public class ProgressResponseBody extends ResponseBody { + + private final ResponseBody responseBody; + private final ApiCallback callback; + private BufferedSource bufferedSource; + + public ProgressResponseBody(ResponseBody responseBody, ApiCallback callback) { + this.responseBody = responseBody; + this.callback = callback; + } + + @Override + public MediaType contentType() { + return responseBody.contentType(); + } + + @Override + public long contentLength() { + return responseBody.contentLength(); + } + + @Override + public BufferedSource source() { + if (bufferedSource == null) { + bufferedSource = Okio.buffer(source(responseBody.source())); + } + return bufferedSource; + } + + private Source source(Source source) { + return new ForwardingSource(source) { + long totalBytesRead = 0L; + + @Override + public long read(Buffer sink, long byteCount) throws IOException { + long bytesRead = super.read(sink, byteCount); + // read() returns the number of bytes read, or -1 if this source is exhausted. + totalBytesRead += bytesRead != -1 ? bytesRead : 0; + callback.onDownloadProgress(totalBytesRead, responseBody.contentLength(), bytesRead == -1); + return bytesRead; + } + }; + } +} + + diff --git a/src/main/java/io/argoproj/workflow/StringUtil.java b/src/main/java/io/argoproj/workflow/StringUtil.java new file mode 100644 index 00000000..fdb055eb --- /dev/null +++ b/src/main/java/io/argoproj/workflow/StringUtil.java @@ -0,0 +1,61 @@ +/* + * Argo + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: v2.4.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package io.argoproj.workflow; + + +public class StringUtil { + /** + * Check if the given array contains the given value (with case-insensitive comparison). + * + * @param array The array + * @param value The value to search + * @return true if the array contains the value + */ + public static boolean containsIgnoreCase(String[] array, String value) { + for (String str : array) { + if (value == null && str == null) { + return true; + } + if (value != null && value.equalsIgnoreCase(str)) { + return true; + } + } + return false; + } + + /** + * Join an array of strings with the given separator. + *

+ * Note: This might be replaced by utility method from commons-lang or guava someday + * if one of those libraries is added as dependency. + *

+ * + * @param array The array of strings + * @param separator The separator + * @return the resulting string + */ + public static String join(String[] array, String separator) { + int len = array.length; + if (len == 0) { + return ""; + } + + StringBuilder out = new StringBuilder(); + out.append(array[0]); + for (int i = 1; i < len; i++) { + out.append(separator).append(array[i]); + } + return out.toString(); + } +} diff --git a/src/main/java/io/argoproj/workflow/auth/ApiKeyAuth.java b/src/main/java/io/argoproj/workflow/auth/ApiKeyAuth.java new file mode 100644 index 00000000..cd67f37f --- /dev/null +++ b/src/main/java/io/argoproj/workflow/auth/ApiKeyAuth.java @@ -0,0 +1,77 @@ +/* + * Argo + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: v2.4.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package io.argoproj.workflow.auth; + +import io.argoproj.workflow.Pair; + +import java.util.Map; +import java.util.List; + + +public class ApiKeyAuth implements Authentication { + private final String location; + private final String paramName; + + private String apiKey; + private String apiKeyPrefix; + + public ApiKeyAuth(String location, String paramName) { + this.location = location; + this.paramName = paramName; + } + + public String getLocation() { + return location; + } + + public String getParamName() { + return paramName; + } + + public String getApiKey() { + return apiKey; + } + + public void setApiKey(String apiKey) { + this.apiKey = apiKey; + } + + public String getApiKeyPrefix() { + return apiKeyPrefix; + } + + public void setApiKeyPrefix(String apiKeyPrefix) { + this.apiKeyPrefix = apiKeyPrefix; + } + + @Override + public void applyToParams(List queryParams, Map headerParams, Map cookieParams) { + if (apiKey == null) { + return; + } + String value; + if (apiKeyPrefix != null) { + value = apiKeyPrefix + " " + apiKey; + } else { + value = apiKey; + } + if ("query".equals(location)) { + queryParams.add(new Pair(paramName, value)); + } else if ("header".equals(location)) { + headerParams.put(paramName, value); + } else if ("cookie".equals(location)) { + cookieParams.put(paramName, value); + } + } +} diff --git a/src/main/java/io/argoproj/workflow/auth/Authentication.java b/src/main/java/io/argoproj/workflow/auth/Authentication.java new file mode 100644 index 00000000..6cb1afbe --- /dev/null +++ b/src/main/java/io/argoproj/workflow/auth/Authentication.java @@ -0,0 +1,30 @@ +/* + * Argo + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: v2.4.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package io.argoproj.workflow.auth; + +import io.argoproj.workflow.Pair; + +import java.util.Map; +import java.util.List; + +public interface Authentication { + /** + * Apply authentication settings to header and query params. + * + * @param queryParams List of query parameters + * @param headerParams Map of header parameters + * @param cookieParams Map of cookie parameters + */ + void applyToParams(List queryParams, Map headerParams, Map cookieParams); +} diff --git a/src/main/java/io/argoproj/workflow/auth/HttpBasicAuth.java b/src/main/java/io/argoproj/workflow/auth/HttpBasicAuth.java new file mode 100644 index 00000000..473805e8 --- /dev/null +++ b/src/main/java/io/argoproj/workflow/auth/HttpBasicAuth.java @@ -0,0 +1,54 @@ +/* + * Argo + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: v2.4.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package io.argoproj.workflow.auth; + +import io.argoproj.workflow.Pair; + +import okhttp3.Credentials; + +import java.util.Map; +import java.util.List; + +import java.io.UnsupportedEncodingException; + +public class HttpBasicAuth implements Authentication { + private String username; + private String password; + + public String getUsername() { + return username; + } + + public void setUsername(String username) { + this.username = username; + } + + public String getPassword() { + return password; + } + + public void setPassword(String password) { + this.password = password; + } + + @Override + public void applyToParams(List queryParams, Map headerParams, Map cookieParams) { + if (username == null && password == null) { + return; + } + headerParams.put("Authorization", Credentials.basic( + username == null ? "" : username, + password == null ? "" : password)); + } +} diff --git a/src/main/java/io/argoproj/workflow/auth/HttpBearerAuth.java b/src/main/java/io/argoproj/workflow/auth/HttpBearerAuth.java new file mode 100644 index 00000000..4557ff8f --- /dev/null +++ b/src/main/java/io/argoproj/workflow/auth/HttpBearerAuth.java @@ -0,0 +1,60 @@ +/* + * Argo + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: v2.4.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package io.argoproj.workflow.auth; + +import io.argoproj.workflow.Pair; + +import java.util.Map; +import java.util.List; + + +public class HttpBearerAuth implements Authentication { + private final String scheme; + private String bearerToken; + + public HttpBearerAuth(String scheme) { + this.scheme = scheme; + } + + /** + * Gets the token, which together with the scheme, will be sent as the value of the Authorization header. + * + * @return The bearer token + */ + public String getBearerToken() { + return bearerToken; + } + + /** + * Sets the token, which together with the scheme, will be sent as the value of the Authorization header. + * + * @param bearerToken The bearer token to send in the Authorization header + */ + public void setBearerToken(String bearerToken) { + this.bearerToken = bearerToken; + } + + @Override + public void applyToParams(List queryParams, Map headerParams, Map cookieParams) { + if(bearerToken == null) { + return; + } + + headerParams.put("Authorization", (scheme != null ? upperCaseBearer(scheme) + " " : "") + bearerToken); + } + + private static String upperCaseBearer(String scheme) { + return ("bearer".equalsIgnoreCase(scheme)) ? "Bearer" : scheme; + } +} diff --git a/src/main/java/io/argoproj/workflow/models/ArchiveStrategy.java b/src/main/java/io/argoproj/workflow/models/ArchiveStrategy.java new file mode 100644 index 00000000..4c7dcc1c --- /dev/null +++ b/src/main/java/io/argoproj/workflow/models/ArchiveStrategy.java @@ -0,0 +1,129 @@ +/* + * Argo + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: v2.4.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package io.argoproj.workflow.models; + +import java.util.Objects; +import java.util.Arrays; +import com.google.gson.TypeAdapter; +import com.google.gson.annotations.JsonAdapter; +import com.google.gson.annotations.SerializedName; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import java.io.IOException; + +/** + * ArchiveStrategy describes how to archive files/directory when saving artifacts + */ +@ApiModel(description = "ArchiveStrategy describes how to archive files/directory when saving artifacts") + +public class ArchiveStrategy { + public static final String SERIALIZED_NAME_NONE = "none"; + @SerializedName(SERIALIZED_NAME_NONE) + private Object none; + + public static final String SERIALIZED_NAME_TAR = "tar"; + @SerializedName(SERIALIZED_NAME_TAR) + private Object tar; + + + public ArchiveStrategy none(Object none) { + + this.none = none; + return this; + } + + /** + * NoneStrategy indicates to skip tar process and upload the files or directory tree as independent files. Note that if the artifact is a directory, the artifact driver must support the ability to save/load the directory appropriately. + * @return none + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "NoneStrategy indicates to skip tar process and upload the files or directory tree as independent files. Note that if the artifact is a directory, the artifact driver must support the ability to save/load the directory appropriately.") + + public Object getNone() { + return none; + } + + + public void setNone(Object none) { + this.none = none; + } + + + public ArchiveStrategy tar(Object tar) { + + this.tar = tar; + return this; + } + + /** + * TarStrategy will tar and gzip the file or directory when saving + * @return tar + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "TarStrategy will tar and gzip the file or directory when saving") + + public Object getTar() { + return tar; + } + + + public void setTar(Object tar) { + this.tar = tar; + } + + + @Override + public boolean equals(java.lang.Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + ArchiveStrategy archiveStrategy = (ArchiveStrategy) o; + return Objects.equals(this.none, archiveStrategy.none) && + Objects.equals(this.tar, archiveStrategy.tar); + } + + @Override + public int hashCode() { + return Objects.hash(none, tar); + } + + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class ArchiveStrategy {\n"); + sb.append(" none: ").append(toIndentedString(none)).append("\n"); + sb.append(" tar: ").append(toIndentedString(tar)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces + * (except the first line). + */ + private String toIndentedString(java.lang.Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } + +} + diff --git a/src/main/java/io/argoproj/workflow/models/Arguments.java b/src/main/java/io/argoproj/workflow/models/Arguments.java new file mode 100644 index 00000000..a6353fa4 --- /dev/null +++ b/src/main/java/io/argoproj/workflow/models/Arguments.java @@ -0,0 +1,149 @@ +/* + * Argo + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: v2.4.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package io.argoproj.workflow.models; + +import java.util.Objects; +import java.util.Arrays; +import com.google.gson.TypeAdapter; +import com.google.gson.annotations.JsonAdapter; +import com.google.gson.annotations.SerializedName; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import io.argoproj.workflow.models.Artifact; +import io.argoproj.workflow.models.Parameter; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * Arguments to a template + */ +@ApiModel(description = "Arguments to a template") + +public class Arguments { + public static final String SERIALIZED_NAME_ARTIFACTS = "artifacts"; + @SerializedName(SERIALIZED_NAME_ARTIFACTS) + private List artifacts = null; + + public static final String SERIALIZED_NAME_PARAMETERS = "parameters"; + @SerializedName(SERIALIZED_NAME_PARAMETERS) + private List parameters = null; + + + public Arguments artifacts(List artifacts) { + + this.artifacts = artifacts; + return this; + } + + public Arguments addArtifactsItem(Artifact artifactsItem) { + if (this.artifacts == null) { + this.artifacts = new ArrayList(); + } + this.artifacts.add(artifactsItem); + return this; + } + + /** + * Artifacts is the list of artifacts to pass to the template or workflow + * @return artifacts + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "Artifacts is the list of artifacts to pass to the template or workflow") + + public List getArtifacts() { + return artifacts; + } + + + public void setArtifacts(List artifacts) { + this.artifacts = artifacts; + } + + + public Arguments parameters(List parameters) { + + this.parameters = parameters; + return this; + } + + public Arguments addParametersItem(Parameter parametersItem) { + if (this.parameters == null) { + this.parameters = new ArrayList(); + } + this.parameters.add(parametersItem); + return this; + } + + /** + * Parameters is the list of parameters to pass to the template or workflow + * @return parameters + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "Parameters is the list of parameters to pass to the template or workflow") + + public List getParameters() { + return parameters; + } + + + public void setParameters(List parameters) { + this.parameters = parameters; + } + + + @Override + public boolean equals(java.lang.Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + Arguments arguments = (Arguments) o; + return Objects.equals(this.artifacts, arguments.artifacts) && + Objects.equals(this.parameters, arguments.parameters); + } + + @Override + public int hashCode() { + return Objects.hash(artifacts, parameters); + } + + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class Arguments {\n"); + sb.append(" artifacts: ").append(toIndentedString(artifacts)).append("\n"); + sb.append(" parameters: ").append(toIndentedString(parameters)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces + * (except the first line). + */ + private String toIndentedString(java.lang.Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } + +} + diff --git a/src/main/java/io/argoproj/workflow/models/Artifact.java b/src/main/java/io/argoproj/workflow/models/Artifact.java new file mode 100644 index 00000000..96177beb --- /dev/null +++ b/src/main/java/io/argoproj/workflow/models/Artifact.java @@ -0,0 +1,483 @@ +/* + * Argo + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: v2.4.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package io.argoproj.workflow.models; + +import java.util.Objects; +import java.util.Arrays; +import com.google.gson.TypeAdapter; +import com.google.gson.annotations.JsonAdapter; +import com.google.gson.annotations.SerializedName; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import io.argoproj.workflow.models.ArchiveStrategy; +import io.argoproj.workflow.models.ArtifactoryArtifact; +import io.argoproj.workflow.models.GitArtifact; +import io.argoproj.workflow.models.HDFSArtifact; +import io.argoproj.workflow.models.HTTPArtifact; +import io.argoproj.workflow.models.RawArtifact; +import io.argoproj.workflow.models.S3Artifact; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import java.io.IOException; + +/** + * Artifact indicates an artifact to place at a specified path + */ +@ApiModel(description = "Artifact indicates an artifact to place at a specified path") + +public class Artifact { + public static final String SERIALIZED_NAME_ARCHIVE = "archive"; + @SerializedName(SERIALIZED_NAME_ARCHIVE) + private ArchiveStrategy archive; + + public static final String SERIALIZED_NAME_ARCHIVE_LOGS = "archiveLogs"; + @SerializedName(SERIALIZED_NAME_ARCHIVE_LOGS) + private Boolean archiveLogs; + + public static final String SERIALIZED_NAME_ARTIFACTORY = "artifactory"; + @SerializedName(SERIALIZED_NAME_ARTIFACTORY) + private ArtifactoryArtifact artifactory; + + public static final String SERIALIZED_NAME_FROM = "from"; + @SerializedName(SERIALIZED_NAME_FROM) + private String from; + + public static final String SERIALIZED_NAME_GIT = "git"; + @SerializedName(SERIALIZED_NAME_GIT) + private GitArtifact git; + + public static final String SERIALIZED_NAME_GLOBAL_NAME = "globalName"; + @SerializedName(SERIALIZED_NAME_GLOBAL_NAME) + private String globalName; + + public static final String SERIALIZED_NAME_HDFS = "hdfs"; + @SerializedName(SERIALIZED_NAME_HDFS) + private HDFSArtifact hdfs; + + public static final String SERIALIZED_NAME_HTTP = "http"; + @SerializedName(SERIALIZED_NAME_HTTP) + private HTTPArtifact http; + + public static final String SERIALIZED_NAME_MODE = "mode"; + @SerializedName(SERIALIZED_NAME_MODE) + private Integer mode; + + public static final String SERIALIZED_NAME_NAME = "name"; + @SerializedName(SERIALIZED_NAME_NAME) + private String name; + + public static final String SERIALIZED_NAME_OPTIONAL = "optional"; + @SerializedName(SERIALIZED_NAME_OPTIONAL) + private Boolean optional; + + public static final String SERIALIZED_NAME_PATH = "path"; + @SerializedName(SERIALIZED_NAME_PATH) + private String path; + + public static final String SERIALIZED_NAME_RAW = "raw"; + @SerializedName(SERIALIZED_NAME_RAW) + private RawArtifact raw; + + public static final String SERIALIZED_NAME_S3 = "s3"; + @SerializedName(SERIALIZED_NAME_S3) + private S3Artifact s3; + + + public Artifact archive(ArchiveStrategy archive) { + + this.archive = archive; + return this; + } + + /** + * Get archive + * @return archive + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "") + + public ArchiveStrategy getArchive() { + return archive; + } + + + public void setArchive(ArchiveStrategy archive) { + this.archive = archive; + } + + + public Artifact archiveLogs(Boolean archiveLogs) { + + this.archiveLogs = archiveLogs; + return this; + } + + /** + * ArchiveLogs indicates if the container logs should be archived + * @return archiveLogs + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "ArchiveLogs indicates if the container logs should be archived") + + public Boolean getArchiveLogs() { + return archiveLogs; + } + + + public void setArchiveLogs(Boolean archiveLogs) { + this.archiveLogs = archiveLogs; + } + + + public Artifact artifactory(ArtifactoryArtifact artifactory) { + + this.artifactory = artifactory; + return this; + } + + /** + * Get artifactory + * @return artifactory + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "") + + public ArtifactoryArtifact getArtifactory() { + return artifactory; + } + + + public void setArtifactory(ArtifactoryArtifact artifactory) { + this.artifactory = artifactory; + } + + + public Artifact from(String from) { + + this.from = from; + return this; + } + + /** + * From allows an artifact to reference an artifact from a previous step + * @return from + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "From allows an artifact to reference an artifact from a previous step") + + public String getFrom() { + return from; + } + + + public void setFrom(String from) { + this.from = from; + } + + + public Artifact git(GitArtifact git) { + + this.git = git; + return this; + } + + /** + * Get git + * @return git + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "") + + public GitArtifact getGit() { + return git; + } + + + public void setGit(GitArtifact git) { + this.git = git; + } + + + public Artifact globalName(String globalName) { + + this.globalName = globalName; + return this; + } + + /** + * GlobalName exports an output artifact to the global scope, making it available as '{{workflow.outputs.artifacts.XXXX}} and in workflow.status.outputs.artifacts + * @return globalName + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "GlobalName exports an output artifact to the global scope, making it available as '{{workflow.outputs.artifacts.XXXX}} and in workflow.status.outputs.artifacts") + + public String getGlobalName() { + return globalName; + } + + + public void setGlobalName(String globalName) { + this.globalName = globalName; + } + + + public Artifact hdfs(HDFSArtifact hdfs) { + + this.hdfs = hdfs; + return this; + } + + /** + * Get hdfs + * @return hdfs + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "") + + public HDFSArtifact getHdfs() { + return hdfs; + } + + + public void setHdfs(HDFSArtifact hdfs) { + this.hdfs = hdfs; + } + + + public Artifact http(HTTPArtifact http) { + + this.http = http; + return this; + } + + /** + * Get http + * @return http + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "") + + public HTTPArtifact getHttp() { + return http; + } + + + public void setHttp(HTTPArtifact http) { + this.http = http; + } + + + public Artifact mode(Integer mode) { + + this.mode = mode; + return this; + } + + /** + * mode bits to use on this file, must be a value between 0 and 0777 set when loading input artifacts. + * @return mode + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "mode bits to use on this file, must be a value between 0 and 0777 set when loading input artifacts.") + + public Integer getMode() { + return mode; + } + + + public void setMode(Integer mode) { + this.mode = mode; + } + + + public Artifact name(String name) { + + this.name = name; + return this; + } + + /** + * name of the artifact. must be unique within a template's inputs/outputs. + * @return name + **/ + @ApiModelProperty(required = true, value = "name of the artifact. must be unique within a template's inputs/outputs.") + + public String getName() { + return name; + } + + + public void setName(String name) { + this.name = name; + } + + + public Artifact optional(Boolean optional) { + + this.optional = optional; + return this; + } + + /** + * Make Artifacts optional, if Artifacts doesn't generate or exist + * @return optional + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "Make Artifacts optional, if Artifacts doesn't generate or exist") + + public Boolean getOptional() { + return optional; + } + + + public void setOptional(Boolean optional) { + this.optional = optional; + } + + + public Artifact path(String path) { + + this.path = path; + return this; + } + + /** + * Path is the container path to the artifact + * @return path + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "Path is the container path to the artifact") + + public String getPath() { + return path; + } + + + public void setPath(String path) { + this.path = path; + } + + + public Artifact raw(RawArtifact raw) { + + this.raw = raw; + return this; + } + + /** + * Get raw + * @return raw + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "") + + public RawArtifact getRaw() { + return raw; + } + + + public void setRaw(RawArtifact raw) { + this.raw = raw; + } + + + public Artifact s3(S3Artifact s3) { + + this.s3 = s3; + return this; + } + + /** + * Get s3 + * @return s3 + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "") + + public S3Artifact getS3() { + return s3; + } + + + public void setS3(S3Artifact s3) { + this.s3 = s3; + } + + + @Override + public boolean equals(java.lang.Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + Artifact artifact = (Artifact) o; + return Objects.equals(this.archive, artifact.archive) && + Objects.equals(this.archiveLogs, artifact.archiveLogs) && + Objects.equals(this.artifactory, artifact.artifactory) && + Objects.equals(this.from, artifact.from) && + Objects.equals(this.git, artifact.git) && + Objects.equals(this.globalName, artifact.globalName) && + Objects.equals(this.hdfs, artifact.hdfs) && + Objects.equals(this.http, artifact.http) && + Objects.equals(this.mode, artifact.mode) && + Objects.equals(this.name, artifact.name) && + Objects.equals(this.optional, artifact.optional) && + Objects.equals(this.path, artifact.path) && + Objects.equals(this.raw, artifact.raw) && + Objects.equals(this.s3, artifact.s3); + } + + @Override + public int hashCode() { + return Objects.hash(archive, archiveLogs, artifactory, from, git, globalName, hdfs, http, mode, name, optional, path, raw, s3); + } + + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class Artifact {\n"); + sb.append(" archive: ").append(toIndentedString(archive)).append("\n"); + sb.append(" archiveLogs: ").append(toIndentedString(archiveLogs)).append("\n"); + sb.append(" artifactory: ").append(toIndentedString(artifactory)).append("\n"); + sb.append(" from: ").append(toIndentedString(from)).append("\n"); + sb.append(" git: ").append(toIndentedString(git)).append("\n"); + sb.append(" globalName: ").append(toIndentedString(globalName)).append("\n"); + sb.append(" hdfs: ").append(toIndentedString(hdfs)).append("\n"); + sb.append(" http: ").append(toIndentedString(http)).append("\n"); + sb.append(" mode: ").append(toIndentedString(mode)).append("\n"); + sb.append(" name: ").append(toIndentedString(name)).append("\n"); + sb.append(" optional: ").append(toIndentedString(optional)).append("\n"); + sb.append(" path: ").append(toIndentedString(path)).append("\n"); + sb.append(" raw: ").append(toIndentedString(raw)).append("\n"); + sb.append(" s3: ").append(toIndentedString(s3)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces + * (except the first line). + */ + private String toIndentedString(java.lang.Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } + +} + diff --git a/src/main/java/io/argoproj/workflow/models/ArtifactLocation.java b/src/main/java/io/argoproj/workflow/models/ArtifactLocation.java new file mode 100644 index 00000000..508a6661 --- /dev/null +++ b/src/main/java/io/argoproj/workflow/models/ArtifactLocation.java @@ -0,0 +1,280 @@ +/* + * Argo + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: v2.4.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package io.argoproj.workflow.models; + +import java.util.Objects; +import java.util.Arrays; +import com.google.gson.TypeAdapter; +import com.google.gson.annotations.JsonAdapter; +import com.google.gson.annotations.SerializedName; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import io.argoproj.workflow.models.ArtifactoryArtifact; +import io.argoproj.workflow.models.GitArtifact; +import io.argoproj.workflow.models.HDFSArtifact; +import io.argoproj.workflow.models.HTTPArtifact; +import io.argoproj.workflow.models.RawArtifact; +import io.argoproj.workflow.models.S3Artifact; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import java.io.IOException; + +/** + * ArtifactLocation describes a location for a single or multiple artifacts. It is used as single artifact in the context of inputs/outputs (e.g. outputs.artifacts.artname). It is also used to describe the location of multiple artifacts such as the archive location of a single workflow step, which the executor will use as a default location to store its files. + */ +@ApiModel(description = "ArtifactLocation describes a location for a single or multiple artifacts. It is used as single artifact in the context of inputs/outputs (e.g. outputs.artifacts.artname). It is also used to describe the location of multiple artifacts such as the archive location of a single workflow step, which the executor will use as a default location to store its files.") + +public class ArtifactLocation { + public static final String SERIALIZED_NAME_ARCHIVE_LOGS = "archiveLogs"; + @SerializedName(SERIALIZED_NAME_ARCHIVE_LOGS) + private Boolean archiveLogs; + + public static final String SERIALIZED_NAME_ARTIFACTORY = "artifactory"; + @SerializedName(SERIALIZED_NAME_ARTIFACTORY) + private ArtifactoryArtifact artifactory; + + public static final String SERIALIZED_NAME_GIT = "git"; + @SerializedName(SERIALIZED_NAME_GIT) + private GitArtifact git; + + public static final String SERIALIZED_NAME_HDFS = "hdfs"; + @SerializedName(SERIALIZED_NAME_HDFS) + private HDFSArtifact hdfs; + + public static final String SERIALIZED_NAME_HTTP = "http"; + @SerializedName(SERIALIZED_NAME_HTTP) + private HTTPArtifact http; + + public static final String SERIALIZED_NAME_RAW = "raw"; + @SerializedName(SERIALIZED_NAME_RAW) + private RawArtifact raw; + + public static final String SERIALIZED_NAME_S3 = "s3"; + @SerializedName(SERIALIZED_NAME_S3) + private S3Artifact s3; + + + public ArtifactLocation archiveLogs(Boolean archiveLogs) { + + this.archiveLogs = archiveLogs; + return this; + } + + /** + * ArchiveLogs indicates if the container logs should be archived + * @return archiveLogs + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "ArchiveLogs indicates if the container logs should be archived") + + public Boolean getArchiveLogs() { + return archiveLogs; + } + + + public void setArchiveLogs(Boolean archiveLogs) { + this.archiveLogs = archiveLogs; + } + + + public ArtifactLocation artifactory(ArtifactoryArtifact artifactory) { + + this.artifactory = artifactory; + return this; + } + + /** + * Get artifactory + * @return artifactory + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "") + + public ArtifactoryArtifact getArtifactory() { + return artifactory; + } + + + public void setArtifactory(ArtifactoryArtifact artifactory) { + this.artifactory = artifactory; + } + + + public ArtifactLocation git(GitArtifact git) { + + this.git = git; + return this; + } + + /** + * Get git + * @return git + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "") + + public GitArtifact getGit() { + return git; + } + + + public void setGit(GitArtifact git) { + this.git = git; + } + + + public ArtifactLocation hdfs(HDFSArtifact hdfs) { + + this.hdfs = hdfs; + return this; + } + + /** + * Get hdfs + * @return hdfs + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "") + + public HDFSArtifact getHdfs() { + return hdfs; + } + + + public void setHdfs(HDFSArtifact hdfs) { + this.hdfs = hdfs; + } + + + public ArtifactLocation http(HTTPArtifact http) { + + this.http = http; + return this; + } + + /** + * Get http + * @return http + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "") + + public HTTPArtifact getHttp() { + return http; + } + + + public void setHttp(HTTPArtifact http) { + this.http = http; + } + + + public ArtifactLocation raw(RawArtifact raw) { + + this.raw = raw; + return this; + } + + /** + * Get raw + * @return raw + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "") + + public RawArtifact getRaw() { + return raw; + } + + + public void setRaw(RawArtifact raw) { + this.raw = raw; + } + + + public ArtifactLocation s3(S3Artifact s3) { + + this.s3 = s3; + return this; + } + + /** + * Get s3 + * @return s3 + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "") + + public S3Artifact getS3() { + return s3; + } + + + public void setS3(S3Artifact s3) { + this.s3 = s3; + } + + + @Override + public boolean equals(java.lang.Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + ArtifactLocation artifactLocation = (ArtifactLocation) o; + return Objects.equals(this.archiveLogs, artifactLocation.archiveLogs) && + Objects.equals(this.artifactory, artifactLocation.artifactory) && + Objects.equals(this.git, artifactLocation.git) && + Objects.equals(this.hdfs, artifactLocation.hdfs) && + Objects.equals(this.http, artifactLocation.http) && + Objects.equals(this.raw, artifactLocation.raw) && + Objects.equals(this.s3, artifactLocation.s3); + } + + @Override + public int hashCode() { + return Objects.hash(archiveLogs, artifactory, git, hdfs, http, raw, s3); + } + + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class ArtifactLocation {\n"); + sb.append(" archiveLogs: ").append(toIndentedString(archiveLogs)).append("\n"); + sb.append(" artifactory: ").append(toIndentedString(artifactory)).append("\n"); + sb.append(" git: ").append(toIndentedString(git)).append("\n"); + sb.append(" hdfs: ").append(toIndentedString(hdfs)).append("\n"); + sb.append(" http: ").append(toIndentedString(http)).append("\n"); + sb.append(" raw: ").append(toIndentedString(raw)).append("\n"); + sb.append(" s3: ").append(toIndentedString(s3)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces + * (except the first line). + */ + private String toIndentedString(java.lang.Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } + +} + diff --git a/src/main/java/io/argoproj/workflow/models/ArtifactRepositoryRef.java b/src/main/java/io/argoproj/workflow/models/ArtifactRepositoryRef.java new file mode 100644 index 00000000..35fbcf58 --- /dev/null +++ b/src/main/java/io/argoproj/workflow/models/ArtifactRepositoryRef.java @@ -0,0 +1,128 @@ +/* + * Argo + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: v2.4.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package io.argoproj.workflow.models; + +import java.util.Objects; +import java.util.Arrays; +import com.google.gson.TypeAdapter; +import com.google.gson.annotations.JsonAdapter; +import com.google.gson.annotations.SerializedName; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import java.io.IOException; + +/** + * ArtifactRepositoryRef + */ + +public class ArtifactRepositoryRef { + public static final String SERIALIZED_NAME_CONFIG_MAP = "configMap"; + @SerializedName(SERIALIZED_NAME_CONFIG_MAP) + private String configMap; + + public static final String SERIALIZED_NAME_KEY = "key"; + @SerializedName(SERIALIZED_NAME_KEY) + private String key; + + + public ArtifactRepositoryRef configMap(String configMap) { + + this.configMap = configMap; + return this; + } + + /** + * Get configMap + * @return configMap + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "") + + public String getConfigMap() { + return configMap; + } + + + public void setConfigMap(String configMap) { + this.configMap = configMap; + } + + + public ArtifactRepositoryRef key(String key) { + + this.key = key; + return this; + } + + /** + * Get key + * @return key + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "") + + public String getKey() { + return key; + } + + + public void setKey(String key) { + this.key = key; + } + + + @Override + public boolean equals(java.lang.Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + ArtifactRepositoryRef artifactRepositoryRef = (ArtifactRepositoryRef) o; + return Objects.equals(this.configMap, artifactRepositoryRef.configMap) && + Objects.equals(this.key, artifactRepositoryRef.key); + } + + @Override + public int hashCode() { + return Objects.hash(configMap, key); + } + + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class ArtifactRepositoryRef {\n"); + sb.append(" configMap: ").append(toIndentedString(configMap)).append("\n"); + sb.append(" key: ").append(toIndentedString(key)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces + * (except the first line). + */ + private String toIndentedString(java.lang.Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } + +} + diff --git a/src/main/java/io/argoproj/workflow/models/ArtifactoryArtifact.java b/src/main/java/io/argoproj/workflow/models/ArtifactoryArtifact.java new file mode 100644 index 00000000..861efc13 --- /dev/null +++ b/src/main/java/io/argoproj/workflow/models/ArtifactoryArtifact.java @@ -0,0 +1,157 @@ +/* + * Argo + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: v2.4.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package io.argoproj.workflow.models; + +import java.util.Objects; +import java.util.Arrays; +import com.google.gson.TypeAdapter; +import com.google.gson.annotations.JsonAdapter; +import com.google.gson.annotations.SerializedName; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import java.io.IOException; + +/** + * ArtifactoryArtifact is the location of an artifactory artifact + */ +@ApiModel(description = "ArtifactoryArtifact is the location of an artifactory artifact") + +public class ArtifactoryArtifact { + public static final String SERIALIZED_NAME_PASSWORD_SECRET = "passwordSecret"; + @SerializedName(SERIALIZED_NAME_PASSWORD_SECRET) + private io.kubernetes.client.models.V1SecretKeySelector passwordSecret = null; + + public static final String SERIALIZED_NAME_URL = "url"; + @SerializedName(SERIALIZED_NAME_URL) + private String url; + + public static final String SERIALIZED_NAME_USERNAME_SECRET = "usernameSecret"; + @SerializedName(SERIALIZED_NAME_USERNAME_SECRET) + private io.kubernetes.client.models.V1SecretKeySelector usernameSecret = null; + + + public ArtifactoryArtifact passwordSecret(io.kubernetes.client.models.V1SecretKeySelector passwordSecret) { + + this.passwordSecret = passwordSecret; + return this; + } + + /** + * Get passwordSecret + * @return passwordSecret + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "") + + public io.kubernetes.client.models.V1SecretKeySelector getPasswordSecret() { + return passwordSecret; + } + + + public void setPasswordSecret(io.kubernetes.client.models.V1SecretKeySelector passwordSecret) { + this.passwordSecret = passwordSecret; + } + + + public ArtifactoryArtifact url(String url) { + + this.url = url; + return this; + } + + /** + * URL of the artifact + * @return url + **/ + @ApiModelProperty(required = true, value = "URL of the artifact") + + public String getUrl() { + return url; + } + + + public void setUrl(String url) { + this.url = url; + } + + + public ArtifactoryArtifact usernameSecret(io.kubernetes.client.models.V1SecretKeySelector usernameSecret) { + + this.usernameSecret = usernameSecret; + return this; + } + + /** + * Get usernameSecret + * @return usernameSecret + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "") + + public io.kubernetes.client.models.V1SecretKeySelector getUsernameSecret() { + return usernameSecret; + } + + + public void setUsernameSecret(io.kubernetes.client.models.V1SecretKeySelector usernameSecret) { + this.usernameSecret = usernameSecret; + } + + + @Override + public boolean equals(java.lang.Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + ArtifactoryArtifact artifactoryArtifact = (ArtifactoryArtifact) o; + return Objects.equals(this.passwordSecret, artifactoryArtifact.passwordSecret) && + Objects.equals(this.url, artifactoryArtifact.url) && + Objects.equals(this.usernameSecret, artifactoryArtifact.usernameSecret); + } + + @Override + public int hashCode() { + return Objects.hash(passwordSecret, url, usernameSecret); + } + + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class ArtifactoryArtifact {\n"); + sb.append(" passwordSecret: ").append(toIndentedString(passwordSecret)).append("\n"); + sb.append(" url: ").append(toIndentedString(url)).append("\n"); + sb.append(" usernameSecret: ").append(toIndentedString(usernameSecret)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces + * (except the first line). + */ + private String toIndentedString(java.lang.Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } + +} + diff --git a/src/main/java/io/argoproj/workflow/models/ArtifactoryAuth.java b/src/main/java/io/argoproj/workflow/models/ArtifactoryAuth.java new file mode 100644 index 00000000..ba01f17d --- /dev/null +++ b/src/main/java/io/argoproj/workflow/models/ArtifactoryAuth.java @@ -0,0 +1,129 @@ +/* + * Argo + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: v2.4.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package io.argoproj.workflow.models; + +import java.util.Objects; +import java.util.Arrays; +import com.google.gson.TypeAdapter; +import com.google.gson.annotations.JsonAdapter; +import com.google.gson.annotations.SerializedName; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import java.io.IOException; + +/** + * ArtifactoryAuth describes the secret selectors required for authenticating to artifactory + */ +@ApiModel(description = "ArtifactoryAuth describes the secret selectors required for authenticating to artifactory") + +public class ArtifactoryAuth { + public static final String SERIALIZED_NAME_PASSWORD_SECRET = "passwordSecret"; + @SerializedName(SERIALIZED_NAME_PASSWORD_SECRET) + private io.kubernetes.client.models.V1SecretKeySelector passwordSecret = null; + + public static final String SERIALIZED_NAME_USERNAME_SECRET = "usernameSecret"; + @SerializedName(SERIALIZED_NAME_USERNAME_SECRET) + private io.kubernetes.client.models.V1SecretKeySelector usernameSecret = null; + + + public ArtifactoryAuth passwordSecret(io.kubernetes.client.models.V1SecretKeySelector passwordSecret) { + + this.passwordSecret = passwordSecret; + return this; + } + + /** + * Get passwordSecret + * @return passwordSecret + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "") + + public io.kubernetes.client.models.V1SecretKeySelector getPasswordSecret() { + return passwordSecret; + } + + + public void setPasswordSecret(io.kubernetes.client.models.V1SecretKeySelector passwordSecret) { + this.passwordSecret = passwordSecret; + } + + + public ArtifactoryAuth usernameSecret(io.kubernetes.client.models.V1SecretKeySelector usernameSecret) { + + this.usernameSecret = usernameSecret; + return this; + } + + /** + * Get usernameSecret + * @return usernameSecret + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "") + + public io.kubernetes.client.models.V1SecretKeySelector getUsernameSecret() { + return usernameSecret; + } + + + public void setUsernameSecret(io.kubernetes.client.models.V1SecretKeySelector usernameSecret) { + this.usernameSecret = usernameSecret; + } + + + @Override + public boolean equals(java.lang.Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + ArtifactoryAuth artifactoryAuth = (ArtifactoryAuth) o; + return Objects.equals(this.passwordSecret, artifactoryAuth.passwordSecret) && + Objects.equals(this.usernameSecret, artifactoryAuth.usernameSecret); + } + + @Override + public int hashCode() { + return Objects.hash(passwordSecret, usernameSecret); + } + + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class ArtifactoryAuth {\n"); + sb.append(" passwordSecret: ").append(toIndentedString(passwordSecret)).append("\n"); + sb.append(" usernameSecret: ").append(toIndentedString(usernameSecret)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces + * (except the first line). + */ + private String toIndentedString(java.lang.Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } + +} + diff --git a/src/main/java/io/argoproj/workflow/models/Backoff.java b/src/main/java/io/argoproj/workflow/models/Backoff.java new file mode 100644 index 00000000..d76a97d7 --- /dev/null +++ b/src/main/java/io/argoproj/workflow/models/Backoff.java @@ -0,0 +1,157 @@ +/* + * Argo + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: v2.4.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package io.argoproj.workflow.models; + +import java.util.Objects; +import java.util.Arrays; +import com.google.gson.TypeAdapter; +import com.google.gson.annotations.JsonAdapter; +import com.google.gson.annotations.SerializedName; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import java.io.IOException; + +/** + * Backoff + */ + +public class Backoff { + public static final String SERIALIZED_NAME_DURATION = "duration"; + @SerializedName(SERIALIZED_NAME_DURATION) + private String duration; + + public static final String SERIALIZED_NAME_FACTOR = "factor"; + @SerializedName(SERIALIZED_NAME_FACTOR) + private Integer factor; + + public static final String SERIALIZED_NAME_MAX_DURATION = "maxDuration"; + @SerializedName(SERIALIZED_NAME_MAX_DURATION) + private String maxDuration; + + + public Backoff duration(String duration) { + + this.duration = duration; + return this; + } + + /** + * Get duration + * @return duration + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "") + + public String getDuration() { + return duration; + } + + + public void setDuration(String duration) { + this.duration = duration; + } + + + public Backoff factor(Integer factor) { + + this.factor = factor; + return this; + } + + /** + * Get factor + * @return factor + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "") + + public Integer getFactor() { + return factor; + } + + + public void setFactor(Integer factor) { + this.factor = factor; + } + + + public Backoff maxDuration(String maxDuration) { + + this.maxDuration = maxDuration; + return this; + } + + /** + * Get maxDuration + * @return maxDuration + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "") + + public String getMaxDuration() { + return maxDuration; + } + + + public void setMaxDuration(String maxDuration) { + this.maxDuration = maxDuration; + } + + + @Override + public boolean equals(java.lang.Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + Backoff backoff = (Backoff) o; + return Objects.equals(this.duration, backoff.duration) && + Objects.equals(this.factor, backoff.factor) && + Objects.equals(this.maxDuration, backoff.maxDuration); + } + + @Override + public int hashCode() { + return Objects.hash(duration, factor, maxDuration); + } + + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class Backoff {\n"); + sb.append(" duration: ").append(toIndentedString(duration)).append("\n"); + sb.append(" factor: ").append(toIndentedString(factor)).append("\n"); + sb.append(" maxDuration: ").append(toIndentedString(maxDuration)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces + * (except the first line). + */ + private String toIndentedString(java.lang.Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } + +} + diff --git a/src/main/java/io/argoproj/workflow/models/ContinueOn.java b/src/main/java/io/argoproj/workflow/models/ContinueOn.java new file mode 100644 index 00000000..3f09a67f --- /dev/null +++ b/src/main/java/io/argoproj/workflow/models/ContinueOn.java @@ -0,0 +1,129 @@ +/* + * Argo + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: v2.4.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package io.argoproj.workflow.models; + +import java.util.Objects; +import java.util.Arrays; +import com.google.gson.TypeAdapter; +import com.google.gson.annotations.JsonAdapter; +import com.google.gson.annotations.SerializedName; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import java.io.IOException; + +/** + * ContinueOn defines if a workflow should continue even if a task or step fails/errors. It can be specified if the workflow should continue when the pod errors, fails or both. + */ +@ApiModel(description = "ContinueOn defines if a workflow should continue even if a task or step fails/errors. It can be specified if the workflow should continue when the pod errors, fails or both.") + +public class ContinueOn { + public static final String SERIALIZED_NAME_ERROR = "error"; + @SerializedName(SERIALIZED_NAME_ERROR) + private Boolean error; + + public static final String SERIALIZED_NAME_FAILED = "failed"; + @SerializedName(SERIALIZED_NAME_FAILED) + private Boolean failed; + + + public ContinueOn error(Boolean error) { + + this.error = error; + return this; + } + + /** + * Get error + * @return error + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "") + + public Boolean getError() { + return error; + } + + + public void setError(Boolean error) { + this.error = error; + } + + + public ContinueOn failed(Boolean failed) { + + this.failed = failed; + return this; + } + + /** + * Get failed + * @return failed + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "") + + public Boolean getFailed() { + return failed; + } + + + public void setFailed(Boolean failed) { + this.failed = failed; + } + + + @Override + public boolean equals(java.lang.Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + ContinueOn continueOn = (ContinueOn) o; + return Objects.equals(this.error, continueOn.error) && + Objects.equals(this.failed, continueOn.failed); + } + + @Override + public int hashCode() { + return Objects.hash(error, failed); + } + + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class ContinueOn {\n"); + sb.append(" error: ").append(toIndentedString(error)).append("\n"); + sb.append(" failed: ").append(toIndentedString(failed)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces + * (except the first line). + */ + private String toIndentedString(java.lang.Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } + +} + diff --git a/src/main/java/io/argoproj/workflow/models/DAGTask.java b/src/main/java/io/argoproj/workflow/models/DAGTask.java new file mode 100644 index 00000000..4a567d45 --- /dev/null +++ b/src/main/java/io/argoproj/workflow/models/DAGTask.java @@ -0,0 +1,381 @@ +/* + * Argo + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: v2.4.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package io.argoproj.workflow.models; + +import java.util.Objects; +import java.util.Arrays; +import com.google.gson.TypeAdapter; +import com.google.gson.annotations.JsonAdapter; +import com.google.gson.annotations.SerializedName; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import io.argoproj.workflow.models.Arguments; +import io.argoproj.workflow.models.ContinueOn; +import io.argoproj.workflow.models.Sequence; +import io.argoproj.workflow.models.TemplateRef; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * DAGTask represents a node in the graph during DAG execution + */ +@ApiModel(description = "DAGTask represents a node in the graph during DAG execution") + +public class DAGTask { + public static final String SERIALIZED_NAME_ARGUMENTS = "arguments"; + @SerializedName(SERIALIZED_NAME_ARGUMENTS) + private Arguments arguments; + + public static final String SERIALIZED_NAME_CONTINUE_ON = "continueOn"; + @SerializedName(SERIALIZED_NAME_CONTINUE_ON) + private ContinueOn continueOn; + + public static final String SERIALIZED_NAME_DEPENDENCIES = "dependencies"; + @SerializedName(SERIALIZED_NAME_DEPENDENCIES) + private List dependencies = null; + + public static final String SERIALIZED_NAME_NAME = "name"; + @SerializedName(SERIALIZED_NAME_NAME) + private String name; + + public static final String SERIALIZED_NAME_TEMPLATE = "template"; + @SerializedName(SERIALIZED_NAME_TEMPLATE) + private String template; + + public static final String SERIALIZED_NAME_TEMPLATE_REF = "templateRef"; + @SerializedName(SERIALIZED_NAME_TEMPLATE_REF) + private TemplateRef templateRef; + + public static final String SERIALIZED_NAME_WHEN = "when"; + @SerializedName(SERIALIZED_NAME_WHEN) + private String when; + + public static final String SERIALIZED_NAME_WITH_ITEMS = "withItems"; + @SerializedName(SERIALIZED_NAME_WITH_ITEMS) + private List withItems = null; + + public static final String SERIALIZED_NAME_WITH_PARAM = "withParam"; + @SerializedName(SERIALIZED_NAME_WITH_PARAM) + private String withParam; + + public static final String SERIALIZED_NAME_WITH_SEQUENCE = "withSequence"; + @SerializedName(SERIALIZED_NAME_WITH_SEQUENCE) + private Sequence withSequence; + + + public DAGTask arguments(Arguments arguments) { + + this.arguments = arguments; + return this; + } + + /** + * Get arguments + * @return arguments + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "") + + public Arguments getArguments() { + return arguments; + } + + + public void setArguments(Arguments arguments) { + this.arguments = arguments; + } + + + public DAGTask continueOn(ContinueOn continueOn) { + + this.continueOn = continueOn; + return this; + } + + /** + * Get continueOn + * @return continueOn + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "") + + public ContinueOn getContinueOn() { + return continueOn; + } + + + public void setContinueOn(ContinueOn continueOn) { + this.continueOn = continueOn; + } + + + public DAGTask dependencies(List dependencies) { + + this.dependencies = dependencies; + return this; + } + + public DAGTask addDependenciesItem(String dependenciesItem) { + if (this.dependencies == null) { + this.dependencies = new ArrayList(); + } + this.dependencies.add(dependenciesItem); + return this; + } + + /** + * Dependencies are name of other targets which this depends on + * @return dependencies + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "Dependencies are name of other targets which this depends on") + + public List getDependencies() { + return dependencies; + } + + + public void setDependencies(List dependencies) { + this.dependencies = dependencies; + } + + + public DAGTask name(String name) { + + this.name = name; + return this; + } + + /** + * Name is the name of the target + * @return name + **/ + @ApiModelProperty(required = true, value = "Name is the name of the target") + + public String getName() { + return name; + } + + + public void setName(String name) { + this.name = name; + } + + + public DAGTask template(String template) { + + this.template = template; + return this; + } + + /** + * Name of template to execute + * @return template + **/ + @ApiModelProperty(required = true, value = "Name of template to execute") + + public String getTemplate() { + return template; + } + + + public void setTemplate(String template) { + this.template = template; + } + + + public DAGTask templateRef(TemplateRef templateRef) { + + this.templateRef = templateRef; + return this; + } + + /** + * Get templateRef + * @return templateRef + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "") + + public TemplateRef getTemplateRef() { + return templateRef; + } + + + public void setTemplateRef(TemplateRef templateRef) { + this.templateRef = templateRef; + } + + + public DAGTask when(String when) { + + this.when = when; + return this; + } + + /** + * When is an expression in which the task should conditionally execute + * @return when + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "When is an expression in which the task should conditionally execute") + + public String getWhen() { + return when; + } + + + public void setWhen(String when) { + this.when = when; + } + + + public DAGTask withItems(List withItems) { + + this.withItems = withItems; + return this; + } + + public DAGTask addWithItemsItem(String withItemsItem) { + if (this.withItems == null) { + this.withItems = new ArrayList(); + } + this.withItems.add(withItemsItem); + return this; + } + + /** + * WithItems expands a task into multiple parallel tasks from the items in the list + * @return withItems + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "WithItems expands a task into multiple parallel tasks from the items in the list") + + public List getWithItems() { + return withItems; + } + + + public void setWithItems(List withItems) { + this.withItems = withItems; + } + + + public DAGTask withParam(String withParam) { + + this.withParam = withParam; + return this; + } + + /** + * WithParam expands a task into multiple parallel tasks from the value in the parameter, which is expected to be a JSON list. + * @return withParam + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "WithParam expands a task into multiple parallel tasks from the value in the parameter, which is expected to be a JSON list.") + + public String getWithParam() { + return withParam; + } + + + public void setWithParam(String withParam) { + this.withParam = withParam; + } + + + public DAGTask withSequence(Sequence withSequence) { + + this.withSequence = withSequence; + return this; + } + + /** + * Get withSequence + * @return withSequence + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "") + + public Sequence getWithSequence() { + return withSequence; + } + + + public void setWithSequence(Sequence withSequence) { + this.withSequence = withSequence; + } + + + @Override + public boolean equals(java.lang.Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + DAGTask daGTask = (DAGTask) o; + return Objects.equals(this.arguments, daGTask.arguments) && + Objects.equals(this.continueOn, daGTask.continueOn) && + Objects.equals(this.dependencies, daGTask.dependencies) && + Objects.equals(this.name, daGTask.name) && + Objects.equals(this.template, daGTask.template) && + Objects.equals(this.templateRef, daGTask.templateRef) && + Objects.equals(this.when, daGTask.when) && + Objects.equals(this.withItems, daGTask.withItems) && + Objects.equals(this.withParam, daGTask.withParam) && + Objects.equals(this.withSequence, daGTask.withSequence); + } + + @Override + public int hashCode() { + return Objects.hash(arguments, continueOn, dependencies, name, template, templateRef, when, withItems, withParam, withSequence); + } + + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class DAGTask {\n"); + sb.append(" arguments: ").append(toIndentedString(arguments)).append("\n"); + sb.append(" continueOn: ").append(toIndentedString(continueOn)).append("\n"); + sb.append(" dependencies: ").append(toIndentedString(dependencies)).append("\n"); + sb.append(" name: ").append(toIndentedString(name)).append("\n"); + sb.append(" template: ").append(toIndentedString(template)).append("\n"); + sb.append(" templateRef: ").append(toIndentedString(templateRef)).append("\n"); + sb.append(" when: ").append(toIndentedString(when)).append("\n"); + sb.append(" withItems: ").append(toIndentedString(withItems)).append("\n"); + sb.append(" withParam: ").append(toIndentedString(withParam)).append("\n"); + sb.append(" withSequence: ").append(toIndentedString(withSequence)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces + * (except the first line). + */ + private String toIndentedString(java.lang.Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } + +} + diff --git a/src/main/java/io/argoproj/workflow/models/DAGTemplate.java b/src/main/java/io/argoproj/workflow/models/DAGTemplate.java new file mode 100644 index 00000000..09b8f76c --- /dev/null +++ b/src/main/java/io/argoproj/workflow/models/DAGTemplate.java @@ -0,0 +1,165 @@ +/* + * Argo + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: v2.4.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package io.argoproj.workflow.models; + +import java.util.Objects; +import java.util.Arrays; +import com.google.gson.TypeAdapter; +import com.google.gson.annotations.JsonAdapter; +import com.google.gson.annotations.SerializedName; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import io.argoproj.workflow.models.DAGTask; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * DAGTemplate is a template subtype for directed acyclic graph templates + */ +@ApiModel(description = "DAGTemplate is a template subtype for directed acyclic graph templates") + +public class DAGTemplate { + public static final String SERIALIZED_NAME_FAIL_FAST = "failFast"; + @SerializedName(SERIALIZED_NAME_FAIL_FAST) + private Boolean failFast; + + public static final String SERIALIZED_NAME_TARGET = "target"; + @SerializedName(SERIALIZED_NAME_TARGET) + private String target; + + public static final String SERIALIZED_NAME_TASKS = "tasks"; + @SerializedName(SERIALIZED_NAME_TASKS) + private List tasks = new ArrayList(); + + + public DAGTemplate failFast(Boolean failFast) { + + this.failFast = failFast; + return this; + } + + /** + * This flag is for DAG logic. The DAG logic has a built-in \"fail fast\" feature to stop scheduling new steps, as soon as it detects that one of the DAG nodes is failed. Then it waits until all DAG nodes are completed before failing the DAG itself. The FailFast flag default is true, if set to false, it will allow a DAG to run all branches of the DAG to completion (either success or failure), regardless of the failed outcomes of branches in the DAG. More info and example about this feature at https://github.com/argoproj/argo/issues/1442 + * @return failFast + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "This flag is for DAG logic. The DAG logic has a built-in \"fail fast\" feature to stop scheduling new steps, as soon as it detects that one of the DAG nodes is failed. Then it waits until all DAG nodes are completed before failing the DAG itself. The FailFast flag default is true, if set to false, it will allow a DAG to run all branches of the DAG to completion (either success or failure), regardless of the failed outcomes of branches in the DAG. More info and example about this feature at https://github.com/argoproj/argo/issues/1442") + + public Boolean getFailFast() { + return failFast; + } + + + public void setFailFast(Boolean failFast) { + this.failFast = failFast; + } + + + public DAGTemplate target(String target) { + + this.target = target; + return this; + } + + /** + * Target are one or more names of targets to execute in a DAG + * @return target + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "Target are one or more names of targets to execute in a DAG") + + public String getTarget() { + return target; + } + + + public void setTarget(String target) { + this.target = target; + } + + + public DAGTemplate tasks(List tasks) { + + this.tasks = tasks; + return this; + } + + public DAGTemplate addTasksItem(DAGTask tasksItem) { + this.tasks.add(tasksItem); + return this; + } + + /** + * Tasks are a list of DAG tasks + * @return tasks + **/ + @ApiModelProperty(required = true, value = "Tasks are a list of DAG tasks") + + public List getTasks() { + return tasks; + } + + + public void setTasks(List tasks) { + this.tasks = tasks; + } + + + @Override + public boolean equals(java.lang.Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + DAGTemplate daGTemplate = (DAGTemplate) o; + return Objects.equals(this.failFast, daGTemplate.failFast) && + Objects.equals(this.target, daGTemplate.target) && + Objects.equals(this.tasks, daGTemplate.tasks); + } + + @Override + public int hashCode() { + return Objects.hash(failFast, target, tasks); + } + + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class DAGTemplate {\n"); + sb.append(" failFast: ").append(toIndentedString(failFast)).append("\n"); + sb.append(" target: ").append(toIndentedString(target)).append("\n"); + sb.append(" tasks: ").append(toIndentedString(tasks)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces + * (except the first line). + */ + private String toIndentedString(java.lang.Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } + +} + diff --git a/src/main/java/io/argoproj/workflow/models/ExecutorConfig.java b/src/main/java/io/argoproj/workflow/models/ExecutorConfig.java new file mode 100644 index 00000000..ea0dc677 --- /dev/null +++ b/src/main/java/io/argoproj/workflow/models/ExecutorConfig.java @@ -0,0 +1,100 @@ +/* + * Argo + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: v2.4.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package io.argoproj.workflow.models; + +import java.util.Objects; +import java.util.Arrays; +import com.google.gson.TypeAdapter; +import com.google.gson.annotations.JsonAdapter; +import com.google.gson.annotations.SerializedName; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import java.io.IOException; + +/** + * ExecutorConfig holds configurations of an executor container. + */ +@ApiModel(description = "ExecutorConfig holds configurations of an executor container.") + +public class ExecutorConfig { + public static final String SERIALIZED_NAME_SERVICE_ACCOUNT_NAME = "serviceAccountName"; + @SerializedName(SERIALIZED_NAME_SERVICE_ACCOUNT_NAME) + private String serviceAccountName; + + + public ExecutorConfig serviceAccountName(String serviceAccountName) { + + this.serviceAccountName = serviceAccountName; + return this; + } + + /** + * ServiceAccountName specifies the service account name of the executor container. + * @return serviceAccountName + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "ServiceAccountName specifies the service account name of the executor container.") + + public String getServiceAccountName() { + return serviceAccountName; + } + + + public void setServiceAccountName(String serviceAccountName) { + this.serviceAccountName = serviceAccountName; + } + + + @Override + public boolean equals(java.lang.Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + ExecutorConfig executorConfig = (ExecutorConfig) o; + return Objects.equals(this.serviceAccountName, executorConfig.serviceAccountName); + } + + @Override + public int hashCode() { + return Objects.hash(serviceAccountName); + } + + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class ExecutorConfig {\n"); + sb.append(" serviceAccountName: ").append(toIndentedString(serviceAccountName)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces + * (except the first line). + */ + private String toIndentedString(java.lang.Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } + +} + diff --git a/src/main/java/io/argoproj/workflow/models/GitArtifact.java b/src/main/java/io/argoproj/workflow/models/GitArtifact.java new file mode 100644 index 00000000..b3bf4d1b --- /dev/null +++ b/src/main/java/io/argoproj/workflow/models/GitArtifact.java @@ -0,0 +1,312 @@ +/* + * Argo + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: v2.4.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package io.argoproj.workflow.models; + +import java.util.Objects; +import java.util.Arrays; +import com.google.gson.TypeAdapter; +import com.google.gson.annotations.JsonAdapter; +import com.google.gson.annotations.SerializedName; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * GitArtifact is the location of an git artifact + */ +@ApiModel(description = "GitArtifact is the location of an git artifact") + +public class GitArtifact { + public static final String SERIALIZED_NAME_DEPTH = "depth"; + @SerializedName(SERIALIZED_NAME_DEPTH) + private Long depth; + + public static final String SERIALIZED_NAME_FETCH = "fetch"; + @SerializedName(SERIALIZED_NAME_FETCH) + private List fetch = null; + + public static final String SERIALIZED_NAME_INSECURE_IGNORE_HOST_KEY = "insecureIgnoreHostKey"; + @SerializedName(SERIALIZED_NAME_INSECURE_IGNORE_HOST_KEY) + private Boolean insecureIgnoreHostKey; + + public static final String SERIALIZED_NAME_PASSWORD_SECRET = "passwordSecret"; + @SerializedName(SERIALIZED_NAME_PASSWORD_SECRET) + private io.kubernetes.client.models.V1SecretKeySelector passwordSecret = null; + + public static final String SERIALIZED_NAME_REPO = "repo"; + @SerializedName(SERIALIZED_NAME_REPO) + private String repo; + + public static final String SERIALIZED_NAME_REVISION = "revision"; + @SerializedName(SERIALIZED_NAME_REVISION) + private String revision; + + public static final String SERIALIZED_NAME_SSH_PRIVATE_KEY_SECRET = "sshPrivateKeySecret"; + @SerializedName(SERIALIZED_NAME_SSH_PRIVATE_KEY_SECRET) + private io.kubernetes.client.models.V1SecretKeySelector sshPrivateKeySecret = null; + + public static final String SERIALIZED_NAME_USERNAME_SECRET = "usernameSecret"; + @SerializedName(SERIALIZED_NAME_USERNAME_SECRET) + private io.kubernetes.client.models.V1SecretKeySelector usernameSecret = null; + + + public GitArtifact depth(Long depth) { + + this.depth = depth; + return this; + } + + /** + * Depth specifies clones/fetches should be shallow and include the given number of commits from the branch tip + * @return depth + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "Depth specifies clones/fetches should be shallow and include the given number of commits from the branch tip") + + public Long getDepth() { + return depth; + } + + + public void setDepth(Long depth) { + this.depth = depth; + } + + + public GitArtifact fetch(List fetch) { + + this.fetch = fetch; + return this; + } + + public GitArtifact addFetchItem(String fetchItem) { + if (this.fetch == null) { + this.fetch = new ArrayList(); + } + this.fetch.add(fetchItem); + return this; + } + + /** + * Fetch specifies a number of refs that should be fetched before checkout + * @return fetch + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "Fetch specifies a number of refs that should be fetched before checkout") + + public List getFetch() { + return fetch; + } + + + public void setFetch(List fetch) { + this.fetch = fetch; + } + + + public GitArtifact insecureIgnoreHostKey(Boolean insecureIgnoreHostKey) { + + this.insecureIgnoreHostKey = insecureIgnoreHostKey; + return this; + } + + /** + * InsecureIgnoreHostKey disables SSH strict host key checking during git clone + * @return insecureIgnoreHostKey + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "InsecureIgnoreHostKey disables SSH strict host key checking during git clone") + + public Boolean getInsecureIgnoreHostKey() { + return insecureIgnoreHostKey; + } + + + public void setInsecureIgnoreHostKey(Boolean insecureIgnoreHostKey) { + this.insecureIgnoreHostKey = insecureIgnoreHostKey; + } + + + public GitArtifact passwordSecret(io.kubernetes.client.models.V1SecretKeySelector passwordSecret) { + + this.passwordSecret = passwordSecret; + return this; + } + + /** + * Get passwordSecret + * @return passwordSecret + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "") + + public io.kubernetes.client.models.V1SecretKeySelector getPasswordSecret() { + return passwordSecret; + } + + + public void setPasswordSecret(io.kubernetes.client.models.V1SecretKeySelector passwordSecret) { + this.passwordSecret = passwordSecret; + } + + + public GitArtifact repo(String repo) { + + this.repo = repo; + return this; + } + + /** + * Repo is the git repository + * @return repo + **/ + @ApiModelProperty(required = true, value = "Repo is the git repository") + + public String getRepo() { + return repo; + } + + + public void setRepo(String repo) { + this.repo = repo; + } + + + public GitArtifact revision(String revision) { + + this.revision = revision; + return this; + } + + /** + * Revision is the git commit, tag, branch to checkout + * @return revision + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "Revision is the git commit, tag, branch to checkout") + + public String getRevision() { + return revision; + } + + + public void setRevision(String revision) { + this.revision = revision; + } + + + public GitArtifact sshPrivateKeySecret(io.kubernetes.client.models.V1SecretKeySelector sshPrivateKeySecret) { + + this.sshPrivateKeySecret = sshPrivateKeySecret; + return this; + } + + /** + * Get sshPrivateKeySecret + * @return sshPrivateKeySecret + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "") + + public io.kubernetes.client.models.V1SecretKeySelector getSshPrivateKeySecret() { + return sshPrivateKeySecret; + } + + + public void setSshPrivateKeySecret(io.kubernetes.client.models.V1SecretKeySelector sshPrivateKeySecret) { + this.sshPrivateKeySecret = sshPrivateKeySecret; + } + + + public GitArtifact usernameSecret(io.kubernetes.client.models.V1SecretKeySelector usernameSecret) { + + this.usernameSecret = usernameSecret; + return this; + } + + /** + * Get usernameSecret + * @return usernameSecret + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "") + + public io.kubernetes.client.models.V1SecretKeySelector getUsernameSecret() { + return usernameSecret; + } + + + public void setUsernameSecret(io.kubernetes.client.models.V1SecretKeySelector usernameSecret) { + this.usernameSecret = usernameSecret; + } + + + @Override + public boolean equals(java.lang.Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + GitArtifact gitArtifact = (GitArtifact) o; + return Objects.equals(this.depth, gitArtifact.depth) && + Objects.equals(this.fetch, gitArtifact.fetch) && + Objects.equals(this.insecureIgnoreHostKey, gitArtifact.insecureIgnoreHostKey) && + Objects.equals(this.passwordSecret, gitArtifact.passwordSecret) && + Objects.equals(this.repo, gitArtifact.repo) && + Objects.equals(this.revision, gitArtifact.revision) && + Objects.equals(this.sshPrivateKeySecret, gitArtifact.sshPrivateKeySecret) && + Objects.equals(this.usernameSecret, gitArtifact.usernameSecret); + } + + @Override + public int hashCode() { + return Objects.hash(depth, fetch, insecureIgnoreHostKey, passwordSecret, repo, revision, sshPrivateKeySecret, usernameSecret); + } + + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class GitArtifact {\n"); + sb.append(" depth: ").append(toIndentedString(depth)).append("\n"); + sb.append(" fetch: ").append(toIndentedString(fetch)).append("\n"); + sb.append(" insecureIgnoreHostKey: ").append(toIndentedString(insecureIgnoreHostKey)).append("\n"); + sb.append(" passwordSecret: ").append(toIndentedString(passwordSecret)).append("\n"); + sb.append(" repo: ").append(toIndentedString(repo)).append("\n"); + sb.append(" revision: ").append(toIndentedString(revision)).append("\n"); + sb.append(" sshPrivateKeySecret: ").append(toIndentedString(sshPrivateKeySecret)).append("\n"); + sb.append(" usernameSecret: ").append(toIndentedString(usernameSecret)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces + * (except the first line). + */ + private String toIndentedString(java.lang.Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } + +} + diff --git a/src/main/java/io/argoproj/workflow/models/HDFSArtifact.java b/src/main/java/io/argoproj/workflow/models/HDFSArtifact.java new file mode 100644 index 00000000..fb4bd4ed --- /dev/null +++ b/src/main/java/io/argoproj/workflow/models/HDFSArtifact.java @@ -0,0 +1,366 @@ +/* + * Argo + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: v2.4.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package io.argoproj.workflow.models; + +import java.util.Objects; +import java.util.Arrays; +import com.google.gson.TypeAdapter; +import com.google.gson.annotations.JsonAdapter; +import com.google.gson.annotations.SerializedName; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * HDFSArtifact is the location of an HDFS artifact + */ +@ApiModel(description = "HDFSArtifact is the location of an HDFS artifact") + +public class HDFSArtifact { + public static final String SERIALIZED_NAME_ADDRESSES = "addresses"; + @SerializedName(SERIALIZED_NAME_ADDRESSES) + private List addresses = new ArrayList(); + + public static final String SERIALIZED_NAME_FORCE = "force"; + @SerializedName(SERIALIZED_NAME_FORCE) + private Boolean force; + + public static final String SERIALIZED_NAME_HDFS_USER = "hdfsUser"; + @SerializedName(SERIALIZED_NAME_HDFS_USER) + private String hdfsUser; + + public static final String SERIALIZED_NAME_KRB_C_CACHE_SECRET = "krbCCacheSecret"; + @SerializedName(SERIALIZED_NAME_KRB_C_CACHE_SECRET) + private io.kubernetes.client.models.V1SecretKeySelector krbCCacheSecret = null; + + public static final String SERIALIZED_NAME_KRB_CONFIG_CONFIG_MAP = "krbConfigConfigMap"; + @SerializedName(SERIALIZED_NAME_KRB_CONFIG_CONFIG_MAP) + private io.kubernetes.client.models.V1ConfigMapKeySelector krbConfigConfigMap = null; + + public static final String SERIALIZED_NAME_KRB_KEYTAB_SECRET = "krbKeytabSecret"; + @SerializedName(SERIALIZED_NAME_KRB_KEYTAB_SECRET) + private io.kubernetes.client.models.V1SecretKeySelector krbKeytabSecret = null; + + public static final String SERIALIZED_NAME_KRB_REALM = "krbRealm"; + @SerializedName(SERIALIZED_NAME_KRB_REALM) + private String krbRealm; + + public static final String SERIALIZED_NAME_KRB_SERVICE_PRINCIPAL_NAME = "krbServicePrincipalName"; + @SerializedName(SERIALIZED_NAME_KRB_SERVICE_PRINCIPAL_NAME) + private String krbServicePrincipalName; + + public static final String SERIALIZED_NAME_KRB_USERNAME = "krbUsername"; + @SerializedName(SERIALIZED_NAME_KRB_USERNAME) + private String krbUsername; + + public static final String SERIALIZED_NAME_PATH = "path"; + @SerializedName(SERIALIZED_NAME_PATH) + private String path; + + + public HDFSArtifact addresses(List addresses) { + + this.addresses = addresses; + return this; + } + + public HDFSArtifact addAddressesItem(String addressesItem) { + this.addresses.add(addressesItem); + return this; + } + + /** + * Addresses is accessible addresses of HDFS name nodes + * @return addresses + **/ + @ApiModelProperty(required = true, value = "Addresses is accessible addresses of HDFS name nodes") + + public List getAddresses() { + return addresses; + } + + + public void setAddresses(List addresses) { + this.addresses = addresses; + } + + + public HDFSArtifact force(Boolean force) { + + this.force = force; + return this; + } + + /** + * Force copies a file forcibly even if it exists (default: false) + * @return force + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "Force copies a file forcibly even if it exists (default: false)") + + public Boolean getForce() { + return force; + } + + + public void setForce(Boolean force) { + this.force = force; + } + + + public HDFSArtifact hdfsUser(String hdfsUser) { + + this.hdfsUser = hdfsUser; + return this; + } + + /** + * HDFSUser is the user to access HDFS file system. It is ignored if either ccache or keytab is used. + * @return hdfsUser + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "HDFSUser is the user to access HDFS file system. It is ignored if either ccache or keytab is used.") + + public String getHdfsUser() { + return hdfsUser; + } + + + public void setHdfsUser(String hdfsUser) { + this.hdfsUser = hdfsUser; + } + + + public HDFSArtifact krbCCacheSecret(io.kubernetes.client.models.V1SecretKeySelector krbCCacheSecret) { + + this.krbCCacheSecret = krbCCacheSecret; + return this; + } + + /** + * Get krbCCacheSecret + * @return krbCCacheSecret + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "") + + public io.kubernetes.client.models.V1SecretKeySelector getKrbCCacheSecret() { + return krbCCacheSecret; + } + + + public void setKrbCCacheSecret(io.kubernetes.client.models.V1SecretKeySelector krbCCacheSecret) { + this.krbCCacheSecret = krbCCacheSecret; + } + + + public HDFSArtifact krbConfigConfigMap(io.kubernetes.client.models.V1ConfigMapKeySelector krbConfigConfigMap) { + + this.krbConfigConfigMap = krbConfigConfigMap; + return this; + } + + /** + * Get krbConfigConfigMap + * @return krbConfigConfigMap + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "") + + public io.kubernetes.client.models.V1ConfigMapKeySelector getKrbConfigConfigMap() { + return krbConfigConfigMap; + } + + + public void setKrbConfigConfigMap(io.kubernetes.client.models.V1ConfigMapKeySelector krbConfigConfigMap) { + this.krbConfigConfigMap = krbConfigConfigMap; + } + + + public HDFSArtifact krbKeytabSecret(io.kubernetes.client.models.V1SecretKeySelector krbKeytabSecret) { + + this.krbKeytabSecret = krbKeytabSecret; + return this; + } + + /** + * Get krbKeytabSecret + * @return krbKeytabSecret + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "") + + public io.kubernetes.client.models.V1SecretKeySelector getKrbKeytabSecret() { + return krbKeytabSecret; + } + + + public void setKrbKeytabSecret(io.kubernetes.client.models.V1SecretKeySelector krbKeytabSecret) { + this.krbKeytabSecret = krbKeytabSecret; + } + + + public HDFSArtifact krbRealm(String krbRealm) { + + this.krbRealm = krbRealm; + return this; + } + + /** + * KrbRealm is the Kerberos realm used with Kerberos keytab It must be set if keytab is used. + * @return krbRealm + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "KrbRealm is the Kerberos realm used with Kerberos keytab It must be set if keytab is used.") + + public String getKrbRealm() { + return krbRealm; + } + + + public void setKrbRealm(String krbRealm) { + this.krbRealm = krbRealm; + } + + + public HDFSArtifact krbServicePrincipalName(String krbServicePrincipalName) { + + this.krbServicePrincipalName = krbServicePrincipalName; + return this; + } + + /** + * KrbServicePrincipalName is the principal name of Kerberos service It must be set if either ccache or keytab is used. + * @return krbServicePrincipalName + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "KrbServicePrincipalName is the principal name of Kerberos service It must be set if either ccache or keytab is used.") + + public String getKrbServicePrincipalName() { + return krbServicePrincipalName; + } + + + public void setKrbServicePrincipalName(String krbServicePrincipalName) { + this.krbServicePrincipalName = krbServicePrincipalName; + } + + + public HDFSArtifact krbUsername(String krbUsername) { + + this.krbUsername = krbUsername; + return this; + } + + /** + * KrbUsername is the Kerberos username used with Kerberos keytab It must be set if keytab is used. + * @return krbUsername + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "KrbUsername is the Kerberos username used with Kerberos keytab It must be set if keytab is used.") + + public String getKrbUsername() { + return krbUsername; + } + + + public void setKrbUsername(String krbUsername) { + this.krbUsername = krbUsername; + } + + + public HDFSArtifact path(String path) { + + this.path = path; + return this; + } + + /** + * Path is a file path in HDFS + * @return path + **/ + @ApiModelProperty(required = true, value = "Path is a file path in HDFS") + + public String getPath() { + return path; + } + + + public void setPath(String path) { + this.path = path; + } + + + @Override + public boolean equals(java.lang.Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + HDFSArtifact hdFSArtifact = (HDFSArtifact) o; + return Objects.equals(this.addresses, hdFSArtifact.addresses) && + Objects.equals(this.force, hdFSArtifact.force) && + Objects.equals(this.hdfsUser, hdFSArtifact.hdfsUser) && + Objects.equals(this.krbCCacheSecret, hdFSArtifact.krbCCacheSecret) && + Objects.equals(this.krbConfigConfigMap, hdFSArtifact.krbConfigConfigMap) && + Objects.equals(this.krbKeytabSecret, hdFSArtifact.krbKeytabSecret) && + Objects.equals(this.krbRealm, hdFSArtifact.krbRealm) && + Objects.equals(this.krbServicePrincipalName, hdFSArtifact.krbServicePrincipalName) && + Objects.equals(this.krbUsername, hdFSArtifact.krbUsername) && + Objects.equals(this.path, hdFSArtifact.path); + } + + @Override + public int hashCode() { + return Objects.hash(addresses, force, hdfsUser, krbCCacheSecret, krbConfigConfigMap, krbKeytabSecret, krbRealm, krbServicePrincipalName, krbUsername, path); + } + + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class HDFSArtifact {\n"); + sb.append(" addresses: ").append(toIndentedString(addresses)).append("\n"); + sb.append(" force: ").append(toIndentedString(force)).append("\n"); + sb.append(" hdfsUser: ").append(toIndentedString(hdfsUser)).append("\n"); + sb.append(" krbCCacheSecret: ").append(toIndentedString(krbCCacheSecret)).append("\n"); + sb.append(" krbConfigConfigMap: ").append(toIndentedString(krbConfigConfigMap)).append("\n"); + sb.append(" krbKeytabSecret: ").append(toIndentedString(krbKeytabSecret)).append("\n"); + sb.append(" krbRealm: ").append(toIndentedString(krbRealm)).append("\n"); + sb.append(" krbServicePrincipalName: ").append(toIndentedString(krbServicePrincipalName)).append("\n"); + sb.append(" krbUsername: ").append(toIndentedString(krbUsername)).append("\n"); + sb.append(" path: ").append(toIndentedString(path)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces + * (except the first line). + */ + private String toIndentedString(java.lang.Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } + +} + diff --git a/src/main/java/io/argoproj/workflow/models/HDFSConfig.java b/src/main/java/io/argoproj/workflow/models/HDFSConfig.java new file mode 100644 index 00000000..7d641db0 --- /dev/null +++ b/src/main/java/io/argoproj/workflow/models/HDFSConfig.java @@ -0,0 +1,309 @@ +/* + * Argo + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: v2.4.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package io.argoproj.workflow.models; + +import java.util.Objects; +import java.util.Arrays; +import com.google.gson.TypeAdapter; +import com.google.gson.annotations.JsonAdapter; +import com.google.gson.annotations.SerializedName; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * HDFSConfig is configurations for HDFS + */ +@ApiModel(description = "HDFSConfig is configurations for HDFS") + +public class HDFSConfig { + public static final String SERIALIZED_NAME_ADDRESSES = "addresses"; + @SerializedName(SERIALIZED_NAME_ADDRESSES) + private List addresses = new ArrayList(); + + public static final String SERIALIZED_NAME_HDFS_USER = "hdfsUser"; + @SerializedName(SERIALIZED_NAME_HDFS_USER) + private String hdfsUser; + + public static final String SERIALIZED_NAME_KRB_C_CACHE_SECRET = "krbCCacheSecret"; + @SerializedName(SERIALIZED_NAME_KRB_C_CACHE_SECRET) + private io.kubernetes.client.models.V1SecretKeySelector krbCCacheSecret = null; + + public static final String SERIALIZED_NAME_KRB_CONFIG_CONFIG_MAP = "krbConfigConfigMap"; + @SerializedName(SERIALIZED_NAME_KRB_CONFIG_CONFIG_MAP) + private io.kubernetes.client.models.V1ConfigMapKeySelector krbConfigConfigMap = null; + + public static final String SERIALIZED_NAME_KRB_KEYTAB_SECRET = "krbKeytabSecret"; + @SerializedName(SERIALIZED_NAME_KRB_KEYTAB_SECRET) + private io.kubernetes.client.models.V1SecretKeySelector krbKeytabSecret = null; + + public static final String SERIALIZED_NAME_KRB_REALM = "krbRealm"; + @SerializedName(SERIALIZED_NAME_KRB_REALM) + private String krbRealm; + + public static final String SERIALIZED_NAME_KRB_SERVICE_PRINCIPAL_NAME = "krbServicePrincipalName"; + @SerializedName(SERIALIZED_NAME_KRB_SERVICE_PRINCIPAL_NAME) + private String krbServicePrincipalName; + + public static final String SERIALIZED_NAME_KRB_USERNAME = "krbUsername"; + @SerializedName(SERIALIZED_NAME_KRB_USERNAME) + private String krbUsername; + + + public HDFSConfig addresses(List addresses) { + + this.addresses = addresses; + return this; + } + + public HDFSConfig addAddressesItem(String addressesItem) { + this.addresses.add(addressesItem); + return this; + } + + /** + * Addresses is accessible addresses of HDFS name nodes + * @return addresses + **/ + @ApiModelProperty(required = true, value = "Addresses is accessible addresses of HDFS name nodes") + + public List getAddresses() { + return addresses; + } + + + public void setAddresses(List addresses) { + this.addresses = addresses; + } + + + public HDFSConfig hdfsUser(String hdfsUser) { + + this.hdfsUser = hdfsUser; + return this; + } + + /** + * HDFSUser is the user to access HDFS file system. It is ignored if either ccache or keytab is used. + * @return hdfsUser + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "HDFSUser is the user to access HDFS file system. It is ignored if either ccache or keytab is used.") + + public String getHdfsUser() { + return hdfsUser; + } + + + public void setHdfsUser(String hdfsUser) { + this.hdfsUser = hdfsUser; + } + + + public HDFSConfig krbCCacheSecret(io.kubernetes.client.models.V1SecretKeySelector krbCCacheSecret) { + + this.krbCCacheSecret = krbCCacheSecret; + return this; + } + + /** + * Get krbCCacheSecret + * @return krbCCacheSecret + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "") + + public io.kubernetes.client.models.V1SecretKeySelector getKrbCCacheSecret() { + return krbCCacheSecret; + } + + + public void setKrbCCacheSecret(io.kubernetes.client.models.V1SecretKeySelector krbCCacheSecret) { + this.krbCCacheSecret = krbCCacheSecret; + } + + + public HDFSConfig krbConfigConfigMap(io.kubernetes.client.models.V1ConfigMapKeySelector krbConfigConfigMap) { + + this.krbConfigConfigMap = krbConfigConfigMap; + return this; + } + + /** + * Get krbConfigConfigMap + * @return krbConfigConfigMap + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "") + + public io.kubernetes.client.models.V1ConfigMapKeySelector getKrbConfigConfigMap() { + return krbConfigConfigMap; + } + + + public void setKrbConfigConfigMap(io.kubernetes.client.models.V1ConfigMapKeySelector krbConfigConfigMap) { + this.krbConfigConfigMap = krbConfigConfigMap; + } + + + public HDFSConfig krbKeytabSecret(io.kubernetes.client.models.V1SecretKeySelector krbKeytabSecret) { + + this.krbKeytabSecret = krbKeytabSecret; + return this; + } + + /** + * Get krbKeytabSecret + * @return krbKeytabSecret + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "") + + public io.kubernetes.client.models.V1SecretKeySelector getKrbKeytabSecret() { + return krbKeytabSecret; + } + + + public void setKrbKeytabSecret(io.kubernetes.client.models.V1SecretKeySelector krbKeytabSecret) { + this.krbKeytabSecret = krbKeytabSecret; + } + + + public HDFSConfig krbRealm(String krbRealm) { + + this.krbRealm = krbRealm; + return this; + } + + /** + * KrbRealm is the Kerberos realm used with Kerberos keytab It must be set if keytab is used. + * @return krbRealm + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "KrbRealm is the Kerberos realm used with Kerberos keytab It must be set if keytab is used.") + + public String getKrbRealm() { + return krbRealm; + } + + + public void setKrbRealm(String krbRealm) { + this.krbRealm = krbRealm; + } + + + public HDFSConfig krbServicePrincipalName(String krbServicePrincipalName) { + + this.krbServicePrincipalName = krbServicePrincipalName; + return this; + } + + /** + * KrbServicePrincipalName is the principal name of Kerberos service It must be set if either ccache or keytab is used. + * @return krbServicePrincipalName + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "KrbServicePrincipalName is the principal name of Kerberos service It must be set if either ccache or keytab is used.") + + public String getKrbServicePrincipalName() { + return krbServicePrincipalName; + } + + + public void setKrbServicePrincipalName(String krbServicePrincipalName) { + this.krbServicePrincipalName = krbServicePrincipalName; + } + + + public HDFSConfig krbUsername(String krbUsername) { + + this.krbUsername = krbUsername; + return this; + } + + /** + * KrbUsername is the Kerberos username used with Kerberos keytab It must be set if keytab is used. + * @return krbUsername + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "KrbUsername is the Kerberos username used with Kerberos keytab It must be set if keytab is used.") + + public String getKrbUsername() { + return krbUsername; + } + + + public void setKrbUsername(String krbUsername) { + this.krbUsername = krbUsername; + } + + + @Override + public boolean equals(java.lang.Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + HDFSConfig hdFSConfig = (HDFSConfig) o; + return Objects.equals(this.addresses, hdFSConfig.addresses) && + Objects.equals(this.hdfsUser, hdFSConfig.hdfsUser) && + Objects.equals(this.krbCCacheSecret, hdFSConfig.krbCCacheSecret) && + Objects.equals(this.krbConfigConfigMap, hdFSConfig.krbConfigConfigMap) && + Objects.equals(this.krbKeytabSecret, hdFSConfig.krbKeytabSecret) && + Objects.equals(this.krbRealm, hdFSConfig.krbRealm) && + Objects.equals(this.krbServicePrincipalName, hdFSConfig.krbServicePrincipalName) && + Objects.equals(this.krbUsername, hdFSConfig.krbUsername); + } + + @Override + public int hashCode() { + return Objects.hash(addresses, hdfsUser, krbCCacheSecret, krbConfigConfigMap, krbKeytabSecret, krbRealm, krbServicePrincipalName, krbUsername); + } + + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class HDFSConfig {\n"); + sb.append(" addresses: ").append(toIndentedString(addresses)).append("\n"); + sb.append(" hdfsUser: ").append(toIndentedString(hdfsUser)).append("\n"); + sb.append(" krbCCacheSecret: ").append(toIndentedString(krbCCacheSecret)).append("\n"); + sb.append(" krbConfigConfigMap: ").append(toIndentedString(krbConfigConfigMap)).append("\n"); + sb.append(" krbKeytabSecret: ").append(toIndentedString(krbKeytabSecret)).append("\n"); + sb.append(" krbRealm: ").append(toIndentedString(krbRealm)).append("\n"); + sb.append(" krbServicePrincipalName: ").append(toIndentedString(krbServicePrincipalName)).append("\n"); + sb.append(" krbUsername: ").append(toIndentedString(krbUsername)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces + * (except the first line). + */ + private String toIndentedString(java.lang.Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } + +} + diff --git a/src/main/java/io/argoproj/workflow/models/HDFSKrbConfig.java b/src/main/java/io/argoproj/workflow/models/HDFSKrbConfig.java new file mode 100644 index 00000000..6ff89084 --- /dev/null +++ b/src/main/java/io/argoproj/workflow/models/HDFSKrbConfig.java @@ -0,0 +1,245 @@ +/* + * Argo + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: v2.4.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package io.argoproj.workflow.models; + +import java.util.Objects; +import java.util.Arrays; +import com.google.gson.TypeAdapter; +import com.google.gson.annotations.JsonAdapter; +import com.google.gson.annotations.SerializedName; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import java.io.IOException; + +/** + * HDFSKrbConfig is auth configurations for Kerberos + */ +@ApiModel(description = "HDFSKrbConfig is auth configurations for Kerberos") + +public class HDFSKrbConfig { + public static final String SERIALIZED_NAME_KRB_C_CACHE_SECRET = "krbCCacheSecret"; + @SerializedName(SERIALIZED_NAME_KRB_C_CACHE_SECRET) + private io.kubernetes.client.models.V1SecretKeySelector krbCCacheSecret = null; + + public static final String SERIALIZED_NAME_KRB_CONFIG_CONFIG_MAP = "krbConfigConfigMap"; + @SerializedName(SERIALIZED_NAME_KRB_CONFIG_CONFIG_MAP) + private io.kubernetes.client.models.V1ConfigMapKeySelector krbConfigConfigMap = null; + + public static final String SERIALIZED_NAME_KRB_KEYTAB_SECRET = "krbKeytabSecret"; + @SerializedName(SERIALIZED_NAME_KRB_KEYTAB_SECRET) + private io.kubernetes.client.models.V1SecretKeySelector krbKeytabSecret = null; + + public static final String SERIALIZED_NAME_KRB_REALM = "krbRealm"; + @SerializedName(SERIALIZED_NAME_KRB_REALM) + private String krbRealm; + + public static final String SERIALIZED_NAME_KRB_SERVICE_PRINCIPAL_NAME = "krbServicePrincipalName"; + @SerializedName(SERIALIZED_NAME_KRB_SERVICE_PRINCIPAL_NAME) + private String krbServicePrincipalName; + + public static final String SERIALIZED_NAME_KRB_USERNAME = "krbUsername"; + @SerializedName(SERIALIZED_NAME_KRB_USERNAME) + private String krbUsername; + + + public HDFSKrbConfig krbCCacheSecret(io.kubernetes.client.models.V1SecretKeySelector krbCCacheSecret) { + + this.krbCCacheSecret = krbCCacheSecret; + return this; + } + + /** + * Get krbCCacheSecret + * @return krbCCacheSecret + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "") + + public io.kubernetes.client.models.V1SecretKeySelector getKrbCCacheSecret() { + return krbCCacheSecret; + } + + + public void setKrbCCacheSecret(io.kubernetes.client.models.V1SecretKeySelector krbCCacheSecret) { + this.krbCCacheSecret = krbCCacheSecret; + } + + + public HDFSKrbConfig krbConfigConfigMap(io.kubernetes.client.models.V1ConfigMapKeySelector krbConfigConfigMap) { + + this.krbConfigConfigMap = krbConfigConfigMap; + return this; + } + + /** + * Get krbConfigConfigMap + * @return krbConfigConfigMap + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "") + + public io.kubernetes.client.models.V1ConfigMapKeySelector getKrbConfigConfigMap() { + return krbConfigConfigMap; + } + + + public void setKrbConfigConfigMap(io.kubernetes.client.models.V1ConfigMapKeySelector krbConfigConfigMap) { + this.krbConfigConfigMap = krbConfigConfigMap; + } + + + public HDFSKrbConfig krbKeytabSecret(io.kubernetes.client.models.V1SecretKeySelector krbKeytabSecret) { + + this.krbKeytabSecret = krbKeytabSecret; + return this; + } + + /** + * Get krbKeytabSecret + * @return krbKeytabSecret + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "") + + public io.kubernetes.client.models.V1SecretKeySelector getKrbKeytabSecret() { + return krbKeytabSecret; + } + + + public void setKrbKeytabSecret(io.kubernetes.client.models.V1SecretKeySelector krbKeytabSecret) { + this.krbKeytabSecret = krbKeytabSecret; + } + + + public HDFSKrbConfig krbRealm(String krbRealm) { + + this.krbRealm = krbRealm; + return this; + } + + /** + * KrbRealm is the Kerberos realm used with Kerberos keytab It must be set if keytab is used. + * @return krbRealm + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "KrbRealm is the Kerberos realm used with Kerberos keytab It must be set if keytab is used.") + + public String getKrbRealm() { + return krbRealm; + } + + + public void setKrbRealm(String krbRealm) { + this.krbRealm = krbRealm; + } + + + public HDFSKrbConfig krbServicePrincipalName(String krbServicePrincipalName) { + + this.krbServicePrincipalName = krbServicePrincipalName; + return this; + } + + /** + * KrbServicePrincipalName is the principal name of Kerberos service It must be set if either ccache or keytab is used. + * @return krbServicePrincipalName + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "KrbServicePrincipalName is the principal name of Kerberos service It must be set if either ccache or keytab is used.") + + public String getKrbServicePrincipalName() { + return krbServicePrincipalName; + } + + + public void setKrbServicePrincipalName(String krbServicePrincipalName) { + this.krbServicePrincipalName = krbServicePrincipalName; + } + + + public HDFSKrbConfig krbUsername(String krbUsername) { + + this.krbUsername = krbUsername; + return this; + } + + /** + * KrbUsername is the Kerberos username used with Kerberos keytab It must be set if keytab is used. + * @return krbUsername + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "KrbUsername is the Kerberos username used with Kerberos keytab It must be set if keytab is used.") + + public String getKrbUsername() { + return krbUsername; + } + + + public void setKrbUsername(String krbUsername) { + this.krbUsername = krbUsername; + } + + + @Override + public boolean equals(java.lang.Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + HDFSKrbConfig hdFSKrbConfig = (HDFSKrbConfig) o; + return Objects.equals(this.krbCCacheSecret, hdFSKrbConfig.krbCCacheSecret) && + Objects.equals(this.krbConfigConfigMap, hdFSKrbConfig.krbConfigConfigMap) && + Objects.equals(this.krbKeytabSecret, hdFSKrbConfig.krbKeytabSecret) && + Objects.equals(this.krbRealm, hdFSKrbConfig.krbRealm) && + Objects.equals(this.krbServicePrincipalName, hdFSKrbConfig.krbServicePrincipalName) && + Objects.equals(this.krbUsername, hdFSKrbConfig.krbUsername); + } + + @Override + public int hashCode() { + return Objects.hash(krbCCacheSecret, krbConfigConfigMap, krbKeytabSecret, krbRealm, krbServicePrincipalName, krbUsername); + } + + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class HDFSKrbConfig {\n"); + sb.append(" krbCCacheSecret: ").append(toIndentedString(krbCCacheSecret)).append("\n"); + sb.append(" krbConfigConfigMap: ").append(toIndentedString(krbConfigConfigMap)).append("\n"); + sb.append(" krbKeytabSecret: ").append(toIndentedString(krbKeytabSecret)).append("\n"); + sb.append(" krbRealm: ").append(toIndentedString(krbRealm)).append("\n"); + sb.append(" krbServicePrincipalName: ").append(toIndentedString(krbServicePrincipalName)).append("\n"); + sb.append(" krbUsername: ").append(toIndentedString(krbUsername)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces + * (except the first line). + */ + private String toIndentedString(java.lang.Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } + +} + diff --git a/src/main/java/io/argoproj/workflow/models/HTTPArtifact.java b/src/main/java/io/argoproj/workflow/models/HTTPArtifact.java new file mode 100644 index 00000000..97edd815 --- /dev/null +++ b/src/main/java/io/argoproj/workflow/models/HTTPArtifact.java @@ -0,0 +1,99 @@ +/* + * Argo + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: v2.4.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package io.argoproj.workflow.models; + +import java.util.Objects; +import java.util.Arrays; +import com.google.gson.TypeAdapter; +import com.google.gson.annotations.JsonAdapter; +import com.google.gson.annotations.SerializedName; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import java.io.IOException; + +/** + * HTTPArtifact allows an file served on HTTP to be placed as an input artifact in a container + */ +@ApiModel(description = "HTTPArtifact allows an file served on HTTP to be placed as an input artifact in a container") + +public class HTTPArtifact { + public static final String SERIALIZED_NAME_URL = "url"; + @SerializedName(SERIALIZED_NAME_URL) + private String url; + + + public HTTPArtifact url(String url) { + + this.url = url; + return this; + } + + /** + * URL of the artifact + * @return url + **/ + @ApiModelProperty(required = true, value = "URL of the artifact") + + public String getUrl() { + return url; + } + + + public void setUrl(String url) { + this.url = url; + } + + + @Override + public boolean equals(java.lang.Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + HTTPArtifact htTPArtifact = (HTTPArtifact) o; + return Objects.equals(this.url, htTPArtifact.url); + } + + @Override + public int hashCode() { + return Objects.hash(url); + } + + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class HTTPArtifact {\n"); + sb.append(" url: ").append(toIndentedString(url)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces + * (except the first line). + */ + private String toIndentedString(java.lang.Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } + +} + diff --git a/src/main/java/io/argoproj/workflow/models/Inputs.java b/src/main/java/io/argoproj/workflow/models/Inputs.java new file mode 100644 index 00000000..2bc2061e --- /dev/null +++ b/src/main/java/io/argoproj/workflow/models/Inputs.java @@ -0,0 +1,149 @@ +/* + * Argo + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: v2.4.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package io.argoproj.workflow.models; + +import java.util.Objects; +import java.util.Arrays; +import com.google.gson.TypeAdapter; +import com.google.gson.annotations.JsonAdapter; +import com.google.gson.annotations.SerializedName; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import io.argoproj.workflow.models.Artifact; +import io.argoproj.workflow.models.Parameter; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * Inputs are the mechanism for passing parameters, artifacts, volumes from one template to another + */ +@ApiModel(description = "Inputs are the mechanism for passing parameters, artifacts, volumes from one template to another") + +public class Inputs { + public static final String SERIALIZED_NAME_ARTIFACTS = "artifacts"; + @SerializedName(SERIALIZED_NAME_ARTIFACTS) + private List artifacts = null; + + public static final String SERIALIZED_NAME_PARAMETERS = "parameters"; + @SerializedName(SERIALIZED_NAME_PARAMETERS) + private List parameters = null; + + + public Inputs artifacts(List artifacts) { + + this.artifacts = artifacts; + return this; + } + + public Inputs addArtifactsItem(Artifact artifactsItem) { + if (this.artifacts == null) { + this.artifacts = new ArrayList(); + } + this.artifacts.add(artifactsItem); + return this; + } + + /** + * Artifact are a list of artifacts passed as inputs + * @return artifacts + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "Artifact are a list of artifacts passed as inputs") + + public List getArtifacts() { + return artifacts; + } + + + public void setArtifacts(List artifacts) { + this.artifacts = artifacts; + } + + + public Inputs parameters(List parameters) { + + this.parameters = parameters; + return this; + } + + public Inputs addParametersItem(Parameter parametersItem) { + if (this.parameters == null) { + this.parameters = new ArrayList(); + } + this.parameters.add(parametersItem); + return this; + } + + /** + * Parameters are a list of parameters passed as inputs + * @return parameters + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "Parameters are a list of parameters passed as inputs") + + public List getParameters() { + return parameters; + } + + + public void setParameters(List parameters) { + this.parameters = parameters; + } + + + @Override + public boolean equals(java.lang.Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + Inputs inputs = (Inputs) o; + return Objects.equals(this.artifacts, inputs.artifacts) && + Objects.equals(this.parameters, inputs.parameters); + } + + @Override + public int hashCode() { + return Objects.hash(artifacts, parameters); + } + + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class Inputs {\n"); + sb.append(" artifacts: ").append(toIndentedString(artifacts)).append("\n"); + sb.append(" parameters: ").append(toIndentedString(parameters)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces + * (except the first line). + */ + private String toIndentedString(java.lang.Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } + +} + diff --git a/src/main/java/io/argoproj/workflow/models/ItemValue.java b/src/main/java/io/argoproj/workflow/models/ItemValue.java new file mode 100644 index 00000000..533fd26c --- /dev/null +++ b/src/main/java/io/argoproj/workflow/models/ItemValue.java @@ -0,0 +1,252 @@ +/* + * Argo + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: v2.4.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package io.argoproj.workflow.models; + +import java.util.Objects; +import java.util.Arrays; +import com.google.gson.TypeAdapter; +import com.google.gson.annotations.JsonAdapter; +import com.google.gson.annotations.SerializedName; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import java.io.IOException; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * ItemValue + */ + +public class ItemValue { + public static final String SERIALIZED_NAME_BOOL_VAL = "BoolVal"; + @SerializedName(SERIALIZED_NAME_BOOL_VAL) + private Boolean boolVal; + + public static final String SERIALIZED_NAME_LIST_VAL = "ListVal"; + @SerializedName(SERIALIZED_NAME_LIST_VAL) + private List listVal = new ArrayList(); + + public static final String SERIALIZED_NAME_MAP_VAL = "MapVal"; + @SerializedName(SERIALIZED_NAME_MAP_VAL) + private Map mapVal = new HashMap(); + + public static final String SERIALIZED_NAME_NUM_VAL = "NumVal"; + @SerializedName(SERIALIZED_NAME_NUM_VAL) + private String numVal; + + public static final String SERIALIZED_NAME_STR_VAL = "StrVal"; + @SerializedName(SERIALIZED_NAME_STR_VAL) + private String strVal; + + public static final String SERIALIZED_NAME_TYPE = "Type"; + @SerializedName(SERIALIZED_NAME_TYPE) + private Integer type; + + + public ItemValue boolVal(Boolean boolVal) { + + this.boolVal = boolVal; + return this; + } + + /** + * Get boolVal + * @return boolVal + **/ + @ApiModelProperty(required = true, value = "") + + public Boolean getBoolVal() { + return boolVal; + } + + + public void setBoolVal(Boolean boolVal) { + this.boolVal = boolVal; + } + + + public ItemValue listVal(List listVal) { + + this.listVal = listVal; + return this; + } + + public ItemValue addListValItem(byte[] listValItem) { + this.listVal.add(listValItem); + return this; + } + + /** + * Get listVal + * @return listVal + **/ + @ApiModelProperty(required = true, value = "") + + public List getListVal() { + return listVal; + } + + + public void setListVal(List listVal) { + this.listVal = listVal; + } + + + public ItemValue mapVal(Map mapVal) { + + this.mapVal = mapVal; + return this; + } + + public ItemValue putMapValItem(String key, String mapValItem) { + this.mapVal.put(key, mapValItem); + return this; + } + + /** + * Get mapVal + * @return mapVal + **/ + @ApiModelProperty(required = true, value = "") + + public Map getMapVal() { + return mapVal; + } + + + public void setMapVal(Map mapVal) { + this.mapVal = mapVal; + } + + + public ItemValue numVal(String numVal) { + + this.numVal = numVal; + return this; + } + + /** + * Get numVal + * @return numVal + **/ + @ApiModelProperty(required = true, value = "") + + public String getNumVal() { + return numVal; + } + + + public void setNumVal(String numVal) { + this.numVal = numVal; + } + + + public ItemValue strVal(String strVal) { + + this.strVal = strVal; + return this; + } + + /** + * Get strVal + * @return strVal + **/ + @ApiModelProperty(required = true, value = "") + + public String getStrVal() { + return strVal; + } + + + public void setStrVal(String strVal) { + this.strVal = strVal; + } + + + public ItemValue type(Integer type) { + + this.type = type; + return this; + } + + /** + * Get type + * @return type + **/ + @ApiModelProperty(required = true, value = "") + + public Integer getType() { + return type; + } + + + public void setType(Integer type) { + this.type = type; + } + + + @Override + public boolean equals(java.lang.Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + ItemValue itemValue = (ItemValue) o; + return Objects.equals(this.boolVal, itemValue.boolVal) && + Objects.equals(this.listVal, itemValue.listVal) && + Objects.equals(this.mapVal, itemValue.mapVal) && + Objects.equals(this.numVal, itemValue.numVal) && + Objects.equals(this.strVal, itemValue.strVal) && + Objects.equals(this.type, itemValue.type); + } + + @Override + public int hashCode() { + return Objects.hash(boolVal, listVal, mapVal, numVal, strVal, type); + } + + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class ItemValue {\n"); + sb.append(" boolVal: ").append(toIndentedString(boolVal)).append("\n"); + sb.append(" listVal: ").append(toIndentedString(listVal)).append("\n"); + sb.append(" mapVal: ").append(toIndentedString(mapVal)).append("\n"); + sb.append(" numVal: ").append(toIndentedString(numVal)).append("\n"); + sb.append(" strVal: ").append(toIndentedString(strVal)).append("\n"); + sb.append(" type: ").append(toIndentedString(type)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces + * (except the first line). + */ + private String toIndentedString(java.lang.Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } + +} + diff --git a/src/main/java/io/argoproj/workflow/models/Metadata.java b/src/main/java/io/argoproj/workflow/models/Metadata.java new file mode 100644 index 00000000..2a3934e1 --- /dev/null +++ b/src/main/java/io/argoproj/workflow/models/Metadata.java @@ -0,0 +1,148 @@ +/* + * Argo + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: v2.4.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package io.argoproj.workflow.models; + +import java.util.Objects; +import java.util.Arrays; +import com.google.gson.TypeAdapter; +import com.google.gson.annotations.JsonAdapter; +import com.google.gson.annotations.SerializedName; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import java.io.IOException; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * Pod metdata + */ +@ApiModel(description = "Pod metdata") + +public class Metadata { + public static final String SERIALIZED_NAME_ANNOTATIONS = "annotations"; + @SerializedName(SERIALIZED_NAME_ANNOTATIONS) + private Map annotations = null; + + public static final String SERIALIZED_NAME_LABELS = "labels"; + @SerializedName(SERIALIZED_NAME_LABELS) + private Map labels = null; + + + public Metadata annotations(Map annotations) { + + this.annotations = annotations; + return this; + } + + public Metadata putAnnotationsItem(String key, String annotationsItem) { + if (this.annotations == null) { + this.annotations = new HashMap(); + } + this.annotations.put(key, annotationsItem); + return this; + } + + /** + * Get annotations + * @return annotations + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "") + + public Map getAnnotations() { + return annotations; + } + + + public void setAnnotations(Map annotations) { + this.annotations = annotations; + } + + + public Metadata labels(Map labels) { + + this.labels = labels; + return this; + } + + public Metadata putLabelsItem(String key, String labelsItem) { + if (this.labels == null) { + this.labels = new HashMap(); + } + this.labels.put(key, labelsItem); + return this; + } + + /** + * Get labels + * @return labels + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "") + + public Map getLabels() { + return labels; + } + + + public void setLabels(Map labels) { + this.labels = labels; + } + + + @Override + public boolean equals(java.lang.Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + Metadata metadata = (Metadata) o; + return Objects.equals(this.annotations, metadata.annotations) && + Objects.equals(this.labels, metadata.labels); + } + + @Override + public int hashCode() { + return Objects.hash(annotations, labels); + } + + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class Metadata {\n"); + sb.append(" annotations: ").append(toIndentedString(annotations)).append("\n"); + sb.append(" labels: ").append(toIndentedString(labels)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces + * (except the first line). + */ + private String toIndentedString(java.lang.Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } + +} + diff --git a/src/main/java/io/argoproj/workflow/models/NodeStatus.java b/src/main/java/io/argoproj/workflow/models/NodeStatus.java new file mode 100644 index 00000000..dc8a2144 --- /dev/null +++ b/src/main/java/io/argoproj/workflow/models/NodeStatus.java @@ -0,0 +1,669 @@ +/* + * Argo + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: v2.4.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package io.argoproj.workflow.models; + +import java.util.Objects; +import java.util.Arrays; +import com.google.gson.TypeAdapter; +import com.google.gson.annotations.JsonAdapter; +import com.google.gson.annotations.SerializedName; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import io.argoproj.workflow.models.Inputs; +import io.argoproj.workflow.models.IoK8sApimachineryPkgApisMetaV1Time; +import io.argoproj.workflow.models.Outputs; +import io.argoproj.workflow.models.TemplateRef; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * NodeStatus contains status information about an individual node in the workflow + */ +@ApiModel(description = "NodeStatus contains status information about an individual node in the workflow") + +public class NodeStatus { + public static final String SERIALIZED_NAME_BOUNDARY_I_D = "boundaryID"; + @SerializedName(SERIALIZED_NAME_BOUNDARY_I_D) + private String boundaryID; + + public static final String SERIALIZED_NAME_CHILDREN = "children"; + @SerializedName(SERIALIZED_NAME_CHILDREN) + private List children = null; + + public static final String SERIALIZED_NAME_DAEMONED = "daemoned"; + @SerializedName(SERIALIZED_NAME_DAEMONED) + private Boolean daemoned; + + public static final String SERIALIZED_NAME_DISPLAY_NAME = "displayName"; + @SerializedName(SERIALIZED_NAME_DISPLAY_NAME) + private String displayName; + + public static final String SERIALIZED_NAME_FINISHED_AT = "finishedAt"; + @SerializedName(SERIALIZED_NAME_FINISHED_AT) + private IoK8sApimachineryPkgApisMetaV1Time finishedAt = null; + + public static final String SERIALIZED_NAME_ID = "id"; + @SerializedName(SERIALIZED_NAME_ID) + private String id; + + public static final String SERIALIZED_NAME_INPUTS = "inputs"; + @SerializedName(SERIALIZED_NAME_INPUTS) + private Inputs inputs; + + public static final String SERIALIZED_NAME_MESSAGE = "message"; + @SerializedName(SERIALIZED_NAME_MESSAGE) + private String message; + + public static final String SERIALIZED_NAME_NAME = "name"; + @SerializedName(SERIALIZED_NAME_NAME) + private String name; + + public static final String SERIALIZED_NAME_OUTBOUND_NODES = "outboundNodes"; + @SerializedName(SERIALIZED_NAME_OUTBOUND_NODES) + private List outboundNodes = null; + + public static final String SERIALIZED_NAME_OUTPUTS = "outputs"; + @SerializedName(SERIALIZED_NAME_OUTPUTS) + private Outputs outputs; + + public static final String SERIALIZED_NAME_PHASE = "phase"; + @SerializedName(SERIALIZED_NAME_PHASE) + private String phase; + + public static final String SERIALIZED_NAME_POD_I_P = "podIP"; + @SerializedName(SERIALIZED_NAME_POD_I_P) + private String podIP; + + public static final String SERIALIZED_NAME_STARTED_AT = "startedAt"; + @SerializedName(SERIALIZED_NAME_STARTED_AT) + private IoK8sApimachineryPkgApisMetaV1Time startedAt = null; + + public static final String SERIALIZED_NAME_STORED_TEMPLATE_I_D = "storedTemplateID"; + @SerializedName(SERIALIZED_NAME_STORED_TEMPLATE_I_D) + private String storedTemplateID; + + public static final String SERIALIZED_NAME_TEMPLATE_NAME = "templateName"; + @SerializedName(SERIALIZED_NAME_TEMPLATE_NAME) + private String templateName; + + public static final String SERIALIZED_NAME_TEMPLATE_REF = "templateRef"; + @SerializedName(SERIALIZED_NAME_TEMPLATE_REF) + private TemplateRef templateRef; + + public static final String SERIALIZED_NAME_TEMPLATE_SCOPE = "templateScope"; + @SerializedName(SERIALIZED_NAME_TEMPLATE_SCOPE) + private String templateScope; + + public static final String SERIALIZED_NAME_TYPE = "type"; + @SerializedName(SERIALIZED_NAME_TYPE) + private String type; + + public static final String SERIALIZED_NAME_WORKFLOW_TEMPLATE_NAME = "workflowTemplateName"; + @SerializedName(SERIALIZED_NAME_WORKFLOW_TEMPLATE_NAME) + private String workflowTemplateName; + + + public NodeStatus boundaryID(String boundaryID) { + + this.boundaryID = boundaryID; + return this; + } + + /** + * BoundaryID indicates the node ID of the associated template root node in which this node belongs to + * @return boundaryID + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "BoundaryID indicates the node ID of the associated template root node in which this node belongs to") + + public String getBoundaryID() { + return boundaryID; + } + + + public void setBoundaryID(String boundaryID) { + this.boundaryID = boundaryID; + } + + + public NodeStatus children(List children) { + + this.children = children; + return this; + } + + public NodeStatus addChildrenItem(String childrenItem) { + if (this.children == null) { + this.children = new ArrayList(); + } + this.children.add(childrenItem); + return this; + } + + /** + * Children is a list of child node IDs + * @return children + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "Children is a list of child node IDs") + + public List getChildren() { + return children; + } + + + public void setChildren(List children) { + this.children = children; + } + + + public NodeStatus daemoned(Boolean daemoned) { + + this.daemoned = daemoned; + return this; + } + + /** + * Daemoned tracks whether or not this node was daemoned and need to be terminated + * @return daemoned + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "Daemoned tracks whether or not this node was daemoned and need to be terminated") + + public Boolean getDaemoned() { + return daemoned; + } + + + public void setDaemoned(Boolean daemoned) { + this.daemoned = daemoned; + } + + + public NodeStatus displayName(String displayName) { + + this.displayName = displayName; + return this; + } + + /** + * DisplayName is a human readable representation of the node. Unique within a template boundary + * @return displayName + **/ + @ApiModelProperty(required = true, value = "DisplayName is a human readable representation of the node. Unique within a template boundary") + + public String getDisplayName() { + return displayName; + } + + + public void setDisplayName(String displayName) { + this.displayName = displayName; + } + + + public NodeStatus finishedAt(IoK8sApimachineryPkgApisMetaV1Time finishedAt) { + + this.finishedAt = finishedAt; + return this; + } + + /** + * Get finishedAt + * @return finishedAt + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "") + + public IoK8sApimachineryPkgApisMetaV1Time getFinishedAt() { + return finishedAt; + } + + + public void setFinishedAt(IoK8sApimachineryPkgApisMetaV1Time finishedAt) { + this.finishedAt = finishedAt; + } + + + public NodeStatus id(String id) { + + this.id = id; + return this; + } + + /** + * 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 + * @return id + **/ + @ApiModelProperty(required = true, value = "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") + + public String getId() { + return id; + } + + + public void setId(String id) { + this.id = id; + } + + + public NodeStatus inputs(Inputs inputs) { + + this.inputs = inputs; + return this; + } + + /** + * Get inputs + * @return inputs + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "") + + public Inputs getInputs() { + return inputs; + } + + + public void setInputs(Inputs inputs) { + this.inputs = inputs; + } + + + public NodeStatus message(String message) { + + this.message = message; + return this; + } + + /** + * A human readable message indicating details about why the node is in this condition. + * @return message + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "A human readable message indicating details about why the node is in this condition.") + + public String getMessage() { + return message; + } + + + public void setMessage(String message) { + this.message = message; + } + + + public NodeStatus name(String name) { + + this.name = name; + return this; + } + + /** + * Name is unique name in the node tree used to generate the node ID + * @return name + **/ + @ApiModelProperty(required = true, value = "Name is unique name in the node tree used to generate the node ID") + + public String getName() { + return name; + } + + + public void setName(String name) { + this.name = name; + } + + + public NodeStatus outboundNodes(List outboundNodes) { + + this.outboundNodes = outboundNodes; + return this; + } + + public NodeStatus addOutboundNodesItem(String outboundNodesItem) { + if (this.outboundNodes == null) { + this.outboundNodes = new ArrayList(); + } + this.outboundNodes.add(outboundNodesItem); + return this; + } + + /** + * 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. + * @return outboundNodes + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "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.") + + public List getOutboundNodes() { + return outboundNodes; + } + + + public void setOutboundNodes(List outboundNodes) { + this.outboundNodes = outboundNodes; + } + + + public NodeStatus outputs(Outputs outputs) { + + this.outputs = outputs; + return this; + } + + /** + * Get outputs + * @return outputs + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "") + + public Outputs getOutputs() { + return outputs; + } + + + public void setOutputs(Outputs outputs) { + this.outputs = outputs; + } + + + public NodeStatus phase(String phase) { + + this.phase = phase; + return this; + } + + /** + * Phase a simple, high-level summary of where the node is in its lifecycle. Can be used as a state machine. + * @return phase + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "Phase a simple, high-level summary of where the node is in its lifecycle. Can be used as a state machine.") + + public String getPhase() { + return phase; + } + + + public void setPhase(String phase) { + this.phase = phase; + } + + + public NodeStatus podIP(String podIP) { + + this.podIP = podIP; + return this; + } + + /** + * PodIP captures the IP of the pod for daemoned steps + * @return podIP + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "PodIP captures the IP of the pod for daemoned steps") + + public String getPodIP() { + return podIP; + } + + + public void setPodIP(String podIP) { + this.podIP = podIP; + } + + + public NodeStatus startedAt(IoK8sApimachineryPkgApisMetaV1Time startedAt) { + + this.startedAt = startedAt; + return this; + } + + /** + * Get startedAt + * @return startedAt + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "") + + public IoK8sApimachineryPkgApisMetaV1Time getStartedAt() { + return startedAt; + } + + + public void setStartedAt(IoK8sApimachineryPkgApisMetaV1Time startedAt) { + this.startedAt = startedAt; + } + + + public NodeStatus storedTemplateID(String storedTemplateID) { + + this.storedTemplateID = storedTemplateID; + return this; + } + + /** + * StoredTemplateID is the ID of stored template. DEPRECATED: This value is not used anymore. + * @return storedTemplateID + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "StoredTemplateID is the ID of stored template. DEPRECATED: This value is not used anymore.") + + public String getStoredTemplateID() { + return storedTemplateID; + } + + + public void setStoredTemplateID(String storedTemplateID) { + this.storedTemplateID = storedTemplateID; + } + + + public NodeStatus templateName(String templateName) { + + this.templateName = templateName; + return this; + } + + /** + * TemplateName is the template name which this node corresponds to. Not applicable to virtual nodes (e.g. Retry, StepGroup) + * @return templateName + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "TemplateName is the template name which this node corresponds to. Not applicable to virtual nodes (e.g. Retry, StepGroup)") + + public String getTemplateName() { + return templateName; + } + + + public void setTemplateName(String templateName) { + this.templateName = templateName; + } + + + public NodeStatus templateRef(TemplateRef templateRef) { + + this.templateRef = templateRef; + return this; + } + + /** + * Get templateRef + * @return templateRef + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "") + + public TemplateRef getTemplateRef() { + return templateRef; + } + + + public void setTemplateRef(TemplateRef templateRef) { + this.templateRef = templateRef; + } + + + public NodeStatus templateScope(String templateScope) { + + this.templateScope = templateScope; + return this; + } + + /** + * TemplateScope is the template scope in which the template of this node was retrieved. + * @return templateScope + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "TemplateScope is the template scope in which the template of this node was retrieved.") + + public String getTemplateScope() { + return templateScope; + } + + + public void setTemplateScope(String templateScope) { + this.templateScope = templateScope; + } + + + public NodeStatus type(String type) { + + this.type = type; + return this; + } + + /** + * Type indicates type of node + * @return type + **/ + @ApiModelProperty(required = true, value = "Type indicates type of node") + + public String getType() { + return type; + } + + + public void setType(String type) { + this.type = type; + } + + + public NodeStatus workflowTemplateName(String workflowTemplateName) { + + this.workflowTemplateName = workflowTemplateName; + return this; + } + + /** + * WorkflowTemplateName is the WorkflowTemplate resource name on which the resolved template of this node is retrieved. DEPRECATED: This value is not used anymore. + * @return workflowTemplateName + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "WorkflowTemplateName is the WorkflowTemplate resource name on which the resolved template of this node is retrieved. DEPRECATED: This value is not used anymore.") + + public String getWorkflowTemplateName() { + return workflowTemplateName; + } + + + public void setWorkflowTemplateName(String workflowTemplateName) { + this.workflowTemplateName = workflowTemplateName; + } + + + @Override + public boolean equals(java.lang.Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + NodeStatus nodeStatus = (NodeStatus) o; + return Objects.equals(this.boundaryID, nodeStatus.boundaryID) && + Objects.equals(this.children, nodeStatus.children) && + Objects.equals(this.daemoned, nodeStatus.daemoned) && + Objects.equals(this.displayName, nodeStatus.displayName) && + Objects.equals(this.finishedAt, nodeStatus.finishedAt) && + Objects.equals(this.id, nodeStatus.id) && + Objects.equals(this.inputs, nodeStatus.inputs) && + Objects.equals(this.message, nodeStatus.message) && + Objects.equals(this.name, nodeStatus.name) && + Objects.equals(this.outboundNodes, nodeStatus.outboundNodes) && + Objects.equals(this.outputs, nodeStatus.outputs) && + Objects.equals(this.phase, nodeStatus.phase) && + Objects.equals(this.podIP, nodeStatus.podIP) && + Objects.equals(this.startedAt, nodeStatus.startedAt) && + Objects.equals(this.storedTemplateID, nodeStatus.storedTemplateID) && + Objects.equals(this.templateName, nodeStatus.templateName) && + Objects.equals(this.templateRef, nodeStatus.templateRef) && + Objects.equals(this.templateScope, nodeStatus.templateScope) && + Objects.equals(this.type, nodeStatus.type) && + Objects.equals(this.workflowTemplateName, nodeStatus.workflowTemplateName); + } + + @Override + public int hashCode() { + return Objects.hash(boundaryID, children, daemoned, displayName, finishedAt, id, inputs, message, name, outboundNodes, outputs, phase, podIP, startedAt, storedTemplateID, templateName, templateRef, templateScope, type, workflowTemplateName); + } + + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class NodeStatus {\n"); + sb.append(" boundaryID: ").append(toIndentedString(boundaryID)).append("\n"); + sb.append(" children: ").append(toIndentedString(children)).append("\n"); + sb.append(" daemoned: ").append(toIndentedString(daemoned)).append("\n"); + sb.append(" displayName: ").append(toIndentedString(displayName)).append("\n"); + sb.append(" finishedAt: ").append(toIndentedString(finishedAt)).append("\n"); + sb.append(" id: ").append(toIndentedString(id)).append("\n"); + sb.append(" inputs: ").append(toIndentedString(inputs)).append("\n"); + sb.append(" message: ").append(toIndentedString(message)).append("\n"); + sb.append(" name: ").append(toIndentedString(name)).append("\n"); + sb.append(" outboundNodes: ").append(toIndentedString(outboundNodes)).append("\n"); + sb.append(" outputs: ").append(toIndentedString(outputs)).append("\n"); + sb.append(" phase: ").append(toIndentedString(phase)).append("\n"); + sb.append(" podIP: ").append(toIndentedString(podIP)).append("\n"); + sb.append(" startedAt: ").append(toIndentedString(startedAt)).append("\n"); + sb.append(" storedTemplateID: ").append(toIndentedString(storedTemplateID)).append("\n"); + sb.append(" templateName: ").append(toIndentedString(templateName)).append("\n"); + sb.append(" templateRef: ").append(toIndentedString(templateRef)).append("\n"); + sb.append(" templateScope: ").append(toIndentedString(templateScope)).append("\n"); + sb.append(" type: ").append(toIndentedString(type)).append("\n"); + sb.append(" workflowTemplateName: ").append(toIndentedString(workflowTemplateName)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces + * (except the first line). + */ + private String toIndentedString(java.lang.Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } + +} + diff --git a/src/main/java/io/argoproj/workflow/models/Outputs.java b/src/main/java/io/argoproj/workflow/models/Outputs.java new file mode 100644 index 00000000..f5ffe958 --- /dev/null +++ b/src/main/java/io/argoproj/workflow/models/Outputs.java @@ -0,0 +1,178 @@ +/* + * Argo + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: v2.4.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package io.argoproj.workflow.models; + +import java.util.Objects; +import java.util.Arrays; +import com.google.gson.TypeAdapter; +import com.google.gson.annotations.JsonAdapter; +import com.google.gson.annotations.SerializedName; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import io.argoproj.workflow.models.Artifact; +import io.argoproj.workflow.models.Parameter; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * Outputs hold parameters, artifacts, and results from a step + */ +@ApiModel(description = "Outputs hold parameters, artifacts, and results from a step") + +public class Outputs { + public static final String SERIALIZED_NAME_ARTIFACTS = "artifacts"; + @SerializedName(SERIALIZED_NAME_ARTIFACTS) + private List artifacts = null; + + public static final String SERIALIZED_NAME_PARAMETERS = "parameters"; + @SerializedName(SERIALIZED_NAME_PARAMETERS) + private List parameters = null; + + public static final String SERIALIZED_NAME_RESULT = "result"; + @SerializedName(SERIALIZED_NAME_RESULT) + private String result; + + + public Outputs artifacts(List artifacts) { + + this.artifacts = artifacts; + return this; + } + + public Outputs addArtifactsItem(Artifact artifactsItem) { + if (this.artifacts == null) { + this.artifacts = new ArrayList(); + } + this.artifacts.add(artifactsItem); + return this; + } + + /** + * Artifacts holds the list of output artifacts produced by a step + * @return artifacts + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "Artifacts holds the list of output artifacts produced by a step") + + public List getArtifacts() { + return artifacts; + } + + + public void setArtifacts(List artifacts) { + this.artifacts = artifacts; + } + + + public Outputs parameters(List parameters) { + + this.parameters = parameters; + return this; + } + + public Outputs addParametersItem(Parameter parametersItem) { + if (this.parameters == null) { + this.parameters = new ArrayList(); + } + this.parameters.add(parametersItem); + return this; + } + + /** + * Parameters holds the list of output parameters produced by a step + * @return parameters + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "Parameters holds the list of output parameters produced by a step") + + public List getParameters() { + return parameters; + } + + + public void setParameters(List parameters) { + this.parameters = parameters; + } + + + public Outputs result(String result) { + + this.result = result; + return this; + } + + /** + * Result holds the result (stdout) of a script template + * @return result + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "Result holds the result (stdout) of a script template") + + public String getResult() { + return result; + } + + + public void setResult(String result) { + this.result = result; + } + + + @Override + public boolean equals(java.lang.Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + Outputs outputs = (Outputs) o; + return Objects.equals(this.artifacts, outputs.artifacts) && + Objects.equals(this.parameters, outputs.parameters) && + Objects.equals(this.result, outputs.result); + } + + @Override + public int hashCode() { + return Objects.hash(artifacts, parameters, result); + } + + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class Outputs {\n"); + sb.append(" artifacts: ").append(toIndentedString(artifacts)).append("\n"); + sb.append(" parameters: ").append(toIndentedString(parameters)).append("\n"); + sb.append(" result: ").append(toIndentedString(result)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces + * (except the first line). + */ + private String toIndentedString(java.lang.Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } + +} + diff --git a/src/main/java/io/argoproj/workflow/models/ParallelSteps.java b/src/main/java/io/argoproj/workflow/models/ParallelSteps.java new file mode 100644 index 00000000..90d5bce9 --- /dev/null +++ b/src/main/java/io/argoproj/workflow/models/ParallelSteps.java @@ -0,0 +1,106 @@ +/* + * Argo + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: v2.4.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package io.argoproj.workflow.models; + +import java.util.Objects; +import java.util.Arrays; +import com.google.gson.TypeAdapter; +import com.google.gson.annotations.JsonAdapter; +import com.google.gson.annotations.SerializedName; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import io.argoproj.workflow.models.WorkflowStep; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * ParallelSteps + */ + +public class ParallelSteps { + public static final String SERIALIZED_NAME_STEPS = "Steps"; + @SerializedName(SERIALIZED_NAME_STEPS) + private List steps = new ArrayList(); + + + public ParallelSteps steps(List steps) { + + this.steps = steps; + return this; + } + + public ParallelSteps addStepsItem(WorkflowStep stepsItem) { + this.steps.add(stepsItem); + return this; + } + + /** + * Get steps + * @return steps + **/ + @ApiModelProperty(required = true, value = "") + + public List getSteps() { + return steps; + } + + + public void setSteps(List steps) { + this.steps = steps; + } + + + @Override + public boolean equals(java.lang.Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + ParallelSteps parallelSteps = (ParallelSteps) o; + return Objects.equals(this.steps, parallelSteps.steps); + } + + @Override + public int hashCode() { + return Objects.hash(steps); + } + + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class ParallelSteps {\n"); + sb.append(" steps: ").append(toIndentedString(steps)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces + * (except the first line). + */ + private String toIndentedString(java.lang.Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } + +} + diff --git a/src/main/java/io/argoproj/workflow/models/Parameter.java b/src/main/java/io/argoproj/workflow/models/Parameter.java new file mode 100644 index 00000000..cbc0f875 --- /dev/null +++ b/src/main/java/io/argoproj/workflow/models/Parameter.java @@ -0,0 +1,216 @@ +/* + * Argo + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: v2.4.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package io.argoproj.workflow.models; + +import java.util.Objects; +import java.util.Arrays; +import com.google.gson.TypeAdapter; +import com.google.gson.annotations.JsonAdapter; +import com.google.gson.annotations.SerializedName; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import io.argoproj.workflow.models.ValueFrom; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import java.io.IOException; + +/** + * Parameter indicate a passed string parameter to a service template with an optional default value + */ +@ApiModel(description = "Parameter indicate a passed string parameter to a service template with an optional default value") + +public class Parameter { + public static final String SERIALIZED_NAME_DEFAULT = "default"; + @SerializedName(SERIALIZED_NAME_DEFAULT) + private String _default; + + public static final String SERIALIZED_NAME_GLOBAL_NAME = "globalName"; + @SerializedName(SERIALIZED_NAME_GLOBAL_NAME) + private String globalName; + + public static final String SERIALIZED_NAME_NAME = "name"; + @SerializedName(SERIALIZED_NAME_NAME) + private String name; + + public static final String SERIALIZED_NAME_VALUE = "value"; + @SerializedName(SERIALIZED_NAME_VALUE) + private String value; + + public static final String SERIALIZED_NAME_VALUE_FROM = "valueFrom"; + @SerializedName(SERIALIZED_NAME_VALUE_FROM) + private ValueFrom valueFrom; + + + public Parameter _default(String _default) { + + this._default = _default; + return this; + } + + /** + * Default is the default value to use for an input parameter if a value was not supplied + * @return _default + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "Default is the default value to use for an input parameter if a value was not supplied") + + public String getDefault() { + return _default; + } + + + public void setDefault(String _default) { + this._default = _default; + } + + + public Parameter globalName(String globalName) { + + this.globalName = globalName; + return this; + } + + /** + * GlobalName exports an output parameter to the global scope, making it available as '{{workflow.outputs.parameters.XXXX}} and in workflow.status.outputs.parameters + * @return globalName + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "GlobalName exports an output parameter to the global scope, making it available as '{{workflow.outputs.parameters.XXXX}} and in workflow.status.outputs.parameters") + + public String getGlobalName() { + return globalName; + } + + + public void setGlobalName(String globalName) { + this.globalName = globalName; + } + + + public Parameter name(String name) { + + this.name = name; + return this; + } + + /** + * Name is the parameter name + * @return name + **/ + @ApiModelProperty(required = true, value = "Name is the parameter name") + + public String getName() { + return name; + } + + + public void setName(String name) { + this.name = name; + } + + + public Parameter value(String value) { + + this.value = value; + return this; + } + + /** + * Value is the literal value to use for the parameter. If specified in the context of an input parameter, the value takes precedence over any passed values + * @return value + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "Value is the literal value to use for the parameter. If specified in the context of an input parameter, the value takes precedence over any passed values") + + public String getValue() { + return value; + } + + + public void setValue(String value) { + this.value = value; + } + + + public Parameter valueFrom(ValueFrom valueFrom) { + + this.valueFrom = valueFrom; + return this; + } + + /** + * Get valueFrom + * @return valueFrom + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "") + + public ValueFrom getValueFrom() { + return valueFrom; + } + + + public void setValueFrom(ValueFrom valueFrom) { + this.valueFrom = valueFrom; + } + + + @Override + public boolean equals(java.lang.Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + Parameter parameter = (Parameter) o; + return Objects.equals(this._default, parameter._default) && + Objects.equals(this.globalName, parameter.globalName) && + Objects.equals(this.name, parameter.name) && + Objects.equals(this.value, parameter.value) && + Objects.equals(this.valueFrom, parameter.valueFrom); + } + + @Override + public int hashCode() { + return Objects.hash(_default, globalName, name, value, valueFrom); + } + + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class Parameter {\n"); + sb.append(" _default: ").append(toIndentedString(_default)).append("\n"); + sb.append(" globalName: ").append(toIndentedString(globalName)).append("\n"); + sb.append(" name: ").append(toIndentedString(name)).append("\n"); + sb.append(" value: ").append(toIndentedString(value)).append("\n"); + sb.append(" valueFrom: ").append(toIndentedString(valueFrom)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces + * (except the first line). + */ + private String toIndentedString(java.lang.Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } + +} + diff --git a/src/main/java/io/argoproj/workflow/models/PodGC.java b/src/main/java/io/argoproj/workflow/models/PodGC.java new file mode 100644 index 00000000..818002bd --- /dev/null +++ b/src/main/java/io/argoproj/workflow/models/PodGC.java @@ -0,0 +1,100 @@ +/* + * Argo + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: v2.4.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package io.argoproj.workflow.models; + +import java.util.Objects; +import java.util.Arrays; +import com.google.gson.TypeAdapter; +import com.google.gson.annotations.JsonAdapter; +import com.google.gson.annotations.SerializedName; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import java.io.IOException; + +/** + * PodGC describes how to delete completed pods as they complete + */ +@ApiModel(description = "PodGC describes how to delete completed pods as they complete") + +public class PodGC { + public static final String SERIALIZED_NAME_STRATEGY = "strategy"; + @SerializedName(SERIALIZED_NAME_STRATEGY) + private String strategy; + + + public PodGC strategy(String strategy) { + + this.strategy = strategy; + return this; + } + + /** + * Get strategy + * @return strategy + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "") + + public String getStrategy() { + return strategy; + } + + + public void setStrategy(String strategy) { + this.strategy = strategy; + } + + + @Override + public boolean equals(java.lang.Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + PodGC podGC = (PodGC) o; + return Objects.equals(this.strategy, podGC.strategy); + } + + @Override + public int hashCode() { + return Objects.hash(strategy); + } + + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class PodGC {\n"); + sb.append(" strategy: ").append(toIndentedString(strategy)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces + * (except the first line). + */ + private String toIndentedString(java.lang.Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } + +} + diff --git a/src/main/java/io/argoproj/workflow/models/RawArtifact.java b/src/main/java/io/argoproj/workflow/models/RawArtifact.java new file mode 100644 index 00000000..a9167109 --- /dev/null +++ b/src/main/java/io/argoproj/workflow/models/RawArtifact.java @@ -0,0 +1,99 @@ +/* + * Argo + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: v2.4.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package io.argoproj.workflow.models; + +import java.util.Objects; +import java.util.Arrays; +import com.google.gson.TypeAdapter; +import com.google.gson.annotations.JsonAdapter; +import com.google.gson.annotations.SerializedName; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import java.io.IOException; + +/** + * RawArtifact allows raw string content to be placed as an artifact in a container + */ +@ApiModel(description = "RawArtifact allows raw string content to be placed as an artifact in a container") + +public class RawArtifact { + public static final String SERIALIZED_NAME_DATA = "data"; + @SerializedName(SERIALIZED_NAME_DATA) + private String data; + + + public RawArtifact data(String data) { + + this.data = data; + return this; + } + + /** + * Data is the string contents of the artifact + * @return data + **/ + @ApiModelProperty(required = true, value = "Data is the string contents of the artifact") + + public String getData() { + return data; + } + + + public void setData(String data) { + this.data = data; + } + + + @Override + public boolean equals(java.lang.Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + RawArtifact rawArtifact = (RawArtifact) o; + return Objects.equals(this.data, rawArtifact.data); + } + + @Override + public int hashCode() { + return Objects.hash(data); + } + + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class RawArtifact {\n"); + sb.append(" data: ").append(toIndentedString(data)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces + * (except the first line). + */ + private String toIndentedString(java.lang.Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } + +} + diff --git a/src/main/java/io/argoproj/workflow/models/ResourceTemplate.java b/src/main/java/io/argoproj/workflow/models/ResourceTemplate.java new file mode 100644 index 00000000..2316a158 --- /dev/null +++ b/src/main/java/io/argoproj/workflow/models/ResourceTemplate.java @@ -0,0 +1,243 @@ +/* + * Argo + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: v2.4.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package io.argoproj.workflow.models; + +import java.util.Objects; +import java.util.Arrays; +import com.google.gson.TypeAdapter; +import com.google.gson.annotations.JsonAdapter; +import com.google.gson.annotations.SerializedName; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import java.io.IOException; + +/** + * ResourceTemplate is a template subtype to manipulate kubernetes resources + */ +@ApiModel(description = "ResourceTemplate is a template subtype to manipulate kubernetes resources") + +public class ResourceTemplate { + public static final String SERIALIZED_NAME_ACTION = "action"; + @SerializedName(SERIALIZED_NAME_ACTION) + private String action; + + public static final String SERIALIZED_NAME_FAILURE_CONDITION = "failureCondition"; + @SerializedName(SERIALIZED_NAME_FAILURE_CONDITION) + private String failureCondition; + + public static final String SERIALIZED_NAME_MANIFEST = "manifest"; + @SerializedName(SERIALIZED_NAME_MANIFEST) + private String manifest; + + public static final String SERIALIZED_NAME_MERGE_STRATEGY = "mergeStrategy"; + @SerializedName(SERIALIZED_NAME_MERGE_STRATEGY) + private String mergeStrategy; + + public static final String SERIALIZED_NAME_SET_OWNER_REFERENCE = "setOwnerReference"; + @SerializedName(SERIALIZED_NAME_SET_OWNER_REFERENCE) + private Boolean setOwnerReference; + + public static final String SERIALIZED_NAME_SUCCESS_CONDITION = "successCondition"; + @SerializedName(SERIALIZED_NAME_SUCCESS_CONDITION) + private String successCondition; + + + public ResourceTemplate action(String action) { + + this.action = action; + return this; + } + + /** + * Action is the action to perform to the resource. Must be one of: get, create, apply, delete, replace, patch + * @return action + **/ + @ApiModelProperty(required = true, value = "Action is the action to perform to the resource. Must be one of: get, create, apply, delete, replace, patch") + + public String getAction() { + return action; + } + + + public void setAction(String action) { + this.action = action; + } + + + public ResourceTemplate failureCondition(String failureCondition) { + + this.failureCondition = failureCondition; + return this; + } + + /** + * FailureCondition is a label selector expression which describes the conditions of the k8s resource in which the step was considered failed + * @return failureCondition + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "FailureCondition is a label selector expression which describes the conditions of the k8s resource in which the step was considered failed") + + public String getFailureCondition() { + return failureCondition; + } + + + public void setFailureCondition(String failureCondition) { + this.failureCondition = failureCondition; + } + + + public ResourceTemplate manifest(String manifest) { + + this.manifest = manifest; + return this; + } + + /** + * Manifest contains the kubernetes manifest + * @return manifest + **/ + @ApiModelProperty(required = true, value = "Manifest contains the kubernetes manifest") + + public String getManifest() { + return manifest; + } + + + public void setManifest(String manifest) { + this.manifest = manifest; + } + + + public ResourceTemplate mergeStrategy(String mergeStrategy) { + + this.mergeStrategy = mergeStrategy; + return this; + } + + /** + * MergeStrategy is the strategy used to merge a patch. It defaults to \"strategic\" Must be one of: strategic, merge, json + * @return mergeStrategy + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "MergeStrategy is the strategy used to merge a patch. It defaults to \"strategic\" Must be one of: strategic, merge, json") + + public String getMergeStrategy() { + return mergeStrategy; + } + + + public void setMergeStrategy(String mergeStrategy) { + this.mergeStrategy = mergeStrategy; + } + + + public ResourceTemplate setOwnerReference(Boolean setOwnerReference) { + + this.setOwnerReference = setOwnerReference; + return this; + } + + /** + * SetOwnerReference sets the reference to the workflow on the OwnerReference of generated resource. + * @return setOwnerReference + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "SetOwnerReference sets the reference to the workflow on the OwnerReference of generated resource.") + + public Boolean getSetOwnerReference() { + return setOwnerReference; + } + + + public void setSetOwnerReference(Boolean setOwnerReference) { + this.setOwnerReference = setOwnerReference; + } + + + public ResourceTemplate successCondition(String successCondition) { + + this.successCondition = successCondition; + return this; + } + + /** + * SuccessCondition is a label selector expression which describes the conditions of the k8s resource in which it is acceptable to proceed to the following step + * @return successCondition + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "SuccessCondition is a label selector expression which describes the conditions of the k8s resource in which it is acceptable to proceed to the following step") + + public String getSuccessCondition() { + return successCondition; + } + + + public void setSuccessCondition(String successCondition) { + this.successCondition = successCondition; + } + + + @Override + public boolean equals(java.lang.Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + ResourceTemplate resourceTemplate = (ResourceTemplate) o; + return Objects.equals(this.action, resourceTemplate.action) && + Objects.equals(this.failureCondition, resourceTemplate.failureCondition) && + Objects.equals(this.manifest, resourceTemplate.manifest) && + Objects.equals(this.mergeStrategy, resourceTemplate.mergeStrategy) && + Objects.equals(this.setOwnerReference, resourceTemplate.setOwnerReference) && + Objects.equals(this.successCondition, resourceTemplate.successCondition); + } + + @Override + public int hashCode() { + return Objects.hash(action, failureCondition, manifest, mergeStrategy, setOwnerReference, successCondition); + } + + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class ResourceTemplate {\n"); + sb.append(" action: ").append(toIndentedString(action)).append("\n"); + sb.append(" failureCondition: ").append(toIndentedString(failureCondition)).append("\n"); + sb.append(" manifest: ").append(toIndentedString(manifest)).append("\n"); + sb.append(" mergeStrategy: ").append(toIndentedString(mergeStrategy)).append("\n"); + sb.append(" setOwnerReference: ").append(toIndentedString(setOwnerReference)).append("\n"); + sb.append(" successCondition: ").append(toIndentedString(successCondition)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces + * (except the first line). + */ + private String toIndentedString(java.lang.Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } + +} + diff --git a/src/main/java/io/argoproj/workflow/models/RetryStrategy.java b/src/main/java/io/argoproj/workflow/models/RetryStrategy.java new file mode 100644 index 00000000..5abea88a --- /dev/null +++ b/src/main/java/io/argoproj/workflow/models/RetryStrategy.java @@ -0,0 +1,159 @@ +/* + * Argo + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: v2.4.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package io.argoproj.workflow.models; + +import java.util.Objects; +import java.util.Arrays; +import com.google.gson.TypeAdapter; +import com.google.gson.annotations.JsonAdapter; +import com.google.gson.annotations.SerializedName; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import io.argoproj.workflow.models.Backoff; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import java.io.IOException; + +/** + * RetryStrategy provides controls on how to retry a workflow step + */ +@ApiModel(description = "RetryStrategy provides controls on how to retry a workflow step") + +public class RetryStrategy { + public static final String SERIALIZED_NAME_BACKOFF = "backoff"; + @SerializedName(SERIALIZED_NAME_BACKOFF) + private Backoff backoff; + + public static final String SERIALIZED_NAME_LIMIT = "limit"; + @SerializedName(SERIALIZED_NAME_LIMIT) + private Integer limit; + + public static final String SERIALIZED_NAME_RETRY_POLICY = "retryPolicy"; + @SerializedName(SERIALIZED_NAME_RETRY_POLICY) + private String retryPolicy; + + + public RetryStrategy backoff(Backoff backoff) { + + this.backoff = backoff; + return this; + } + + /** + * Get backoff + * @return backoff + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "") + + public Backoff getBackoff() { + return backoff; + } + + + public void setBackoff(Backoff backoff) { + this.backoff = backoff; + } + + + public RetryStrategy limit(Integer limit) { + + this.limit = limit; + return this; + } + + /** + * Limit is the maximum number of attempts when retrying a container + * @return limit + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "Limit is the maximum number of attempts when retrying a container") + + public Integer getLimit() { + return limit; + } + + + public void setLimit(Integer limit) { + this.limit = limit; + } + + + public RetryStrategy retryPolicy(String retryPolicy) { + + this.retryPolicy = retryPolicy; + return this; + } + + /** + * RetryPolicy is a policy of NodePhase statuses that will be retried + * @return retryPolicy + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "RetryPolicy is a policy of NodePhase statuses that will be retried") + + public String getRetryPolicy() { + return retryPolicy; + } + + + public void setRetryPolicy(String retryPolicy) { + this.retryPolicy = retryPolicy; + } + + + @Override + public boolean equals(java.lang.Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + RetryStrategy retryStrategy = (RetryStrategy) o; + return Objects.equals(this.backoff, retryStrategy.backoff) && + Objects.equals(this.limit, retryStrategy.limit) && + Objects.equals(this.retryPolicy, retryStrategy.retryPolicy); + } + + @Override + public int hashCode() { + return Objects.hash(backoff, limit, retryPolicy); + } + + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class RetryStrategy {\n"); + sb.append(" backoff: ").append(toIndentedString(backoff)).append("\n"); + sb.append(" limit: ").append(toIndentedString(limit)).append("\n"); + sb.append(" retryPolicy: ").append(toIndentedString(retryPolicy)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces + * (except the first line). + */ + private String toIndentedString(java.lang.Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } + +} + diff --git a/src/main/java/io/argoproj/workflow/models/S3Artifact.java b/src/main/java/io/argoproj/workflow/models/S3Artifact.java new file mode 100644 index 00000000..f12a84ec --- /dev/null +++ b/src/main/java/io/argoproj/workflow/models/S3Artifact.java @@ -0,0 +1,298 @@ +/* + * Argo + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: v2.4.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package io.argoproj.workflow.models; + +import java.util.Objects; +import java.util.Arrays; +import com.google.gson.TypeAdapter; +import com.google.gson.annotations.JsonAdapter; +import com.google.gson.annotations.SerializedName; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import java.io.IOException; + +/** + * S3Artifact is the location of an S3 artifact + */ +@ApiModel(description = "S3Artifact is the location of an S3 artifact") + +public class S3Artifact { + public static final String SERIALIZED_NAME_ACCESS_KEY_SECRET = "accessKeySecret"; + @SerializedName(SERIALIZED_NAME_ACCESS_KEY_SECRET) + private io.kubernetes.client.models.V1SecretKeySelector accessKeySecret = null; + + public static final String SERIALIZED_NAME_BUCKET = "bucket"; + @SerializedName(SERIALIZED_NAME_BUCKET) + private String bucket; + + public static final String SERIALIZED_NAME_ENDPOINT = "endpoint"; + @SerializedName(SERIALIZED_NAME_ENDPOINT) + private String endpoint; + + public static final String SERIALIZED_NAME_INSECURE = "insecure"; + @SerializedName(SERIALIZED_NAME_INSECURE) + private Boolean insecure; + + public static final String SERIALIZED_NAME_KEY = "key"; + @SerializedName(SERIALIZED_NAME_KEY) + private String key; + + public static final String SERIALIZED_NAME_REGION = "region"; + @SerializedName(SERIALIZED_NAME_REGION) + private String region; + + public static final String SERIALIZED_NAME_ROLE_A_R_N = "roleARN"; + @SerializedName(SERIALIZED_NAME_ROLE_A_R_N) + private String roleARN; + + public static final String SERIALIZED_NAME_SECRET_KEY_SECRET = "secretKeySecret"; + @SerializedName(SERIALIZED_NAME_SECRET_KEY_SECRET) + private io.kubernetes.client.models.V1SecretKeySelector secretKeySecret = null; + + + public S3Artifact accessKeySecret(io.kubernetes.client.models.V1SecretKeySelector accessKeySecret) { + + this.accessKeySecret = accessKeySecret; + return this; + } + + /** + * Get accessKeySecret + * @return accessKeySecret + **/ + @ApiModelProperty(required = true, value = "") + + public io.kubernetes.client.models.V1SecretKeySelector getAccessKeySecret() { + return accessKeySecret; + } + + + public void setAccessKeySecret(io.kubernetes.client.models.V1SecretKeySelector accessKeySecret) { + this.accessKeySecret = accessKeySecret; + } + + + public S3Artifact bucket(String bucket) { + + this.bucket = bucket; + return this; + } + + /** + * Bucket is the name of the bucket + * @return bucket + **/ + @ApiModelProperty(required = true, value = "Bucket is the name of the bucket") + + public String getBucket() { + return bucket; + } + + + public void setBucket(String bucket) { + this.bucket = bucket; + } + + + public S3Artifact endpoint(String endpoint) { + + this.endpoint = endpoint; + return this; + } + + /** + * Endpoint is the hostname of the bucket endpoint + * @return endpoint + **/ + @ApiModelProperty(required = true, value = "Endpoint is the hostname of the bucket endpoint") + + public String getEndpoint() { + return endpoint; + } + + + public void setEndpoint(String endpoint) { + this.endpoint = endpoint; + } + + + public S3Artifact insecure(Boolean insecure) { + + this.insecure = insecure; + return this; + } + + /** + * Insecure will connect to the service with TLS + * @return insecure + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "Insecure will connect to the service with TLS") + + public Boolean getInsecure() { + return insecure; + } + + + public void setInsecure(Boolean insecure) { + this.insecure = insecure; + } + + + public S3Artifact key(String key) { + + this.key = key; + return this; + } + + /** + * Key is the key in the bucket where the artifact resides + * @return key + **/ + @ApiModelProperty(required = true, value = "Key is the key in the bucket where the artifact resides") + + public String getKey() { + return key; + } + + + public void setKey(String key) { + this.key = key; + } + + + public S3Artifact region(String region) { + + this.region = region; + return this; + } + + /** + * Region contains the optional bucket region + * @return region + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "Region contains the optional bucket region") + + public String getRegion() { + return region; + } + + + public void setRegion(String region) { + this.region = region; + } + + + public S3Artifact roleARN(String roleARN) { + + this.roleARN = roleARN; + return this; + } + + /** + * RoleARN is the Amazon Resource Name (ARN) of the role to assume. + * @return roleARN + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "RoleARN is the Amazon Resource Name (ARN) of the role to assume.") + + public String getRoleARN() { + return roleARN; + } + + + public void setRoleARN(String roleARN) { + this.roleARN = roleARN; + } + + + public S3Artifact secretKeySecret(io.kubernetes.client.models.V1SecretKeySelector secretKeySecret) { + + this.secretKeySecret = secretKeySecret; + return this; + } + + /** + * Get secretKeySecret + * @return secretKeySecret + **/ + @ApiModelProperty(required = true, value = "") + + public io.kubernetes.client.models.V1SecretKeySelector getSecretKeySecret() { + return secretKeySecret; + } + + + public void setSecretKeySecret(io.kubernetes.client.models.V1SecretKeySelector secretKeySecret) { + this.secretKeySecret = secretKeySecret; + } + + + @Override + public boolean equals(java.lang.Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + S3Artifact s3Artifact = (S3Artifact) o; + return Objects.equals(this.accessKeySecret, s3Artifact.accessKeySecret) && + Objects.equals(this.bucket, s3Artifact.bucket) && + Objects.equals(this.endpoint, s3Artifact.endpoint) && + Objects.equals(this.insecure, s3Artifact.insecure) && + Objects.equals(this.key, s3Artifact.key) && + Objects.equals(this.region, s3Artifact.region) && + Objects.equals(this.roleARN, s3Artifact.roleARN) && + Objects.equals(this.secretKeySecret, s3Artifact.secretKeySecret); + } + + @Override + public int hashCode() { + return Objects.hash(accessKeySecret, bucket, endpoint, insecure, key, region, roleARN, secretKeySecret); + } + + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class S3Artifact {\n"); + sb.append(" accessKeySecret: ").append(toIndentedString(accessKeySecret)).append("\n"); + sb.append(" bucket: ").append(toIndentedString(bucket)).append("\n"); + sb.append(" endpoint: ").append(toIndentedString(endpoint)).append("\n"); + sb.append(" insecure: ").append(toIndentedString(insecure)).append("\n"); + sb.append(" key: ").append(toIndentedString(key)).append("\n"); + sb.append(" region: ").append(toIndentedString(region)).append("\n"); + sb.append(" roleARN: ").append(toIndentedString(roleARN)).append("\n"); + sb.append(" secretKeySecret: ").append(toIndentedString(secretKeySecret)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces + * (except the first line). + */ + private String toIndentedString(java.lang.Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } + +} + diff --git a/src/main/java/io/argoproj/workflow/models/S3Bucket.java b/src/main/java/io/argoproj/workflow/models/S3Bucket.java new file mode 100644 index 00000000..4433dc0a --- /dev/null +++ b/src/main/java/io/argoproj/workflow/models/S3Bucket.java @@ -0,0 +1,270 @@ +/* + * Argo + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: v2.4.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package io.argoproj.workflow.models; + +import java.util.Objects; +import java.util.Arrays; +import com.google.gson.TypeAdapter; +import com.google.gson.annotations.JsonAdapter; +import com.google.gson.annotations.SerializedName; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import java.io.IOException; + +/** + * S3Bucket contains the access information required for interfacing with an S3 bucket + */ +@ApiModel(description = "S3Bucket contains the access information required for interfacing with an S3 bucket") + +public class S3Bucket { + public static final String SERIALIZED_NAME_ACCESS_KEY_SECRET = "accessKeySecret"; + @SerializedName(SERIALIZED_NAME_ACCESS_KEY_SECRET) + private io.kubernetes.client.models.V1SecretKeySelector accessKeySecret = null; + + public static final String SERIALIZED_NAME_BUCKET = "bucket"; + @SerializedName(SERIALIZED_NAME_BUCKET) + private String bucket; + + public static final String SERIALIZED_NAME_ENDPOINT = "endpoint"; + @SerializedName(SERIALIZED_NAME_ENDPOINT) + private String endpoint; + + public static final String SERIALIZED_NAME_INSECURE = "insecure"; + @SerializedName(SERIALIZED_NAME_INSECURE) + private Boolean insecure; + + public static final String SERIALIZED_NAME_REGION = "region"; + @SerializedName(SERIALIZED_NAME_REGION) + private String region; + + public static final String SERIALIZED_NAME_ROLE_A_R_N = "roleARN"; + @SerializedName(SERIALIZED_NAME_ROLE_A_R_N) + private String roleARN; + + public static final String SERIALIZED_NAME_SECRET_KEY_SECRET = "secretKeySecret"; + @SerializedName(SERIALIZED_NAME_SECRET_KEY_SECRET) + private io.kubernetes.client.models.V1SecretKeySelector secretKeySecret = null; + + + public S3Bucket accessKeySecret(io.kubernetes.client.models.V1SecretKeySelector accessKeySecret) { + + this.accessKeySecret = accessKeySecret; + return this; + } + + /** + * Get accessKeySecret + * @return accessKeySecret + **/ + @ApiModelProperty(required = true, value = "") + + public io.kubernetes.client.models.V1SecretKeySelector getAccessKeySecret() { + return accessKeySecret; + } + + + public void setAccessKeySecret(io.kubernetes.client.models.V1SecretKeySelector accessKeySecret) { + this.accessKeySecret = accessKeySecret; + } + + + public S3Bucket bucket(String bucket) { + + this.bucket = bucket; + return this; + } + + /** + * Bucket is the name of the bucket + * @return bucket + **/ + @ApiModelProperty(required = true, value = "Bucket is the name of the bucket") + + public String getBucket() { + return bucket; + } + + + public void setBucket(String bucket) { + this.bucket = bucket; + } + + + public S3Bucket endpoint(String endpoint) { + + this.endpoint = endpoint; + return this; + } + + /** + * Endpoint is the hostname of the bucket endpoint + * @return endpoint + **/ + @ApiModelProperty(required = true, value = "Endpoint is the hostname of the bucket endpoint") + + public String getEndpoint() { + return endpoint; + } + + + public void setEndpoint(String endpoint) { + this.endpoint = endpoint; + } + + + public S3Bucket insecure(Boolean insecure) { + + this.insecure = insecure; + return this; + } + + /** + * Insecure will connect to the service with TLS + * @return insecure + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "Insecure will connect to the service with TLS") + + public Boolean getInsecure() { + return insecure; + } + + + public void setInsecure(Boolean insecure) { + this.insecure = insecure; + } + + + public S3Bucket region(String region) { + + this.region = region; + return this; + } + + /** + * Region contains the optional bucket region + * @return region + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "Region contains the optional bucket region") + + public String getRegion() { + return region; + } + + + public void setRegion(String region) { + this.region = region; + } + + + public S3Bucket roleARN(String roleARN) { + + this.roleARN = roleARN; + return this; + } + + /** + * RoleARN is the Amazon Resource Name (ARN) of the role to assume. + * @return roleARN + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "RoleARN is the Amazon Resource Name (ARN) of the role to assume.") + + public String getRoleARN() { + return roleARN; + } + + + public void setRoleARN(String roleARN) { + this.roleARN = roleARN; + } + + + public S3Bucket secretKeySecret(io.kubernetes.client.models.V1SecretKeySelector secretKeySecret) { + + this.secretKeySecret = secretKeySecret; + return this; + } + + /** + * Get secretKeySecret + * @return secretKeySecret + **/ + @ApiModelProperty(required = true, value = "") + + public io.kubernetes.client.models.V1SecretKeySelector getSecretKeySecret() { + return secretKeySecret; + } + + + public void setSecretKeySecret(io.kubernetes.client.models.V1SecretKeySelector secretKeySecret) { + this.secretKeySecret = secretKeySecret; + } + + + @Override + public boolean equals(java.lang.Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + S3Bucket s3Bucket = (S3Bucket) o; + return Objects.equals(this.accessKeySecret, s3Bucket.accessKeySecret) && + Objects.equals(this.bucket, s3Bucket.bucket) && + Objects.equals(this.endpoint, s3Bucket.endpoint) && + Objects.equals(this.insecure, s3Bucket.insecure) && + Objects.equals(this.region, s3Bucket.region) && + Objects.equals(this.roleARN, s3Bucket.roleARN) && + Objects.equals(this.secretKeySecret, s3Bucket.secretKeySecret); + } + + @Override + public int hashCode() { + return Objects.hash(accessKeySecret, bucket, endpoint, insecure, region, roleARN, secretKeySecret); + } + + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class S3Bucket {\n"); + sb.append(" accessKeySecret: ").append(toIndentedString(accessKeySecret)).append("\n"); + sb.append(" bucket: ").append(toIndentedString(bucket)).append("\n"); + sb.append(" endpoint: ").append(toIndentedString(endpoint)).append("\n"); + sb.append(" insecure: ").append(toIndentedString(insecure)).append("\n"); + sb.append(" region: ").append(toIndentedString(region)).append("\n"); + sb.append(" roleARN: ").append(toIndentedString(roleARN)).append("\n"); + sb.append(" secretKeySecret: ").append(toIndentedString(secretKeySecret)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces + * (except the first line). + */ + private String toIndentedString(java.lang.Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } + +} + diff --git a/src/main/java/io/argoproj/workflow/models/ScriptTemplate.java b/src/main/java/io/argoproj/workflow/models/ScriptTemplate.java new file mode 100644 index 00000000..06ba1f4b --- /dev/null +++ b/src/main/java/io/argoproj/workflow/models/ScriptTemplate.java @@ -0,0 +1,794 @@ +/* + * Argo + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: v2.4.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package io.argoproj.workflow.models; + +import java.util.Objects; +import java.util.Arrays; +import com.google.gson.TypeAdapter; +import com.google.gson.annotations.JsonAdapter; +import com.google.gson.annotations.SerializedName; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * ScriptTemplate is a template subtype to enable scripting through code steps + */ +@ApiModel(description = "ScriptTemplate is a template subtype to enable scripting through code steps") + +public class ScriptTemplate { + public static final String SERIALIZED_NAME_ARGS = "args"; + @SerializedName(SERIALIZED_NAME_ARGS) + private List args = null; + + public static final String SERIALIZED_NAME_COMMAND = "command"; + @SerializedName(SERIALIZED_NAME_COMMAND) + private List command = null; + + public static final String SERIALIZED_NAME_ENV = "env"; + @SerializedName(SERIALIZED_NAME_ENV) + private List env = null; + + public static final String SERIALIZED_NAME_ENV_FROM = "envFrom"; + @SerializedName(SERIALIZED_NAME_ENV_FROM) + private List envFrom = null; + + public static final String SERIALIZED_NAME_IMAGE = "image"; + @SerializedName(SERIALIZED_NAME_IMAGE) + private String image; + + public static final String SERIALIZED_NAME_IMAGE_PULL_POLICY = "imagePullPolicy"; + @SerializedName(SERIALIZED_NAME_IMAGE_PULL_POLICY) + private String imagePullPolicy; + + public static final String SERIALIZED_NAME_LIFECYCLE = "lifecycle"; + @SerializedName(SERIALIZED_NAME_LIFECYCLE) + private io.kubernetes.client.models.V1Lifecycle lifecycle = null; + + public static final String SERIALIZED_NAME_LIVENESS_PROBE = "livenessProbe"; + @SerializedName(SERIALIZED_NAME_LIVENESS_PROBE) + private io.kubernetes.client.models.V1Probe livenessProbe = null; + + public static final String SERIALIZED_NAME_NAME = "name"; + @SerializedName(SERIALIZED_NAME_NAME) + private String name; + + public static final String SERIALIZED_NAME_PORTS = "ports"; + @SerializedName(SERIALIZED_NAME_PORTS) + private List ports = null; + + public static final String SERIALIZED_NAME_READINESS_PROBE = "readinessProbe"; + @SerializedName(SERIALIZED_NAME_READINESS_PROBE) + private io.kubernetes.client.models.V1Probe readinessProbe = null; + + public static final String SERIALIZED_NAME_RESOURCES = "resources"; + @SerializedName(SERIALIZED_NAME_RESOURCES) + private io.kubernetes.client.models.V1ResourceRequirements resources = null; + + public static final String SERIALIZED_NAME_SECURITY_CONTEXT = "securityContext"; + @SerializedName(SERIALIZED_NAME_SECURITY_CONTEXT) + private io.kubernetes.client.models.V1SecurityContext securityContext = null; + + public static final String SERIALIZED_NAME_SOURCE = "source"; + @SerializedName(SERIALIZED_NAME_SOURCE) + private String source; + + public static final String SERIALIZED_NAME_STARTUP_PROBE = "startupProbe"; + @SerializedName(SERIALIZED_NAME_STARTUP_PROBE) + private io.kubernetes.client.models.V1Probe startupProbe = null; + + public static final String SERIALIZED_NAME_STDIN = "stdin"; + @SerializedName(SERIALIZED_NAME_STDIN) + private Boolean stdin; + + public static final String SERIALIZED_NAME_STDIN_ONCE = "stdinOnce"; + @SerializedName(SERIALIZED_NAME_STDIN_ONCE) + private Boolean stdinOnce; + + public static final String SERIALIZED_NAME_TERMINATION_MESSAGE_PATH = "terminationMessagePath"; + @SerializedName(SERIALIZED_NAME_TERMINATION_MESSAGE_PATH) + private String terminationMessagePath; + + public static final String SERIALIZED_NAME_TERMINATION_MESSAGE_POLICY = "terminationMessagePolicy"; + @SerializedName(SERIALIZED_NAME_TERMINATION_MESSAGE_POLICY) + private String terminationMessagePolicy; + + public static final String SERIALIZED_NAME_TTY = "tty"; + @SerializedName(SERIALIZED_NAME_TTY) + private Boolean tty; + + public static final String SERIALIZED_NAME_VOLUME_DEVICES = "volumeDevices"; + @SerializedName(SERIALIZED_NAME_VOLUME_DEVICES) + private List volumeDevices = null; + + public static final String SERIALIZED_NAME_VOLUME_MOUNTS = "volumeMounts"; + @SerializedName(SERIALIZED_NAME_VOLUME_MOUNTS) + private List volumeMounts = null; + + public static final String SERIALIZED_NAME_WORKING_DIR = "workingDir"; + @SerializedName(SERIALIZED_NAME_WORKING_DIR) + private String workingDir; + + + public ScriptTemplate args(List args) { + + this.args = args; + return this; + } + + public ScriptTemplate addArgsItem(String argsItem) { + if (this.args == null) { + this.args = new ArrayList(); + } + this.args.add(argsItem); + return this; + } + + /** + * Arguments to the entrypoint. The docker image's CMD is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell + * @return args + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "Arguments to the entrypoint. The docker image's CMD is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell") + + public List getArgs() { + return args; + } + + + public void setArgs(List args) { + this.args = args; + } + + + public ScriptTemplate command(List command) { + + this.command = command; + return this; + } + + public ScriptTemplate addCommandItem(String commandItem) { + if (this.command == null) { + this.command = new ArrayList(); + } + this.command.add(commandItem); + return this; + } + + /** + * Entrypoint array. Not executed within a shell. The docker image's ENTRYPOINT is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell + * @return command + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "Entrypoint array. Not executed within a shell. The docker image's ENTRYPOINT is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell") + + public List getCommand() { + return command; + } + + + public void setCommand(List command) { + this.command = command; + } + + + public ScriptTemplate env(List env) { + + this.env = env; + return this; + } + + public ScriptTemplate addEnvItem(io.kubernetes.client.models.V1EnvVar envItem) { + if (this.env == null) { + this.env = new ArrayList(); + } + this.env.add(envItem); + return this; + } + + /** + * List of environment variables to set in the container. Cannot be updated. + * @return env + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "List of environment variables to set in the container. Cannot be updated.") + + public List getEnv() { + return env; + } + + + public void setEnv(List env) { + this.env = env; + } + + + public ScriptTemplate envFrom(List envFrom) { + + this.envFrom = envFrom; + return this; + } + + public ScriptTemplate addEnvFromItem(io.kubernetes.client.models.V1EnvFromSource envFromItem) { + if (this.envFrom == null) { + this.envFrom = new ArrayList(); + } + this.envFrom.add(envFromItem); + return this; + } + + /** + * List of sources to populate environment variables in the container. The keys defined within a source must be a C_IDENTIFIER. All invalid keys will be reported as an event when the container is starting. When a key exists in multiple sources, the value associated with the last source will take precedence. Values defined by an Env with a duplicate key will take precedence. Cannot be updated. + * @return envFrom + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "List of sources to populate environment variables in the container. The keys defined within a source must be a C_IDENTIFIER. All invalid keys will be reported as an event when the container is starting. When a key exists in multiple sources, the value associated with the last source will take precedence. Values defined by an Env with a duplicate key will take precedence. Cannot be updated.") + + public List getEnvFrom() { + return envFrom; + } + + + public void setEnvFrom(List envFrom) { + this.envFrom = envFrom; + } + + + public ScriptTemplate image(String image) { + + this.image = image; + return this; + } + + /** + * Docker image name. More info: https://kubernetes.io/docs/concepts/containers/images This field is optional to allow higher level config management to default or override container images in workload controllers like Deployments and StatefulSets. + * @return image + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "Docker image name. More info: https://kubernetes.io/docs/concepts/containers/images This field is optional to allow higher level config management to default or override container images in workload controllers like Deployments and StatefulSets.") + + public String getImage() { + return image; + } + + + public void setImage(String image) { + this.image = image; + } + + + public ScriptTemplate imagePullPolicy(String imagePullPolicy) { + + this.imagePullPolicy = imagePullPolicy; + return this; + } + + /** + * Image pull policy. One of Always, Never, IfNotPresent. Defaults to Always if :latest tag is specified, or IfNotPresent otherwise. Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images + * @return imagePullPolicy + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "Image pull policy. One of Always, Never, IfNotPresent. Defaults to Always if :latest tag is specified, or IfNotPresent otherwise. Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images") + + public String getImagePullPolicy() { + return imagePullPolicy; + } + + + public void setImagePullPolicy(String imagePullPolicy) { + this.imagePullPolicy = imagePullPolicy; + } + + + public ScriptTemplate lifecycle(io.kubernetes.client.models.V1Lifecycle lifecycle) { + + this.lifecycle = lifecycle; + return this; + } + + /** + * Get lifecycle + * @return lifecycle + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "") + + public io.kubernetes.client.models.V1Lifecycle getLifecycle() { + return lifecycle; + } + + + public void setLifecycle(io.kubernetes.client.models.V1Lifecycle lifecycle) { + this.lifecycle = lifecycle; + } + + + public ScriptTemplate livenessProbe(io.kubernetes.client.models.V1Probe livenessProbe) { + + this.livenessProbe = livenessProbe; + return this; + } + + /** + * Get livenessProbe + * @return livenessProbe + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "") + + public io.kubernetes.client.models.V1Probe getLivenessProbe() { + return livenessProbe; + } + + + public void setLivenessProbe(io.kubernetes.client.models.V1Probe livenessProbe) { + this.livenessProbe = livenessProbe; + } + + + public ScriptTemplate name(String name) { + + this.name = name; + return this; + } + + /** + * Name of the container specified as a DNS_LABEL. Each container in a pod must have a unique name (DNS_LABEL). Cannot be updated. + * @return name + **/ + @ApiModelProperty(required = true, value = "Name of the container specified as a DNS_LABEL. Each container in a pod must have a unique name (DNS_LABEL). Cannot be updated.") + + public String getName() { + return name; + } + + + public void setName(String name) { + this.name = name; + } + + + public ScriptTemplate ports(List ports) { + + this.ports = ports; + return this; + } + + public ScriptTemplate addPortsItem(io.kubernetes.client.models.V1ContainerPort portsItem) { + if (this.ports == null) { + this.ports = new ArrayList(); + } + this.ports.add(portsItem); + return this; + } + + /** + * List of ports to expose from the container. Exposing a port here gives the system additional information about the network connections a container uses, but is primarily informational. Not specifying a port here DOES NOT prevent that port from being exposed. Any port which is listening on the default \"0.0.0.0\" address inside a container will be accessible from the network. Cannot be updated. + * @return ports + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "List of ports to expose from the container. Exposing a port here gives the system additional information about the network connections a container uses, but is primarily informational. Not specifying a port here DOES NOT prevent that port from being exposed. Any port which is listening on the default \"0.0.0.0\" address inside a container will be accessible from the network. Cannot be updated.") + + public List getPorts() { + return ports; + } + + + public void setPorts(List ports) { + this.ports = ports; + } + + + public ScriptTemplate readinessProbe(io.kubernetes.client.models.V1Probe readinessProbe) { + + this.readinessProbe = readinessProbe; + return this; + } + + /** + * Get readinessProbe + * @return readinessProbe + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "") + + public io.kubernetes.client.models.V1Probe getReadinessProbe() { + return readinessProbe; + } + + + public void setReadinessProbe(io.kubernetes.client.models.V1Probe readinessProbe) { + this.readinessProbe = readinessProbe; + } + + + public ScriptTemplate resources(io.kubernetes.client.models.V1ResourceRequirements resources) { + + this.resources = resources; + return this; + } + + /** + * Get resources + * @return resources + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "") + + public io.kubernetes.client.models.V1ResourceRequirements getResources() { + return resources; + } + + + public void setResources(io.kubernetes.client.models.V1ResourceRequirements resources) { + this.resources = resources; + } + + + public ScriptTemplate securityContext(io.kubernetes.client.models.V1SecurityContext securityContext) { + + this.securityContext = securityContext; + return this; + } + + /** + * Get securityContext + * @return securityContext + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "") + + public io.kubernetes.client.models.V1SecurityContext getSecurityContext() { + return securityContext; + } + + + public void setSecurityContext(io.kubernetes.client.models.V1SecurityContext securityContext) { + this.securityContext = securityContext; + } + + + public ScriptTemplate source(String source) { + + this.source = source; + return this; + } + + /** + * Source contains the source code of the script to execute + * @return source + **/ + @ApiModelProperty(required = true, value = "Source contains the source code of the script to execute") + + public String getSource() { + return source; + } + + + public void setSource(String source) { + this.source = source; + } + + + public ScriptTemplate startupProbe(io.kubernetes.client.models.V1Probe startupProbe) { + + this.startupProbe = startupProbe; + return this; + } + + /** + * Get startupProbe + * @return startupProbe + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "") + + public io.kubernetes.client.models.V1Probe getStartupProbe() { + return startupProbe; + } + + + public void setStartupProbe(io.kubernetes.client.models.V1Probe startupProbe) { + this.startupProbe = startupProbe; + } + + + public ScriptTemplate stdin(Boolean stdin) { + + this.stdin = stdin; + return this; + } + + /** + * Whether this container should allocate a buffer for stdin in the container runtime. If this is not set, reads from stdin in the container will always result in EOF. Default is false. + * @return stdin + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "Whether this container should allocate a buffer for stdin in the container runtime. If this is not set, reads from stdin in the container will always result in EOF. Default is false.") + + public Boolean getStdin() { + return stdin; + } + + + public void setStdin(Boolean stdin) { + this.stdin = stdin; + } + + + public ScriptTemplate stdinOnce(Boolean stdinOnce) { + + this.stdinOnce = stdinOnce; + return this; + } + + /** + * Whether the container runtime should close the stdin channel after it has been opened by a single attach. When stdin is true the stdin stream will remain open across multiple attach sessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the first client attaches to stdin, and then remains open and accepts data until the client disconnects, at which time stdin is closed and remains closed until the container is restarted. If this flag is false, a container processes that reads from stdin will never receive an EOF. Default is false + * @return stdinOnce + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "Whether the container runtime should close the stdin channel after it has been opened by a single attach. When stdin is true the stdin stream will remain open across multiple attach sessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the first client attaches to stdin, and then remains open and accepts data until the client disconnects, at which time stdin is closed and remains closed until the container is restarted. If this flag is false, a container processes that reads from stdin will never receive an EOF. Default is false") + + public Boolean getStdinOnce() { + return stdinOnce; + } + + + public void setStdinOnce(Boolean stdinOnce) { + this.stdinOnce = stdinOnce; + } + + + public ScriptTemplate terminationMessagePath(String terminationMessagePath) { + + this.terminationMessagePath = terminationMessagePath; + return this; + } + + /** + * Optional: Path at which the file to which the container's termination message will be written is mounted into the container's filesystem. Message written is intended to be brief final status, such as an assertion failure message. Will be truncated by the node if greater than 4096 bytes. The total message length across all containers will be limited to 12kb. Defaults to /dev/termination-log. Cannot be updated. + * @return terminationMessagePath + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "Optional: Path at which the file to which the container's termination message will be written is mounted into the container's filesystem. Message written is intended to be brief final status, such as an assertion failure message. Will be truncated by the node if greater than 4096 bytes. The total message length across all containers will be limited to 12kb. Defaults to /dev/termination-log. Cannot be updated.") + + public String getTerminationMessagePath() { + return terminationMessagePath; + } + + + public void setTerminationMessagePath(String terminationMessagePath) { + this.terminationMessagePath = terminationMessagePath; + } + + + public ScriptTemplate terminationMessagePolicy(String terminationMessagePolicy) { + + this.terminationMessagePolicy = terminationMessagePolicy; + return this; + } + + /** + * Indicate how the termination message should be populated. File will use the contents of terminationMessagePath to populate the container status message on both success and failure. FallbackToLogsOnError will use the last chunk of container log output if the termination message file is empty and the container exited with an error. The log output is limited to 2048 bytes or 80 lines, whichever is smaller. Defaults to File. Cannot be updated. + * @return terminationMessagePolicy + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "Indicate how the termination message should be populated. File will use the contents of terminationMessagePath to populate the container status message on both success and failure. FallbackToLogsOnError will use the last chunk of container log output if the termination message file is empty and the container exited with an error. The log output is limited to 2048 bytes or 80 lines, whichever is smaller. Defaults to File. Cannot be updated.") + + public String getTerminationMessagePolicy() { + return terminationMessagePolicy; + } + + + public void setTerminationMessagePolicy(String terminationMessagePolicy) { + this.terminationMessagePolicy = terminationMessagePolicy; + } + + + public ScriptTemplate tty(Boolean tty) { + + this.tty = tty; + return this; + } + + /** + * Whether this container should allocate a TTY for itself, also requires 'stdin' to be true. Default is false. + * @return tty + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "Whether this container should allocate a TTY for itself, also requires 'stdin' to be true. Default is false.") + + public Boolean getTty() { + return tty; + } + + + public void setTty(Boolean tty) { + this.tty = tty; + } + + + public ScriptTemplate volumeDevices(List volumeDevices) { + + this.volumeDevices = volumeDevices; + return this; + } + + public ScriptTemplate addVolumeDevicesItem(io.kubernetes.client.models.V1VolumeDevice volumeDevicesItem) { + if (this.volumeDevices == null) { + this.volumeDevices = new ArrayList(); + } + this.volumeDevices.add(volumeDevicesItem); + return this; + } + + /** + * volumeDevices is the list of block devices to be used by the container. This is a beta feature. + * @return volumeDevices + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "volumeDevices is the list of block devices to be used by the container. This is a beta feature.") + + public List getVolumeDevices() { + return volumeDevices; + } + + + public void setVolumeDevices(List volumeDevices) { + this.volumeDevices = volumeDevices; + } + + + public ScriptTemplate volumeMounts(List volumeMounts) { + + this.volumeMounts = volumeMounts; + return this; + } + + public ScriptTemplate addVolumeMountsItem(io.kubernetes.client.models.V1VolumeMount volumeMountsItem) { + if (this.volumeMounts == null) { + this.volumeMounts = new ArrayList(); + } + this.volumeMounts.add(volumeMountsItem); + return this; + } + + /** + * Pod volumes to mount into the container's filesystem. Cannot be updated. + * @return volumeMounts + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "Pod volumes to mount into the container's filesystem. Cannot be updated.") + + public List getVolumeMounts() { + return volumeMounts; + } + + + public void setVolumeMounts(List volumeMounts) { + this.volumeMounts = volumeMounts; + } + + + public ScriptTemplate workingDir(String workingDir) { + + this.workingDir = workingDir; + return this; + } + + /** + * Container's working directory. If not specified, the container runtime's default will be used, which might be configured in the container image. Cannot be updated. + * @return workingDir + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "Container's working directory. If not specified, the container runtime's default will be used, which might be configured in the container image. Cannot be updated.") + + public String getWorkingDir() { + return workingDir; + } + + + public void setWorkingDir(String workingDir) { + this.workingDir = workingDir; + } + + + @Override + public boolean equals(java.lang.Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + ScriptTemplate scriptTemplate = (ScriptTemplate) o; + return Objects.equals(this.args, scriptTemplate.args) && + Objects.equals(this.command, scriptTemplate.command) && + Objects.equals(this.env, scriptTemplate.env) && + Objects.equals(this.envFrom, scriptTemplate.envFrom) && + Objects.equals(this.image, scriptTemplate.image) && + Objects.equals(this.imagePullPolicy, scriptTemplate.imagePullPolicy) && + Objects.equals(this.lifecycle, scriptTemplate.lifecycle) && + Objects.equals(this.livenessProbe, scriptTemplate.livenessProbe) && + Objects.equals(this.name, scriptTemplate.name) && + Objects.equals(this.ports, scriptTemplate.ports) && + Objects.equals(this.readinessProbe, scriptTemplate.readinessProbe) && + Objects.equals(this.resources, scriptTemplate.resources) && + Objects.equals(this.securityContext, scriptTemplate.securityContext) && + Objects.equals(this.source, scriptTemplate.source) && + Objects.equals(this.startupProbe, scriptTemplate.startupProbe) && + Objects.equals(this.stdin, scriptTemplate.stdin) && + Objects.equals(this.stdinOnce, scriptTemplate.stdinOnce) && + Objects.equals(this.terminationMessagePath, scriptTemplate.terminationMessagePath) && + Objects.equals(this.terminationMessagePolicy, scriptTemplate.terminationMessagePolicy) && + Objects.equals(this.tty, scriptTemplate.tty) && + Objects.equals(this.volumeDevices, scriptTemplate.volumeDevices) && + Objects.equals(this.volumeMounts, scriptTemplate.volumeMounts) && + Objects.equals(this.workingDir, scriptTemplate.workingDir); + } + + @Override + public int hashCode() { + return Objects.hash(args, command, env, envFrom, image, imagePullPolicy, lifecycle, livenessProbe, name, ports, readinessProbe, resources, securityContext, source, startupProbe, stdin, stdinOnce, terminationMessagePath, terminationMessagePolicy, tty, volumeDevices, volumeMounts, workingDir); + } + + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class ScriptTemplate {\n"); + sb.append(" args: ").append(toIndentedString(args)).append("\n"); + sb.append(" command: ").append(toIndentedString(command)).append("\n"); + sb.append(" env: ").append(toIndentedString(env)).append("\n"); + sb.append(" envFrom: ").append(toIndentedString(envFrom)).append("\n"); + sb.append(" image: ").append(toIndentedString(image)).append("\n"); + sb.append(" imagePullPolicy: ").append(toIndentedString(imagePullPolicy)).append("\n"); + sb.append(" lifecycle: ").append(toIndentedString(lifecycle)).append("\n"); + sb.append(" livenessProbe: ").append(toIndentedString(livenessProbe)).append("\n"); + sb.append(" name: ").append(toIndentedString(name)).append("\n"); + sb.append(" ports: ").append(toIndentedString(ports)).append("\n"); + sb.append(" readinessProbe: ").append(toIndentedString(readinessProbe)).append("\n"); + sb.append(" resources: ").append(toIndentedString(resources)).append("\n"); + sb.append(" securityContext: ").append(toIndentedString(securityContext)).append("\n"); + sb.append(" source: ").append(toIndentedString(source)).append("\n"); + sb.append(" startupProbe: ").append(toIndentedString(startupProbe)).append("\n"); + sb.append(" stdin: ").append(toIndentedString(stdin)).append("\n"); + sb.append(" stdinOnce: ").append(toIndentedString(stdinOnce)).append("\n"); + sb.append(" terminationMessagePath: ").append(toIndentedString(terminationMessagePath)).append("\n"); + sb.append(" terminationMessagePolicy: ").append(toIndentedString(terminationMessagePolicy)).append("\n"); + sb.append(" tty: ").append(toIndentedString(tty)).append("\n"); + sb.append(" volumeDevices: ").append(toIndentedString(volumeDevices)).append("\n"); + sb.append(" volumeMounts: ").append(toIndentedString(volumeMounts)).append("\n"); + sb.append(" workingDir: ").append(toIndentedString(workingDir)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces + * (except the first line). + */ + private String toIndentedString(java.lang.Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } + +} + diff --git a/src/main/java/io/argoproj/workflow/models/Sequence.java b/src/main/java/io/argoproj/workflow/models/Sequence.java new file mode 100644 index 00000000..b2a89cb0 --- /dev/null +++ b/src/main/java/io/argoproj/workflow/models/Sequence.java @@ -0,0 +1,187 @@ +/* + * Argo + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: v2.4.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package io.argoproj.workflow.models; + +import java.util.Objects; +import java.util.Arrays; +import com.google.gson.TypeAdapter; +import com.google.gson.annotations.JsonAdapter; +import com.google.gson.annotations.SerializedName; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import java.io.IOException; + +/** + * Sequence expands a workflow step into numeric range + */ +@ApiModel(description = "Sequence expands a workflow step into numeric range") + +public class Sequence { + public static final String SERIALIZED_NAME_COUNT = "count"; + @SerializedName(SERIALIZED_NAME_COUNT) + private String count; + + public static final String SERIALIZED_NAME_END = "end"; + @SerializedName(SERIALIZED_NAME_END) + private String end; + + public static final String SERIALIZED_NAME_FORMAT = "format"; + @SerializedName(SERIALIZED_NAME_FORMAT) + private String format; + + public static final String SERIALIZED_NAME_START = "start"; + @SerializedName(SERIALIZED_NAME_START) + private String start; + + + public Sequence count(String count) { + + this.count = count; + return this; + } + + /** + * Count is number of elements in the sequence (default: 0). Not to be used with end + * @return count + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "Count is number of elements in the sequence (default: 0). Not to be used with end") + + public String getCount() { + return count; + } + + + public void setCount(String count) { + this.count = count; + } + + + public Sequence end(String end) { + + this.end = end; + return this; + } + + /** + * Number at which to end the sequence (default: 0). Not to be used with Count + * @return end + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "Number at which to end the sequence (default: 0). Not to be used with Count") + + public String getEnd() { + return end; + } + + + public void setEnd(String end) { + this.end = end; + } + + + public Sequence format(String format) { + + this.format = format; + return this; + } + + /** + * Format is a printf format string to format the value in the sequence + * @return format + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "Format is a printf format string to format the value in the sequence") + + public String getFormat() { + return format; + } + + + public void setFormat(String format) { + this.format = format; + } + + + public Sequence start(String start) { + + this.start = start; + return this; + } + + /** + * Number at which to start the sequence (default: 0) + * @return start + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "Number at which to start the sequence (default: 0)") + + public String getStart() { + return start; + } + + + public void setStart(String start) { + this.start = start; + } + + + @Override + public boolean equals(java.lang.Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + Sequence sequence = (Sequence) o; + return Objects.equals(this.count, sequence.count) && + Objects.equals(this.end, sequence.end) && + Objects.equals(this.format, sequence.format) && + Objects.equals(this.start, sequence.start); + } + + @Override + public int hashCode() { + return Objects.hash(count, end, format, start); + } + + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class Sequence {\n"); + sb.append(" count: ").append(toIndentedString(count)).append("\n"); + sb.append(" end: ").append(toIndentedString(end)).append("\n"); + sb.append(" format: ").append(toIndentedString(format)).append("\n"); + sb.append(" start: ").append(toIndentedString(start)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces + * (except the first line). + */ + private String toIndentedString(java.lang.Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } + +} + diff --git a/src/main/java/io/argoproj/workflow/models/SuspendTemplate.java b/src/main/java/io/argoproj/workflow/models/SuspendTemplate.java new file mode 100644 index 00000000..49ca3fde --- /dev/null +++ b/src/main/java/io/argoproj/workflow/models/SuspendTemplate.java @@ -0,0 +1,100 @@ +/* + * Argo + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: v2.4.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package io.argoproj.workflow.models; + +import java.util.Objects; +import java.util.Arrays; +import com.google.gson.TypeAdapter; +import com.google.gson.annotations.JsonAdapter; +import com.google.gson.annotations.SerializedName; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import java.io.IOException; + +/** + * SuspendTemplate is a template subtype to suspend a workflow at a predetermined point in time + */ +@ApiModel(description = "SuspendTemplate is a template subtype to suspend a workflow at a predetermined point in time") + +public class SuspendTemplate { + public static final String SERIALIZED_NAME_DURATION = "duration"; + @SerializedName(SERIALIZED_NAME_DURATION) + private String duration; + + + public SuspendTemplate duration(String duration) { + + this.duration = duration; + return this; + } + + /** + * Duration is the seconds to wait before automatically resuming a template + * @return duration + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "Duration is the seconds to wait before automatically resuming a template") + + public String getDuration() { + return duration; + } + + + public void setDuration(String duration) { + this.duration = duration; + } + + + @Override + public boolean equals(java.lang.Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + SuspendTemplate suspendTemplate = (SuspendTemplate) o; + return Objects.equals(this.duration, suspendTemplate.duration); + } + + @Override + public int hashCode() { + return Objects.hash(duration); + } + + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class SuspendTemplate {\n"); + sb.append(" duration: ").append(toIndentedString(duration)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces + * (except the first line). + */ + private String toIndentedString(java.lang.Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } + +} + diff --git a/src/main/java/io/argoproj/workflow/models/Template.java b/src/main/java/io/argoproj/workflow/models/Template.java new file mode 100644 index 00000000..8213ea1a --- /dev/null +++ b/src/main/java/io/argoproj/workflow/models/Template.java @@ -0,0 +1,1101 @@ +/* + * Argo + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: v2.4.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package io.argoproj.workflow.models; + +import java.util.Objects; +import java.util.Arrays; +import com.google.gson.TypeAdapter; +import com.google.gson.annotations.JsonAdapter; +import com.google.gson.annotations.SerializedName; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import io.argoproj.workflow.models.Arguments; +import io.argoproj.workflow.models.ArtifactLocation; +import io.argoproj.workflow.models.DAGTemplate; +import io.argoproj.workflow.models.ExecutorConfig; +import io.argoproj.workflow.models.Inputs; +import io.argoproj.workflow.models.Metadata; +import io.argoproj.workflow.models.Outputs; +import io.argoproj.workflow.models.ParallelSteps; +import io.argoproj.workflow.models.ResourceTemplate; +import io.argoproj.workflow.models.RetryStrategy; +import io.argoproj.workflow.models.ScriptTemplate; +import io.argoproj.workflow.models.SuspendTemplate; +import io.argoproj.workflow.models.TemplateRef; +import io.argoproj.workflow.models.UserContainer; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import java.io.IOException; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * Template is a reusable and composable unit of execution in a workflow + */ +@ApiModel(description = "Template is a reusable and composable unit of execution in a workflow") + +public class Template { + public static final String SERIALIZED_NAME_ACTIVE_DEADLINE_SECONDS = "activeDeadlineSeconds"; + @SerializedName(SERIALIZED_NAME_ACTIVE_DEADLINE_SECONDS) + private Long activeDeadlineSeconds; + + public static final String SERIALIZED_NAME_AFFINITY = "affinity"; + @SerializedName(SERIALIZED_NAME_AFFINITY) + private io.kubernetes.client.models.V1Affinity affinity = null; + + public static final String SERIALIZED_NAME_ARCHIVE_LOCATION = "archiveLocation"; + @SerializedName(SERIALIZED_NAME_ARCHIVE_LOCATION) + private ArtifactLocation archiveLocation; + + public static final String SERIALIZED_NAME_ARGUMENTS = "arguments"; + @SerializedName(SERIALIZED_NAME_ARGUMENTS) + private Arguments arguments; + + public static final String SERIALIZED_NAME_AUTOMOUNT_SERVICE_ACCOUNT_TOKEN = "automountServiceAccountToken"; + @SerializedName(SERIALIZED_NAME_AUTOMOUNT_SERVICE_ACCOUNT_TOKEN) + private Boolean automountServiceAccountToken; + + public static final String SERIALIZED_NAME_CONTAINER = "container"; + @SerializedName(SERIALIZED_NAME_CONTAINER) + private io.kubernetes.client.models.V1Container container = null; + + public static final String SERIALIZED_NAME_DAEMON = "daemon"; + @SerializedName(SERIALIZED_NAME_DAEMON) + private Boolean daemon; + + public static final String SERIALIZED_NAME_DAG = "dag"; + @SerializedName(SERIALIZED_NAME_DAG) + private DAGTemplate dag; + + public static final String SERIALIZED_NAME_EXECUTOR = "executor"; + @SerializedName(SERIALIZED_NAME_EXECUTOR) + private ExecutorConfig executor; + + public static final String SERIALIZED_NAME_HOST_ALIASES = "hostAliases"; + @SerializedName(SERIALIZED_NAME_HOST_ALIASES) + private List hostAliases = null; + + public static final String SERIALIZED_NAME_INIT_CONTAINERS = "initContainers"; + @SerializedName(SERIALIZED_NAME_INIT_CONTAINERS) + private List initContainers = null; + + public static final String SERIALIZED_NAME_INPUTS = "inputs"; + @SerializedName(SERIALIZED_NAME_INPUTS) + private Inputs inputs; + + public static final String SERIALIZED_NAME_METADATA = "metadata"; + @SerializedName(SERIALIZED_NAME_METADATA) + private Metadata metadata; + + public static final String SERIALIZED_NAME_NAME = "name"; + @SerializedName(SERIALIZED_NAME_NAME) + private String name; + + public static final String SERIALIZED_NAME_NODE_SELECTOR = "nodeSelector"; + @SerializedName(SERIALIZED_NAME_NODE_SELECTOR) + private Map nodeSelector = null; + + public static final String SERIALIZED_NAME_OUTPUTS = "outputs"; + @SerializedName(SERIALIZED_NAME_OUTPUTS) + private Outputs outputs; + + public static final String SERIALIZED_NAME_PARALLELISM = "parallelism"; + @SerializedName(SERIALIZED_NAME_PARALLELISM) + private Long parallelism; + + public static final String SERIALIZED_NAME_POD_SPEC_PATCH = "podSpecPatch"; + @SerializedName(SERIALIZED_NAME_POD_SPEC_PATCH) + private String podSpecPatch; + + public static final String SERIALIZED_NAME_PRIORITY = "priority"; + @SerializedName(SERIALIZED_NAME_PRIORITY) + private Integer priority; + + public static final String SERIALIZED_NAME_PRIORITY_CLASS_NAME = "priorityClassName"; + @SerializedName(SERIALIZED_NAME_PRIORITY_CLASS_NAME) + private String priorityClassName; + + public static final String SERIALIZED_NAME_RESOURCE = "resource"; + @SerializedName(SERIALIZED_NAME_RESOURCE) + private ResourceTemplate resource; + + public static final String SERIALIZED_NAME_RETRY_STRATEGY = "retryStrategy"; + @SerializedName(SERIALIZED_NAME_RETRY_STRATEGY) + private RetryStrategy retryStrategy; + + public static final String SERIALIZED_NAME_SCHEDULER_NAME = "schedulerName"; + @SerializedName(SERIALIZED_NAME_SCHEDULER_NAME) + private String schedulerName; + + public static final String SERIALIZED_NAME_SCRIPT = "script"; + @SerializedName(SERIALIZED_NAME_SCRIPT) + private ScriptTemplate script; + + public static final String SERIALIZED_NAME_SECURITY_CONTEXT = "securityContext"; + @SerializedName(SERIALIZED_NAME_SECURITY_CONTEXT) + private io.kubernetes.client.models.V1PodSecurityContext securityContext = null; + + public static final String SERIALIZED_NAME_SERVICE_ACCOUNT_NAME = "serviceAccountName"; + @SerializedName(SERIALIZED_NAME_SERVICE_ACCOUNT_NAME) + private String serviceAccountName; + + public static final String SERIALIZED_NAME_SIDECARS = "sidecars"; + @SerializedName(SERIALIZED_NAME_SIDECARS) + private List sidecars = null; + + public static final String SERIALIZED_NAME_STEPS = "steps"; + @SerializedName(SERIALIZED_NAME_STEPS) + private List steps = null; + + public static final String SERIALIZED_NAME_SUSPEND = "suspend"; + @SerializedName(SERIALIZED_NAME_SUSPEND) + private SuspendTemplate suspend; + + public static final String SERIALIZED_NAME_TEMPLATE = "template"; + @SerializedName(SERIALIZED_NAME_TEMPLATE) + private String template; + + public static final String SERIALIZED_NAME_TEMPLATE_REF = "templateRef"; + @SerializedName(SERIALIZED_NAME_TEMPLATE_REF) + private TemplateRef templateRef; + + public static final String SERIALIZED_NAME_TOLERATIONS = "tolerations"; + @SerializedName(SERIALIZED_NAME_TOLERATIONS) + private List tolerations = null; + + public static final String SERIALIZED_NAME_VOLUMES = "volumes"; + @SerializedName(SERIALIZED_NAME_VOLUMES) + private List volumes = null; + + + public Template activeDeadlineSeconds(Long activeDeadlineSeconds) { + + this.activeDeadlineSeconds = activeDeadlineSeconds; + return this; + } + + /** + * Optional duration in seconds relative to the StartTime that the pod may be active on a node before the system actively tries to terminate the pod; value must be positive integer This field is only applicable to container and script templates. + * @return activeDeadlineSeconds + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "Optional duration in seconds relative to the StartTime that the pod may be active on a node before the system actively tries to terminate the pod; value must be positive integer This field is only applicable to container and script templates.") + + public Long getActiveDeadlineSeconds() { + return activeDeadlineSeconds; + } + + + public void setActiveDeadlineSeconds(Long activeDeadlineSeconds) { + this.activeDeadlineSeconds = activeDeadlineSeconds; + } + + + public Template affinity(io.kubernetes.client.models.V1Affinity affinity) { + + this.affinity = affinity; + return this; + } + + /** + * Get affinity + * @return affinity + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "") + + public io.kubernetes.client.models.V1Affinity getAffinity() { + return affinity; + } + + + public void setAffinity(io.kubernetes.client.models.V1Affinity affinity) { + this.affinity = affinity; + } + + + public Template archiveLocation(ArtifactLocation archiveLocation) { + + this.archiveLocation = archiveLocation; + return this; + } + + /** + * Get archiveLocation + * @return archiveLocation + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "") + + public ArtifactLocation getArchiveLocation() { + return archiveLocation; + } + + + public void setArchiveLocation(ArtifactLocation archiveLocation) { + this.archiveLocation = archiveLocation; + } + + + public Template arguments(Arguments arguments) { + + this.arguments = arguments; + return this; + } + + /** + * Get arguments + * @return arguments + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "") + + public Arguments getArguments() { + return arguments; + } + + + public void setArguments(Arguments arguments) { + this.arguments = arguments; + } + + + public Template automountServiceAccountToken(Boolean automountServiceAccountToken) { + + this.automountServiceAccountToken = automountServiceAccountToken; + return this; + } + + /** + * AutomountServiceAccountToken indicates whether a service account token should be automatically mounted in pods. ServiceAccountName of ExecutorConfig must be specified if this value is false. + * @return automountServiceAccountToken + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "AutomountServiceAccountToken indicates whether a service account token should be automatically mounted in pods. ServiceAccountName of ExecutorConfig must be specified if this value is false.") + + public Boolean getAutomountServiceAccountToken() { + return automountServiceAccountToken; + } + + + public void setAutomountServiceAccountToken(Boolean automountServiceAccountToken) { + this.automountServiceAccountToken = automountServiceAccountToken; + } + + + public Template container(io.kubernetes.client.models.V1Container container) { + + this.container = container; + return this; + } + + /** + * Get container + * @return container + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "") + + public io.kubernetes.client.models.V1Container getContainer() { + return container; + } + + + public void setContainer(io.kubernetes.client.models.V1Container container) { + this.container = container; + } + + + public Template daemon(Boolean daemon) { + + this.daemon = daemon; + return this; + } + + /** + * Deamon will allow a workflow to proceed to the next step so long as the container reaches readiness + * @return daemon + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "Deamon will allow a workflow to proceed to the next step so long as the container reaches readiness") + + public Boolean getDaemon() { + return daemon; + } + + + public void setDaemon(Boolean daemon) { + this.daemon = daemon; + } + + + public Template dag(DAGTemplate dag) { + + this.dag = dag; + return this; + } + + /** + * Get dag + * @return dag + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "") + + public DAGTemplate getDag() { + return dag; + } + + + public void setDag(DAGTemplate dag) { + this.dag = dag; + } + + + public Template executor(ExecutorConfig executor) { + + this.executor = executor; + return this; + } + + /** + * Get executor + * @return executor + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "") + + public ExecutorConfig getExecutor() { + return executor; + } + + + public void setExecutor(ExecutorConfig executor) { + this.executor = executor; + } + + + public Template hostAliases(List hostAliases) { + + this.hostAliases = hostAliases; + return this; + } + + public Template addHostAliasesItem(io.kubernetes.client.models.V1HostAlias hostAliasesItem) { + if (this.hostAliases == null) { + this.hostAliases = new ArrayList(); + } + this.hostAliases.add(hostAliasesItem); + return this; + } + + /** + * HostAliases is an optional list of hosts and IPs that will be injected into the pod spec + * @return hostAliases + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "HostAliases is an optional list of hosts and IPs that will be injected into the pod spec") + + public List getHostAliases() { + return hostAliases; + } + + + public void setHostAliases(List hostAliases) { + this.hostAliases = hostAliases; + } + + + public Template initContainers(List initContainers) { + + this.initContainers = initContainers; + return this; + } + + public Template addInitContainersItem(UserContainer initContainersItem) { + if (this.initContainers == null) { + this.initContainers = new ArrayList(); + } + this.initContainers.add(initContainersItem); + return this; + } + + /** + * InitContainers is a list of containers which run before the main container. + * @return initContainers + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "InitContainers is a list of containers which run before the main container.") + + public List getInitContainers() { + return initContainers; + } + + + public void setInitContainers(List initContainers) { + this.initContainers = initContainers; + } + + + public Template inputs(Inputs inputs) { + + this.inputs = inputs; + return this; + } + + /** + * Get inputs + * @return inputs + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "") + + public Inputs getInputs() { + return inputs; + } + + + public void setInputs(Inputs inputs) { + this.inputs = inputs; + } + + + public Template metadata(Metadata metadata) { + + this.metadata = metadata; + return this; + } + + /** + * Get metadata + * @return metadata + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "") + + public Metadata getMetadata() { + return metadata; + } + + + public void setMetadata(Metadata metadata) { + this.metadata = metadata; + } + + + public Template name(String name) { + + this.name = name; + return this; + } + + /** + * Name is the name of the template + * @return name + **/ + @ApiModelProperty(required = true, value = "Name is the name of the template") + + public String getName() { + return name; + } + + + public void setName(String name) { + this.name = name; + } + + + public Template nodeSelector(Map nodeSelector) { + + this.nodeSelector = nodeSelector; + return this; + } + + public Template putNodeSelectorItem(String key, String nodeSelectorItem) { + if (this.nodeSelector == null) { + this.nodeSelector = new HashMap(); + } + this.nodeSelector.put(key, nodeSelectorItem); + return this; + } + + /** + * NodeSelector is a selector to schedule this step of the workflow to be run on the selected node(s). Overrides the selector set at the workflow level. + * @return nodeSelector + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "NodeSelector is a selector to schedule this step of the workflow to be run on the selected node(s). Overrides the selector set at the workflow level.") + + public Map getNodeSelector() { + return nodeSelector; + } + + + public void setNodeSelector(Map nodeSelector) { + this.nodeSelector = nodeSelector; + } + + + public Template outputs(Outputs outputs) { + + this.outputs = outputs; + return this; + } + + /** + * Get outputs + * @return outputs + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "") + + public Outputs getOutputs() { + return outputs; + } + + + public void setOutputs(Outputs outputs) { + this.outputs = outputs; + } + + + public Template parallelism(Long parallelism) { + + this.parallelism = parallelism; + return this; + } + + /** + * Parallelism limits the max total parallel pods that can execute at the same time within the boundaries of this template invocation. If additional steps/dag templates are invoked, the pods created by those templates will not be counted towards this total. + * @return parallelism + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "Parallelism limits the max total parallel pods that can execute at the same time within the boundaries of this template invocation. If additional steps/dag templates are invoked, the pods created by those templates will not be counted towards this total.") + + public Long getParallelism() { + return parallelism; + } + + + public void setParallelism(Long parallelism) { + this.parallelism = parallelism; + } + + + public Template podSpecPatch(String podSpecPatch) { + + this.podSpecPatch = podSpecPatch; + return this; + } + + /** + * PodSpecPatch holds strategic merge patch to apply against the pod spec. Allows parameterization of container fields which are not strings (e.g. resource limits). + * @return podSpecPatch + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "PodSpecPatch holds strategic merge patch to apply against the pod spec. Allows parameterization of container fields which are not strings (e.g. resource limits).") + + public String getPodSpecPatch() { + return podSpecPatch; + } + + + public void setPodSpecPatch(String podSpecPatch) { + this.podSpecPatch = podSpecPatch; + } + + + public Template priority(Integer priority) { + + this.priority = priority; + return this; + } + + /** + * Priority to apply to workflow pods. + * @return priority + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "Priority to apply to workflow pods.") + + public Integer getPriority() { + return priority; + } + + + public void setPriority(Integer priority) { + this.priority = priority; + } + + + public Template priorityClassName(String priorityClassName) { + + this.priorityClassName = priorityClassName; + return this; + } + + /** + * PriorityClassName to apply to workflow pods. + * @return priorityClassName + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "PriorityClassName to apply to workflow pods.") + + public String getPriorityClassName() { + return priorityClassName; + } + + + public void setPriorityClassName(String priorityClassName) { + this.priorityClassName = priorityClassName; + } + + + public Template resource(ResourceTemplate resource) { + + this.resource = resource; + return this; + } + + /** + * Get resource + * @return resource + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "") + + public ResourceTemplate getResource() { + return resource; + } + + + public void setResource(ResourceTemplate resource) { + this.resource = resource; + } + + + public Template retryStrategy(RetryStrategy retryStrategy) { + + this.retryStrategy = retryStrategy; + return this; + } + + /** + * Get retryStrategy + * @return retryStrategy + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "") + + public RetryStrategy getRetryStrategy() { + return retryStrategy; + } + + + public void setRetryStrategy(RetryStrategy retryStrategy) { + this.retryStrategy = retryStrategy; + } + + + public Template schedulerName(String schedulerName) { + + this.schedulerName = schedulerName; + return this; + } + + /** + * If specified, the pod will be dispatched by specified scheduler. Or it will be dispatched by workflow scope scheduler if specified. If neither specified, the pod will be dispatched by default scheduler. + * @return schedulerName + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "If specified, the pod will be dispatched by specified scheduler. Or it will be dispatched by workflow scope scheduler if specified. If neither specified, the pod will be dispatched by default scheduler.") + + public String getSchedulerName() { + return schedulerName; + } + + + public void setSchedulerName(String schedulerName) { + this.schedulerName = schedulerName; + } + + + public Template script(ScriptTemplate script) { + + this.script = script; + return this; + } + + /** + * Get script + * @return script + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "") + + public ScriptTemplate getScript() { + return script; + } + + + public void setScript(ScriptTemplate script) { + this.script = script; + } + + + public Template securityContext(io.kubernetes.client.models.V1PodSecurityContext securityContext) { + + this.securityContext = securityContext; + return this; + } + + /** + * Get securityContext + * @return securityContext + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "") + + public io.kubernetes.client.models.V1PodSecurityContext getSecurityContext() { + return securityContext; + } + + + public void setSecurityContext(io.kubernetes.client.models.V1PodSecurityContext securityContext) { + this.securityContext = securityContext; + } + + + public Template serviceAccountName(String serviceAccountName) { + + this.serviceAccountName = serviceAccountName; + return this; + } + + /** + * ServiceAccountName to apply to workflow pods + * @return serviceAccountName + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "ServiceAccountName to apply to workflow pods") + + public String getServiceAccountName() { + return serviceAccountName; + } + + + public void setServiceAccountName(String serviceAccountName) { + this.serviceAccountName = serviceAccountName; + } + + + public Template sidecars(List sidecars) { + + this.sidecars = sidecars; + return this; + } + + public Template addSidecarsItem(UserContainer sidecarsItem) { + if (this.sidecars == null) { + this.sidecars = new ArrayList(); + } + this.sidecars.add(sidecarsItem); + return this; + } + + /** + * Sidecars is a list of containers which run alongside the main container Sidecars are automatically killed when the main container completes + * @return sidecars + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "Sidecars is a list of containers which run alongside the main container Sidecars are automatically killed when the main container completes") + + public List getSidecars() { + return sidecars; + } + + + public void setSidecars(List sidecars) { + this.sidecars = sidecars; + } + + + public Template steps(List steps) { + + this.steps = steps; + return this; + } + + public Template addStepsItem(ParallelSteps stepsItem) { + if (this.steps == null) { + this.steps = new ArrayList(); + } + this.steps.add(stepsItem); + return this; + } + + /** + * Steps define a series of sequential/parallel workflow steps + * @return steps + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "Steps define a series of sequential/parallel workflow steps") + + public List getSteps() { + return steps; + } + + + public void setSteps(List steps) { + this.steps = steps; + } + + + public Template suspend(SuspendTemplate suspend) { + + this.suspend = suspend; + return this; + } + + /** + * Get suspend + * @return suspend + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "") + + public SuspendTemplate getSuspend() { + return suspend; + } + + + public void setSuspend(SuspendTemplate suspend) { + this.suspend = suspend; + } + + + public Template template(String template) { + + this.template = template; + return this; + } + + /** + * Template is the name of the template which is used as the base of this template. + * @return template + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "Template is the name of the template which is used as the base of this template.") + + public String getTemplate() { + return template; + } + + + public void setTemplate(String template) { + this.template = template; + } + + + public Template templateRef(TemplateRef templateRef) { + + this.templateRef = templateRef; + return this; + } + + /** + * Get templateRef + * @return templateRef + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "") + + public TemplateRef getTemplateRef() { + return templateRef; + } + + + public void setTemplateRef(TemplateRef templateRef) { + this.templateRef = templateRef; + } + + + public Template tolerations(List tolerations) { + + this.tolerations = tolerations; + return this; + } + + public Template addTolerationsItem(io.kubernetes.client.models.V1Toleration tolerationsItem) { + if (this.tolerations == null) { + this.tolerations = new ArrayList(); + } + this.tolerations.add(tolerationsItem); + return this; + } + + /** + * Tolerations to apply to workflow pods. + * @return tolerations + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "Tolerations to apply to workflow pods.") + + public List getTolerations() { + return tolerations; + } + + + public void setTolerations(List tolerations) { + this.tolerations = tolerations; + } + + + public Template volumes(List volumes) { + + this.volumes = volumes; + return this; + } + + public Template addVolumesItem(io.kubernetes.client.models.V1Volume volumesItem) { + if (this.volumes == null) { + this.volumes = new ArrayList(); + } + this.volumes.add(volumesItem); + return this; + } + + /** + * Volumes is a list of volumes that can be mounted by containers in a template. + * @return volumes + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "Volumes is a list of volumes that can be mounted by containers in a template.") + + public List getVolumes() { + return volumes; + } + + + public void setVolumes(List volumes) { + this.volumes = volumes; + } + + + @Override + public boolean equals(java.lang.Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + Template template = (Template) o; + return Objects.equals(this.activeDeadlineSeconds, template.activeDeadlineSeconds) && + Objects.equals(this.affinity, template.affinity) && + Objects.equals(this.archiveLocation, template.archiveLocation) && + Objects.equals(this.arguments, template.arguments) && + Objects.equals(this.automountServiceAccountToken, template.automountServiceAccountToken) && + Objects.equals(this.container, template.container) && + Objects.equals(this.daemon, template.daemon) && + Objects.equals(this.dag, template.dag) && + Objects.equals(this.executor, template.executor) && + Objects.equals(this.hostAliases, template.hostAliases) && + Objects.equals(this.initContainers, template.initContainers) && + Objects.equals(this.inputs, template.inputs) && + Objects.equals(this.metadata, template.metadata) && + Objects.equals(this.name, template.name) && + Objects.equals(this.nodeSelector, template.nodeSelector) && + Objects.equals(this.outputs, template.outputs) && + Objects.equals(this.parallelism, template.parallelism) && + Objects.equals(this.podSpecPatch, template.podSpecPatch) && + Objects.equals(this.priority, template.priority) && + Objects.equals(this.priorityClassName, template.priorityClassName) && + Objects.equals(this.resource, template.resource) && + Objects.equals(this.retryStrategy, template.retryStrategy) && + Objects.equals(this.schedulerName, template.schedulerName) && + Objects.equals(this.script, template.script) && + Objects.equals(this.securityContext, template.securityContext) && + Objects.equals(this.serviceAccountName, template.serviceAccountName) && + Objects.equals(this.sidecars, template.sidecars) && + Objects.equals(this.steps, template.steps) && + Objects.equals(this.suspend, template.suspend) && + Objects.equals(this.template, template.template) && + Objects.equals(this.templateRef, template.templateRef) && + Objects.equals(this.tolerations, template.tolerations) && + Objects.equals(this.volumes, template.volumes); + } + + @Override + public int hashCode() { + return Objects.hash(activeDeadlineSeconds, affinity, archiveLocation, arguments, automountServiceAccountToken, container, daemon, dag, executor, hostAliases, initContainers, inputs, metadata, name, nodeSelector, outputs, parallelism, podSpecPatch, priority, priorityClassName, resource, retryStrategy, schedulerName, script, securityContext, serviceAccountName, sidecars, steps, suspend, template, templateRef, tolerations, volumes); + } + + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class Template {\n"); + sb.append(" activeDeadlineSeconds: ").append(toIndentedString(activeDeadlineSeconds)).append("\n"); + sb.append(" affinity: ").append(toIndentedString(affinity)).append("\n"); + sb.append(" archiveLocation: ").append(toIndentedString(archiveLocation)).append("\n"); + sb.append(" arguments: ").append(toIndentedString(arguments)).append("\n"); + sb.append(" automountServiceAccountToken: ").append(toIndentedString(automountServiceAccountToken)).append("\n"); + sb.append(" container: ").append(toIndentedString(container)).append("\n"); + sb.append(" daemon: ").append(toIndentedString(daemon)).append("\n"); + sb.append(" dag: ").append(toIndentedString(dag)).append("\n"); + sb.append(" executor: ").append(toIndentedString(executor)).append("\n"); + sb.append(" hostAliases: ").append(toIndentedString(hostAliases)).append("\n"); + sb.append(" initContainers: ").append(toIndentedString(initContainers)).append("\n"); + sb.append(" inputs: ").append(toIndentedString(inputs)).append("\n"); + sb.append(" metadata: ").append(toIndentedString(metadata)).append("\n"); + sb.append(" name: ").append(toIndentedString(name)).append("\n"); + sb.append(" nodeSelector: ").append(toIndentedString(nodeSelector)).append("\n"); + sb.append(" outputs: ").append(toIndentedString(outputs)).append("\n"); + sb.append(" parallelism: ").append(toIndentedString(parallelism)).append("\n"); + sb.append(" podSpecPatch: ").append(toIndentedString(podSpecPatch)).append("\n"); + sb.append(" priority: ").append(toIndentedString(priority)).append("\n"); + sb.append(" priorityClassName: ").append(toIndentedString(priorityClassName)).append("\n"); + sb.append(" resource: ").append(toIndentedString(resource)).append("\n"); + sb.append(" retryStrategy: ").append(toIndentedString(retryStrategy)).append("\n"); + sb.append(" schedulerName: ").append(toIndentedString(schedulerName)).append("\n"); + sb.append(" script: ").append(toIndentedString(script)).append("\n"); + sb.append(" securityContext: ").append(toIndentedString(securityContext)).append("\n"); + sb.append(" serviceAccountName: ").append(toIndentedString(serviceAccountName)).append("\n"); + sb.append(" sidecars: ").append(toIndentedString(sidecars)).append("\n"); + sb.append(" steps: ").append(toIndentedString(steps)).append("\n"); + sb.append(" suspend: ").append(toIndentedString(suspend)).append("\n"); + sb.append(" template: ").append(toIndentedString(template)).append("\n"); + sb.append(" templateRef: ").append(toIndentedString(templateRef)).append("\n"); + sb.append(" tolerations: ").append(toIndentedString(tolerations)).append("\n"); + sb.append(" volumes: ").append(toIndentedString(volumes)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces + * (except the first line). + */ + private String toIndentedString(java.lang.Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } + +} + diff --git a/src/main/java/io/argoproj/workflow/models/TemplateRef.java b/src/main/java/io/argoproj/workflow/models/TemplateRef.java new file mode 100644 index 00000000..2436158e --- /dev/null +++ b/src/main/java/io/argoproj/workflow/models/TemplateRef.java @@ -0,0 +1,158 @@ +/* + * Argo + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: v2.4.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package io.argoproj.workflow.models; + +import java.util.Objects; +import java.util.Arrays; +import com.google.gson.TypeAdapter; +import com.google.gson.annotations.JsonAdapter; +import com.google.gson.annotations.SerializedName; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import java.io.IOException; + +/** + * TemplateRef is a reference of template resource. + */ +@ApiModel(description = "TemplateRef is a reference of template resource.") + +public class TemplateRef { + public static final String SERIALIZED_NAME_NAME = "name"; + @SerializedName(SERIALIZED_NAME_NAME) + private String name; + + public static final String SERIALIZED_NAME_RUNTIME_RESOLUTION = "runtimeResolution"; + @SerializedName(SERIALIZED_NAME_RUNTIME_RESOLUTION) + private Boolean runtimeResolution; + + public static final String SERIALIZED_NAME_TEMPLATE = "template"; + @SerializedName(SERIALIZED_NAME_TEMPLATE) + private String template; + + + public TemplateRef name(String name) { + + this.name = name; + return this; + } + + /** + * Name is the resource name of the template. + * @return name + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "Name is the resource name of the template.") + + public String getName() { + return name; + } + + + public void setName(String name) { + this.name = name; + } + + + public TemplateRef runtimeResolution(Boolean runtimeResolution) { + + this.runtimeResolution = runtimeResolution; + return this; + } + + /** + * RuntimeResolution skips validation at creation time. By enabling this option, you can create the referred workflow template before the actual runtime. + * @return runtimeResolution + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "RuntimeResolution skips validation at creation time. By enabling this option, you can create the referred workflow template before the actual runtime.") + + public Boolean getRuntimeResolution() { + return runtimeResolution; + } + + + public void setRuntimeResolution(Boolean runtimeResolution) { + this.runtimeResolution = runtimeResolution; + } + + + public TemplateRef template(String template) { + + this.template = template; + return this; + } + + /** + * Template is the name of referred template in the resource. + * @return template + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "Template is the name of referred template in the resource.") + + public String getTemplate() { + return template; + } + + + public void setTemplate(String template) { + this.template = template; + } + + + @Override + public boolean equals(java.lang.Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + TemplateRef templateRef = (TemplateRef) o; + return Objects.equals(this.name, templateRef.name) && + Objects.equals(this.runtimeResolution, templateRef.runtimeResolution) && + Objects.equals(this.template, templateRef.template); + } + + @Override + public int hashCode() { + return Objects.hash(name, runtimeResolution, template); + } + + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class TemplateRef {\n"); + sb.append(" name: ").append(toIndentedString(name)).append("\n"); + sb.append(" runtimeResolution: ").append(toIndentedString(runtimeResolution)).append("\n"); + sb.append(" template: ").append(toIndentedString(template)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces + * (except the first line). + */ + private String toIndentedString(java.lang.Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } + +} + diff --git a/src/main/java/io/argoproj/workflow/models/UserContainer.java b/src/main/java/io/argoproj/workflow/models/UserContainer.java new file mode 100644 index 00000000..0734c15a --- /dev/null +++ b/src/main/java/io/argoproj/workflow/models/UserContainer.java @@ -0,0 +1,795 @@ +/* + * Argo + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: v2.4.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package io.argoproj.workflow.models; + +import java.util.Objects; +import java.util.Arrays; +import com.google.gson.TypeAdapter; +import com.google.gson.annotations.JsonAdapter; +import com.google.gson.annotations.SerializedName; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * UserContainer is a container specified by a user. + */ +@ApiModel(description = "UserContainer is a container specified by a user.") + +public class UserContainer { + public static final String SERIALIZED_NAME_ARGS = "args"; + @SerializedName(SERIALIZED_NAME_ARGS) + private List args = null; + + public static final String SERIALIZED_NAME_COMMAND = "command"; + @SerializedName(SERIALIZED_NAME_COMMAND) + private List command = null; + + public static final String SERIALIZED_NAME_ENV = "env"; + @SerializedName(SERIALIZED_NAME_ENV) + private List env = null; + + public static final String SERIALIZED_NAME_ENV_FROM = "envFrom"; + @SerializedName(SERIALIZED_NAME_ENV_FROM) + private List envFrom = null; + + public static final String SERIALIZED_NAME_IMAGE = "image"; + @SerializedName(SERIALIZED_NAME_IMAGE) + private String image; + + public static final String SERIALIZED_NAME_IMAGE_PULL_POLICY = "imagePullPolicy"; + @SerializedName(SERIALIZED_NAME_IMAGE_PULL_POLICY) + private String imagePullPolicy; + + public static final String SERIALIZED_NAME_LIFECYCLE = "lifecycle"; + @SerializedName(SERIALIZED_NAME_LIFECYCLE) + private io.kubernetes.client.models.V1Lifecycle lifecycle = null; + + public static final String SERIALIZED_NAME_LIVENESS_PROBE = "livenessProbe"; + @SerializedName(SERIALIZED_NAME_LIVENESS_PROBE) + private io.kubernetes.client.models.V1Probe livenessProbe = null; + + public static final String SERIALIZED_NAME_MIRROR_VOLUME_MOUNTS = "mirrorVolumeMounts"; + @SerializedName(SERIALIZED_NAME_MIRROR_VOLUME_MOUNTS) + private Boolean mirrorVolumeMounts; + + public static final String SERIALIZED_NAME_NAME = "name"; + @SerializedName(SERIALIZED_NAME_NAME) + private String name; + + public static final String SERIALIZED_NAME_PORTS = "ports"; + @SerializedName(SERIALIZED_NAME_PORTS) + private List ports = null; + + public static final String SERIALIZED_NAME_READINESS_PROBE = "readinessProbe"; + @SerializedName(SERIALIZED_NAME_READINESS_PROBE) + private io.kubernetes.client.models.V1Probe readinessProbe = null; + + public static final String SERIALIZED_NAME_RESOURCES = "resources"; + @SerializedName(SERIALIZED_NAME_RESOURCES) + private io.kubernetes.client.models.V1ResourceRequirements resources = null; + + public static final String SERIALIZED_NAME_SECURITY_CONTEXT = "securityContext"; + @SerializedName(SERIALIZED_NAME_SECURITY_CONTEXT) + private io.kubernetes.client.models.V1SecurityContext securityContext = null; + + public static final String SERIALIZED_NAME_STARTUP_PROBE = "startupProbe"; + @SerializedName(SERIALIZED_NAME_STARTUP_PROBE) + private io.kubernetes.client.models.V1Probe startupProbe = null; + + public static final String SERIALIZED_NAME_STDIN = "stdin"; + @SerializedName(SERIALIZED_NAME_STDIN) + private Boolean stdin; + + public static final String SERIALIZED_NAME_STDIN_ONCE = "stdinOnce"; + @SerializedName(SERIALIZED_NAME_STDIN_ONCE) + private Boolean stdinOnce; + + public static final String SERIALIZED_NAME_TERMINATION_MESSAGE_PATH = "terminationMessagePath"; + @SerializedName(SERIALIZED_NAME_TERMINATION_MESSAGE_PATH) + private String terminationMessagePath; + + public static final String SERIALIZED_NAME_TERMINATION_MESSAGE_POLICY = "terminationMessagePolicy"; + @SerializedName(SERIALIZED_NAME_TERMINATION_MESSAGE_POLICY) + private String terminationMessagePolicy; + + public static final String SERIALIZED_NAME_TTY = "tty"; + @SerializedName(SERIALIZED_NAME_TTY) + private Boolean tty; + + public static final String SERIALIZED_NAME_VOLUME_DEVICES = "volumeDevices"; + @SerializedName(SERIALIZED_NAME_VOLUME_DEVICES) + private List volumeDevices = null; + + public static final String SERIALIZED_NAME_VOLUME_MOUNTS = "volumeMounts"; + @SerializedName(SERIALIZED_NAME_VOLUME_MOUNTS) + private List volumeMounts = null; + + public static final String SERIALIZED_NAME_WORKING_DIR = "workingDir"; + @SerializedName(SERIALIZED_NAME_WORKING_DIR) + private String workingDir; + + + public UserContainer args(List args) { + + this.args = args; + return this; + } + + public UserContainer addArgsItem(String argsItem) { + if (this.args == null) { + this.args = new ArrayList(); + } + this.args.add(argsItem); + return this; + } + + /** + * Arguments to the entrypoint. The docker image's CMD is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell + * @return args + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "Arguments to the entrypoint. The docker image's CMD is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell") + + public List getArgs() { + return args; + } + + + public void setArgs(List args) { + this.args = args; + } + + + public UserContainer command(List command) { + + this.command = command; + return this; + } + + public UserContainer addCommandItem(String commandItem) { + if (this.command == null) { + this.command = new ArrayList(); + } + this.command.add(commandItem); + return this; + } + + /** + * Entrypoint array. Not executed within a shell. The docker image's ENTRYPOINT is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell + * @return command + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "Entrypoint array. Not executed within a shell. The docker image's ENTRYPOINT is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell") + + public List getCommand() { + return command; + } + + + public void setCommand(List command) { + this.command = command; + } + + + public UserContainer env(List env) { + + this.env = env; + return this; + } + + public UserContainer addEnvItem(io.kubernetes.client.models.V1EnvVar envItem) { + if (this.env == null) { + this.env = new ArrayList(); + } + this.env.add(envItem); + return this; + } + + /** + * List of environment variables to set in the container. Cannot be updated. + * @return env + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "List of environment variables to set in the container. Cannot be updated.") + + public List getEnv() { + return env; + } + + + public void setEnv(List env) { + this.env = env; + } + + + public UserContainer envFrom(List envFrom) { + + this.envFrom = envFrom; + return this; + } + + public UserContainer addEnvFromItem(io.kubernetes.client.models.V1EnvFromSource envFromItem) { + if (this.envFrom == null) { + this.envFrom = new ArrayList(); + } + this.envFrom.add(envFromItem); + return this; + } + + /** + * List of sources to populate environment variables in the container. The keys defined within a source must be a C_IDENTIFIER. All invalid keys will be reported as an event when the container is starting. When a key exists in multiple sources, the value associated with the last source will take precedence. Values defined by an Env with a duplicate key will take precedence. Cannot be updated. + * @return envFrom + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "List of sources to populate environment variables in the container. The keys defined within a source must be a C_IDENTIFIER. All invalid keys will be reported as an event when the container is starting. When a key exists in multiple sources, the value associated with the last source will take precedence. Values defined by an Env with a duplicate key will take precedence. Cannot be updated.") + + public List getEnvFrom() { + return envFrom; + } + + + public void setEnvFrom(List envFrom) { + this.envFrom = envFrom; + } + + + public UserContainer image(String image) { + + this.image = image; + return this; + } + + /** + * Docker image name. More info: https://kubernetes.io/docs/concepts/containers/images This field is optional to allow higher level config management to default or override container images in workload controllers like Deployments and StatefulSets. + * @return image + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "Docker image name. More info: https://kubernetes.io/docs/concepts/containers/images This field is optional to allow higher level config management to default or override container images in workload controllers like Deployments and StatefulSets.") + + public String getImage() { + return image; + } + + + public void setImage(String image) { + this.image = image; + } + + + public UserContainer imagePullPolicy(String imagePullPolicy) { + + this.imagePullPolicy = imagePullPolicy; + return this; + } + + /** + * Image pull policy. One of Always, Never, IfNotPresent. Defaults to Always if :latest tag is specified, or IfNotPresent otherwise. Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images + * @return imagePullPolicy + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "Image pull policy. One of Always, Never, IfNotPresent. Defaults to Always if :latest tag is specified, or IfNotPresent otherwise. Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images") + + public String getImagePullPolicy() { + return imagePullPolicy; + } + + + public void setImagePullPolicy(String imagePullPolicy) { + this.imagePullPolicy = imagePullPolicy; + } + + + public UserContainer lifecycle(io.kubernetes.client.models.V1Lifecycle lifecycle) { + + this.lifecycle = lifecycle; + return this; + } + + /** + * Get lifecycle + * @return lifecycle + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "") + + public io.kubernetes.client.models.V1Lifecycle getLifecycle() { + return lifecycle; + } + + + public void setLifecycle(io.kubernetes.client.models.V1Lifecycle lifecycle) { + this.lifecycle = lifecycle; + } + + + public UserContainer livenessProbe(io.kubernetes.client.models.V1Probe livenessProbe) { + + this.livenessProbe = livenessProbe; + return this; + } + + /** + * Get livenessProbe + * @return livenessProbe + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "") + + public io.kubernetes.client.models.V1Probe getLivenessProbe() { + return livenessProbe; + } + + + public void setLivenessProbe(io.kubernetes.client.models.V1Probe livenessProbe) { + this.livenessProbe = livenessProbe; + } + + + public UserContainer mirrorVolumeMounts(Boolean mirrorVolumeMounts) { + + this.mirrorVolumeMounts = mirrorVolumeMounts; + return this; + } + + /** + * MirrorVolumeMounts will mount the same volumes specified in the main container to the container (including artifacts), at the same mountPaths. This enables dind daemon to partially see the same filesystem as the main container in order to use features such as docker volume binding + * @return mirrorVolumeMounts + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "MirrorVolumeMounts will mount the same volumes specified in the main container to the container (including artifacts), at the same mountPaths. This enables dind daemon to partially see the same filesystem as the main container in order to use features such as docker volume binding") + + public Boolean getMirrorVolumeMounts() { + return mirrorVolumeMounts; + } + + + public void setMirrorVolumeMounts(Boolean mirrorVolumeMounts) { + this.mirrorVolumeMounts = mirrorVolumeMounts; + } + + + public UserContainer name(String name) { + + this.name = name; + return this; + } + + /** + * Name of the container specified as a DNS_LABEL. Each container in a pod must have a unique name (DNS_LABEL). Cannot be updated. + * @return name + **/ + @ApiModelProperty(required = true, value = "Name of the container specified as a DNS_LABEL. Each container in a pod must have a unique name (DNS_LABEL). Cannot be updated.") + + public String getName() { + return name; + } + + + public void setName(String name) { + this.name = name; + } + + + public UserContainer ports(List ports) { + + this.ports = ports; + return this; + } + + public UserContainer addPortsItem(io.kubernetes.client.models.V1ContainerPort portsItem) { + if (this.ports == null) { + this.ports = new ArrayList(); + } + this.ports.add(portsItem); + return this; + } + + /** + * List of ports to expose from the container. Exposing a port here gives the system additional information about the network connections a container uses, but is primarily informational. Not specifying a port here DOES NOT prevent that port from being exposed. Any port which is listening on the default \"0.0.0.0\" address inside a container will be accessible from the network. Cannot be updated. + * @return ports + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "List of ports to expose from the container. Exposing a port here gives the system additional information about the network connections a container uses, but is primarily informational. Not specifying a port here DOES NOT prevent that port from being exposed. Any port which is listening on the default \"0.0.0.0\" address inside a container will be accessible from the network. Cannot be updated.") + + public List getPorts() { + return ports; + } + + + public void setPorts(List ports) { + this.ports = ports; + } + + + public UserContainer readinessProbe(io.kubernetes.client.models.V1Probe readinessProbe) { + + this.readinessProbe = readinessProbe; + return this; + } + + /** + * Get readinessProbe + * @return readinessProbe + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "") + + public io.kubernetes.client.models.V1Probe getReadinessProbe() { + return readinessProbe; + } + + + public void setReadinessProbe(io.kubernetes.client.models.V1Probe readinessProbe) { + this.readinessProbe = readinessProbe; + } + + + public UserContainer resources(io.kubernetes.client.models.V1ResourceRequirements resources) { + + this.resources = resources; + return this; + } + + /** + * Get resources + * @return resources + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "") + + public io.kubernetes.client.models.V1ResourceRequirements getResources() { + return resources; + } + + + public void setResources(io.kubernetes.client.models.V1ResourceRequirements resources) { + this.resources = resources; + } + + + public UserContainer securityContext(io.kubernetes.client.models.V1SecurityContext securityContext) { + + this.securityContext = securityContext; + return this; + } + + /** + * Get securityContext + * @return securityContext + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "") + + public io.kubernetes.client.models.V1SecurityContext getSecurityContext() { + return securityContext; + } + + + public void setSecurityContext(io.kubernetes.client.models.V1SecurityContext securityContext) { + this.securityContext = securityContext; + } + + + public UserContainer startupProbe(io.kubernetes.client.models.V1Probe startupProbe) { + + this.startupProbe = startupProbe; + return this; + } + + /** + * Get startupProbe + * @return startupProbe + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "") + + public io.kubernetes.client.models.V1Probe getStartupProbe() { + return startupProbe; + } + + + public void setStartupProbe(io.kubernetes.client.models.V1Probe startupProbe) { + this.startupProbe = startupProbe; + } + + + public UserContainer stdin(Boolean stdin) { + + this.stdin = stdin; + return this; + } + + /** + * Whether this container should allocate a buffer for stdin in the container runtime. If this is not set, reads from stdin in the container will always result in EOF. Default is false. + * @return stdin + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "Whether this container should allocate a buffer for stdin in the container runtime. If this is not set, reads from stdin in the container will always result in EOF. Default is false.") + + public Boolean getStdin() { + return stdin; + } + + + public void setStdin(Boolean stdin) { + this.stdin = stdin; + } + + + public UserContainer stdinOnce(Boolean stdinOnce) { + + this.stdinOnce = stdinOnce; + return this; + } + + /** + * Whether the container runtime should close the stdin channel after it has been opened by a single attach. When stdin is true the stdin stream will remain open across multiple attach sessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the first client attaches to stdin, and then remains open and accepts data until the client disconnects, at which time stdin is closed and remains closed until the container is restarted. If this flag is false, a container processes that reads from stdin will never receive an EOF. Default is false + * @return stdinOnce + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "Whether the container runtime should close the stdin channel after it has been opened by a single attach. When stdin is true the stdin stream will remain open across multiple attach sessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the first client attaches to stdin, and then remains open and accepts data until the client disconnects, at which time stdin is closed and remains closed until the container is restarted. If this flag is false, a container processes that reads from stdin will never receive an EOF. Default is false") + + public Boolean getStdinOnce() { + return stdinOnce; + } + + + public void setStdinOnce(Boolean stdinOnce) { + this.stdinOnce = stdinOnce; + } + + + public UserContainer terminationMessagePath(String terminationMessagePath) { + + this.terminationMessagePath = terminationMessagePath; + return this; + } + + /** + * Optional: Path at which the file to which the container's termination message will be written is mounted into the container's filesystem. Message written is intended to be brief final status, such as an assertion failure message. Will be truncated by the node if greater than 4096 bytes. The total message length across all containers will be limited to 12kb. Defaults to /dev/termination-log. Cannot be updated. + * @return terminationMessagePath + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "Optional: Path at which the file to which the container's termination message will be written is mounted into the container's filesystem. Message written is intended to be brief final status, such as an assertion failure message. Will be truncated by the node if greater than 4096 bytes. The total message length across all containers will be limited to 12kb. Defaults to /dev/termination-log. Cannot be updated.") + + public String getTerminationMessagePath() { + return terminationMessagePath; + } + + + public void setTerminationMessagePath(String terminationMessagePath) { + this.terminationMessagePath = terminationMessagePath; + } + + + public UserContainer terminationMessagePolicy(String terminationMessagePolicy) { + + this.terminationMessagePolicy = terminationMessagePolicy; + return this; + } + + /** + * Indicate how the termination message should be populated. File will use the contents of terminationMessagePath to populate the container status message on both success and failure. FallbackToLogsOnError will use the last chunk of container log output if the termination message file is empty and the container exited with an error. The log output is limited to 2048 bytes or 80 lines, whichever is smaller. Defaults to File. Cannot be updated. + * @return terminationMessagePolicy + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "Indicate how the termination message should be populated. File will use the contents of terminationMessagePath to populate the container status message on both success and failure. FallbackToLogsOnError will use the last chunk of container log output if the termination message file is empty and the container exited with an error. The log output is limited to 2048 bytes or 80 lines, whichever is smaller. Defaults to File. Cannot be updated.") + + public String getTerminationMessagePolicy() { + return terminationMessagePolicy; + } + + + public void setTerminationMessagePolicy(String terminationMessagePolicy) { + this.terminationMessagePolicy = terminationMessagePolicy; + } + + + public UserContainer tty(Boolean tty) { + + this.tty = tty; + return this; + } + + /** + * Whether this container should allocate a TTY for itself, also requires 'stdin' to be true. Default is false. + * @return tty + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "Whether this container should allocate a TTY for itself, also requires 'stdin' to be true. Default is false.") + + public Boolean getTty() { + return tty; + } + + + public void setTty(Boolean tty) { + this.tty = tty; + } + + + public UserContainer volumeDevices(List volumeDevices) { + + this.volumeDevices = volumeDevices; + return this; + } + + public UserContainer addVolumeDevicesItem(io.kubernetes.client.models.V1VolumeDevice volumeDevicesItem) { + if (this.volumeDevices == null) { + this.volumeDevices = new ArrayList(); + } + this.volumeDevices.add(volumeDevicesItem); + return this; + } + + /** + * volumeDevices is the list of block devices to be used by the container. This is a beta feature. + * @return volumeDevices + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "volumeDevices is the list of block devices to be used by the container. This is a beta feature.") + + public List getVolumeDevices() { + return volumeDevices; + } + + + public void setVolumeDevices(List volumeDevices) { + this.volumeDevices = volumeDevices; + } + + + public UserContainer volumeMounts(List volumeMounts) { + + this.volumeMounts = volumeMounts; + return this; + } + + public UserContainer addVolumeMountsItem(io.kubernetes.client.models.V1VolumeMount volumeMountsItem) { + if (this.volumeMounts == null) { + this.volumeMounts = new ArrayList(); + } + this.volumeMounts.add(volumeMountsItem); + return this; + } + + /** + * Pod volumes to mount into the container's filesystem. Cannot be updated. + * @return volumeMounts + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "Pod volumes to mount into the container's filesystem. Cannot be updated.") + + public List getVolumeMounts() { + return volumeMounts; + } + + + public void setVolumeMounts(List volumeMounts) { + this.volumeMounts = volumeMounts; + } + + + public UserContainer workingDir(String workingDir) { + + this.workingDir = workingDir; + return this; + } + + /** + * Container's working directory. If not specified, the container runtime's default will be used, which might be configured in the container image. Cannot be updated. + * @return workingDir + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "Container's working directory. If not specified, the container runtime's default will be used, which might be configured in the container image. Cannot be updated.") + + public String getWorkingDir() { + return workingDir; + } + + + public void setWorkingDir(String workingDir) { + this.workingDir = workingDir; + } + + + @Override + public boolean equals(java.lang.Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + UserContainer userContainer = (UserContainer) o; + return Objects.equals(this.args, userContainer.args) && + Objects.equals(this.command, userContainer.command) && + Objects.equals(this.env, userContainer.env) && + Objects.equals(this.envFrom, userContainer.envFrom) && + Objects.equals(this.image, userContainer.image) && + Objects.equals(this.imagePullPolicy, userContainer.imagePullPolicy) && + Objects.equals(this.lifecycle, userContainer.lifecycle) && + Objects.equals(this.livenessProbe, userContainer.livenessProbe) && + Objects.equals(this.mirrorVolumeMounts, userContainer.mirrorVolumeMounts) && + Objects.equals(this.name, userContainer.name) && + Objects.equals(this.ports, userContainer.ports) && + Objects.equals(this.readinessProbe, userContainer.readinessProbe) && + Objects.equals(this.resources, userContainer.resources) && + Objects.equals(this.securityContext, userContainer.securityContext) && + Objects.equals(this.startupProbe, userContainer.startupProbe) && + Objects.equals(this.stdin, userContainer.stdin) && + Objects.equals(this.stdinOnce, userContainer.stdinOnce) && + Objects.equals(this.terminationMessagePath, userContainer.terminationMessagePath) && + Objects.equals(this.terminationMessagePolicy, userContainer.terminationMessagePolicy) && + Objects.equals(this.tty, userContainer.tty) && + Objects.equals(this.volumeDevices, userContainer.volumeDevices) && + Objects.equals(this.volumeMounts, userContainer.volumeMounts) && + Objects.equals(this.workingDir, userContainer.workingDir); + } + + @Override + public int hashCode() { + return Objects.hash(args, command, env, envFrom, image, imagePullPolicy, lifecycle, livenessProbe, mirrorVolumeMounts, name, ports, readinessProbe, resources, securityContext, startupProbe, stdin, stdinOnce, terminationMessagePath, terminationMessagePolicy, tty, volumeDevices, volumeMounts, workingDir); + } + + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class UserContainer {\n"); + sb.append(" args: ").append(toIndentedString(args)).append("\n"); + sb.append(" command: ").append(toIndentedString(command)).append("\n"); + sb.append(" env: ").append(toIndentedString(env)).append("\n"); + sb.append(" envFrom: ").append(toIndentedString(envFrom)).append("\n"); + sb.append(" image: ").append(toIndentedString(image)).append("\n"); + sb.append(" imagePullPolicy: ").append(toIndentedString(imagePullPolicy)).append("\n"); + sb.append(" lifecycle: ").append(toIndentedString(lifecycle)).append("\n"); + sb.append(" livenessProbe: ").append(toIndentedString(livenessProbe)).append("\n"); + sb.append(" mirrorVolumeMounts: ").append(toIndentedString(mirrorVolumeMounts)).append("\n"); + sb.append(" name: ").append(toIndentedString(name)).append("\n"); + sb.append(" ports: ").append(toIndentedString(ports)).append("\n"); + sb.append(" readinessProbe: ").append(toIndentedString(readinessProbe)).append("\n"); + sb.append(" resources: ").append(toIndentedString(resources)).append("\n"); + sb.append(" securityContext: ").append(toIndentedString(securityContext)).append("\n"); + sb.append(" startupProbe: ").append(toIndentedString(startupProbe)).append("\n"); + sb.append(" stdin: ").append(toIndentedString(stdin)).append("\n"); + sb.append(" stdinOnce: ").append(toIndentedString(stdinOnce)).append("\n"); + sb.append(" terminationMessagePath: ").append(toIndentedString(terminationMessagePath)).append("\n"); + sb.append(" terminationMessagePolicy: ").append(toIndentedString(terminationMessagePolicy)).append("\n"); + sb.append(" tty: ").append(toIndentedString(tty)).append("\n"); + sb.append(" volumeDevices: ").append(toIndentedString(volumeDevices)).append("\n"); + sb.append(" volumeMounts: ").append(toIndentedString(volumeMounts)).append("\n"); + sb.append(" workingDir: ").append(toIndentedString(workingDir)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces + * (except the first line). + */ + private String toIndentedString(java.lang.Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } + +} + diff --git a/src/main/java/io/argoproj/workflow/models/ValueFrom.java b/src/main/java/io/argoproj/workflow/models/ValueFrom.java new file mode 100644 index 00000000..dccc93d3 --- /dev/null +++ b/src/main/java/io/argoproj/workflow/models/ValueFrom.java @@ -0,0 +1,187 @@ +/* + * Argo + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: v2.4.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package io.argoproj.workflow.models; + +import java.util.Objects; +import java.util.Arrays; +import com.google.gson.TypeAdapter; +import com.google.gson.annotations.JsonAdapter; +import com.google.gson.annotations.SerializedName; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import java.io.IOException; + +/** + * ValueFrom describes a location in which to obtain the value to a parameter + */ +@ApiModel(description = "ValueFrom describes a location in which to obtain the value to a parameter") + +public class ValueFrom { + public static final String SERIALIZED_NAME_JQ_FILTER = "jqFilter"; + @SerializedName(SERIALIZED_NAME_JQ_FILTER) + private String jqFilter; + + public static final String SERIALIZED_NAME_JSON_PATH = "jsonPath"; + @SerializedName(SERIALIZED_NAME_JSON_PATH) + private String jsonPath; + + public static final String SERIALIZED_NAME_PARAMETER = "parameter"; + @SerializedName(SERIALIZED_NAME_PARAMETER) + private String parameter; + + public static final String SERIALIZED_NAME_PATH = "path"; + @SerializedName(SERIALIZED_NAME_PATH) + private String path; + + + public ValueFrom jqFilter(String jqFilter) { + + this.jqFilter = jqFilter; + return this; + } + + /** + * JQFilter expression against the resource object in resource templates + * @return jqFilter + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "JQFilter expression against the resource object in resource templates") + + public String getJqFilter() { + return jqFilter; + } + + + public void setJqFilter(String jqFilter) { + this.jqFilter = jqFilter; + } + + + public ValueFrom jsonPath(String jsonPath) { + + this.jsonPath = jsonPath; + return this; + } + + /** + * JSONPath of a resource to retrieve an output parameter value from in resource templates + * @return jsonPath + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "JSONPath of a resource to retrieve an output parameter value from in resource templates") + + public String getJsonPath() { + return jsonPath; + } + + + public void setJsonPath(String jsonPath) { + this.jsonPath = jsonPath; + } + + + public ValueFrom parameter(String parameter) { + + this.parameter = parameter; + return this; + } + + /** + * Parameter reference to a step or dag task in which to retrieve an output parameter value from (e.g. '{{steps.mystep.outputs.myparam}}') + * @return parameter + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "Parameter reference to a step or dag task in which to retrieve an output parameter value from (e.g. '{{steps.mystep.outputs.myparam}}')") + + public String getParameter() { + return parameter; + } + + + public void setParameter(String parameter) { + this.parameter = parameter; + } + + + public ValueFrom path(String path) { + + this.path = path; + return this; + } + + /** + * Path in the container to retrieve an output parameter value from in container templates + * @return path + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "Path in the container to retrieve an output parameter value from in container templates") + + public String getPath() { + return path; + } + + + public void setPath(String path) { + this.path = path; + } + + + @Override + public boolean equals(java.lang.Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + ValueFrom valueFrom = (ValueFrom) o; + return Objects.equals(this.jqFilter, valueFrom.jqFilter) && + Objects.equals(this.jsonPath, valueFrom.jsonPath) && + Objects.equals(this.parameter, valueFrom.parameter) && + Objects.equals(this.path, valueFrom.path); + } + + @Override + public int hashCode() { + return Objects.hash(jqFilter, jsonPath, parameter, path); + } + + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class ValueFrom {\n"); + sb.append(" jqFilter: ").append(toIndentedString(jqFilter)).append("\n"); + sb.append(" jsonPath: ").append(toIndentedString(jsonPath)).append("\n"); + sb.append(" parameter: ").append(toIndentedString(parameter)).append("\n"); + sb.append(" path: ").append(toIndentedString(path)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces + * (except the first line). + */ + private String toIndentedString(java.lang.Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } + +} + diff --git a/src/main/java/io/argoproj/workflow/models/Workflow.java b/src/main/java/io/argoproj/workflow/models/Workflow.java new file mode 100644 index 00000000..eb2cee74 --- /dev/null +++ b/src/main/java/io/argoproj/workflow/models/Workflow.java @@ -0,0 +1,216 @@ +/* + * Argo + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: v2.4.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package io.argoproj.workflow.models; + +import java.util.Objects; +import java.util.Arrays; +import com.google.gson.TypeAdapter; +import com.google.gson.annotations.JsonAdapter; +import com.google.gson.annotations.SerializedName; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import io.argoproj.workflow.models.IoK8sApimachineryPkgApisMetaV1ObjectMeta; +import io.argoproj.workflow.models.WorkflowSpec; +import io.argoproj.workflow.models.WorkflowStatus; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import java.io.IOException; + +/** + * Workflow is the definition of a workflow resource + */ +@ApiModel(description = "Workflow is the definition of a workflow resource") + +public class Workflow { + public static final String SERIALIZED_NAME_API_VERSION = "apiVersion"; + @SerializedName(SERIALIZED_NAME_API_VERSION) + private String apiVersion; + + public static final String SERIALIZED_NAME_KIND = "kind"; + @SerializedName(SERIALIZED_NAME_KIND) + private String kind; + + public static final String SERIALIZED_NAME_METADATA = "metadata"; + @SerializedName(SERIALIZED_NAME_METADATA) + private IoK8sApimachineryPkgApisMetaV1ObjectMeta metadata = null; + + public static final String SERIALIZED_NAME_SPEC = "spec"; + @SerializedName(SERIALIZED_NAME_SPEC) + private WorkflowSpec spec; + + public static final String SERIALIZED_NAME_STATUS = "status"; + @SerializedName(SERIALIZED_NAME_STATUS) + private WorkflowStatus status; + + + public Workflow apiVersion(String apiVersion) { + + this.apiVersion = apiVersion; + return this; + } + + /** + * APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources + * @return apiVersion + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources") + + public String getApiVersion() { + return apiVersion; + } + + + public void setApiVersion(String apiVersion) { + this.apiVersion = apiVersion; + } + + + public Workflow kind(String kind) { + + this.kind = kind; + return this; + } + + /** + * Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds + * @return kind + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds") + + public String getKind() { + return kind; + } + + + public void setKind(String kind) { + this.kind = kind; + } + + + public Workflow metadata(IoK8sApimachineryPkgApisMetaV1ObjectMeta metadata) { + + this.metadata = metadata; + return this; + } + + /** + * Get metadata + * @return metadata + **/ + @ApiModelProperty(required = true, value = "") + + public IoK8sApimachineryPkgApisMetaV1ObjectMeta getMetadata() { + return metadata; + } + + + public void setMetadata(IoK8sApimachineryPkgApisMetaV1ObjectMeta metadata) { + this.metadata = metadata; + } + + + public Workflow spec(WorkflowSpec spec) { + + this.spec = spec; + return this; + } + + /** + * Get spec + * @return spec + **/ + @ApiModelProperty(required = true, value = "") + + public WorkflowSpec getSpec() { + return spec; + } + + + public void setSpec(WorkflowSpec spec) { + this.spec = spec; + } + + + public Workflow status(WorkflowStatus status) { + + this.status = status; + return this; + } + + /** + * Get status + * @return status + **/ + @ApiModelProperty(required = true, value = "") + + public WorkflowStatus getStatus() { + return status; + } + + + public void setStatus(WorkflowStatus status) { + this.status = status; + } + + + @Override + public boolean equals(java.lang.Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + Workflow workflow = (Workflow) o; + return Objects.equals(this.apiVersion, workflow.apiVersion) && + Objects.equals(this.kind, workflow.kind) && + Objects.equals(this.metadata, workflow.metadata) && + Objects.equals(this.spec, workflow.spec) && + Objects.equals(this.status, workflow.status); + } + + @Override + public int hashCode() { + return Objects.hash(apiVersion, kind, metadata, spec, status); + } + + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class Workflow {\n"); + sb.append(" apiVersion: ").append(toIndentedString(apiVersion)).append("\n"); + sb.append(" kind: ").append(toIndentedString(kind)).append("\n"); + sb.append(" metadata: ").append(toIndentedString(metadata)).append("\n"); + sb.append(" spec: ").append(toIndentedString(spec)).append("\n"); + sb.append(" status: ").append(toIndentedString(status)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces + * (except the first line). + */ + private String toIndentedString(java.lang.Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } + +} + diff --git a/src/main/java/io/argoproj/workflow/models/WorkflowList.java b/src/main/java/io/argoproj/workflow/models/WorkflowList.java new file mode 100644 index 00000000..aa843479 --- /dev/null +++ b/src/main/java/io/argoproj/workflow/models/WorkflowList.java @@ -0,0 +1,194 @@ +/* + * Argo + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: v2.4.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package io.argoproj.workflow.models; + +import java.util.Objects; +import java.util.Arrays; +import com.google.gson.TypeAdapter; +import com.google.gson.annotations.JsonAdapter; +import com.google.gson.annotations.SerializedName; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import io.argoproj.workflow.models.IoK8sApimachineryPkgApisMetaV1ListMeta; +import io.argoproj.workflow.models.Workflow; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * WorkflowList is list of Workflow resources + */ +@ApiModel(description = "WorkflowList is list of Workflow resources") + +public class WorkflowList { + public static final String SERIALIZED_NAME_API_VERSION = "apiVersion"; + @SerializedName(SERIALIZED_NAME_API_VERSION) + private String apiVersion; + + public static final String SERIALIZED_NAME_ITEMS = "items"; + @SerializedName(SERIALIZED_NAME_ITEMS) + private List items = new ArrayList(); + + public static final String SERIALIZED_NAME_KIND = "kind"; + @SerializedName(SERIALIZED_NAME_KIND) + private String kind; + + public static final String SERIALIZED_NAME_METADATA = "metadata"; + @SerializedName(SERIALIZED_NAME_METADATA) + private IoK8sApimachineryPkgApisMetaV1ListMeta metadata = null; + + + public WorkflowList apiVersion(String apiVersion) { + + this.apiVersion = apiVersion; + return this; + } + + /** + * APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources + * @return apiVersion + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources") + + public String getApiVersion() { + return apiVersion; + } + + + public void setApiVersion(String apiVersion) { + this.apiVersion = apiVersion; + } + + + public WorkflowList items(List items) { + + this.items = items; + return this; + } + + public WorkflowList addItemsItem(Workflow itemsItem) { + this.items.add(itemsItem); + return this; + } + + /** + * Get items + * @return items + **/ + @ApiModelProperty(required = true, value = "") + + public List getItems() { + return items; + } + + + public void setItems(List items) { + this.items = items; + } + + + public WorkflowList kind(String kind) { + + this.kind = kind; + return this; + } + + /** + * Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds + * @return kind + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds") + + public String getKind() { + return kind; + } + + + public void setKind(String kind) { + this.kind = kind; + } + + + public WorkflowList metadata(IoK8sApimachineryPkgApisMetaV1ListMeta metadata) { + + this.metadata = metadata; + return this; + } + + /** + * Get metadata + * @return metadata + **/ + @ApiModelProperty(required = true, value = "") + + public IoK8sApimachineryPkgApisMetaV1ListMeta getMetadata() { + return metadata; + } + + + public void setMetadata(IoK8sApimachineryPkgApisMetaV1ListMeta metadata) { + this.metadata = metadata; + } + + + @Override + public boolean equals(java.lang.Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + WorkflowList workflowList = (WorkflowList) o; + return Objects.equals(this.apiVersion, workflowList.apiVersion) && + Objects.equals(this.items, workflowList.items) && + Objects.equals(this.kind, workflowList.kind) && + Objects.equals(this.metadata, workflowList.metadata); + } + + @Override + public int hashCode() { + return Objects.hash(apiVersion, items, kind, metadata); + } + + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class WorkflowList {\n"); + sb.append(" apiVersion: ").append(toIndentedString(apiVersion)).append("\n"); + sb.append(" items: ").append(toIndentedString(items)).append("\n"); + sb.append(" kind: ").append(toIndentedString(kind)).append("\n"); + sb.append(" metadata: ").append(toIndentedString(metadata)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces + * (except the first line). + */ + private String toIndentedString(java.lang.Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } + +} + diff --git a/src/main/java/io/argoproj/workflow/models/WorkflowSpec.java b/src/main/java/io/argoproj/workflow/models/WorkflowSpec.java new file mode 100644 index 00000000..acc16332 --- /dev/null +++ b/src/main/java/io/argoproj/workflow/models/WorkflowSpec.java @@ -0,0 +1,972 @@ +/* + * Argo + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: v2.4.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package io.argoproj.workflow.models; + +import java.util.Objects; +import java.util.Arrays; +import com.google.gson.TypeAdapter; +import com.google.gson.annotations.JsonAdapter; +import com.google.gson.annotations.SerializedName; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import io.argoproj.workflow.models.Arguments; +import io.argoproj.workflow.models.ArtifactRepositoryRef; +import io.argoproj.workflow.models.ExecutorConfig; +import io.argoproj.workflow.models.PodGC; +import io.argoproj.workflow.models.Template; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import java.io.IOException; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * WorkflowSpec is the specification of a Workflow. + */ +@ApiModel(description = "WorkflowSpec is the specification of a Workflow.") + +public class WorkflowSpec { + public static final String SERIALIZED_NAME_ACTIVE_DEADLINE_SECONDS = "activeDeadlineSeconds"; + @SerializedName(SERIALIZED_NAME_ACTIVE_DEADLINE_SECONDS) + private Long activeDeadlineSeconds; + + public static final String SERIALIZED_NAME_AFFINITY = "affinity"; + @SerializedName(SERIALIZED_NAME_AFFINITY) + private io.kubernetes.client.models.V1Affinity affinity = null; + + public static final String SERIALIZED_NAME_ARGUMENTS = "arguments"; + @SerializedName(SERIALIZED_NAME_ARGUMENTS) + private Arguments arguments; + + public static final String SERIALIZED_NAME_ARTIFACT_REPOSITORY_REF = "artifactRepositoryRef"; + @SerializedName(SERIALIZED_NAME_ARTIFACT_REPOSITORY_REF) + private ArtifactRepositoryRef artifactRepositoryRef; + + public static final String SERIALIZED_NAME_AUTOMOUNT_SERVICE_ACCOUNT_TOKEN = "automountServiceAccountToken"; + @SerializedName(SERIALIZED_NAME_AUTOMOUNT_SERVICE_ACCOUNT_TOKEN) + private Boolean automountServiceAccountToken; + + public static final String SERIALIZED_NAME_DNS_CONFIG = "dnsConfig"; + @SerializedName(SERIALIZED_NAME_DNS_CONFIG) + private io.kubernetes.client.models.V1PodDNSConfig dnsConfig = null; + + public static final String SERIALIZED_NAME_DNS_POLICY = "dnsPolicy"; + @SerializedName(SERIALIZED_NAME_DNS_POLICY) + private String dnsPolicy; + + public static final String SERIALIZED_NAME_ENTRYPOINT = "entrypoint"; + @SerializedName(SERIALIZED_NAME_ENTRYPOINT) + private String entrypoint; + + public static final String SERIALIZED_NAME_EXECUTOR = "executor"; + @SerializedName(SERIALIZED_NAME_EXECUTOR) + private ExecutorConfig executor; + + public static final String SERIALIZED_NAME_HOST_ALIASES = "hostAliases"; + @SerializedName(SERIALIZED_NAME_HOST_ALIASES) + private List hostAliases = null; + + public static final String SERIALIZED_NAME_HOST_NETWORK = "hostNetwork"; + @SerializedName(SERIALIZED_NAME_HOST_NETWORK) + private Boolean hostNetwork; + + public static final String SERIALIZED_NAME_IMAGE_PULL_SECRETS = "imagePullSecrets"; + @SerializedName(SERIALIZED_NAME_IMAGE_PULL_SECRETS) + private List imagePullSecrets = null; + + public static final String SERIALIZED_NAME_NODE_SELECTOR = "nodeSelector"; + @SerializedName(SERIALIZED_NAME_NODE_SELECTOR) + private Map nodeSelector = null; + + public static final String SERIALIZED_NAME_ON_EXIT = "onExit"; + @SerializedName(SERIALIZED_NAME_ON_EXIT) + private String onExit; + + public static final String SERIALIZED_NAME_PARALLELISM = "parallelism"; + @SerializedName(SERIALIZED_NAME_PARALLELISM) + private Long parallelism; + + public static final String SERIALIZED_NAME_POD_G_C = "podGC"; + @SerializedName(SERIALIZED_NAME_POD_G_C) + private PodGC podGC; + + public static final String SERIALIZED_NAME_POD_PRIORITY = "podPriority"; + @SerializedName(SERIALIZED_NAME_POD_PRIORITY) + private Integer podPriority; + + public static final String SERIALIZED_NAME_POD_PRIORITY_CLASS_NAME = "podPriorityClassName"; + @SerializedName(SERIALIZED_NAME_POD_PRIORITY_CLASS_NAME) + private String podPriorityClassName; + + public static final String SERIALIZED_NAME_POD_SPEC_PATCH = "podSpecPatch"; + @SerializedName(SERIALIZED_NAME_POD_SPEC_PATCH) + private String podSpecPatch; + + public static final String SERIALIZED_NAME_PRIORITY = "priority"; + @SerializedName(SERIALIZED_NAME_PRIORITY) + private Integer priority; + + public static final String SERIALIZED_NAME_SCHEDULER_NAME = "schedulerName"; + @SerializedName(SERIALIZED_NAME_SCHEDULER_NAME) + private String schedulerName; + + public static final String SERIALIZED_NAME_SECURITY_CONTEXT = "securityContext"; + @SerializedName(SERIALIZED_NAME_SECURITY_CONTEXT) + private io.kubernetes.client.models.V1PodSecurityContext securityContext = null; + + public static final String SERIALIZED_NAME_SERVICE_ACCOUNT_NAME = "serviceAccountName"; + @SerializedName(SERIALIZED_NAME_SERVICE_ACCOUNT_NAME) + private String serviceAccountName; + + public static final String SERIALIZED_NAME_SUSPEND = "suspend"; + @SerializedName(SERIALIZED_NAME_SUSPEND) + private Boolean suspend; + + public static final String SERIALIZED_NAME_TEMPLATES = "templates"; + @SerializedName(SERIALIZED_NAME_TEMPLATES) + private List