From f8692c06f34394fd7c60d47f69a8ff4d0bd46dae Mon Sep 17 00:00:00 2001 From: ramonamela <25862624+ramonamela@users.noreply.github.com> Date: Wed, 8 Apr 2026 19:24:59 +0200 Subject: [PATCH 01/14] feat: add new Google Batch CE and credential features [COMP-1463] - WIF (Workload Identity Federation) support for Google credentials with --mode=workload-identity, --service-account-email, --workload-identity-provider, and --token-audience options - Network tags (--network-tags) with VPC requirement and GCP format validation, plus --network and --subnetwork options - Machine type selection: --head-job-machine-type (single) and --compute-jobs-machine-type (comma-separated list with wildcard support), mutually exclusive with instance templates - Boot disk image (--boot-disk-image) with format validation for projects/*/global/images/*, family paths, and batch-* short names - Fusion Snapshots (--fusion-snapshots) toggle requiring Fusion v2 All features include CLI validation matching backend/frontend rules. Code will compile once tower-java-sdk is bumped to include the new fields on GoogleSecurityKeys and GoogleBatchConfig. Co-Authored-By: Claude Opus 4.6 (1M context) --- .../platforms/GoogleBatchPlatform.java | 107 +++++- .../credentials/providers/GoogleProvider.java | 77 +++- .../platforms/GoogleBatchPlatformTest.java | 358 ++++++++++++++++-- .../providers/GoogleProviderTest.java | 149 ++++++++ 4 files changed, 662 insertions(+), 29 deletions(-) diff --git a/src/main/java/io/seqera/tower/cli/commands/computeenvs/platforms/GoogleBatchPlatform.java b/src/main/java/io/seqera/tower/cli/commands/computeenvs/platforms/GoogleBatchPlatform.java index 8e786f65..f2be52ca 100644 --- a/src/main/java/io/seqera/tower/cli/commands/computeenvs/platforms/GoogleBatchPlatform.java +++ b/src/main/java/io/seqera/tower/cli/commands/computeenvs/platforms/GoogleBatchPlatform.java @@ -23,9 +23,17 @@ import picocli.CommandLine.Option; import java.io.IOException; +import java.util.List; +import java.util.regex.Pattern; public class GoogleBatchPlatform extends AbstractPlatform { + private static final Pattern NETWORK_TAG_PATTERN = Pattern.compile("^[a-z][-a-z0-9]*[a-z0-9]$"); + private static final Pattern MACHINE_TYPE_PATTERN = Pattern.compile("^[a-z][a-z0-9]*(-[a-z0-9*]+)*$"); + private static final Pattern BOOT_DISK_IMAGE_PATTERN = Pattern.compile("^(projects/[a-z0-9\\-_]+/global/images/(family/)?[a-z0-9\\-_]+|batch-[a-z0-9\\-]+)$"); + private static final int MAX_NETWORK_TAGS = 64; + private static final int MAX_TAG_LENGTH = 63; + @Option(names = {"--work-dir"}, description = "Nextflow work directory. Path where workflow intermediate files are stored. Must be a Google Cloud Storage bucket path (e.g., gs://your-bucket/work).", required = true) public String workDir; @@ -38,6 +46,9 @@ public class GoogleBatchPlatform extends AbstractPlatform { @Option(names = {"--fusion-v2"}, description = "Enable Fusion file system. Provides native access to Google Cloud Storage with low-latency I/O. Requires Wave containers.") public boolean fusionV2; + @Option(names = {"--fusion-snapshots"}, description = "Enable Fusion Snapshots (beta). Allows Fusion to restore jobs interrupted by Spot VM reclamation. Requires Fusion v2.") + public boolean fusionSnapshots; + @Option(names = {"--wave"}, description = "Enable Wave containers. Allows access to private container repositories and on-demand container provisioning.") public boolean wave; @@ -52,8 +63,13 @@ public GoogleBatchPlatform() { public GoogleBatchConfig computeConfig() throws ApiException, IOException { GoogleBatchConfig config = new GoogleBatchConfig(); + if (fusionSnapshots && !fusionV2) { + throw new IllegalArgumentException("Fusion Snapshots requires Fusion v2 to be enabled (--fusion-v2)."); + } + config .fusion2Enabled(fusionV2) + .fusionSnapshots(fusionSnapshots) .waveEnabled(wave) // Main @@ -62,11 +78,23 @@ public GoogleBatchConfig computeConfig() throws ApiException, IOException { // Advanced if (adv != null) { + if (adv.networkTags != null && !adv.networkTags.isEmpty()) { + validateNetworkTags(adv.networkTags, adv.network); + } + validateMachineTypes(adv); + validateBootDiskImage(adv.bootDiskImage); + config + .network(adv.network) + .subnetwork(adv.subnetwork) + .networkTags(adv.networkTags) .usePrivateAddress(adv.usePrivateAddress) .bootDiskSizeGb(adv.bootDiskSizeGb) + .bootDiskImage(adv.bootDiskImage) .headJobCpus(adv.headJobCpus) .headJobMemoryMb(adv.headJobMemoryMb) + .machineType(adv.headJobMachineType) + .computeJobsMachineType(adv.computeJobsMachineType) .serviceAccount(adv.serviceAccountEmail) .headJobInstanceTemplate(adv.headJobInstanceTemplate) .computeJobsInstanceTemplate(adv.computeJobInstanceTemplate); @@ -82,13 +110,82 @@ public GoogleBatchConfig computeConfig() throws ApiException, IOException { return config; } + private static void validateMachineTypeFormat(String machineType) { + if (!MACHINE_TYPE_PATTERN.matcher(machineType).matches()) { + throw new IllegalArgumentException(String.format("Invalid machine type '%s': must contain only lowercase letters, numbers, and hyphens.", machineType)); + } + } + + private static void validateMachineTypes(AdvancedOptions adv) { + if (adv.headJobMachineType != null && adv.headJobInstanceTemplate != null) { + throw new IllegalArgumentException("Head job machine type and head job instance template are mutually exclusive -- specify only one."); + } + if (adv.computeJobsMachineType != null && !adv.computeJobsMachineType.isEmpty() && adv.computeJobInstanceTemplate != null) { + throw new IllegalArgumentException("Compute jobs machine type and compute jobs instance template are mutually exclusive -- specify only one."); + } + if (adv.headJobMachineType != null) { + if (adv.headJobMachineType.contains("*")) { + throw new IllegalArgumentException("Wildcard machine type families are not supported for the head job -- select a specific machine type instead."); + } + validateMachineTypeFormat(adv.headJobMachineType); + } + if (adv.computeJobsMachineType != null) { + for (String mt : adv.computeJobsMachineType) { + validateMachineTypeFormat(mt); + } + } + } + + private static void validateBootDiskImage(String bootDiskImage) { + if (bootDiskImage != null && !BOOT_DISK_IMAGE_PATTERN.matcher(bootDiskImage).matches()) { + throw new IllegalArgumentException("Invalid boot disk image format. Use projects/{PROJECT}/global/images/{IMAGE}, projects/{PROJECT}/global/images/family/{FAMILY}, or a Batch image name (e.g., batch-debian)."); + } + } + + private static void validateNetworkTags(List tags, String network) { + if (network == null || network.isEmpty()) { + throw new IllegalArgumentException("Network tags require VPC configuration: set the '--network' option to use network tags."); + } + + if (tags.size() > MAX_NETWORK_TAGS) { + throw new IllegalArgumentException(String.format("Too many network tags: maximum is %d, provided %d.", MAX_NETWORK_TAGS, tags.size())); + } + + for (String tag : tags) { + if (tag == null || tag.isEmpty() || tag.length() > MAX_TAG_LENGTH) { + throw new IllegalArgumentException(String.format("Invalid network tag '%s': must be 1-63 characters.", tag)); + } + if (tag.length() == 1) { + if (!tag.matches("^[a-z]$")) { + throw new IllegalArgumentException(String.format("Invalid network tag '%s': single-character tags must be a lowercase letter.", tag)); + } + } else { + if (!NETWORK_TAG_PATTERN.matcher(tag).matches()) { + throw new IllegalArgumentException(String.format("Invalid network tag '%s': must start with a lowercase letter, end with a letter or number, and contain only lowercase letters, numbers, and hyphens.", tag)); + } + } + } + } + public static class AdvancedOptions { + @Option(names = {"--network"}, description = "Google Cloud VPC network name or URI. Required when using network tags or subnets.") + public String network; + + @Option(names = {"--subnetwork"}, description = "Google Cloud VPC subnetwork name or URI. Must be in the same region as the compute environment location.") + public String subnetwork; + + @Option(names = {"--network-tags"}, split = ",", paramLabel = "", description = "Comma-separated list of network tags applied to VMs for firewall rule targeting. Tags must be lowercase, use only letters, numbers, and hyphens (1-63 chars). Requires --network.") + public List networkTags; + @Option(names = {"--use-private-address"}, description = "Do not attach a public IP address to VM instances. When enabled, only Google internal services are accessible. Requires Cloud NAT for external access.") public Boolean usePrivateAddress; @Option(names = {"--boot-disk-size"}, description = "Boot disk size in GB. Controls the root volume size for compute instances. If absent, Platform defaults to 50 GB.") public Integer bootDiskSizeGb; + @Option(names = {"--boot-disk-image"}, description = "Custom boot disk image for compute job VMs. Accepts: projects/{PROJECT}/global/images/{IMAGE}, projects/{PROJECT}/global/images/family/{FAMILY}, or a Batch image name (e.g., batch-debian).") + public String bootDiskImage; + @Option(names = {"--head-job-cpus"}, description = "Number of CPUs allocated to the Nextflow head job. Controls the compute resources for the main workflow orchestration process.") public Integer headJobCpus; @@ -98,10 +195,16 @@ public static class AdvancedOptions { @Option(names = {"--service-account-email"}, description = "Google Cloud service account email for pipeline execution. Grants fine-grained IAM permissions to Nextflow jobs.") public String serviceAccountEmail; - @Option(names = {"--head-job-template"}, description = "Google Compute Engine instance template for the Nextflow head job. Specify either the template name (if in the same project) or the fully qualified reference (projects/PROJECT_ID/global/instanceTemplates/TEMPLATE_NAME).") + @Option(names = {"--head-job-machine-type"}, description = "GCP machine type for the Nextflow head job (e.g., n2-standard-4). Mutually exclusive with --head-job-template.") + public String headJobMachineType; + + @Option(names = {"--head-job-template"}, description = "Google Compute Engine instance template for the Nextflow head job. Specify either the template name (if in the same project) or the fully qualified reference (projects/PROJECT_ID/global/instanceTemplates/TEMPLATE_NAME). Mutually exclusive with --head-job-machine-type.") public String headJobInstanceTemplate; - @Option(names = {"--compute-job-template"}, description = "Google Compute Engine instance template for pipeline compute jobs. Specify either the template name (if in the same project) or the fully qualified reference (projects/PROJECT_ID/global/instanceTemplates/TEMPLATE_NAME).") + @Option(names = {"--compute-jobs-machine-type"}, split = ",", paramLabel = "", description = "Comma-separated list of GCP machine types for compute jobs (e.g., n2-standard-8,c2-standard-4). Supports wildcard families (e.g., n2-*). Mutually exclusive with --compute-job-template.") + public List computeJobsMachineType; + + @Option(names = {"--compute-job-template"}, description = "Google Compute Engine instance template for pipeline compute jobs. Specify either the template name (if in the same project) or the fully qualified reference (projects/PROJECT_ID/global/instanceTemplates/TEMPLATE_NAME). Mutually exclusive with --compute-jobs-machine-type.") public String computeJobInstanceTemplate; } } diff --git a/src/main/java/io/seqera/tower/cli/commands/credentials/providers/GoogleProvider.java b/src/main/java/io/seqera/tower/cli/commands/credentials/providers/GoogleProvider.java index 18aa0f76..faf99ce0 100644 --- a/src/main/java/io/seqera/tower/cli/commands/credentials/providers/GoogleProvider.java +++ b/src/main/java/io/seqera/tower/cli/commands/credentials/providers/GoogleProvider.java @@ -23,19 +23,90 @@ import java.io.IOException; import java.nio.file.Path; +import java.util.regex.Pattern; public class GoogleProvider extends AbstractProvider { - @Option(names = {"-k", "--key"}, description = "Path to JSON file containing Google Cloud service account key. Download from Google Cloud Console IAM & Admin > Service Accounts.", required = true) + private static final Pattern SA_EMAIL_PATTERN = Pattern.compile( + "^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.iam\\.gserviceaccount\\.com$"); + + private static final Pattern WIF_PROVIDER_PATTERN = Pattern.compile( + "^projects/[^/]+/locations/global/workloadIdentityPools/[^/]+/providers/[^/]+$"); + + @Option(names = {"-k", "--key"}, description = "Path to JSON file containing Google Cloud service account key. Download from Google Cloud Console IAM & Admin > Service Accounts.") public Path serviceAccountKey; + @Option(names = {"--mode"}, description = "Google credential mode: 'service-account-key' (JSON key file) or 'workload-identity' (WIF with OIDC tokens). Default: service-account-key.") + String mode; + + @Option(names = {"--service-account-email"}, description = "The email address of the Google Cloud service account to impersonate (required for workload-identity mode).") + String serviceAccountEmail; + + @Option(names = {"--workload-identity-provider"}, description = "The full resource name of the Workload Identity Pool provider. Format: projects/{PROJECT}/locations/global/workloadIdentityPools/{POOL}/providers/{PROVIDER}") + String workloadIdentityProvider; + + @Option(names = {"--token-audience"}, description = "Optional. The intended audience for the OIDC token. If not specified, defaults to the Workload Identity Provider resource name.") + String tokenAudience; + public GoogleProvider() { super(ProviderEnum.GOOGLE); } @Override public GoogleSecurityKeys securityKeys() throws IOException { - return new GoogleSecurityKeys() - .data(FilesHelper.readString(serviceAccountKey)); + validate(); + + GoogleSecurityKeys result = new GoogleSecurityKeys(); + + if (isWorkloadIdentityMode()) { + result.serviceAccountEmail(serviceAccountEmail); + result.workloadIdentityProvider(workloadIdentityProvider); + if (tokenAudience != null) { + result.tokenAudience(tokenAudience); + } + } else { + result.data(FilesHelper.readString(serviceAccountKey)); + } + + return result; + } + + private boolean isWorkloadIdentityMode() { + if (mode == null) { + return false; + } + return switch (mode.toLowerCase()) { + case "service-account-key" -> false; + case "workload-identity" -> true; + default -> throw new IllegalArgumentException( + String.format("Invalid Google credential mode '%s'. Allowed values: 'service-account-key', 'workload-identity'.", mode)); + }; + } + + private void validate() { + if (isWorkloadIdentityMode()) { + if (serviceAccountKey != null) { + throw new IllegalArgumentException("Option '--key' cannot be used with '--mode=workload-identity'. Workload Identity mode uses federated authentication without a key file."); + } + if (serviceAccountEmail == null) { + throw new IllegalArgumentException("Option '--service-account-email' is required when using '--mode=workload-identity'."); + } + if (!SA_EMAIL_PATTERN.matcher(serviceAccountEmail).matches()) { + throw new IllegalArgumentException("Invalid service account email format. Expected format: @.iam.gserviceaccount.com"); + } + if (workloadIdentityProvider == null) { + throw new IllegalArgumentException("Option '--workload-identity-provider' is required when using '--mode=workload-identity'."); + } + if (!WIF_PROVIDER_PATTERN.matcher(workloadIdentityProvider).matches()) { + throw new IllegalArgumentException("Invalid Workload Identity Provider format. Expected: projects/{PROJECT_NUMBER}/locations/global/workloadIdentityPools/{POOL}/providers/{PROVIDER}"); + } + } else { + if (serviceAccountEmail != null || workloadIdentityProvider != null || tokenAudience != null) { + throw new IllegalArgumentException("Options '--service-account-email', '--workload-identity-provider', and '--token-audience' can only be used with '--mode=workload-identity'."); + } + if (serviceAccountKey == null) { + throw new IllegalArgumentException("Option '--key' is required when using service account key mode."); + } + } } } diff --git a/src/test/java/io/seqera/tower/cli/computeenvs/platforms/GoogleBatchPlatformTest.java b/src/test/java/io/seqera/tower/cli/computeenvs/platforms/GoogleBatchPlatformTest.java index 28cfc889..375eda1b 100644 --- a/src/test/java/io/seqera/tower/cli/computeenvs/platforms/GoogleBatchPlatformTest.java +++ b/src/test/java/io/seqera/tower/cli/computeenvs/platforms/GoogleBatchPlatformTest.java @@ -30,6 +30,7 @@ import static io.seqera.tower.cli.commands.AbstractApiCmd.USER_WORKSPACE_NAME; import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; import static org.mockserver.matchers.Times.exactly; import static org.mockserver.model.HttpRequest.request; import static org.mockserver.model.HttpResponse.response; @@ -37,17 +38,23 @@ class GoogleBatchPlatformTest extends BaseCmdTest { + private static final String CREDENTIALS_RESPONSE = "{\"credentials\":[{\"id\":\"6XfOhoztUq6de3Dw3X9LSb\",\"name\":\"google\",\"description\":null,\"discriminator\":\"google\",\"baseUrl\":null,\"category\":null,\"deleted\":null,\"lastUsed\":\"2021-09-08T18:20:46Z\",\"dateCreated\":\"2021-09-08T12:57:04Z\",\"lastUpdated\":\"2021-09-08T12:57:04Z\"}]}"; + + private void mockCredentials(MockServerClient mock) { + mock.when( + request().withMethod("GET").withPath("/credentials").withQueryStringParameter("platformId", "google-batch"), exactly(1) + ).respond( + response().withStatusCode(200).withBody(CREDENTIALS_RESPONSE).withContentType(MediaType.APPLICATION_JSON) + ); + } + @ParameterizedTest @EnumSource(OutputType.class) void testAdd(OutputType format, MockServerClient mock) throws IOException { mock.reset(); - mock.when( - request().withMethod("GET").withPath("/credentials").withQueryStringParameter("platformId", "google-batch"), exactly(1) - ).respond( - response().withStatusCode(200).withBody("{\"credentials\":[{\"id\":\"6XfOhoztUq6de3Dw3X9LSb\",\"name\":\"google\",\"description\":null,\"discriminator\":\"google\",\"baseUrl\":null,\"category\":null,\"deleted\":null,\"lastUsed\":\"2021-09-08T18:20:46Z\",\"dateCreated\":\"2021-09-08T12:57:04Z\",\"lastUpdated\":\"2021-09-08T12:57:04Z\"}]}").withContentType(MediaType.APPLICATION_JSON) - ); + mockCredentials(mock); mock.when( request().withMethod("POST").withPath("/compute-envs") @@ -65,11 +72,7 @@ void testAddWithAdvancedOptions(MockServerClient mock) throws IOException { mock.reset(); - mock.when( - request().withMethod("GET").withPath("/credentials").withQueryStringParameter("platformId", "google-batch"), exactly(1) - ).respond( - response().withStatusCode(200).withBody("{\"credentials\":[{\"id\":\"6XfOhoztUq6de3Dw3X9LSb\",\"name\":\"google\",\"description\":null,\"discriminator\":\"google\",\"baseUrl\":null,\"category\":null,\"deleted\":null,\"lastUsed\":\"2021-09-08T18:20:46Z\",\"dateCreated\":\"2021-09-08T12:57:04Z\",\"lastUpdated\":\"2021-09-08T12:57:04Z\"}]}").withContentType(MediaType.APPLICATION_JSON) - ); + mockCredentials(mock); mock.when( request().withMethod("POST").withPath("/compute-envs") @@ -89,11 +92,7 @@ void testAddWithInstanceTemplates(MockServerClient mock) throws IOException { mock.reset(); - mock.when( - request().withMethod("GET").withPath("/credentials").withQueryStringParameter("platformId", "google-batch"), exactly(1) - ).respond( - response().withStatusCode(200).withBody("{\"credentials\":[{\"id\":\"6XfOhoztUq6de3Dw3X9LSb\",\"name\":\"google\",\"description\":null,\"discriminator\":\"google\",\"baseUrl\":null,\"category\":null,\"deleted\":null,\"lastUsed\":\"2021-09-08T18:20:46Z\",\"dateCreated\":\"2021-09-08T12:57:04Z\",\"lastUpdated\":\"2021-09-08T12:57:04Z\"}]}").withContentType(MediaType.APPLICATION_JSON) - ); + mockCredentials(mock); mock.when( request().withMethod("POST").withPath("/compute-envs") @@ -113,11 +112,7 @@ void testAddWithOnlyHeadJobTemplate(MockServerClient mock) throws IOException { mock.reset(); - mock.when( - request().withMethod("GET").withPath("/credentials").withQueryStringParameter("platformId", "google-batch"), exactly(1) - ).respond( - response().withStatusCode(200).withBody("{\"credentials\":[{\"id\":\"6XfOhoztUq6de3Dw3X9LSb\",\"name\":\"google\",\"description\":null,\"discriminator\":\"google\",\"baseUrl\":null,\"category\":null,\"deleted\":null,\"lastUsed\":\"2021-09-08T18:20:46Z\",\"dateCreated\":\"2021-09-08T12:57:04Z\",\"lastUpdated\":\"2021-09-08T12:57:04Z\"}]}").withContentType(MediaType.APPLICATION_JSON) - ); + mockCredentials(mock); mock.when( request().withMethod("POST").withPath("/compute-envs") @@ -137,23 +132,338 @@ void testAddWithOnlyComputeJobTemplate(MockServerClient mock) throws IOException mock.reset(); + mockCredentials(mock); + mock.when( - request().withMethod("GET").withPath("/credentials").withQueryStringParameter("platformId", "google-batch"), exactly(1) + request().withMethod("POST").withPath("/compute-envs") + .withBody(JsonBody.json("{\"computeEnv\":{\"credentialsId\":\"6XfOhoztUq6de3Dw3X9LSb\",\"name\":\"google\",\"platform\":\"google-batch\",\"config\":{\"location\":\"europe\",\"workDir\":\"gs://workdir\",\"fusion2Enabled\":false,\"waveEnabled\":false,\"computeJobsInstanceTemplate\":\"projects/my-project/global/instanceTemplates/compute-template\"}}}")), exactly(1) ).respond( - response().withStatusCode(200).withBody("{\"credentials\":[{\"id\":\"6XfOhoztUq6de3Dw3X9LSb\",\"name\":\"google\",\"description\":null,\"discriminator\":\"google\",\"baseUrl\":null,\"category\":null,\"deleted\":null,\"lastUsed\":\"2021-09-08T18:20:46Z\",\"dateCreated\":\"2021-09-08T12:57:04Z\",\"lastUpdated\":\"2021-09-08T12:57:04Z\"}]}").withContentType(MediaType.APPLICATION_JSON) + response().withStatusCode(200).withBody("{\"computeEnvId\":\"isnEDBLvHDAIteOEF44ow\"}").withContentType(MediaType.APPLICATION_JSON) ); + ExecOut out = exec(mock, "compute-envs", "add", "google-batch", "-n", "google", "--work-dir", "gs://workdir", "-l", "europe", "--compute-job-template", "projects/my-project/global/instanceTemplates/compute-template"); + assertEquals("", out.stdErr); + assertEquals(new ComputeEnvAdded("google-batch", "isnEDBLvHDAIteOEF44ow", "google", null, USER_WORKSPACE_NAME).toString(), out.stdOut); + assertEquals(0, out.exitCode); + } + + @Test + void testAddWithNetworkTags(MockServerClient mock) throws IOException { + + mock.reset(); + + mockCredentials(mock); + mock.when( request().withMethod("POST").withPath("/compute-envs") - .withBody(JsonBody.json("{\"computeEnv\":{\"credentialsId\":\"6XfOhoztUq6de3Dw3X9LSb\",\"name\":\"google\",\"platform\":\"google-batch\",\"config\":{\"location\":\"europe\",\"workDir\":\"gs://workdir\",\"fusion2Enabled\":false,\"waveEnabled\":false,\"computeJobsInstanceTemplate\":\"projects/my-project/global/instanceTemplates/compute-template\"}}}")), exactly(1) + .withBody(JsonBody.json("{\"computeEnv\":{\"credentialsId\":\"6XfOhoztUq6de3Dw3X9LSb\",\"name\":\"google\",\"platform\":\"google-batch\",\"config\":{\"location\":\"europe\",\"workDir\":\"gs://workdir\",\"fusion2Enabled\":false,\"waveEnabled\":false,\"network\":\"my-vpc\",\"networkTags\":[\"allow-ssh\",\"web-tier\"]}}}")), exactly(1) ).respond( response().withStatusCode(200).withBody("{\"computeEnvId\":\"isnEDBLvHDAIteOEF44ow\"}").withContentType(MediaType.APPLICATION_JSON) ); - ExecOut out = exec(mock, "compute-envs", "add", "google-batch", "-n", "google", "--work-dir", "gs://workdir", "-l", "europe", "--compute-job-template", "projects/my-project/global/instanceTemplates/compute-template"); + ExecOut out = exec(mock, "compute-envs", "add", "google-batch", "-n", "google", "--work-dir", "gs://workdir", "-l", "europe", "--network", "my-vpc", "--network-tags", "allow-ssh,web-tier"); + assertEquals("", out.stdErr); + assertEquals(new ComputeEnvAdded("google-batch", "isnEDBLvHDAIteOEF44ow", "google", null, USER_WORKSPACE_NAME).toString(), out.stdOut); + assertEquals(0, out.exitCode); + } + + @Test + void testAddWithNetworkAndSubnetwork(MockServerClient mock) throws IOException { + + mock.reset(); + + mockCredentials(mock); + + mock.when( + request().withMethod("POST").withPath("/compute-envs") + .withBody(JsonBody.json("{\"computeEnv\":{\"credentialsId\":\"6XfOhoztUq6de3Dw3X9LSb\",\"name\":\"google\",\"platform\":\"google-batch\",\"config\":{\"location\":\"europe\",\"workDir\":\"gs://workdir\",\"fusion2Enabled\":false,\"waveEnabled\":false,\"network\":\"my-vpc\",\"subnetwork\":\"my-subnet\"}}}")), exactly(1) + ).respond( + response().withStatusCode(200).withBody("{\"computeEnvId\":\"isnEDBLvHDAIteOEF44ow\"}").withContentType(MediaType.APPLICATION_JSON) + ); + + ExecOut out = exec(mock, "compute-envs", "add", "google-batch", "-n", "google", "--work-dir", "gs://workdir", "-l", "europe", "--network", "my-vpc", "--subnetwork", "my-subnet"); + assertEquals("", out.stdErr); + assertEquals(new ComputeEnvAdded("google-batch", "isnEDBLvHDAIteOEF44ow", "google", null, USER_WORKSPACE_NAME).toString(), out.stdOut); + assertEquals(0, out.exitCode); + } + + @Test + void testAddNetworkTagsWithoutVpcFails(MockServerClient mock) { + + mock.reset(); + + ExecOut out = exec(mock, "compute-envs", "add", "google-batch", "-n", "google", "--work-dir", "gs://workdir", "-l", "europe", "--network-tags", "allow-ssh"); + + assertTrue(out.stdErr.contains("Network tags require VPC configuration"), "Expected VPC required error, got: " + out.stdErr); + assertEquals(1, out.exitCode); + } + + @Test + void testAddNetworkTagsInvalidFormat(MockServerClient mock) { + + mock.reset(); + + ExecOut out = exec(mock, "compute-envs", "add", "google-batch", "-n", "google", "--work-dir", "gs://workdir", "-l", "europe", "--network", "my-vpc", "--network-tags", "Allow-SSH"); + + assertTrue(out.stdErr.contains("Invalid network tag 'Allow-SSH'"), "Expected invalid tag error, got: " + out.stdErr); + assertEquals(1, out.exitCode); + } + + @Test + void testAddNetworkTagsEndsWithHyphen(MockServerClient mock) { + + mock.reset(); + + ExecOut out = exec(mock, "compute-envs", "add", "google-batch", "-n", "google", "--work-dir", "gs://workdir", "-l", "europe", "--network", "my-vpc", "--network-tags", "a-"); + + assertTrue(out.stdErr.contains("Invalid network tag 'a-'"), "Expected invalid tag error, got: " + out.stdErr); + assertEquals(1, out.exitCode); + } + + @Test + void testAddNetworkTagsSingleDigitInvalid(MockServerClient mock) { + + mock.reset(); + + ExecOut out = exec(mock, "compute-envs", "add", "google-batch", "-n", "google", "--work-dir", "gs://workdir", "-l", "europe", "--network", "my-vpc", "--network-tags", "1"); + + assertTrue(out.stdErr.contains("Invalid network tag '1'"), "Expected invalid single-char tag error, got: " + out.stdErr); + assertEquals(1, out.exitCode); + } + + @Test + void testAddNetworkTagsSingleLetterValid(MockServerClient mock) throws IOException { + + mock.reset(); + + mockCredentials(mock); + + mock.when( + request().withMethod("POST").withPath("/compute-envs") + .withBody(JsonBody.json("{\"computeEnv\":{\"credentialsId\":\"6XfOhoztUq6de3Dw3X9LSb\",\"name\":\"google\",\"platform\":\"google-batch\",\"config\":{\"location\":\"europe\",\"workDir\":\"gs://workdir\",\"fusion2Enabled\":false,\"waveEnabled\":false,\"network\":\"my-vpc\",\"networkTags\":[\"a\"]}}}")), exactly(1) + ).respond( + response().withStatusCode(200).withBody("{\"computeEnvId\":\"isnEDBLvHDAIteOEF44ow\"}").withContentType(MediaType.APPLICATION_JSON) + ); + + ExecOut out = exec(mock, "compute-envs", "add", "google-batch", "-n", "google", "--work-dir", "gs://workdir", "-l", "europe", "--network", "my-vpc", "--network-tags", "a"); + assertEquals("", out.stdErr); + assertEquals(0, out.exitCode); + } + + @Test + void testAddWithHeadJobMachineType(MockServerClient mock) throws IOException { + + mock.reset(); + + mockCredentials(mock); + + mock.when( + request().withMethod("POST").withPath("/compute-envs") + .withBody(JsonBody.json("{\"computeEnv\":{\"credentialsId\":\"6XfOhoztUq6de3Dw3X9LSb\",\"name\":\"google\",\"platform\":\"google-batch\",\"config\":{\"location\":\"europe\",\"workDir\":\"gs://workdir\",\"fusion2Enabled\":false,\"waveEnabled\":false,\"machineType\":\"n2-standard-4\"}}}")), exactly(1) + ).respond( + response().withStatusCode(200).withBody("{\"computeEnvId\":\"isnEDBLvHDAIteOEF44ow\"}").withContentType(MediaType.APPLICATION_JSON) + ); + + ExecOut out = exec(mock, "compute-envs", "add", "google-batch", "-n", "google", "--work-dir", "gs://workdir", "-l", "europe", "--head-job-machine-type", "n2-standard-4"); + assertEquals("", out.stdErr); + assertEquals(new ComputeEnvAdded("google-batch", "isnEDBLvHDAIteOEF44ow", "google", null, USER_WORKSPACE_NAME).toString(), out.stdOut); + assertEquals(0, out.exitCode); + } + + @Test + void testAddWithComputeJobsMachineType(MockServerClient mock) throws IOException { + + mock.reset(); + + mockCredentials(mock); + + mock.when( + request().withMethod("POST").withPath("/compute-envs") + .withBody(JsonBody.json("{\"computeEnv\":{\"credentialsId\":\"6XfOhoztUq6de3Dw3X9LSb\",\"name\":\"google\",\"platform\":\"google-batch\",\"config\":{\"location\":\"europe\",\"workDir\":\"gs://workdir\",\"fusion2Enabled\":false,\"waveEnabled\":false,\"computeJobsMachineType\":[\"n2-standard-8\",\"c2-standard-4\"]}}}")), exactly(1) + ).respond( + response().withStatusCode(200).withBody("{\"computeEnvId\":\"isnEDBLvHDAIteOEF44ow\"}").withContentType(MediaType.APPLICATION_JSON) + ); + + ExecOut out = exec(mock, "compute-envs", "add", "google-batch", "-n", "google", "--work-dir", "gs://workdir", "-l", "europe", "--compute-jobs-machine-type", "n2-standard-8,c2-standard-4"); + assertEquals("", out.stdErr); + assertEquals(new ComputeEnvAdded("google-batch", "isnEDBLvHDAIteOEF44ow", "google", null, USER_WORKSPACE_NAME).toString(), out.stdOut); + assertEquals(0, out.exitCode); + } + + @Test + void testAddWithComputeJobsWildcardMachineType(MockServerClient mock) throws IOException { + + mock.reset(); + + mockCredentials(mock); + + mock.when( + request().withMethod("POST").withPath("/compute-envs") + .withBody(JsonBody.json("{\"computeEnv\":{\"credentialsId\":\"6XfOhoztUq6de3Dw3X9LSb\",\"name\":\"google\",\"platform\":\"google-batch\",\"config\":{\"location\":\"europe\",\"workDir\":\"gs://workdir\",\"fusion2Enabled\":false,\"waveEnabled\":false,\"computeJobsMachineType\":[\"n2-*\"]}}}")), exactly(1) + ).respond( + response().withStatusCode(200).withBody("{\"computeEnvId\":\"isnEDBLvHDAIteOEF44ow\"}").withContentType(MediaType.APPLICATION_JSON) + ); + + ExecOut out = exec(mock, "compute-envs", "add", "google-batch", "-n", "google", "--work-dir", "gs://workdir", "-l", "europe", "--compute-jobs-machine-type", "n2-*"); + assertEquals("", out.stdErr); + assertEquals(new ComputeEnvAdded("google-batch", "isnEDBLvHDAIteOEF44ow", "google", null, USER_WORKSPACE_NAME).toString(), out.stdOut); + assertEquals(0, out.exitCode); + } + + @Test + void testAddHeadJobMachineTypeAndTemplateAreMutuallyExclusive(MockServerClient mock) { + + mock.reset(); + + ExecOut out = exec(mock, "compute-envs", "add", "google-batch", "-n", "google", "--work-dir", "gs://workdir", "-l", "europe", + "--head-job-machine-type", "n2-standard-4", + "--head-job-template", "projects/my-project/global/instanceTemplates/head-template"); + + assertTrue(out.stdErr.contains("Head job machine type and head job instance template are mutually exclusive"), "Expected mutual exclusivity error, got: " + out.stdErr); + assertEquals(1, out.exitCode); + } + + @Test + void testAddComputeJobsMachineTypeAndTemplateAreMutuallyExclusive(MockServerClient mock) { + + mock.reset(); + + ExecOut out = exec(mock, "compute-envs", "add", "google-batch", "-n", "google", "--work-dir", "gs://workdir", "-l", "europe", + "--compute-jobs-machine-type", "n2-standard-8", + "--compute-job-template", "projects/my-project/global/instanceTemplates/compute-template"); + + assertTrue(out.stdErr.contains("Compute jobs machine type and compute jobs instance template are mutually exclusive"), "Expected mutual exclusivity error, got: " + out.stdErr); + assertEquals(1, out.exitCode); + } + + @Test + void testAddHeadJobWildcardMachineTypeRejected(MockServerClient mock) { + + mock.reset(); + + ExecOut out = exec(mock, "compute-envs", "add", "google-batch", "-n", "google", "--work-dir", "gs://workdir", "-l", "europe", + "--head-job-machine-type", "n2-*"); + + assertTrue(out.stdErr.contains("Wildcard machine type families are not supported for the head job"), "Expected wildcard rejection error, got: " + out.stdErr); + assertEquals(1, out.exitCode); + } + + @Test + void testAddInvalidMachineTypeFormat(MockServerClient mock) { + + mock.reset(); + + ExecOut out = exec(mock, "compute-envs", "add", "google-batch", "-n", "google", "--work-dir", "gs://workdir", "-l", "europe", + "--head-job-machine-type", "N2-Standard-4"); + + assertTrue(out.stdErr.contains("Invalid machine type 'N2-Standard-4'"), "Expected invalid format error, got: " + out.stdErr); + assertEquals(1, out.exitCode); + } + + @Test + void testAddWithBootDiskImage(MockServerClient mock) throws IOException { + + mock.reset(); + + mockCredentials(mock); + + mock.when( + request().withMethod("POST").withPath("/compute-envs") + .withBody(JsonBody.json("{\"computeEnv\":{\"credentialsId\":\"6XfOhoztUq6de3Dw3X9LSb\",\"name\":\"google\",\"platform\":\"google-batch\",\"config\":{\"location\":\"europe\",\"workDir\":\"gs://workdir\",\"fusion2Enabled\":false,\"waveEnabled\":false,\"bootDiskImage\":\"projects/ubuntu-os-cloud/global/images/ubuntu-2404-noble-amd64-v20250112\"}}}")), exactly(1) + ).respond( + response().withStatusCode(200).withBody("{\"computeEnvId\":\"isnEDBLvHDAIteOEF44ow\"}").withContentType(MediaType.APPLICATION_JSON) + ); + + ExecOut out = exec(mock, "compute-envs", "add", "google-batch", "-n", "google", "--work-dir", "gs://workdir", "-l", "europe", + "--boot-disk-image", "projects/ubuntu-os-cloud/global/images/ubuntu-2404-noble-amd64-v20250112"); assertEquals("", out.stdErr); assertEquals(new ComputeEnvAdded("google-batch", "isnEDBLvHDAIteOEF44ow", "google", null, USER_WORKSPACE_NAME).toString(), out.stdOut); assertEquals(0, out.exitCode); } + @Test + void testAddWithBootDiskImageFamily(MockServerClient mock) throws IOException { + + mock.reset(); + + mockCredentials(mock); + + mock.when( + request().withMethod("POST").withPath("/compute-envs") + .withBody(JsonBody.json("{\"computeEnv\":{\"credentialsId\":\"6XfOhoztUq6de3Dw3X9LSb\",\"name\":\"google\",\"platform\":\"google-batch\",\"config\":{\"location\":\"europe\",\"workDir\":\"gs://workdir\",\"fusion2Enabled\":false,\"waveEnabled\":false,\"bootDiskImage\":\"projects/ubuntu-os-cloud/global/images/family/ubuntu-2404-lts\"}}}")), exactly(1) + ).respond( + response().withStatusCode(200).withBody("{\"computeEnvId\":\"isnEDBLvHDAIteOEF44ow\"}").withContentType(MediaType.APPLICATION_JSON) + ); + + ExecOut out = exec(mock, "compute-envs", "add", "google-batch", "-n", "google", "--work-dir", "gs://workdir", "-l", "europe", + "--boot-disk-image", "projects/ubuntu-os-cloud/global/images/family/ubuntu-2404-lts"); + assertEquals("", out.stdErr); + assertEquals(0, out.exitCode); + } + + @Test + void testAddWithBootDiskImageBatchShortName(MockServerClient mock) throws IOException { + + mock.reset(); + + mockCredentials(mock); + + mock.when( + request().withMethod("POST").withPath("/compute-envs") + .withBody(JsonBody.json("{\"computeEnv\":{\"credentialsId\":\"6XfOhoztUq6de3Dw3X9LSb\",\"name\":\"google\",\"platform\":\"google-batch\",\"config\":{\"location\":\"europe\",\"workDir\":\"gs://workdir\",\"fusion2Enabled\":false,\"waveEnabled\":false,\"bootDiskImage\":\"batch-debian\"}}}")), exactly(1) + ).respond( + response().withStatusCode(200).withBody("{\"computeEnvId\":\"isnEDBLvHDAIteOEF44ow\"}").withContentType(MediaType.APPLICATION_JSON) + ); + + ExecOut out = exec(mock, "compute-envs", "add", "google-batch", "-n", "google", "--work-dir", "gs://workdir", "-l", "europe", + "--boot-disk-image", "batch-debian"); + assertEquals("", out.stdErr); + assertEquals(0, out.exitCode); + } + + @Test + void testAddWithInvalidBootDiskImage(MockServerClient mock) { + + mock.reset(); + + ExecOut out = exec(mock, "compute-envs", "add", "google-batch", "-n", "google", "--work-dir", "gs://workdir", "-l", "europe", + "--boot-disk-image", "invalid/image/path"); + + assertTrue(out.stdErr.contains("Invalid boot disk image format"), "Expected invalid boot disk image error, got: " + out.stdErr); + assertEquals(1, out.exitCode); + } + + @Test + void testAddWithFusionSnapshots(MockServerClient mock) throws IOException { + + mock.reset(); + + mockCredentials(mock); + + mock.when( + request().withMethod("POST").withPath("/compute-envs") + .withBody(JsonBody.json("{\"computeEnv\":{\"credentialsId\":\"6XfOhoztUq6de3Dw3X9LSb\",\"name\":\"google\",\"platform\":\"google-batch\",\"config\":{\"location\":\"europe\",\"workDir\":\"gs://workdir\",\"fusion2Enabled\":true,\"fusionSnapshots\":true,\"waveEnabled\":true}}}")), exactly(1) + ).respond( + response().withStatusCode(200).withBody("{\"computeEnvId\":\"isnEDBLvHDAIteOEF44ow\"}").withContentType(MediaType.APPLICATION_JSON) + ); + + ExecOut out = exec(mock, "compute-envs", "add", "google-batch", "-n", "google", "--work-dir", "gs://workdir", "-l", "europe", + "--fusion-v2", "--wave", "--fusion-snapshots"); + assertEquals("", out.stdErr); + assertEquals(new ComputeEnvAdded("google-batch", "isnEDBLvHDAIteOEF44ow", "google", null, USER_WORKSPACE_NAME).toString(), out.stdOut); + assertEquals(0, out.exitCode); + } + + @Test + void testAddFusionSnapshotsRequiresFusionV2(MockServerClient mock) { + + mock.reset(); + + ExecOut out = exec(mock, "compute-envs", "add", "google-batch", "-n", "google", "--work-dir", "gs://workdir", "-l", "europe", + "--wave", "--fusion-snapshots"); + + assertTrue(out.stdErr.contains("Fusion Snapshots requires Fusion v2"), "Expected fusion v2 required error, got: " + out.stdErr); + assertEquals(1, out.exitCode); + } + } diff --git a/src/test/java/io/seqera/tower/cli/credentials/providers/GoogleProviderTest.java b/src/test/java/io/seqera/tower/cli/credentials/providers/GoogleProviderTest.java index b06b3b63..7c7eaf38 100644 --- a/src/test/java/io/seqera/tower/cli/credentials/providers/GoogleProviderTest.java +++ b/src/test/java/io/seqera/tower/cli/credentials/providers/GoogleProviderTest.java @@ -33,6 +33,7 @@ import static io.seqera.tower.cli.commands.AbstractApiCmd.USER_WORKSPACE_NAME; import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; import static org.mockserver.matchers.Times.exactly; import static org.mockserver.model.HttpRequest.request; import static org.mockserver.model.HttpResponse.response; @@ -58,6 +59,154 @@ void testAdd(OutputType format, MockServerClient mock) throws IOException { assertOutput(format, out, new CredentialsAdded("GOOGLE", "1cz5A8cuBkB5iJliCwJCFU", "google", USER_WORKSPACE_NAME)); } + @ParameterizedTest + @EnumSource(OutputType.class) + void testAddWithExplicitServiceAccountKeyMode(OutputType format, MockServerClient mock) throws IOException { + + mock.when( + request() + .withMethod("POST") + .withPath("/credentials") + .withBody(json("{\"credentials\":{\"keys\":{\"data\":\"private_key\"},\"name\":\"google-sa\",\"provider\":\"google\"}}")), + exactly(1) + ).respond( + response().withStatusCode(200).withBody("{\"credentialsId\":\"2cz5A8cuBkB5iJliCwJCFU\"}").withContentType(MediaType.APPLICATION_JSON) + ); + + ExecOut out = exec(format, mock, "credentials", "add", "google", "-n", "google-sa", "--mode=service-account-key", "-k", tempFile("private_key", "id_rsa", "")); + assertOutput(format, out, new CredentialsAdded("GOOGLE", "2cz5A8cuBkB5iJliCwJCFU", "google-sa", USER_WORKSPACE_NAME)); + } + + @ParameterizedTest + @EnumSource(OutputType.class) + void testAddWithWorkloadIdentityMode(OutputType format, MockServerClient mock) { + + mock.when( + request() + .withMethod("POST") + .withPath("/credentials") + .withBody(json("{\"credentials\":{\"keys\":{\"serviceAccountEmail\":\"my-sa@my-project.iam.gserviceaccount.com\",\"workloadIdentityProvider\":\"projects/123456/locations/global/workloadIdentityPools/my-pool/providers/my-provider\"},\"name\":\"google-wif\",\"provider\":\"google\"}}")), + exactly(1) + ).respond( + response().withStatusCode(200).withBody("{\"credentialsId\":\"3cz5A8cuBkB5iJliCwJCFU\"}").withContentType(MediaType.APPLICATION_JSON) + ); + + ExecOut out = exec(format, mock, "credentials", "add", "google", "-n", "google-wif", + "--mode=workload-identity", + "--service-account-email=my-sa@my-project.iam.gserviceaccount.com", + "--workload-identity-provider=projects/123456/locations/global/workloadIdentityPools/my-pool/providers/my-provider"); + assertOutput(format, out, new CredentialsAdded("GOOGLE", "3cz5A8cuBkB5iJliCwJCFU", "google-wif", USER_WORKSPACE_NAME)); + } + + @ParameterizedTest + @EnumSource(OutputType.class) + void testAddWithWorkloadIdentityModeAndTokenAudience(OutputType format, MockServerClient mock) { + + mock.when( + request() + .withMethod("POST") + .withPath("/credentials") + .withBody(json("{\"credentials\":{\"keys\":{\"serviceAccountEmail\":\"my-sa@my-project.iam.gserviceaccount.com\",\"workloadIdentityProvider\":\"projects/123456/locations/global/workloadIdentityPools/my-pool/providers/my-provider\",\"tokenAudience\":\"https://my-audience.example.com\"},\"name\":\"google-wif-aud\",\"provider\":\"google\"}}")), + exactly(1) + ).respond( + response().withStatusCode(200).withBody("{\"credentialsId\":\"4cz5A8cuBkB5iJliCwJCFU\"}").withContentType(MediaType.APPLICATION_JSON) + ); + + ExecOut out = exec(format, mock, "credentials", "add", "google", "-n", "google-wif-aud", + "--mode=workload-identity", + "--service-account-email=my-sa@my-project.iam.gserviceaccount.com", + "--workload-identity-provider=projects/123456/locations/global/workloadIdentityPools/my-pool/providers/my-provider", + "--token-audience=https://my-audience.example.com"); + assertOutput(format, out, new CredentialsAdded("GOOGLE", "4cz5A8cuBkB5iJliCwJCFU", "google-wif-aud", USER_WORKSPACE_NAME)); + } + + @Test + void testAddWorkloadIdentityModeRejectsKeyFile(MockServerClient mock) throws IOException { + + ExecOut out = exec(mock, "credentials", "add", "google", "-n", "google-bad", + "--mode=workload-identity", + "-k", tempFile("private_key", "id_rsa", ""), + "--service-account-email=my-sa@my-project.iam.gserviceaccount.com", + "--workload-identity-provider=projects/123456/locations/global/workloadIdentityPools/my-pool/providers/my-provider"); + + assertTrue(out.stdErr.contains("'--key' cannot be used with '--mode=workload-identity'"), "Expected error about key not allowed in WIF mode, got: " + out.stdErr); + assertEquals(1, out.exitCode); + } + + @Test + void testAddWorkloadIdentityModeRequiresServiceAccountEmail(MockServerClient mock) { + + ExecOut out = exec(mock, "credentials", "add", "google", "-n", "google-bad", + "--mode=workload-identity", + "--workload-identity-provider=projects/123456/locations/global/workloadIdentityPools/my-pool/providers/my-provider"); + + assertTrue(out.stdErr.contains("'--service-account-email' is required when using '--mode=workload-identity'"), "Expected error about missing service-account-email, got: " + out.stdErr); + assertEquals(1, out.exitCode); + } + + @Test + void testAddWorkloadIdentityModeRequiresWorkloadIdentityProvider(MockServerClient mock) { + + ExecOut out = exec(mock, "credentials", "add", "google", "-n", "google-bad", + "--mode=workload-identity", + "--service-account-email=my-sa@my-project.iam.gserviceaccount.com"); + + assertTrue(out.stdErr.contains("'--workload-identity-provider' is required when using '--mode=workload-identity'"), "Expected error about missing workload-identity-provider, got: " + out.stdErr); + assertEquals(1, out.exitCode); + } + + @Test + void testAddWorkloadIdentityModeInvalidServiceAccountEmail(MockServerClient mock) { + + ExecOut out = exec(mock, "credentials", "add", "google", "-n", "google-bad", + "--mode=workload-identity", + "--service-account-email=invalid-email@gmail.com", + "--workload-identity-provider=projects/123456/locations/global/workloadIdentityPools/my-pool/providers/my-provider"); + + assertTrue(out.stdErr.contains("Invalid service account email format"), "Expected error about invalid email format, got: " + out.stdErr); + assertEquals(1, out.exitCode); + } + + @Test + void testAddWorkloadIdentityModeInvalidProviderFormat(MockServerClient mock) { + + ExecOut out = exec(mock, "credentials", "add", "google", "-n", "google-bad", + "--mode=workload-identity", + "--service-account-email=my-sa@my-project.iam.gserviceaccount.com", + "--workload-identity-provider=invalid/provider/path"); + + assertTrue(out.stdErr.contains("Invalid Workload Identity Provider format"), "Expected error about invalid provider format, got: " + out.stdErr); + assertEquals(1, out.exitCode); + } + + @Test + void testAddServiceAccountKeyModeRejectsWifOptions(MockServerClient mock) { + + ExecOut out = exec(mock, "credentials", "add", "google", "-n", "google-bad", + "--service-account-email=my-sa@my-project.iam.gserviceaccount.com"); + + assertTrue(out.stdErr.contains("can only be used with '--mode=workload-identity'"), "Expected error about WIF options in wrong mode, got: " + out.stdErr); + assertEquals(1, out.exitCode); + } + + @Test + void testAddServiceAccountKeyModeRequiresKeyFile(MockServerClient mock) { + + ExecOut out = exec(mock, "credentials", "add", "google", "-n", "google-bad"); + + assertTrue(out.stdErr.contains("'--key' is required"), "Expected error about missing key file, got: " + out.stdErr); + assertEquals(1, out.exitCode); + } + + @Test + void testAddInvalidMode(MockServerClient mock) { + + ExecOut out = exec(mock, "credentials", "add", "google", "-n", "google-bad", "--mode=invalid"); + + assertTrue(out.stdErr.contains("Invalid Google credential mode 'invalid'"), "Expected error about invalid mode, got: " + out.stdErr); + assertEquals(1, out.exitCode); + } + @Test void testFileNotFound(MockServerClient mock) { From b3845c5148f4fcdff97e6ffd85126ad6acdc3a7f Mon Sep 17 00:00:00 2001 From: ramonamela <25862624+ramonamela@users.noreply.github.com> Date: Thu, 9 Apr 2026 15:35:16 +0200 Subject: [PATCH 02/14] chore: bump tower-java-sdk to 1.133.0 and add integration test script - Upgrade tower-java-sdk from 1.114.0 to 1.133.0 to include new fields on GoogleSecurityKeys and GoogleBatchConfig - Add bash integration test script for all COMP-1463 features Co-Authored-By: Claude Opus 4.6 (1M context) --- gradle/libs.versions.toml | 2 +- .../scripts/test_google_batch_features.sh | 406 ++++++++++++++++++ 2 files changed, 407 insertions(+), 1 deletion(-) create mode 100755 src/test/resources/scripts/test_google_batch_features.sh diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 89834aa4..26da64af 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -14,7 +14,7 @@ mockserverVersion = "5.15.0" picocliVersion = "4.6.3" shadowVersion = "9.3.1" slf4jVersion = "2.0.17" -towerJavaSdkVersion = "1.114.0" +towerJavaSdkVersion = "1.133.0" xzVersion = "1.10" [libraries] diff --git a/src/test/resources/scripts/test_google_batch_features.sh b/src/test/resources/scripts/test_google_batch_features.sh new file mode 100755 index 00000000..2cbf8d2e --- /dev/null +++ b/src/test/resources/scripts/test_google_batch_features.sh @@ -0,0 +1,406 @@ +#!/usr/bin/env bash +# +# Integration test script for COMP-1463: new Google Batch CE and credential features. +# +# Prerequisites: +# - TOWER_ACCESS_TOKEN is set +# - TOWER_API_ENDPOINT is set (e.g., https://api.cloud.seqera.io) +# - TOWER_WORKSPACE_ID is set (target workspace) +# - tw CLI is available on PATH (or set TW_CMD to the path) +# - A Google credential named $GOOGLE_CRED_NAME exists or will be created +# +# Usage: +# export TOWER_ACCESS_TOKEN= +# export TOWER_API_ENDPOINT= +# export TOWER_WORKSPACE_ID= +# bash test_google_batch_features.sh +# + +set -euo pipefail + +# --------------------------------------------------------------------------- +# Configuration — override via environment variables +# --------------------------------------------------------------------------- +TW="${TW_CMD:-tw}" +WORKSPACE_FLAG="--workspace=${TOWER_WORKSPACE_ID:?TOWER_WORKSPACE_ID is required}" + +# Google Batch CE defaults +GCP_LOCATION="${GCP_LOCATION:-europe-west1}" +GCP_WORK_DIR="${GCP_WORK_DIR:?GCP_WORK_DIR is required (e.g., gs://your-bucket/work)}" +GCP_NETWORK="${GCP_NETWORK:-default}" + +# WIF credential test values +WIF_SA_EMAIL="${WIF_SA_EMAIL:-my-sa@my-project.iam.gserviceaccount.com}" +WIF_PROVIDER="${WIF_PROVIDER:-projects/123456/locations/global/workloadIdentityPools/my-pool/providers/my-provider}" + +# Naming +PREFIX="comp1463-test-$(date +%s)" +CRED_SA_NAME="${PREFIX}-google-sa" +CRED_WIF_NAME="${PREFIX}-google-wif" +CE_BASE_NAME="${PREFIX}-ce" + +# Counters +PASSED=0 +FAILED=0 +SKIPPED=0 +ERRORS=() + +# --------------------------------------------------------------------------- +# Helpers +# --------------------------------------------------------------------------- +log() { echo "--- $*"; } +pass() { ((PASSED++)); echo " PASS: $1"; } +fail() { ((FAILED++)); ERRORS+=("$1"); echo " FAIL: $1"; } +skip() { ((SKIPPED++)); echo " SKIP: $1"; } + +# Run a tw command and capture exit code + stderr +run_tw() { + local description="$1"; shift + local stderr_file + stderr_file=$(mktemp) + local exit_code=0 + "$TW" "$@" 2>"$stderr_file" || exit_code=$? + LAST_STDERR=$(cat "$stderr_file") + rm -f "$stderr_file" + LAST_EXIT=$exit_code + return 0 +} + +# Expect success (exit 0) +expect_success() { + local desc="$1"; shift + run_tw "$desc" "$@" + if [[ $LAST_EXIT -eq 0 ]]; then + pass "$desc" + else + fail "$desc (exit=$LAST_EXIT, stderr=$LAST_STDERR)" + fi +} + +# Expect failure (exit != 0) with a specific error substring +expect_failure() { + local desc="$1"; shift + local expected_error="$1"; shift + run_tw "$desc" "$@" + if [[ $LAST_EXIT -ne 0 ]]; then + if echo "$LAST_STDERR" | grep -q "$expected_error"; then + pass "$desc" + else + fail "$desc (expected error containing '$expected_error', got: $LAST_STDERR)" + fi + else + fail "$desc (expected failure but got exit 0)" + fi +} + +# Cleanup helper — delete resource, ignore failures +cleanup_cred() { + "$TW" credentials delete -n "$1" "$WORKSPACE_FLAG" 2>/dev/null || true +} + +cleanup_ce() { + "$TW" compute-envs delete -n "$1" "$WORKSPACE_FLAG" 2>/dev/null || true +} + +# --------------------------------------------------------------------------- +# Cleanup trap +# --------------------------------------------------------------------------- +cleanup() { + log "Cleaning up test resources..." + cleanup_cred "$CRED_SA_NAME" + cleanup_cred "$CRED_WIF_NAME" + # CEs created during tests + for suffix in base nettags nettags-subnet machine-types machine-wildcard \ + boot-image fusion-snap all-features; do + cleanup_ce "${CE_BASE_NAME}-${suffix}" + done + log "Cleanup complete." +} +trap cleanup EXIT + +# =========================================================================== +# TEST SUITE +# =========================================================================== + +log "=== COMP-1463 Integration Tests ===" +log "Endpoint: ${TOWER_API_ENDPOINT}" +log "Workspace: ${TOWER_WORKSPACE_ID}" +log "" + +# --------------------------------------------------------------------------- +# 1. GOOGLE CREDENTIALS — WIF MODE +# --------------------------------------------------------------------------- +log "=== 1. Google Credentials — WIF Mode ===" + +# 1.1 Add WIF credentials (happy path) +expect_success "Add WIF credentials" \ + credentials add google -n "$CRED_WIF_NAME" "$WORKSPACE_FLAG" \ + --mode=workload-identity \ + --service-account-email="$WIF_SA_EMAIL" \ + --workload-identity-provider="$WIF_PROVIDER" + +# 1.2 Add WIF credentials with token audience +cleanup_cred "$CRED_WIF_NAME" +expect_success "Add WIF credentials with token audience" \ + credentials add google -n "$CRED_WIF_NAME" "$WORKSPACE_FLAG" \ + --mode=workload-identity \ + --service-account-email="$WIF_SA_EMAIL" \ + --workload-identity-provider="$WIF_PROVIDER" \ + --token-audience="https://custom-audience.example.com" + +# 1.3 Validation: WIF mode without service-account-email +expect_failure "WIF mode rejects missing service-account-email" \ + "'--service-account-email' is required" \ + credentials add google -n "${CRED_WIF_NAME}-bad" "$WORKSPACE_FLAG" \ + --mode=workload-identity \ + --workload-identity-provider="$WIF_PROVIDER" + +# 1.4 Validation: WIF mode without workload-identity-provider +expect_failure "WIF mode rejects missing workload-identity-provider" \ + "'--workload-identity-provider' is required" \ + credentials add google -n "${CRED_WIF_NAME}-bad" "$WORKSPACE_FLAG" \ + --mode=workload-identity \ + --service-account-email="$WIF_SA_EMAIL" + +# 1.5 Validation: invalid service account email format +expect_failure "WIF mode rejects invalid email format" \ + "Invalid service account email format" \ + credentials add google -n "${CRED_WIF_NAME}-bad" "$WORKSPACE_FLAG" \ + --mode=workload-identity \ + --service-account-email="bad-email@gmail.com" \ + --workload-identity-provider="$WIF_PROVIDER" + +# 1.6 Validation: invalid provider format +expect_failure "WIF mode rejects invalid provider format" \ + "Invalid Workload Identity Provider format" \ + credentials add google -n "${CRED_WIF_NAME}-bad" "$WORKSPACE_FLAG" \ + --mode=workload-identity \ + --service-account-email="$WIF_SA_EMAIL" \ + --workload-identity-provider="invalid/path" + +# 1.7 Validation: WIF options in SA key mode +expect_failure "SA key mode rejects WIF options" \ + "can only be used with '--mode=workload-identity'" \ + credentials add google -n "${CRED_WIF_NAME}-bad" "$WORKSPACE_FLAG" \ + --service-account-email="$WIF_SA_EMAIL" + +# 1.8 Validation: key file in WIF mode +expect_failure "WIF mode rejects --key option" \ + "'--key' cannot be used with '--mode=workload-identity'" \ + credentials add google -n "${CRED_WIF_NAME}-bad" "$WORKSPACE_FLAG" \ + --mode=workload-identity \ + -k /dev/null \ + --service-account-email="$WIF_SA_EMAIL" \ + --workload-identity-provider="$WIF_PROVIDER" + +# 1.9 Validation: invalid mode +expect_failure "Rejects invalid mode" \ + "Invalid Google credential mode" \ + credentials add google -n "${CRED_WIF_NAME}-bad" "$WORKSPACE_FLAG" \ + --mode=invalid + +# 1.10 Validation: SA key mode requires --key +expect_failure "SA key mode requires --key" \ + "'--key' is required" \ + credentials add google -n "${CRED_WIF_NAME}-bad" "$WORKSPACE_FLAG" + +echo "" + +# --------------------------------------------------------------------------- +# 2. GOOGLE BATCH CE — NETWORK TAGS +# --------------------------------------------------------------------------- +log "=== 2. Google Batch CE — Network Tags ===" + +# 2.1 CE with network tags (happy path) +expect_success "Add CE with network tags" \ + compute-envs add google-batch -n "${CE_BASE_NAME}-nettags" "$WORKSPACE_FLAG" \ + --work-dir="$GCP_WORK_DIR" -l "$GCP_LOCATION" \ + --network="$GCP_NETWORK" \ + --network-tags="allow-ssh,web-tier" + +# 2.2 CE with network + subnetwork +expect_success "Add CE with network and subnetwork" \ + compute-envs add google-batch -n "${CE_BASE_NAME}-nettags-subnet" "$WORKSPACE_FLAG" \ + --work-dir="$GCP_WORK_DIR" -l "$GCP_LOCATION" \ + --network="$GCP_NETWORK" \ + --subnetwork="default" + +# 2.3 Validation: tags without VPC +expect_failure "Network tags require VPC" \ + "Network tags require VPC configuration" \ + compute-envs add google-batch -n "${CE_BASE_NAME}-bad" "$WORKSPACE_FLAG" \ + --work-dir="$GCP_WORK_DIR" -l "$GCP_LOCATION" \ + --network-tags="allow-ssh" + +# 2.4 Validation: invalid tag format (uppercase) +expect_failure "Rejects uppercase network tag" \ + "Invalid network tag" \ + compute-envs add google-batch -n "${CE_BASE_NAME}-bad" "$WORKSPACE_FLAG" \ + --work-dir="$GCP_WORK_DIR" -l "$GCP_LOCATION" \ + --network="$GCP_NETWORK" \ + --network-tags="Allow-SSH" + +# 2.5 Validation: tag ending with hyphen +expect_failure "Rejects tag ending with hyphen" \ + "Invalid network tag" \ + compute-envs add google-batch -n "${CE_BASE_NAME}-bad" "$WORKSPACE_FLAG" \ + --work-dir="$GCP_WORK_DIR" -l "$GCP_LOCATION" \ + --network="$GCP_NETWORK" \ + --network-tags="a-" + +# 2.6 Single lowercase letter tag (valid) +expect_success "Accepts single letter tag" \ + compute-envs add google-batch -n "${CE_BASE_NAME}-nettags-single" "$WORKSPACE_FLAG" \ + --work-dir="$GCP_WORK_DIR" -l "$GCP_LOCATION" \ + --network="$GCP_NETWORK" \ + --network-tags="a" +cleanup_ce "${CE_BASE_NAME}-nettags-single" + +echo "" + +# --------------------------------------------------------------------------- +# 3. GOOGLE BATCH CE — MACHINE TYPES +# --------------------------------------------------------------------------- +log "=== 3. Google Batch CE — Machine Types ===" + +# 3.1 Head job machine type +expect_success "Add CE with head job machine type" \ + compute-envs add google-batch -n "${CE_BASE_NAME}-machine-types" "$WORKSPACE_FLAG" \ + --work-dir="$GCP_WORK_DIR" -l "$GCP_LOCATION" \ + --head-job-machine-type="n2-standard-4" + +# 3.2 Compute jobs machine types (multiple) +expect_success "Add CE with compute jobs machine types" \ + compute-envs add google-batch -n "${CE_BASE_NAME}-machine-multi" "$WORKSPACE_FLAG" \ + --work-dir="$GCP_WORK_DIR" -l "$GCP_LOCATION" \ + --compute-jobs-machine-type="n2-standard-8,c2-standard-4" +cleanup_ce "${CE_BASE_NAME}-machine-multi" + +# 3.3 Wildcard machine type for compute jobs +expect_success "Add CE with wildcard compute machine type" \ + compute-envs add google-batch -n "${CE_BASE_NAME}-machine-wildcard" "$WORKSPACE_FLAG" \ + --work-dir="$GCP_WORK_DIR" -l "$GCP_LOCATION" \ + --compute-jobs-machine-type="n2-*" + +# 3.4 Validation: head machine type + template mutually exclusive +expect_failure "Head machine type and template are mutually exclusive" \ + "mutually exclusive" \ + compute-envs add google-batch -n "${CE_BASE_NAME}-bad" "$WORKSPACE_FLAG" \ + --work-dir="$GCP_WORK_DIR" -l "$GCP_LOCATION" \ + --head-job-machine-type="n2-standard-4" \ + --head-job-template="projects/p/global/instanceTemplates/t" + +# 3.5 Validation: compute machine type + template mutually exclusive +expect_failure "Compute machine type and template are mutually exclusive" \ + "mutually exclusive" \ + compute-envs add google-batch -n "${CE_BASE_NAME}-bad" "$WORKSPACE_FLAG" \ + --work-dir="$GCP_WORK_DIR" -l "$GCP_LOCATION" \ + --compute-jobs-machine-type="n2-standard-8" \ + --compute-job-template="projects/p/global/instanceTemplates/t" + +# 3.6 Validation: wildcard rejected for head job +expect_failure "Head job rejects wildcard machine type" \ + "Wildcard machine type families are not supported for the head job" \ + compute-envs add google-batch -n "${CE_BASE_NAME}-bad" "$WORKSPACE_FLAG" \ + --work-dir="$GCP_WORK_DIR" -l "$GCP_LOCATION" \ + --head-job-machine-type="n2-*" + +# 3.7 Validation: invalid machine type format +expect_failure "Rejects invalid machine type format" \ + "Invalid machine type" \ + compute-envs add google-batch -n "${CE_BASE_NAME}-bad" "$WORKSPACE_FLAG" \ + --work-dir="$GCP_WORK_DIR" -l "$GCP_LOCATION" \ + --head-job-machine-type="N2-Standard-4" + +echo "" + +# --------------------------------------------------------------------------- +# 4. GOOGLE BATCH CE — BOOT DISK IMAGE +# --------------------------------------------------------------------------- +log "=== 4. Google Batch CE — Boot Disk Image ===" + +# 4.1 Full image path +expect_success "Add CE with boot disk image (full path)" \ + compute-envs add google-batch -n "${CE_BASE_NAME}-boot-image" "$WORKSPACE_FLAG" \ + --work-dir="$GCP_WORK_DIR" -l "$GCP_LOCATION" \ + --boot-disk-image="projects/ubuntu-os-cloud/global/images/ubuntu-2404-noble-amd64-v20250112" + +# 4.2 Image family path +expect_success "Add CE with boot disk image (family)" \ + compute-envs add google-batch -n "${CE_BASE_NAME}-boot-family" "$WORKSPACE_FLAG" \ + --work-dir="$GCP_WORK_DIR" -l "$GCP_LOCATION" \ + --boot-disk-image="projects/ubuntu-os-cloud/global/images/family/ubuntu-2404-lts" +cleanup_ce "${CE_BASE_NAME}-boot-family" + +# 4.3 Batch short name +expect_success "Add CE with boot disk image (batch short name)" \ + compute-envs add google-batch -n "${CE_BASE_NAME}-boot-batch" "$WORKSPACE_FLAG" \ + --work-dir="$GCP_WORK_DIR" -l "$GCP_LOCATION" \ + --boot-disk-image="batch-debian" +cleanup_ce "${CE_BASE_NAME}-boot-batch" + +# 4.4 Validation: invalid image format +expect_failure "Rejects invalid boot disk image" \ + "Invalid boot disk image format" \ + compute-envs add google-batch -n "${CE_BASE_NAME}-bad" "$WORKSPACE_FLAG" \ + --work-dir="$GCP_WORK_DIR" -l "$GCP_LOCATION" \ + --boot-disk-image="not/a/valid/image" + +echo "" + +# --------------------------------------------------------------------------- +# 5. GOOGLE BATCH CE — FUSION SNAPSHOTS +# --------------------------------------------------------------------------- +log "=== 5. Google Batch CE — Fusion Snapshots ===" + +# 5.1 Fusion snapshots with Fusion v2 + Wave +expect_success "Add CE with Fusion Snapshots" \ + compute-envs add google-batch -n "${CE_BASE_NAME}-fusion-snap" "$WORKSPACE_FLAG" \ + --work-dir="$GCP_WORK_DIR" -l "$GCP_LOCATION" \ + --fusion-v2 --wave --fusion-snapshots + +# 5.2 Validation: snapshots without Fusion v2 +expect_failure "Fusion Snapshots requires Fusion v2" \ + "Fusion Snapshots requires Fusion v2" \ + compute-envs add google-batch -n "${CE_BASE_NAME}-bad" "$WORKSPACE_FLAG" \ + --work-dir="$GCP_WORK_DIR" -l "$GCP_LOCATION" \ + --wave --fusion-snapshots + +echo "" + +# --------------------------------------------------------------------------- +# 6. COMBINED — ALL FEATURES TOGETHER +# --------------------------------------------------------------------------- +log "=== 6. Combined — All Features Together ===" + +expect_success "Add CE with all new features combined" \ + compute-envs add google-batch -n "${CE_BASE_NAME}-all-features" "$WORKSPACE_FLAG" \ + --work-dir="$GCP_WORK_DIR" -l "$GCP_LOCATION" \ + --fusion-v2 --wave --fusion-snapshots \ + --network="$GCP_NETWORK" \ + --network-tags="allow-ssh,web-tier" \ + --compute-jobs-machine-type="n2-standard-8,c2-standard-4" \ + --head-job-machine-type="n2-standard-4" \ + --boot-disk-image="batch-debian" + +echo "" + +# =========================================================================== +# RESULTS +# =========================================================================== +log "=== Test Results ===" +echo " Passed: $PASSED" +echo " Failed: $FAILED" +echo " Skipped: $SKIPPED" +echo "" + +if [[ $FAILED -gt 0 ]]; then + log "=== Failed Tests ===" + for err in "${ERRORS[@]}"; do + echo " - $err" + done + echo "" + exit 1 +fi + +log "All tests passed." From e678bd7792b96f56ca8dca85341da19e5d04b34a Mon Sep 17 00:00:00 2001 From: ramonamela <25862624+ramonamela@users.noreply.github.com> Date: Wed, 8 Apr 2026 19:51:25 +0200 Subject: [PATCH 03/14] feat: update CLI to support new Azure Batch features [COMP-1464] - Add Azure Entra (service principal) credentials support (add/update) - Add managed identity options (head/pool client IDs and resource IDs) for both Forge and Manual Azure Batch compute environments - Add VNet/subnet support (--subnet-id) for private network isolation - Add dual pool mode (--dual-pool) with separate head and worker pool configuration for Forge mode, and --worker-pool for Manual mode - Add job max wall clock time option (--job-max-wall-clock-time) - Replace JobCleanupPolicy enum with 3 boolean toggles: --delete-jobs-on-completion, --delete-tasks-on-completion, --terminate-jobs-on-completion Note: requires tower-java-sdk bump to >= 1.133.0 for new model fields. Co-Authored-By: Claude Opus 4.6 (1M context) --- .../platforms/AzBatchForgePlatform.java | 119 ++++++++++++++++-- .../platforms/AzBatchManualPlatform.java | 52 ++++++-- .../cli/commands/credentials/AddCmd.java | 2 + .../cli/commands/credentials/UpdateCmd.java | 2 + .../credentials/add/AddAzureEntraCmd.java | 37 ++++++ .../providers/AzureEntraProvider.java | 56 +++++++++ .../update/UpdateAzureEntraCmd.java | 37 ++++++ .../providers/AzureEntraProviderTest.java | 53 ++++++++ 8 files changed, 340 insertions(+), 18 deletions(-) create mode 100644 src/main/java/io/seqera/tower/cli/commands/credentials/add/AddAzureEntraCmd.java create mode 100644 src/main/java/io/seqera/tower/cli/commands/credentials/providers/AzureEntraProvider.java create mode 100644 src/main/java/io/seqera/tower/cli/commands/credentials/update/UpdateAzureEntraCmd.java create mode 100644 src/test/java/io/seqera/tower/cli/credentials/providers/AzureEntraProviderTest.java diff --git a/src/main/java/io/seqera/tower/cli/commands/computeenvs/platforms/AzBatchForgePlatform.java b/src/main/java/io/seqera/tower/cli/commands/computeenvs/platforms/AzBatchForgePlatform.java index 650a0bf5..aa887fa9 100644 --- a/src/main/java/io/seqera/tower/cli/commands/computeenvs/platforms/AzBatchForgePlatform.java +++ b/src/main/java/io/seqera/tower/cli/commands/computeenvs/platforms/AzBatchForgePlatform.java @@ -21,9 +21,9 @@ import io.seqera.tower.cli.exceptions.CredentialsNotFoundException; import io.seqera.tower.model.AzBatchConfig; import io.seqera.tower.model.AzBatchForgeConfig; +import io.seqera.tower.model.AzBatchPoolConfig; import io.seqera.tower.model.ComputeEnvComputeConfig.PlatformEnum; import io.seqera.tower.model.Credentials; -import io.seqera.tower.model.JobCleanupPolicy; import picocli.CommandLine.ArgGroup; import picocli.CommandLine.Option; @@ -40,15 +40,24 @@ public class AzBatchForgePlatform extends AbstractPlatform { @Option(names = {"-l", "--location"}, description = "Azure region where compute resources will be deployed (e.g., eastus, westeurope).", required = true) public String location; - @Option(names = {"--vm-type"}, description = "Azure VM size for compute pool. Must be a valid Azure Batch VM type. If absent, Platform defaults to Standard_D4_v3.") + @Option(names = {"--dual-pool"}, description = "Enable dual pool mode with separate head and worker pools. Head pool runs the Nextflow launcher on a small VM; worker pool scales independently for pipeline tasks.") + public boolean dualPool; + + @Option(names = {"--vm-type"}, description = "Azure VM size for compute pool (single pool mode). Must be a valid Azure Batch VM type. If absent, Platform defaults to Standard_D4_v3.") public String vmType; - @Option(names = {"--vm-count"}, description = "Number of VMs in the Batch pool. With autoscaling enabled, this is the maximum capacity. Pool scales to zero when unused.", required = true) + @Option(names = {"--vm-count"}, description = "Number of VMs in the Batch pool (single pool mode). With autoscaling enabled, this is the maximum capacity. Pool scales to zero when unused.") public Integer vmCount; - @Option(names = {"--no-auto-scale"}, description = "Disable pool autoscaling. When disabled, pool maintains fixed VM count and does not scale based on workload.") + @Option(names = {"--no-auto-scale"}, description = "Disable pool autoscaling (single pool mode). When disabled, pool maintains fixed VM count and does not scale based on workload.") public boolean noAutoScale; + @ArgGroup(heading = "%nDual pool options (head pool):%n", validate = false) + public HeadPoolOptions headPoolOpts; + + @ArgGroup(heading = "%nDual pool options (worker pool):%n", validate = false) + public WorkerPoolOptions workerPoolOpts; + @Option(names = {"--preserve-resources"}, description = "Preserve Azure Batch pool resources on deletion. Keeps the compute pool and related resources when the compute environment is deleted from Seqera Platform.") public boolean preserveResources; @@ -61,6 +70,12 @@ public class AzBatchForgePlatform extends AbstractPlatform { @Option(names = {"--wave"}, description = "Enable Wave containers. Allows access to private container repositories and on-demand container provisioning.") public boolean wave; + @Option(names = {"--subnet-id"}, description = "Azure VNet subnet resource ID for private network isolation. Requires Entra (service principal) credentials. Format: /subscriptions/{sub}/resourceGroups/{rg}/providers/Microsoft.Network/virtualNetworks/{vnet}/subnets/{subnet}") + public String subnetId; + + @ArgGroup(heading = "%nManaged identity options:%n", validate = false) + public ManagedIdentityOptions managedIdentity; + @ArgGroup(heading = "%nAdvanced options:%n", validate = false) public AdvancedOptions adv; @@ -86,17 +101,40 @@ public AzBatchConfig computeConfig(Long workspaceId, CredentialsApi credentialsA if (adv != null) { config - .deleteJobsOnCompletion(adv.jobsCleanup) - .tokenDuration(adv.tokenDuration); + .deleteJobsOnCompletion(adv.deleteJobsOnCompletion) + .deleteTasksOnCompletion(adv.deleteTasksOnCompletion) + .terminateJobsOnCompletion(adv.terminateJobsOnCompletion) + .tokenDuration(adv.tokenDuration) + .jobMaxWallClockTime(adv.jobMaxWallClockTime); } AzBatchForgeConfig forge = new AzBatchForgeConfig() - .vmType(vmType) - .vmCount(vmCount) - .autoScale(!noAutoScale) .disposeOnDeletion(!preserveResources); + if (dualPool) { + AzBatchPoolConfig headPool = new AzBatchPoolConfig(); + if (headPoolOpts != null) { + headPool.vmType(headPoolOpts.headVmType); + headPool.vmCount(headPoolOpts.headVmCount); + headPool.autoScale(headPoolOpts.headNoAutoScale != null ? !headPoolOpts.headNoAutoScale : null); + } + + AzBatchPoolConfig workerPool = new AzBatchPoolConfig(); + if (workerPoolOpts != null) { + workerPool.vmType(workerPoolOpts.workerVmType); + workerPool.vmCount(workerPoolOpts.workerVmCount); + workerPool.autoScale(workerPoolOpts.workerNoAutoScale != null ? !workerPoolOpts.workerNoAutoScale : null); + } + + forge.headPool(headPool); + forge.workerPool(workerPool); + } else { + forge.vmType(vmType) + .vmCount(vmCount) + .autoScale(!noAutoScale); + } + if (registryCredentials != null && registryCredentials.size() > 0) { Map credentialsNameToId = new HashMap<>(); @@ -119,17 +157,76 @@ public AzBatchConfig computeConfig(Long workspaceId, CredentialsApi credentialsA } config.forge(forge); + config.subnetId(subnetId); + + if (managedIdentity != null) { + config.managedIdentityClientId(managedIdentity.managedIdentityClientId); + config.managedIdentityPoolClientId(managedIdentity.managedIdentityPoolClientId); + config.managedIdentityHeadResourceId(managedIdentity.managedIdentityHeadResourceId); + config.managedIdentityPoolResourceId(managedIdentity.managedIdentityPoolResourceId); + } return config; } + public static class HeadPoolOptions { + + @Option(names = {"--head-vm-type"}, description = "Azure VM size for the head pool (dual pool mode). If absent, defaults to Standard_D2s_v3.") + public String headVmType; + + @Option(names = {"--head-vm-count"}, description = "Number of VMs in the head pool (dual pool mode). If absent, defaults to 1.") + public Integer headVmCount; + + @Option(names = {"--head-no-auto-scale"}, description = "Disable autoscaling for the head pool (dual pool mode).") + public Boolean headNoAutoScale; + + } + + public static class WorkerPoolOptions { + + @Option(names = {"--worker-vm-type"}, description = "Azure VM size for the worker pool (dual pool mode). If absent, defaults to Standard_D4s_v3.") + public String workerVmType; + + @Option(names = {"--worker-vm-count"}, description = "Max number of VMs in the worker pool (dual pool mode).") + public Integer workerVmCount; + + @Option(names = {"--worker-no-auto-scale"}, description = "Disable autoscaling for the worker pool (dual pool mode).") + public Boolean workerNoAutoScale; + + } + + public static class ManagedIdentityOptions { + + @Option(names = {"--managed-identity-client-id"}, description = "Head job managed identity client ID (UUID). The user-assigned managed identity used by the Nextflow launcher (head job).") + public String managedIdentityClientId; + + @Option(names = {"--managed-identity-pool-client-id"}, description = "Compute job managed identity client ID (UUID). The user-assigned managed identity used by compute tasks running on Batch pool nodes.") + public String managedIdentityPoolClientId; + + @Option(names = {"--managed-identity-head-resource-id"}, description = "Head job managed identity resource ID. Full Azure resource ID of the user-assigned managed identity for the head job. Required in Forge mode when head job managed identity client ID is specified. Format: /subscriptions/{sub}/resourceGroups/{rg}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{name}") + public String managedIdentityHeadResourceId; + + @Option(names = {"--managed-identity-pool-resource-id"}, description = "Compute job managed identity resource ID. Full Azure resource ID of the user-assigned managed identity for compute jobs. Required in Forge mode when compute job managed identity client ID is specified. Format: /subscriptions/{sub}/resourceGroups/{rg}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{name}") + public String managedIdentityPoolResourceId; + + } + public static class AdvancedOptions { - @Option(names = {"--jobs-cleanup"}, description = "Automatic deletion of Azure Batch jobs after pipeline execution. ON_SUCCESS deletes only successful jobs. ALWAYS deletes all jobs. NEVER keeps all jobs.") - public JobCleanupPolicy jobsCleanup; + @Option(names = {"--delete-jobs-on-completion"}, description = "Delete Azure Batch jobs when the workflow completes successfully. Failed jobs are always preserved. Default: false.") + public Boolean deleteJobsOnCompletion; + + @Option(names = {"--delete-tasks-on-completion"}, description = "Delete individual Azure Batch tasks when they complete successfully. Failed tasks are preserved. Default: true.") + public Boolean deleteTasksOnCompletion; + + @Option(names = {"--terminate-jobs-on-completion"}, description = "Terminate Azure Batch jobs when all tasks complete. Default: true.") + public Boolean terminateJobsOnCompletion; @Option(names = {"--token-duration"}, description = "Duration of the SAS (shared access signature) token for Azure Blob Storage access. If absent, Platform defaults to 12h.") public String tokenDuration; + @Option(names = {"--job-max-wall-clock-time"}, description = "Maximum elapsed time for an Azure Batch job before automatic termination. Accepts duration syntax (e.g., '7d', '1d12h', '168h'). Defaults to 7d. Maximum: 180 days.") + public String jobMaxWallClockTime; + } } diff --git a/src/main/java/io/seqera/tower/cli/commands/computeenvs/platforms/AzBatchManualPlatform.java b/src/main/java/io/seqera/tower/cli/commands/computeenvs/platforms/AzBatchManualPlatform.java index 4b01de24..cca8d1be 100644 --- a/src/main/java/io/seqera/tower/cli/commands/computeenvs/platforms/AzBatchManualPlatform.java +++ b/src/main/java/io/seqera/tower/cli/commands/computeenvs/platforms/AzBatchManualPlatform.java @@ -19,7 +19,6 @@ import io.seqera.tower.ApiException; import io.seqera.tower.model.AzBatchConfig; import io.seqera.tower.model.ComputeEnvComputeConfig.PlatformEnum; -import io.seqera.tower.model.JobCleanupPolicy; import picocli.CommandLine.ArgGroup; import picocli.CommandLine.Option; @@ -33,15 +32,24 @@ public class AzBatchManualPlatform extends AbstractPlatform { @Option(names = {"-l", "--location"}, description = "Azure region where compute resources will be deployed (e.g., eastus, westeurope).", required = true) public String location; - @Option(names = {"--compute-pool-name"}, description = "Pre-configured Azure Batch compute pool for running Nextflow jobs. Must include azcopy command-line tool. See Nextflow documentation for pool requirements.", required = true) + @Option(names = {"--compute-pool-name"}, description = "Pre-configured Azure Batch pool for the Nextflow head job. When used with --worker-pool, this pool handles only the launcher. Must include azcopy command-line tool.", required = true) public String computePoolName; + @Option(names = {"--worker-pool"}, description = "Pre-configured Azure Batch pool for pipeline worker tasks. When specified, the head job runs on --compute-pool-name and worker tasks run on this pool. Must be different from the head pool.") + public String workerPool; + @Option(names = {"--fusion-v2"}, description = "Enable Fusion file system. Provides native access to Azure Blob Storage with low-latency I/O. Requires Wave containers.") public boolean fusionV2; @Option(names = {"--wave"}, description = "Enable Wave containers. Allows access to private container repositories and on-demand container provisioning.") public boolean wave; + @Option(names = {"--subnet-id"}, description = "Azure VNet subnet resource ID for private network isolation. Requires Entra (service principal) credentials. Format: /subscriptions/{sub}/resourceGroups/{rg}/providers/Microsoft.Network/virtualNetworks/{vnet}/subnets/{subnet}") + public String subnetId; + + @ArgGroup(heading = "%nManaged identity options:%n", validate = false) + public ManagedIdentityOptions managedIdentity; + @ArgGroup(heading = "%nAdvanced options:%n", validate = false) public AdvancedOptions adv; @@ -57,12 +65,16 @@ public AzBatchConfig computeConfig() throws ApiException, IOException { .fusion2Enabled(fusionV2) .waveEnabled(wave) .region(location) - .headPool(computePoolName); + .headPool(computePoolName) + .workerPool(workerPool); if (adv != null) { config - .deleteJobsOnCompletion(adv.jobsCleanup) - .tokenDuration(adv.tokenDuration); + .deleteJobsOnCompletion(adv.deleteJobsOnCompletion) + .deleteTasksOnCompletion(adv.deleteTasksOnCompletion) + .terminateJobsOnCompletion(adv.terminateJobsOnCompletion) + .tokenDuration(adv.tokenDuration) + .jobMaxWallClockTime(adv.jobMaxWallClockTime); } // Common @@ -72,16 +84,42 @@ public AzBatchConfig computeConfig() throws ApiException, IOException { .nextflowConfig(nextflowConfigString()) .environment(environmentVariables()); + config.subnetId(subnetId); + + if (managedIdentity != null) { + config.managedIdentityClientId(managedIdentity.managedIdentityClientId); + config.managedIdentityPoolClientId(managedIdentity.managedIdentityPoolClientId); + } + return config; } + public static class ManagedIdentityOptions { + + @Option(names = {"--managed-identity-client-id"}, description = "Head job managed identity client ID (UUID). The user-assigned managed identity used by the Nextflow launcher (head job).") + public String managedIdentityClientId; + + @Option(names = {"--managed-identity-pool-client-id"}, description = "Compute job managed identity client ID (UUID). The user-assigned managed identity used by compute tasks running on Batch pool nodes.") + public String managedIdentityPoolClientId; + + } + public static class AdvancedOptions { - @Option(names = {"--jobs-cleanup"}, description = "Automatic deletion of Azure Batch jobs after pipeline execution. ON_SUCCESS deletes only successful jobs. ALWAYS deletes all jobs. NEVER keeps all jobs.") - public JobCleanupPolicy jobsCleanup; + @Option(names = {"--delete-jobs-on-completion"}, description = "Delete Azure Batch jobs when the workflow completes successfully. Failed jobs are always preserved. Default: false.") + public Boolean deleteJobsOnCompletion; + + @Option(names = {"--delete-tasks-on-completion"}, description = "Delete individual Azure Batch tasks when they complete successfully. Failed tasks are preserved. Default: true.") + public Boolean deleteTasksOnCompletion; + + @Option(names = {"--terminate-jobs-on-completion"}, description = "Terminate Azure Batch jobs when all tasks complete. Default: true.") + public Boolean terminateJobsOnCompletion; @Option(names = {"--token-duration"}, description = "Duration of the SAS (shared access signature) token for Azure Blob Storage access. If absent, Platform defaults to 12h.") public String tokenDuration; + @Option(names = {"--job-max-wall-clock-time"}, description = "Maximum elapsed time for an Azure Batch job before automatic termination. Accepts duration syntax (e.g., '7d', '1d12h', '168h'). Defaults to 7d. Maximum: 180 days.") + public String jobMaxWallClockTime; + } } diff --git a/src/main/java/io/seqera/tower/cli/commands/credentials/AddCmd.java b/src/main/java/io/seqera/tower/cli/commands/credentials/AddCmd.java index 96823076..8dd2b31d 100644 --- a/src/main/java/io/seqera/tower/cli/commands/credentials/AddCmd.java +++ b/src/main/java/io/seqera/tower/cli/commands/credentials/AddCmd.java @@ -20,6 +20,7 @@ import io.seqera.tower.cli.commands.credentials.add.AddAgentCmd; import io.seqera.tower.cli.commands.credentials.add.AddAwsCmd; import io.seqera.tower.cli.commands.credentials.add.AddAzureCmd; +import io.seqera.tower.cli.commands.credentials.add.AddAzureEntraCmd; import io.seqera.tower.cli.commands.credentials.add.AddBitbucketCmd; import io.seqera.tower.cli.commands.credentials.add.AddCodeCommitCmd; import io.seqera.tower.cli.commands.credentials.add.AddContainerRegistryCmd; @@ -49,6 +50,7 @@ AddSshCmd.class, AddK8sCmd.class, AddAzureCmd.class, + AddAzureEntraCmd.class, AddAgentCmd.class, AddContainerRegistryCmd.class } diff --git a/src/main/java/io/seqera/tower/cli/commands/credentials/UpdateCmd.java b/src/main/java/io/seqera/tower/cli/commands/credentials/UpdateCmd.java index 2b75d601..e9bf47c0 100644 --- a/src/main/java/io/seqera/tower/cli/commands/credentials/UpdateCmd.java +++ b/src/main/java/io/seqera/tower/cli/commands/credentials/UpdateCmd.java @@ -20,6 +20,7 @@ import io.seqera.tower.cli.commands.credentials.update.UpdateAgentCmd; import io.seqera.tower.cli.commands.credentials.update.UpdateAwsCmd; import io.seqera.tower.cli.commands.credentials.update.UpdateAzureCmd; +import io.seqera.tower.cli.commands.credentials.update.UpdateAzureEntraCmd; import io.seqera.tower.cli.commands.credentials.update.UpdateBitbucketCmd; import io.seqera.tower.cli.commands.credentials.update.UpdateCodeCommitCmd; import io.seqera.tower.cli.commands.credentials.update.UpdateContainerRegistryCmd; @@ -47,6 +48,7 @@ UpdateSshCmd.class, UpdateK8sCmd.class, UpdateAzureCmd.class, + UpdateAzureEntraCmd.class, UpdateContainerRegistryCmd.class, UpdateAgentCmd.class } diff --git a/src/main/java/io/seqera/tower/cli/commands/credentials/add/AddAzureEntraCmd.java b/src/main/java/io/seqera/tower/cli/commands/credentials/add/AddAzureEntraCmd.java new file mode 100644 index 00000000..b0f1490a --- /dev/null +++ b/src/main/java/io/seqera/tower/cli/commands/credentials/add/AddAzureEntraCmd.java @@ -0,0 +1,37 @@ +/* + * Copyright 2021-2026, Seqera. + * + * 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 + * + * http://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. + */ + +package io.seqera.tower.cli.commands.credentials.add; + +import io.seqera.tower.cli.commands.credentials.providers.AzureEntraProvider; +import io.seqera.tower.cli.commands.credentials.providers.CredentialsProvider; +import picocli.CommandLine.Command; +import picocli.CommandLine.Mixin; + +@Command( + name = "azure-entra", + description = "Add Azure Entra service principal credentials" +) +public class AddAzureEntraCmd extends AbstractAddCmd { + + @Mixin + AzureEntraProvider provider; + + @Override + protected CredentialsProvider getProvider() { + return provider; + } +} diff --git a/src/main/java/io/seqera/tower/cli/commands/credentials/providers/AzureEntraProvider.java b/src/main/java/io/seqera/tower/cli/commands/credentials/providers/AzureEntraProvider.java new file mode 100644 index 00000000..8e49b2d3 --- /dev/null +++ b/src/main/java/io/seqera/tower/cli/commands/credentials/providers/AzureEntraProvider.java @@ -0,0 +1,56 @@ +/* + * Copyright 2021-2026, Seqera. + * + * 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 + * + * http://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. + */ + +package io.seqera.tower.cli.commands.credentials.providers; + +import io.seqera.tower.model.AzureEntraKeys; +import io.seqera.tower.model.Credentials.ProviderEnum; +import picocli.CommandLine.Option; + +import java.io.IOException; + +public class AzureEntraProvider extends AbstractProvider { + + @Option(names = {"--batch-name"}, description = "Azure Batch account name. The name of the Azure Batch account used for workflow execution.", required = true) + public String batchName; + + @Option(names = {"--storage-name"}, description = "Azure Storage account name. The name of the Azure Storage account used for workflow data and logs.", required = true) + public String storageName; + + @Option(names = {"--tenant-id"}, description = "Azure Entra tenant ID. The directory (tenant) ID of the Entra application.", required = true) + public String tenantId; + + @Option(names = {"--client-id"}, description = "Azure Entra client ID. The application (client) ID of the Entra service principal.", required = true) + public String clientId; + + @Option(names = {"--client-secret"}, description = "Azure Entra client secret. The secret value of the Entra service principal.", required = true) + public String clientSecret; + + public AzureEntraProvider() { + super(ProviderEnum.AZURE_ENTRA); + } + + @Override + public AzureEntraKeys securityKeys() throws IOException { + AzureEntraKeys keys = new AzureEntraKeys(); + keys.setBatchName(batchName); + keys.setStorageName(storageName); + keys.setTenantId(tenantId); + keys.setClientId(clientId); + keys.setClientSecret(clientSecret); + return keys; + } +} diff --git a/src/main/java/io/seqera/tower/cli/commands/credentials/update/UpdateAzureEntraCmd.java b/src/main/java/io/seqera/tower/cli/commands/credentials/update/UpdateAzureEntraCmd.java new file mode 100644 index 00000000..ca525bab --- /dev/null +++ b/src/main/java/io/seqera/tower/cli/commands/credentials/update/UpdateAzureEntraCmd.java @@ -0,0 +1,37 @@ +/* + * Copyright 2021-2026, Seqera. + * + * 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 + * + * http://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. + */ + +package io.seqera.tower.cli.commands.credentials.update; + +import io.seqera.tower.cli.commands.credentials.providers.AzureEntraProvider; +import io.seqera.tower.cli.commands.credentials.providers.CredentialsProvider; +import picocli.CommandLine.Command; +import picocli.CommandLine.Mixin; + +@Command( + name = "azure-entra", + description = "Update Azure Entra service principal credentials" +) +public class UpdateAzureEntraCmd extends AbstractUpdateCmd { + + @Mixin + protected AzureEntraProvider provider; + + @Override + protected CredentialsProvider getProvider() { + return provider; + } +} diff --git a/src/test/java/io/seqera/tower/cli/credentials/providers/AzureEntraProviderTest.java b/src/test/java/io/seqera/tower/cli/credentials/providers/AzureEntraProviderTest.java new file mode 100644 index 00000000..795047c7 --- /dev/null +++ b/src/test/java/io/seqera/tower/cli/credentials/providers/AzureEntraProviderTest.java @@ -0,0 +1,53 @@ +/* + * Copyright 2021-2026, Seqera. + * + * 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 + * + * http://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. + */ + +package io.seqera.tower.cli.credentials.providers; + +import io.seqera.tower.cli.BaseCmdTest; +import io.seqera.tower.cli.commands.enums.OutputType; +import io.seqera.tower.cli.responses.CredentialsAdded; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.EnumSource; +import org.mockserver.client.MockServerClient; +import org.mockserver.model.MediaType; + +import static io.seqera.tower.cli.commands.AbstractApiCmd.USER_WORKSPACE_NAME; +import static org.mockserver.matchers.Times.exactly; +import static org.mockserver.model.HttpRequest.request; +import static org.mockserver.model.HttpResponse.response; +import static org.mockserver.model.JsonBody.json; + +class AzureEntraProviderTest extends BaseCmdTest { + + @ParameterizedTest + @EnumSource(OutputType.class) + void testAdd(OutputType format, MockServerClient mock) { + + mock.when( + request() + .withMethod("POST") + .withPath("/credentials") + .withBody(json("{\"credentials\":{\"keys\":{\"batchName\":\"batchName\",\"storageName\":\"storageName\",\"tenantId\":\"tenantId\",\"clientId\":\"clientId\",\"clientSecret\":\"clientSecret\"},\"name\":\"azure-entra\",\"provider\":\"azure_entra\"}}")), + exactly(1) + ).respond( + response().withStatusCode(200).withBody("{\"credentialsId\":\"1cz5A8cuBkB5iJliCwJCFU\"}").withContentType(MediaType.APPLICATION_JSON) + ); + + ExecOut out = exec(format, mock, "credentials", "add", "azure-entra", "--name=azure-entra", "--batch-name=batchName", "--storage-name=storageName", "--tenant-id=tenantId", "--client-id=clientId", "--client-secret=clientSecret"); + assertOutput(format, out, new CredentialsAdded("AZURE_ENTRA", "1cz5A8cuBkB5iJliCwJCFU", "azure-entra", USER_WORKSPACE_NAME)); + } + +} From c6a66a9e09a39d60f49696fc6222a134920dda43 Mon Sep 17 00:00:00 2001 From: ramonamela <25862624+ramonamela@users.noreply.github.com> Date: Thu, 9 Apr 2026 15:22:20 +0200 Subject: [PATCH 04/14] chore: bump tower-java-sdk to 1.133.0 and add integration test script - Bump tower-java-sdk from 1.114.0 to 1.133.0 for new Azure Batch model fields (managed identity, subnet, dual pool, wall clock time, cleanup toggles) - Add bash integration test script for all new Azure Batch CLI features Co-Authored-By: Claude Opus 4.6 (1M context) --- .../scripts/test-azure-batch-features.sh | 421 ++++++++++++++++++ 1 file changed, 421 insertions(+) create mode 100755 src/test/resources/scripts/test-azure-batch-features.sh diff --git a/src/test/resources/scripts/test-azure-batch-features.sh b/src/test/resources/scripts/test-azure-batch-features.sh new file mode 100755 index 00000000..7ef7f9a7 --- /dev/null +++ b/src/test/resources/scripts/test-azure-batch-features.sh @@ -0,0 +1,421 @@ +#!/usr/bin/env bash +# +# Integration test script for Azure Batch CLI features (COMP-1464) +# +# Prerequisites: +# - TOWER_ACCESS_TOKEN set +# - TOWER_API_ENDPOINT set (or defaults to api.cloud.seqera.io) +# - tw CLI binary on PATH +# - A workspace with Azure Entra credentials configured +# +# Usage: +# export TOWER_ACCESS_TOKEN= +# export TOWER_API_ENDPOINT= +# ./test-azure-batch-features.sh [--workspace ] +# + +set -euo pipefail + +# --------------------------------------------------------------------------- +# Configuration - override via environment variables +# --------------------------------------------------------------------------- +WORKSPACE="${WORKSPACE:-}" +TW="${TW:-tw}" + +# Azure resource placeholders - override with real values for live testing +BATCH_NAME="${BATCH_NAME:-my-batch-account}" +STORAGE_NAME="${STORAGE_NAME:-my-storage-account}" +TENANT_ID="${TENANT_ID:-00000000-0000-0000-0000-000000000001}" +CLIENT_ID="${CLIENT_ID:-00000000-0000-0000-0000-000000000002}" +CLIENT_SECRET="${CLIENT_SECRET:-test-client-secret}" +WORK_DIR="${WORK_DIR:-az://container/work}" +LOCATION="${LOCATION:-eastus}" + +MI_HEAD_CLIENT_ID="${MI_HEAD_CLIENT_ID:-11111111-1111-1111-1111-111111111111}" +MI_POOL_CLIENT_ID="${MI_POOL_CLIENT_ID:-22222222-2222-2222-2222-222222222222}" +MI_HEAD_RESOURCE_ID="${MI_HEAD_RESOURCE_ID:-/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myRg/providers/Microsoft.ManagedIdentity/userAssignedIdentities/headIdentity}" +MI_POOL_RESOURCE_ID="${MI_POOL_RESOURCE_ID:-/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myRg/providers/Microsoft.ManagedIdentity/userAssignedIdentities/poolIdentity}" +SUBNET_ID="${SUBNET_ID:-/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myRg/providers/Microsoft.Network/virtualNetworks/myVnet/subnets/mySubnet}" + +# --------------------------------------------------------------------------- +# Helpers +# --------------------------------------------------------------------------- +PASS=0 +FAIL=0 +SKIP=0 +CLEANUP_IDS=() + +ws_flag() { + if [[ -n "$WORKSPACE" ]]; then + echo "--workspace=$WORKSPACE" + fi +} + +run_tw() { + local description="$1" + shift + echo -n " TEST: $description ... " + if output=$("$TW" $(ws_flag) "$@" 2>&1); then + echo "PASS" + ((PASS++)) + return 0 + else + echo "FAIL" + echo " Command: $TW $(ws_flag) $*" + echo " Output: $output" + ((FAIL++)) + return 1 + fi +} + +run_tw_expect_fail() { + local description="$1" + shift + echo -n " TEST: $description ... " + if output=$("$TW" $(ws_flag) "$@" 2>&1); then + echo "FAIL (expected failure but succeeded)" + echo " Command: $TW $(ws_flag) $*" + echo " Output: $output" + ((FAIL++)) + return 1 + else + echo "PASS (failed as expected)" + ((PASS++)) + return 0 + fi +} + +cleanup_credential() { + local name="$1" + "$TW" $(ws_flag) credentials delete --name="$name" 2>/dev/null || true +} + +cleanup_ce() { + local name="$1" + "$TW" $(ws_flag) compute-envs delete --name="$name" 2>/dev/null || true +} + +# Parse arguments +while [[ $# -gt 0 ]]; do + case "$1" in + --workspace) + WORKSPACE="$2" + shift 2 + ;; + --workspace=*) + WORKSPACE="${1#*=}" + shift + ;; + *) + echo "Unknown option: $1" + exit 1 + ;; + esac +done + +echo "============================================================" +echo " Azure Batch CLI Features Test Suite (COMP-1464)" +echo "============================================================" +echo "" +echo "Endpoint: ${TOWER_API_ENDPOINT:-api.cloud.seqera.io}" +echo "Workspace: ${WORKSPACE:-}" +echo "" + +# =================================================================== +# 1. Azure Entra Credentials +# =================================================================== +echo "--- 1. Azure Entra Credentials ---" + +CRED_NAME="test-entra-cred-$$" + +run_tw "Add Entra credentials" \ + credentials add azure-entra \ + --name="$CRED_NAME" \ + --batch-name="$BATCH_NAME" \ + --storage-name="$STORAGE_NAME" \ + --tenant-id="$TENANT_ID" \ + --client-id="$CLIENT_ID" \ + --client-secret="$CLIENT_SECRET" + +run_tw "Update Entra credentials" \ + credentials update azure-entra \ + --name="$CRED_NAME" \ + --batch-name="$BATCH_NAME" \ + --storage-name="$STORAGE_NAME" \ + --tenant-id="$TENANT_ID" \ + --client-id="$CLIENT_ID" \ + --client-secret="new-secret-value" + +run_tw_expect_fail "Add Entra credentials missing required --tenant-id" \ + credentials add azure-entra \ + --name="should-fail-$$" \ + --batch-name="$BATCH_NAME" \ + --storage-name="$STORAGE_NAME" \ + --client-id="$CLIENT_ID" \ + --client-secret="$CLIENT_SECRET" + +echo "" + +# =================================================================== +# 2. Forge CE - Single Pool (backward compat) +# =================================================================== +echo "--- 2. Forge CE - Single Pool ---" + +CE_FORGE_SINGLE="test-forge-single-$$" + +run_tw "Create Forge CE (single pool, basic)" \ + compute-envs add azure-batch forge \ + -n "$CE_FORGE_SINGLE" \ + --credentials="$CRED_NAME" \ + -l "$LOCATION" \ + --work-dir="$WORK_DIR" \ + --vm-count=5 + +cleanup_ce "$CE_FORGE_SINGLE" +echo "" + +# =================================================================== +# 3. Forge CE - Single Pool with all new options +# =================================================================== +echo "--- 3. Forge CE - Single Pool with new options ---" + +CE_FORGE_FULL="test-forge-full-$$" + +run_tw "Create Forge CE (single pool, all options)" \ + compute-envs add azure-batch forge \ + -n "$CE_FORGE_FULL" \ + --credentials="$CRED_NAME" \ + -l "$LOCATION" \ + --work-dir="$WORK_DIR" \ + --vm-type=Standard_D4s_v3 \ + --vm-count=10 \ + --no-auto-scale \ + --fusion-v2 \ + --wave \ + --subnet-id="$SUBNET_ID" \ + --managed-identity-client-id="$MI_HEAD_CLIENT_ID" \ + --managed-identity-pool-client-id="$MI_POOL_CLIENT_ID" \ + --managed-identity-head-resource-id="$MI_HEAD_RESOURCE_ID" \ + --managed-identity-pool-resource-id="$MI_POOL_RESOURCE_ID" \ + --delete-jobs-on-completion=true \ + --delete-tasks-on-completion=true \ + --terminate-jobs-on-completion=true \ + --token-duration=24h \ + --job-max-wall-clock-time=7d + +cleanup_ce "$CE_FORGE_FULL" +echo "" + +# =================================================================== +# 4. Forge CE - Dual Pool +# =================================================================== +echo "--- 4. Forge CE - Dual Pool ---" + +CE_FORGE_DUAL="test-forge-dual-$$" + +run_tw "Create Forge CE (dual pool, defaults)" \ + compute-envs add azure-batch forge \ + -n "$CE_FORGE_DUAL" \ + --credentials="$CRED_NAME" \ + -l "$LOCATION" \ + --work-dir="$WORK_DIR" \ + --dual-pool \ + --worker-vm-count=8 + +cleanup_ce "$CE_FORGE_DUAL" + +CE_FORGE_DUAL_FULL="test-forge-dual-full-$$" + +run_tw "Create Forge CE (dual pool, all options)" \ + compute-envs add azure-batch forge \ + -n "$CE_FORGE_DUAL_FULL" \ + --credentials="$CRED_NAME" \ + -l "$LOCATION" \ + --work-dir="$WORK_DIR" \ + --dual-pool \ + --head-vm-type=Standard_D2s_v3 \ + --head-vm-count=1 \ + --head-no-auto-scale=true \ + --worker-vm-type=Standard_D8s_v3 \ + --worker-vm-count=16 \ + --worker-no-auto-scale=false \ + --subnet-id="$SUBNET_ID" \ + --delete-tasks-on-completion=false \ + --terminate-jobs-on-completion=false \ + --job-max-wall-clock-time=14d + +cleanup_ce "$CE_FORGE_DUAL_FULL" +echo "" + +# =================================================================== +# 5. Manual CE - Single Pool (backward compat) +# =================================================================== +echo "--- 5. Manual CE - Single Pool ---" + +CE_MANUAL_SINGLE="test-manual-single-$$" + +run_tw "Create Manual CE (single pool)" \ + compute-envs add azure-batch manual \ + -n "$CE_MANUAL_SINGLE" \ + --credentials="$CRED_NAME" \ + -l "$LOCATION" \ + --work-dir="$WORK_DIR" \ + --compute-pool-name=my-pool + +cleanup_ce "$CE_MANUAL_SINGLE" +echo "" + +# =================================================================== +# 6. Manual CE - Dual Pool (head + worker) +# =================================================================== +echo "--- 6. Manual CE - Dual Pool ---" + +CE_MANUAL_DUAL="test-manual-dual-$$" + +run_tw "Create Manual CE (separate head and worker pools)" \ + compute-envs add azure-batch manual \ + -n "$CE_MANUAL_DUAL" \ + --credentials="$CRED_NAME" \ + -l "$LOCATION" \ + --work-dir="$WORK_DIR" \ + --compute-pool-name=my-head-pool \ + --worker-pool=my-worker-pool + +cleanup_ce "$CE_MANUAL_DUAL" +echo "" + +# =================================================================== +# 7. Manual CE - All new options +# =================================================================== +echo "--- 7. Manual CE - All new options ---" + +CE_MANUAL_FULL="test-manual-full-$$" + +run_tw "Create Manual CE (all new options)" \ + compute-envs add azure-batch manual \ + -n "$CE_MANUAL_FULL" \ + --credentials="$CRED_NAME" \ + -l "$LOCATION" \ + --work-dir="$WORK_DIR" \ + --compute-pool-name=my-head-pool \ + --worker-pool=my-worker-pool \ + --fusion-v2 \ + --wave \ + --subnet-id="$SUBNET_ID" \ + --managed-identity-client-id="$MI_HEAD_CLIENT_ID" \ + --managed-identity-pool-client-id="$MI_POOL_CLIENT_ID" \ + --delete-jobs-on-completion=false \ + --delete-tasks-on-completion=true \ + --terminate-jobs-on-completion=true \ + --token-duration=24h \ + --job-max-wall-clock-time=3d + +cleanup_ce "$CE_MANUAL_FULL" +echo "" + +# =================================================================== +# 8. Cleanup toggles combinations +# =================================================================== +echo "--- 8. Cleanup toggle combinations ---" + +CE_CLEANUP="test-cleanup-$$" + +run_tw "Create CE with all cleanup toggles off" \ + compute-envs add azure-batch forge \ + -n "$CE_CLEANUP" \ + --credentials="$CRED_NAME" \ + -l "$LOCATION" \ + --work-dir="$WORK_DIR" \ + --vm-count=1 \ + --delete-jobs-on-completion=false \ + --delete-tasks-on-completion=false \ + --terminate-jobs-on-completion=false + +cleanup_ce "$CE_CLEANUP" +echo "" + +# =================================================================== +# 9. Job max wall clock time edge cases +# =================================================================== +echo "--- 9. Job max wall clock time ---" + +CE_WALLCLOCK="test-wallclock-$$" + +run_tw "Create CE with 1d wall clock time" \ + compute-envs add azure-batch forge \ + -n "$CE_WALLCLOCK" \ + --credentials="$CRED_NAME" \ + -l "$LOCATION" \ + --work-dir="$WORK_DIR" \ + --vm-count=1 \ + --job-max-wall-clock-time=1d + +cleanup_ce "$CE_WALLCLOCK" + +run_tw "Create CE with 180d wall clock time (max)" \ + compute-envs add azure-batch forge \ + -n "$CE_WALLCLOCK" \ + --credentials="$CRED_NAME" \ + -l "$LOCATION" \ + --work-dir="$WORK_DIR" \ + --vm-count=1 \ + --job-max-wall-clock-time=180d + +cleanup_ce "$CE_WALLCLOCK" + +run_tw_expect_fail "Reject wall clock time > 180d" \ + compute-envs add azure-batch forge \ + -n "$CE_WALLCLOCK" \ + --credentials="$CRED_NAME" \ + -l "$LOCATION" \ + --work-dir="$WORK_DIR" \ + --vm-count=1 \ + --job-max-wall-clock-time=181d + +run_tw_expect_fail "Reject invalid wall clock time format" \ + compute-envs add azure-batch forge \ + -n "$CE_WALLCLOCK" \ + --credentials="$CRED_NAME" \ + -l "$LOCATION" \ + --work-dir="$WORK_DIR" \ + --vm-count=1 \ + --job-max-wall-clock-time=abc + +echo "" + +# =================================================================== +# 10. Subnet validation +# =================================================================== +echo "--- 10. Subnet validation ---" + +CE_SUBNET="test-subnet-$$" + +run_tw_expect_fail "Reject invalid subnet ID format" \ + compute-envs add azure-batch forge \ + -n "$CE_SUBNET" \ + --credentials="$CRED_NAME" \ + -l "$LOCATION" \ + --work-dir="$WORK_DIR" \ + --vm-count=1 \ + --subnet-id="invalid-subnet-id" + +echo "" + +# =================================================================== +# Cleanup +# =================================================================== +echo "--- Cleanup ---" +cleanup_credential "$CRED_NAME" +echo " Cleaned up test credential: $CRED_NAME" +echo "" + +# =================================================================== +# Summary +# =================================================================== +echo "============================================================" +echo " Results: $PASS passed, $FAIL failed, $SKIP skipped" +echo "============================================================" + +if [[ $FAIL -gt 0 ]]; then + exit 1 +fi From 8de46f19753ddbac867625f98f716ee4ceccf6d1 Mon Sep 17 00:00:00 2001 From: Cristian Ramon-Cortes Date: Fri, 10 Apr 2026 10:14:25 +0200 Subject: [PATCH 05/14] fix: pass resolveSymlink param to generateDownloadUrlDataLink after SDK 1.133.0 bump Co-Authored-By: Claude Sonnet 4.6 --- .../io/seqera/tower/cli/commands/data/links/DownloadCmd.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/io/seqera/tower/cli/commands/data/links/DownloadCmd.java b/src/main/java/io/seqera/tower/cli/commands/data/links/DownloadCmd.java index c3960aa4..c6943a7b 100644 --- a/src/main/java/io/seqera/tower/cli/commands/data/links/DownloadCmd.java +++ b/src/main/java/io/seqera/tower/cli/commands/data/links/DownloadCmd.java @@ -109,7 +109,7 @@ protected Response exec() throws ApiException, IOException, InterruptedException } private void downloadFile(String path, String id, String credId, Long wspId, Path targetPath) throws ApiException, IOException, InterruptedException { - DataLinkDownloadUrlResponse urlResponse = dataLinksApi().generateDownloadUrlDataLink(id, path, credId, wspId, false); + DataLinkDownloadUrlResponse urlResponse = dataLinksApi().generateDownloadUrlDataLink(id, path, credId, wspId, false, null); boolean showProgress = app().output != OutputType.json; From 76360c96a9b5689337335958d936d5f63b881781 Mon Sep 17 00:00:00 2001 From: Cristian Ramon-Cortes Date: Fri, 10 Apr 2026 10:47:45 +0200 Subject: [PATCH 06/14] fix: update tests for SDK 1.133.0 serialization changes - Fix AzBatchConfig.deleteJobsOnCompletion mock response: changed from string "on_success" to boolean true after field type change in SDK - Switch request body matchers from exact string to json() partial matching for pipeline and label mocks to handle new serialized fields in WorkflowLaunchRequest, AssociatePipelineLabelsRequest, and CreateLabelRequest Co-Authored-By: Claude Sonnet 4.6 --- .../cli/computeenvs/ComputeEnvsCmdTest.java | 2 +- .../tower/cli/pipelines/PipelinesCmdTest.java | 26 +++++++++---------- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/src/test/java/io/seqera/tower/cli/computeenvs/ComputeEnvsCmdTest.java b/src/test/java/io/seqera/tower/cli/computeenvs/ComputeEnvsCmdTest.java index 10f30240..5fa448c5 100644 --- a/src/test/java/io/seqera/tower/cli/computeenvs/ComputeEnvsCmdTest.java +++ b/src/test/java/io/seqera/tower/cli/computeenvs/ComputeEnvsCmdTest.java @@ -566,7 +566,7 @@ void testPrimarySetAzure(OutputType format, MockServerClient mock) throws JsonPr mock.when( request().withMethod("GET").withPath("/compute-envs/lkasjdlkfwerjbEcrycwrSSe").withQueryStringParameter("workspaceId", "75887156211590"), exactly(1) ).respond( - response().withStatusCode(200).withBody("{\"computeEnv\":{\"id\":\"lkasjdlkfwerjbEcrycwrSSe\",\"name\":\"demo\",\"description\":null,\"platform\":\"azure-batch\",\"config\":{\"workDir\":\"az://scratch/work\",\"preRunScript\":null,\"postRunScript\":null,\"region\":\"eastus\",\"headPool\":null,\"autoPoolMode\":null,\"forge\":{\"vmType\":\"Standard_D4_v3\",\"vmCount\":1,\"autoScale\":true,\"disposeOnDeletion\":true},\"tokenDuration\":null,\"deleteJobsOnCompletion\":\"on_success\",\"deletePoolsOnCompletion\":null,\"environment\":null,\"discriminator\":\"azure-batch\"},\"dateCreated\":\"2021-12-03T07:20:26Z\",\"lastUpdated\":\"2021-12-03T07:20:27Z\",\"lastUsed\":null,\"deleted\":null,\"status\":\"AVAILABLE\",\"message\":null,\"primary\":null,\"credentialsId\":\"XXbouwqopeiruiopqDplGsgEJxad\"}}").withContentType(MediaType.APPLICATION_JSON) + response().withStatusCode(200).withBody("{\"computeEnv\":{\"id\":\"lkasjdlkfwerjbEcrycwrSSe\",\"name\":\"demo\",\"description\":null,\"platform\":\"azure-batch\",\"config\":{\"workDir\":\"az://scratch/work\",\"preRunScript\":null,\"postRunScript\":null,\"region\":\"eastus\",\"headPool\":null,\"autoPoolMode\":null,\"forge\":{\"vmType\":\"Standard_D4_v3\",\"vmCount\":1,\"autoScale\":true,\"disposeOnDeletion\":true},\"tokenDuration\":null,\"deleteJobsOnCompletion\":true,\"deletePoolsOnCompletion\":null,\"environment\":null,\"discriminator\":\"azure-batch\"},\"dateCreated\":\"2021-12-03T07:20:26Z\",\"lastUpdated\":\"2021-12-03T07:20:27Z\",\"lastUsed\":null,\"deleted\":null,\"status\":\"AVAILABLE\",\"message\":null,\"primary\":null,\"credentialsId\":\"XXbouwqopeiruiopqDplGsgEJxad\"}}").withContentType(MediaType.APPLICATION_JSON) ); mock.when( diff --git a/src/test/java/io/seqera/tower/cli/pipelines/PipelinesCmdTest.java b/src/test/java/io/seqera/tower/cli/pipelines/PipelinesCmdTest.java index 22713816..b5c08f1b 100644 --- a/src/test/java/io/seqera/tower/cli/pipelines/PipelinesCmdTest.java +++ b/src/test/java/io/seqera/tower/cli/pipelines/PipelinesCmdTest.java @@ -380,7 +380,7 @@ void testUpdateInSharedWorkspaceWithoutCE(MockServerClient mock) throws IOExcept request().withMethod("POST").withPath("/pipelines/68359275903286/versions/default-ver") .withQueryStringParameter("workspaceId","59563405657242") .withContentType(MediaType.APPLICATION_JSON) - .withBody("{\"name\":\"hello-pipeline\",\"launch\":{\"pipeline\":\"https://github.com/nextflow-io/hello\",\"revision\":\"master\",\"preRunScript\":\"yyy\",\"pullLatest\":false,\"stubRun\":false}}"), + .withBody(json("{\"name\":\"hello-pipeline\",\"launch\":{\"pipeline\":\"https://github.com/nextflow-io/hello\",\"revision\":\"master\",\"preRunScript\":\"yyy\",\"pullLatest\":false,\"stubRun\":false}}")), exactly(1) ).respond( response().withStatusCode(200) @@ -413,7 +413,7 @@ void testAdd(MockServerClient mock) throws IOException { mock.when( request().withMethod("POST").withPath("/pipelines") - .withBody("{" + + .withBody(json("{" + "\"name\":\"sleep_one_minute\"," + "\"launch\":{" + "\"computeEnvId\":\"vYOK4vn7spw7bHHWBDXZ2\"," + @@ -422,7 +422,7 @@ void testAdd(MockServerClient mock) throws IOException { "\"paramsText\":\"timeout: 60\\n\"," + "\"pipelineSchemaId\":56789" + "}" + - "}"), exactly(1) + "}")), exactly(1) ).respond( response().withStatusCode(200).withBody("{" + "\"pipeline\":{" + @@ -728,7 +728,7 @@ void testAddWithComputeEnv(MockServerClient mock) { ); mock.when( - request().withMethod("POST").withPath("/pipelines").withBody("{\"name\":\"demo\",\"launch\":{\"computeEnvId\":\"vYOK4vn7spw7bHHWBDXZ2\",\"pipeline\":\"https://github.com/pditommaso/nf-sleep\",\"workDir\":\"s3://nextflow-ci/jordeu\"}}"), exactly(1) + request().withMethod("POST").withPath("/pipelines").withBody(json("{\"name\":\"demo\",\"launch\":{\"computeEnvId\":\"vYOK4vn7spw7bHHWBDXZ2\",\"pipeline\":\"https://github.com/pditommaso/nf-sleep\",\"workDir\":\"s3://nextflow-ci/jordeu\"}}")), exactly(1) ).respond( response().withStatusCode(200).withBody("{\"pipeline\":{\"pipelineId\":18388134856008,\"name\":\"demo\",\"description\":null,\"icon\":null,\"repository\":\"https://github.com/pditommaso/nf-sleep\",\"userId\":4,\"userName\":\"jordi\",\"userFirstName\":null,\"userLastName\":null,\"orgId\":null,\"orgName\":null,\"workspaceId\":null,\"workspaceName\":null,\"visibility\":null}}").withContentType(MediaType.APPLICATION_JSON) ); @@ -759,7 +759,7 @@ void testAddWithStagingScripts(MockServerClient mock) throws IOException { ); mock.when( - request().withMethod("POST").withPath("/pipelines").withBody("{\"name\":\"staging\",\"launch\":{\"computeEnvId\":\"vYOK4vn7spw7bHHWBDXZ2\",\"pipeline\":\"https://github.com/pditommaso/nf-sleep\",\"workDir\":\"s3://nextflow-ci/staging\",\"preRunScript\":\"pre_run_this\",\"postRunScript\":\"post_run_this\"}}"), exactly(1) + request().withMethod("POST").withPath("/pipelines").withBody(json("{\"name\":\"staging\",\"launch\":{\"computeEnvId\":\"vYOK4vn7spw7bHHWBDXZ2\",\"pipeline\":\"https://github.com/pditommaso/nf-sleep\",\"workDir\":\"s3://nextflow-ci/staging\",\"preRunScript\":\"pre_run_this\",\"postRunScript\":\"post_run_this\"}}")), exactly(1) ).respond( response().withStatusCode(200).withBody("{\"pipeline\":{\"pipelineId\":21697594587521,\"name\":\"staging\",\"description\":null,\"icon\":null,\"repository\":\"https://github.com/pditommaso/nf-sleep\",\"userId\":4,\"userName\":\"jordi\",\"userFirstName\":null,\"userLastName\":null,\"orgId\":null,\"orgName\":null,\"workspaceId\":null,\"workspaceName\":null,\"visibility\":null}}").withContentType(MediaType.APPLICATION_JSON) ); @@ -1164,7 +1164,7 @@ void testImport(MockServerClient mock) throws IOException { mock.when( request().withMethod("POST").withPath("/pipelines") - .withBody("{\"name\":\"pipelineNew\",\"launch\":{\"computeEnvId\":\"isnEDBLvHDAIteOEF44ow\",\"pipeline\":\"https://github.com/grananda/nextflow-hello\",\"workDir\":\"s3://nextflow-ci/julio\",\"revision\":\"main\",\"resume\":false,\"pullLatest\":false,\"stubRun\":false}}") + .withBody(json("{\"name\":\"pipelineNew\",\"launch\":{\"computeEnvId\":\"isnEDBLvHDAIteOEF44ow\",\"pipeline\":\"https://github.com/grananda/nextflow-hello\",\"workDir\":\"s3://nextflow-ci/julio\",\"revision\":\"main\",\"resume\":false,\"pullLatest\":false,\"stubRun\":false}}")) .withContentType(MediaType.APPLICATION_JSON), exactly(1) ).respond( response() @@ -1199,7 +1199,7 @@ void testImportWithComputeEnv(MockServerClient mock) throws IOException { mock.when( request().withMethod("POST").withPath("/pipelines") - .withBody("{\"name\":\"pipelineNew\",\"launch\":{\"computeEnvId\":\"isnEDBLvHDAIteOEF44ow\",\"pipeline\":\"https://github.com/grananda/nextflow-hello\",\"workDir\":\"s3://nextflow-ci/julio\",\"revision\":\"main\",\"resume\":false,\"pullLatest\":false,\"stubRun\":false}}") + .withBody(json("{\"name\":\"pipelineNew\",\"launch\":{\"computeEnvId\":\"isnEDBLvHDAIteOEF44ow\",\"pipeline\":\"https://github.com/grananda/nextflow-hello\",\"workDir\":\"s3://nextflow-ci/julio\",\"revision\":\"main\",\"resume\":false,\"pullLatest\":false,\"stubRun\":false}}")) .withContentType(MediaType.APPLICATION_JSON), exactly(1) ).respond( response() @@ -1293,7 +1293,7 @@ void testImportWithoutWorkdir(MockServerClient mock) throws IOException { mock.when( request().withMethod("POST").withPath("/pipelines") - .withBody("{\"name\":\"pipelineNew\",\"launch\":{\"computeEnvId\":\"isnEDBLvHDAIteOEF44ow\",\"pipeline\":\"https://github.com/grananda/nextflow-hello\",\"workDir\":\"s3://nextflow-ci/jordeu\",\"revision\":\"main\",\"resume\":false,\"pullLatest\":false,\"stubRun\":false}}") + .withBody(json("{\"name\":\"pipelineNew\",\"launch\":{\"computeEnvId\":\"isnEDBLvHDAIteOEF44ow\",\"pipeline\":\"https://github.com/grananda/nextflow-hello\",\"workDir\":\"s3://nextflow-ci/jordeu\",\"revision\":\"main\",\"resume\":false,\"pullLatest\":false,\"stubRun\":false}}")) .withContentType(MediaType.APPLICATION_JSON), exactly(1) ).respond( response() @@ -1522,7 +1522,7 @@ void testApplyLabels(OutputType format, MockServerClient mock) { request().withMethod("POST") .withPath("/labels") .withQueryStringParameter("workspaceId","69509535922157") - .withBody("{\"name\":\"test_label2\",\"value\":\"value\",\"resource\":true}") + .withBody(json("{\"name\":\"test_label2\",\"value\":\"value\",\"resource\":true}")) .withContentType(MediaType.APPLICATION_JSON), exactly(1) ).respond( @@ -1535,7 +1535,7 @@ void testApplyLabels(OutputType format, MockServerClient mock) { request().withMethod("POST") .withPath("/pipelines/labels/apply") .withQueryStringParameter("workspaceId","69509535922157") - .withBody("{\"pipelineIds\":[227906339448730],\"labelIds\":[20504124310835,216786345960497,280969213757193]}") + .withBody(json("{\"pipelineIds\":[227906339448730],\"labelIds\":[20504124310835,216786345960497,280969213757193]}")) .withContentType(MediaType.APPLICATION_JSON), exactly(1) ).respond( @@ -1662,7 +1662,7 @@ void testAppendLabels(OutputType format, MockServerClient mock) { request().withMethod("POST") .withPath("/labels") .withQueryStringParameter("workspaceId","69509535922157") - .withBody("{\"name\":\"test_label2\",\"value\":\"value\",\"resource\":true}") + .withBody(json("{\"name\":\"test_label2\",\"value\":\"value\",\"resource\":true}")) .withContentType(MediaType.APPLICATION_JSON), exactly(1) ).respond( @@ -1676,7 +1676,7 @@ void testAppendLabels(OutputType format, MockServerClient mock) { request().withMethod("POST").withPath("/pipelines/labels/add") .withQueryStringParameter("workspaceId","69509535922157") .withContentType(MediaType.APPLICATION_JSON) - .withBody("{\"pipelineIds\":[227906339448730],\"labelIds\":[20504124310835,280969213757193]}") + .withBody(json("{\"pipelineIds\":[227906339448730],\"labelIds\":[20504124310835,280969213757193]}")) ).respond( response().withStatusCode(204) ); @@ -1740,7 +1740,7 @@ void testRemoveLabels(OutputType format, MockServerClient mock) { request().withMethod("POST") .withPath("/pipelines/labels/remove") .withContentType(MediaType.APPLICATION_JSON) - .withBody("{\"pipelineIds\":[8858801873955],\"labelIds\":[144980212454879,35112846698158]}") + .withBody(json("{\"pipelineIds\":[8858801873955],\"labelIds\":[144980212454879,35112846698158]}")) ).respond( response().withStatusCode(204) ); From 07e1f8b7447c25eb8c66801fd97722b4f23d6ec6 Mon Sep 17 00:00:00 2001 From: Cristian Ramon-Cortes Date: Fri, 10 Apr 2026 11:54:19 +0200 Subject: [PATCH 07/14] fix: register new SDK 1.133.0 model methods and classes for GraalVM reflection Co-Authored-By: Claude Sonnet 4.6 --- conf/reflect-config.json | 58 +++++++++++++++++++++++++++++----------- 1 file changed, 43 insertions(+), 15 deletions(-) diff --git a/conf/reflect-config.json b/conf/reflect-config.json index 6b04504b..172c9cd7 100644 --- a/conf/reflect-config.json +++ b/conf/reflect-config.json @@ -2666,7 +2666,7 @@ "allDeclaredFields":true, "queryAllDeclaredMethods":true, "queryAllDeclaredConstructors":true, - "methods":[{"name":"","parameterTypes":[] }, {"name":"addAllowBucketsItem","parameterTypes":["java.lang.String"] }, {"name":"addEnvironmentItem","parameterTypes":["io.seqera.tower.model.ConfigEnvVariable"] }, {"name":"addForgedResourcesItem","parameterTypes":["java.util.Map"] }, {"name":"addSecurityGroupsItem","parameterTypes":["java.lang.String"] }, {"name":"allowBuckets","parameterTypes":["java.util.List"] }, {"name":"arm64Enabled","parameterTypes":["java.lang.Boolean"] }, {"name":"ebsBootSize","parameterTypes":["java.lang.Integer"] }, {"name":"ec2KeyPair","parameterTypes":["java.lang.String"] }, {"name":"environment","parameterTypes":["java.util.List"] }, {"name":"equals","parameterTypes":["java.lang.Object"] }, {"name":"forgedResources","parameterTypes":["java.util.List"] }, {"name":"fusion2Enabled","parameterTypes":["java.lang.Boolean"] }, {"name":"getAllowBuckets","parameterTypes":[] }, {"name":"getArm64Enabled","parameterTypes":[] }, {"name":"getDiscriminator","parameterTypes":[] }, {"name":"getEbsBootSize","parameterTypes":[] }, {"name":"getEc2KeyPair","parameterTypes":[] }, {"name":"getEnvironment","parameterTypes":[] }, {"name":"getForgedResources","parameterTypes":[] }, {"name":"getFusion2Enabled","parameterTypes":[] }, {"name":"getGpuEnabled","parameterTypes":[] }, {"name":"getHeadJobOptions","parameterTypes":[] }, {"name":"getHostName","parameterTypes":[] }, {"name":"getImageId","parameterTypes":[] }, {"name":"getInstanceProfileArn","parameterTypes":[] }, {"name":"getInstanceType","parameterTypes":[] }, {"name":"getLaunchDir","parameterTypes":[] }, {"name":"getLogGroup","parameterTypes":[] }, {"name":"getMaxQueueSize","parameterTypes":[] }, {"name":"getNextflowConfig","parameterTypes":[] }, {"name":"getPort","parameterTypes":[] }, {"name":"getPostRunScript","parameterTypes":[] }, {"name":"getPreRunScript","parameterTypes":[] }, {"name":"getPropagateHeadJobOptions","parameterTypes":[] }, {"name":"getRegion","parameterTypes":[] }, {"name":"getSecurityGroups","parameterTypes":[] }, {"name":"getSubnetId","parameterTypes":[] }, {"name":"getUserName","parameterTypes":[] }, {"name":"getWaveEnabled","parameterTypes":[] }, {"name":"getWorkDir","parameterTypes":[] }, {"name":"gpuEnabled","parameterTypes":["java.lang.Boolean"] }, {"name":"hashCode","parameterTypes":[] }, {"name":"headJobOptions","parameterTypes":["java.lang.String"] }, {"name":"hostName","parameterTypes":["java.lang.String"] }, {"name":"imageId","parameterTypes":["java.lang.String"] }, {"name":"instanceProfileArn","parameterTypes":["java.lang.String"] }, {"name":"instanceType","parameterTypes":["java.lang.String"] }, {"name":"launchDir","parameterTypes":["java.lang.String"] }, {"name":"logGroup","parameterTypes":["java.lang.String"] }, {"name":"maxQueueSize","parameterTypes":["java.lang.Integer"] }, {"name":"nextflowConfig","parameterTypes":["java.lang.String"] }, {"name":"port","parameterTypes":["java.lang.Integer"] }, {"name":"postRunScript","parameterTypes":["java.lang.String"] }, {"name":"preRunScript","parameterTypes":["java.lang.String"] }, {"name":"propagateHeadJobOptions","parameterTypes":["java.lang.Boolean"] }, {"name":"region","parameterTypes":["java.lang.String"] }, {"name":"securityGroups","parameterTypes":["java.util.List"] }, {"name":"setAllowBuckets","parameterTypes":["java.util.List"] }, {"name":"setArm64Enabled","parameterTypes":["java.lang.Boolean"] }, {"name":"setEbsBootSize","parameterTypes":["java.lang.Integer"] }, {"name":"setEc2KeyPair","parameterTypes":["java.lang.String"] }, {"name":"setEnvironment","parameterTypes":["java.util.List"] }, {"name":"setForgedResources","parameterTypes":["java.util.List"] }, {"name":"setFusion2Enabled","parameterTypes":["java.lang.Boolean"] }, {"name":"setGpuEnabled","parameterTypes":["java.lang.Boolean"] }, {"name":"setHeadJobOptions","parameterTypes":["java.lang.String"] }, {"name":"setHostName","parameterTypes":["java.lang.String"] }, {"name":"setImageId","parameterTypes":["java.lang.String"] }, {"name":"setInstanceProfileArn","parameterTypes":["java.lang.String"] }, {"name":"setInstanceType","parameterTypes":["java.lang.String"] }, {"name":"setLaunchDir","parameterTypes":["java.lang.String"] }, {"name":"setLogGroup","parameterTypes":["java.lang.String"] }, {"name":"setMaxQueueSize","parameterTypes":["java.lang.Integer"] }, {"name":"setNextflowConfig","parameterTypes":["java.lang.String"] }, {"name":"setPort","parameterTypes":["java.lang.Integer"] }, {"name":"setPostRunScript","parameterTypes":["java.lang.String"] }, {"name":"setPreRunScript","parameterTypes":["java.lang.String"] }, {"name":"setPropagateHeadJobOptions","parameterTypes":["java.lang.Boolean"] }, {"name":"setRegion","parameterTypes":["java.lang.String"] }, {"name":"setSecurityGroups","parameterTypes":["java.util.List"] }, {"name":"setSubnetId","parameterTypes":["java.lang.String"] }, {"name":"setUserName","parameterTypes":["java.lang.String"] }, {"name":"setWaveEnabled","parameterTypes":["java.lang.Boolean"] }, {"name":"setWorkDir","parameterTypes":["java.lang.String"] }, {"name":"subnetId","parameterTypes":["java.lang.String"] }, {"name":"toIndentedString","parameterTypes":["java.lang.Object"] }, {"name":"toString","parameterTypes":[] }, {"name":"userName","parameterTypes":["java.lang.String"] }, {"name":"waveEnabled","parameterTypes":["java.lang.Boolean"] }, {"name":"workDir","parameterTypes":["java.lang.String"] }] + "methods":[{"name":"","parameterTypes":[] }, {"name":"addAllowBucketsItem","parameterTypes":["java.lang.String"] }, {"name":"addEnvironmentItem","parameterTypes":["io.seqera.tower.model.ConfigEnvVariable"] }, {"name":"addForgedResourcesItem","parameterTypes":["java.util.Map"] }, {"name":"addSecurityGroupsItem","parameterTypes":["java.lang.String"] }, {"name":"allowBuckets","parameterTypes":["java.util.List"] }, {"name":"arm64Enabled","parameterTypes":["java.lang.Boolean"] }, {"name":"ebsBootSize","parameterTypes":["java.lang.Integer"] }, {"name":"ec2KeyPair","parameterTypes":["java.lang.String"] }, {"name":"environment","parameterTypes":["java.util.List"] }, {"name":"equals","parameterTypes":["java.lang.Object"] }, {"name":"forgedResources","parameterTypes":["java.util.List"] }, {"name":"fusion2Enabled","parameterTypes":["java.lang.Boolean"] }, {"name":"getAllowBuckets","parameterTypes":[] }, {"name":"getArm64Enabled","parameterTypes":[] }, {"name":"getDiscriminator","parameterTypes":[] }, {"name":"getEbsBootSize","parameterTypes":[] }, {"name":"getEc2KeyPair","parameterTypes":[] }, {"name":"getEnvironment","parameterTypes":[] }, {"name":"getForgedResources","parameterTypes":[] }, {"name":"getFusion2Enabled","parameterTypes":[] }, {"name":"getGpuEnabled","parameterTypes":[] }, {"name":"getHeadJobOptions","parameterTypes":[] }, {"name":"getHostName","parameterTypes":[] }, {"name":"getImageId","parameterTypes":[] }, {"name":"getInstanceProfileArn","parameterTypes":[] }, {"name":"getInstanceType","parameterTypes":[] }, {"name":"getLaunchDir","parameterTypes":[] }, {"name":"getLogGroup","parameterTypes":[] }, {"name":"getMaxQueueSize","parameterTypes":[] }, {"name":"getNextflowConfig","parameterTypes":[] }, {"name":"getPort","parameterTypes":[] }, {"name":"getPostRunScript","parameterTypes":[] }, {"name":"getPreRunScript","parameterTypes":[] }, {"name":"getPropagateHeadJobOptions","parameterTypes":[] }, {"name":"getRegion","parameterTypes":[] }, {"name":"getSecurityGroups","parameterTypes":[] }, {"name":"getSubnetId","parameterTypes":[] }, {"name":"getUserName","parameterTypes":[] }, {"name":"getWaveEnabled","parameterTypes":[] }, {"name":"getWorkDir","parameterTypes":[] }, {"name":"gpuEnabled","parameterTypes":["java.lang.Boolean"] }, {"name":"hashCode","parameterTypes":[] }, {"name":"headJobOptions","parameterTypes":["java.lang.String"] }, {"name":"hostName","parameterTypes":["java.lang.String"] }, {"name":"imageId","parameterTypes":["java.lang.String"] }, {"name":"instanceProfileArn","parameterTypes":["java.lang.String"] }, {"name":"instanceType","parameterTypes":["java.lang.String"] }, {"name":"launchDir","parameterTypes":["java.lang.String"] }, {"name":"logGroup","parameterTypes":["java.lang.String"] }, {"name":"maxQueueSize","parameterTypes":["java.lang.Integer"] }, {"name":"nextflowConfig","parameterTypes":["java.lang.String"] }, {"name":"port","parameterTypes":["java.lang.Integer"] }, {"name":"postRunScript","parameterTypes":["java.lang.String"] }, {"name":"preRunScript","parameterTypes":["java.lang.String"] }, {"name":"propagateHeadJobOptions","parameterTypes":["java.lang.Boolean"] }, {"name":"region","parameterTypes":["java.lang.String"] }, {"name":"securityGroups","parameterTypes":["java.util.List"] }, {"name":"setAllowBuckets","parameterTypes":["java.util.List"] }, {"name":"setArm64Enabled","parameterTypes":["java.lang.Boolean"] }, {"name":"setEbsBootSize","parameterTypes":["java.lang.Integer"] }, {"name":"setEc2KeyPair","parameterTypes":["java.lang.String"] }, {"name":"setEnvironment","parameterTypes":["java.util.List"] }, {"name":"setForgedResources","parameterTypes":["java.util.List"] }, {"name":"setFusion2Enabled","parameterTypes":["java.lang.Boolean"] }, {"name":"setGpuEnabled","parameterTypes":["java.lang.Boolean"] }, {"name":"setHeadJobOptions","parameterTypes":["java.lang.String"] }, {"name":"setHostName","parameterTypes":["java.lang.String"] }, {"name":"setImageId","parameterTypes":["java.lang.String"] }, {"name":"setInstanceProfileArn","parameterTypes":["java.lang.String"] }, {"name":"setInstanceType","parameterTypes":["java.lang.String"] }, {"name":"setLaunchDir","parameterTypes":["java.lang.String"] }, {"name":"setLogGroup","parameterTypes":["java.lang.String"] }, {"name":"setMaxQueueSize","parameterTypes":["java.lang.Integer"] }, {"name":"setNextflowConfig","parameterTypes":["java.lang.String"] }, {"name":"setPort","parameterTypes":["java.lang.Integer"] }, {"name":"setPostRunScript","parameterTypes":["java.lang.String"] }, {"name":"setPreRunScript","parameterTypes":["java.lang.String"] }, {"name":"setPropagateHeadJobOptions","parameterTypes":["java.lang.Boolean"] }, {"name":"setRegion","parameterTypes":["java.lang.String"] }, {"name":"setSecurityGroups","parameterTypes":["java.util.List"] }, {"name":"setSubnetId","parameterTypes":["java.lang.String"] }, {"name":"setUserName","parameterTypes":["java.lang.String"] }, {"name":"setWaveEnabled","parameterTypes":["java.lang.Boolean"] }, {"name":"setWorkDir","parameterTypes":["java.lang.String"] }, {"name":"subnetId","parameterTypes":["java.lang.String"] }, {"name":"toIndentedString","parameterTypes":["java.lang.Object"] }, {"name":"toString","parameterTypes":[] }, {"name":"userName","parameterTypes":["java.lang.String"] }, {"name":"waveEnabled","parameterTypes":["java.lang.Boolean"] }, {"name":"workDir","parameterTypes":["java.lang.String"] }, {"name":"getSchedEnabled","parameterTypes":[] }, {"name":"schedEnabled","parameterTypes":["java.lang.Boolean"] }, {"name":"setSchedEnabled","parameterTypes":["java.lang.Boolean"] }] }, { "name":"io.seqera.tower.model.AwsCloudPlatformMetainfo", @@ -2764,6 +2764,13 @@ "queryAllDeclaredConstructors":true, "methods":[{"name":"","parameterTypes":[] }, {"name":"addDatasetIdsItem","parameterTypes":["java.lang.String"] }, {"name":"datasetIds","parameterTypes":["java.util.List"] }, {"name":"equals","parameterTypes":["java.lang.Object"] }, {"name":"getDatasetIds","parameterTypes":[] }, {"name":"hashCode","parameterTypes":[] }, {"name":"setDatasetIds","parameterTypes":["java.util.List"] }, {"name":"toIndentedString","parameterTypes":["java.lang.Object"] }, {"name":"toString","parameterTypes":[] }] }, +{ + "name":"io.seqera.tower.model.ChangeStatus", + "allDeclaredFields":true, + "queryAllDeclaredMethods":true, + "queryAllDeclaredConstructors":true, + "methods":[{"name":"fromValue","parameterTypes":["java.lang.String"] }, {"name":"getValue","parameterTypes":[] }, {"name":"toString","parameterTypes":[] }, {"name":"valueOf","parameterTypes":["java.lang.String"] }, {"name":"values","parameterTypes":[] }] +}, { "name":"io.seqera.tower.model.CloudPriceModel", "allDeclaredFields":true, @@ -2944,7 +2951,7 @@ "allDeclaredFields":true, "queryAllDeclaredMethods":true, "queryAllDeclaredConstructors":true, - "methods":[{"name":"","parameterTypes":[] }, {"name":"description","parameterTypes":["java.lang.String"] }, {"name":"equals","parameterTypes":["java.lang.Object"] }, {"name":"getDescription","parameterTypes":[] }, {"name":"getName","parameterTypes":[] }, {"name":"hashCode","parameterTypes":[] }, {"name":"name","parameterTypes":["java.lang.String"] }, {"name":"setDescription","parameterTypes":["java.lang.String"] }, {"name":"setName","parameterTypes":["java.lang.String"] }, {"name":"toIndentedString","parameterTypes":["java.lang.Object"] }, {"name":"toString","parameterTypes":[] }] + "methods":[{"name":"","parameterTypes":[] }, {"name":"description","parameterTypes":["java.lang.String"] }, {"name":"equals","parameterTypes":["java.lang.Object"] }, {"name":"getDescription","parameterTypes":[] }, {"name":"getName","parameterTypes":[] }, {"name":"hashCode","parameterTypes":[] }, {"name":"name","parameterTypes":["java.lang.String"] }, {"name":"setDescription","parameterTypes":["java.lang.String"] }, {"name":"setName","parameterTypes":["java.lang.String"] }, {"name":"toIndentedString","parameterTypes":["java.lang.Object"] }, {"name":"toString","parameterTypes":[] }, {"name":"getSourceType","parameterTypes":[] }, {"name":"setSourceType","parameterTypes":["io.seqera.tower.model.SourceType"] }, {"name":"sourceType","parameterTypes":["io.seqera.tower.model.SourceType"] }] }, { "name":"io.seqera.tower.model.CreateDatasetResponse", @@ -3308,7 +3315,7 @@ "allDeclaredFields":true, "queryAllDeclaredMethods":true, "queryAllDeclaredConstructors":true, - "methods":[{"name":"","parameterTypes":[] }, {"name":"addMountDataItem","parameterTypes":["java.lang.String"] }, {"name":"condaEnvironment","parameterTypes":["java.lang.String"] }, {"name":"cpu","parameterTypes":["java.lang.Integer"] }, {"name":"environment","parameterTypes":["java.util.Map"] }, {"name":"equals","parameterTypes":["java.lang.Object"] }, {"name":"equalsNullable","parameterTypes":["org.openapitools.jackson.nullable.JsonNullable","org.openapitools.jackson.nullable.JsonNullable"] }, {"name":"getCondaEnvironment","parameterTypes":[] }, {"name":"getCpu","parameterTypes":[] }, {"name":"getEnvironment","parameterTypes":[] }, {"name":"getEnvironment_JsonNullable","parameterTypes":[] }, {"name":"getGpu","parameterTypes":[] }, {"name":"getLifespan","parameterTypes":[] }, {"name":"getLifespanHours","parameterTypes":[] }, {"name":"getMemory","parameterTypes":[] }, {"name":"getMountData","parameterTypes":[] }, {"name":"getSshEnabled","parameterTypes":[] }, {"name":"getSshEnabled_JsonNullable","parameterTypes":[] }, {"name":"gpu","parameterTypes":["java.lang.Integer"] }, {"name":"hashCode","parameterTypes":[] }, {"name":"hashCodeNullable","parameterTypes":["org.openapitools.jackson.nullable.JsonNullable"] }, {"name":"lifespanHours","parameterTypes":["java.lang.Integer"] }, {"name":"memory","parameterTypes":["java.lang.Integer"] }, {"name":"mountData","parameterTypes":["java.util.List"] }, {"name":"putEnvironmentItem","parameterTypes":["java.lang.String","java.lang.String"] }, {"name":"setCondaEnvironment","parameterTypes":["java.lang.String"] }, {"name":"setCpu","parameterTypes":["java.lang.Integer"] }, {"name":"setEnvironment","parameterTypes":["java.util.Map"] }, {"name":"setEnvironment_JsonNullable","parameterTypes":["org.openapitools.jackson.nullable.JsonNullable"] }, {"name":"setGpu","parameterTypes":["java.lang.Integer"] }, {"name":"setLifespan","parameterTypes":["java.lang.Integer"] }, {"name":"setLifespanHours","parameterTypes":["java.lang.Integer"] }, {"name":"setMemory","parameterTypes":["java.lang.Integer"] }, {"name":"setMountData","parameterTypes":["java.util.List"] }, {"name":"setSshEnabled","parameterTypes":["java.lang.Boolean"] }, {"name":"setSshEnabled_JsonNullable","parameterTypes":["org.openapitools.jackson.nullable.JsonNullable"] }, {"name":"sshEnabled","parameterTypes":["java.lang.Boolean"] }, {"name":"toIndentedString","parameterTypes":["java.lang.Object"] }, {"name":"toString","parameterTypes":[] }] + "methods":[{"name":"","parameterTypes":[] }, {"name":"addMountDataItem","parameterTypes":["java.lang.String"] }, {"name":"condaEnvironment","parameterTypes":["java.lang.String"] }, {"name":"cpu","parameterTypes":["java.lang.Integer"] }, {"name":"environment","parameterTypes":["java.util.Map"] }, {"name":"equals","parameterTypes":["java.lang.Object"] }, {"name":"equalsNullable","parameterTypes":["org.openapitools.jackson.nullable.JsonNullable","org.openapitools.jackson.nullable.JsonNullable"] }, {"name":"getCondaEnvironment","parameterTypes":[] }, {"name":"getCpu","parameterTypes":[] }, {"name":"getEnvironment","parameterTypes":[] }, {"name":"getEnvironment_JsonNullable","parameterTypes":[] }, {"name":"getGpu","parameterTypes":[] }, {"name":"getLifespan","parameterTypes":[] }, {"name":"getLifespanHours","parameterTypes":[] }, {"name":"getMemory","parameterTypes":[] }, {"name":"getMountData","parameterTypes":[] }, {"name":"getSshEnabled","parameterTypes":[] }, {"name":"getSshEnabled_JsonNullable","parameterTypes":[] }, {"name":"gpu","parameterTypes":["java.lang.Integer"] }, {"name":"hashCode","parameterTypes":[] }, {"name":"hashCodeNullable","parameterTypes":["org.openapitools.jackson.nullable.JsonNullable"] }, {"name":"lifespanHours","parameterTypes":["java.lang.Integer"] }, {"name":"memory","parameterTypes":["java.lang.Integer"] }, {"name":"mountData","parameterTypes":["java.util.List"] }, {"name":"putEnvironmentItem","parameterTypes":["java.lang.String","java.lang.String"] }, {"name":"setCondaEnvironment","parameterTypes":["java.lang.String"] }, {"name":"setCpu","parameterTypes":["java.lang.Integer"] }, {"name":"setEnvironment","parameterTypes":["java.util.Map"] }, {"name":"setEnvironment_JsonNullable","parameterTypes":["org.openapitools.jackson.nullable.JsonNullable"] }, {"name":"setGpu","parameterTypes":["java.lang.Integer"] }, {"name":"setLifespan","parameterTypes":["java.lang.Integer"] }, {"name":"setLifespanHours","parameterTypes":["java.lang.Integer"] }, {"name":"setMemory","parameterTypes":["java.lang.Integer"] }, {"name":"setMountData","parameterTypes":["java.util.List"] }, {"name":"setSshEnabled","parameterTypes":["java.lang.Boolean"] }, {"name":"setSshEnabled_JsonNullable","parameterTypes":["org.openapitools.jackson.nullable.JsonNullable"] }, {"name":"sshEnabled","parameterTypes":["java.lang.Boolean"] }, {"name":"toIndentedString","parameterTypes":["java.lang.Object"] }, {"name":"toString","parameterTypes":[] }, {"name":"addMountDataV2Item","parameterTypes":["io.seqera.tower.model.MountData"] }, {"name":"getMountData_JsonNullable","parameterTypes":[] }, {"name":"getMountDataV2","parameterTypes":[] }, {"name":"getMountDataV2_JsonNullable","parameterTypes":[] }, {"name":"mountDataV2","parameterTypes":["java.util.List"] }, {"name":"setMountData_JsonNullable","parameterTypes":["org.openapitools.jackson.nullable.JsonNullable"] }, {"name":"setMountDataV2","parameterTypes":["java.util.List"] }, {"name":"setMountDataV2_JsonNullable","parameterTypes":["org.openapitools.jackson.nullable.JsonNullable"] }] }, { "name":"io.seqera.tower.model.DataStudioCreateRequest", @@ -3465,7 +3472,7 @@ "allDeclaredFields":true, "queryAllDeclaredMethods":true, "queryAllDeclaredConstructors":true, - "methods":[{"name":"","parameterTypes":[] }, {"name":"addLabelsItem","parameterTypes":["io.seqera.tower.model.LabelDbDto"] }, {"name":"dateCreated","parameterTypes":["java.time.OffsetDateTime"] }, {"name":"deleted","parameterTypes":["java.lang.Boolean"] }, {"name":"description","parameterTypes":["java.lang.String"] }, {"name":"equals","parameterTypes":["java.lang.Object"] }, {"name":"getDateCreated","parameterTypes":[] }, {"name":"getDeleted","parameterTypes":[] }, {"name":"getDescription","parameterTypes":[] }, {"name":"getHidden","parameterTypes":[] }, {"name":"getId","parameterTypes":[] }, {"name":"getLabels","parameterTypes":[] }, {"name":"getLastUpdated","parameterTypes":[] }, {"name":"getLastUpdatedBy","parameterTypes":[] }, {"name":"getMediaType","parameterTypes":[] }, {"name":"getName","parameterTypes":[] }, {"name":"getOrganizationId","parameterTypes":[] }, {"name":"getRunsInfo","parameterTypes":[] }, {"name":"getUser","parameterTypes":[] }, {"name":"getVersion","parameterTypes":[] }, {"name":"getWorkspaceId","parameterTypes":[] }, {"name":"hashCode","parameterTypes":[] }, {"name":"hidden","parameterTypes":["java.lang.Boolean"] }, {"name":"id","parameterTypes":["java.lang.String"] }, {"name":"labels","parameterTypes":["java.util.List"] }, {"name":"lastUpdated","parameterTypes":["java.time.OffsetDateTime"] }, {"name":"lastUpdatedBy","parameterTypes":["io.seqera.tower.model.UserInfo"] }, {"name":"mediaType","parameterTypes":["java.lang.String"] }, {"name":"name","parameterTypes":["java.lang.String"] }, {"name":"organizationId","parameterTypes":["java.lang.Long"] }, {"name":"runsInfo","parameterTypes":["io.seqera.tower.model.DatasetRunsInfo"] }, {"name":"setDateCreated","parameterTypes":["java.time.OffsetDateTime"] }, {"name":"setDeleted","parameterTypes":["java.lang.Boolean"] }, {"name":"setDescription","parameterTypes":["java.lang.String"] }, {"name":"setHidden","parameterTypes":["java.lang.Boolean"] }, {"name":"setId","parameterTypes":["java.lang.String"] }, {"name":"setLabels","parameterTypes":["java.util.List"] }, {"name":"setLastUpdated","parameterTypes":["java.time.OffsetDateTime"] }, {"name":"setLastUpdatedBy","parameterTypes":["io.seqera.tower.model.UserInfo"] }, {"name":"setMediaType","parameterTypes":["java.lang.String"] }, {"name":"setName","parameterTypes":["java.lang.String"] }, {"name":"setOrganizationId","parameterTypes":["java.lang.Long"] }, {"name":"setRunsInfo","parameterTypes":["io.seqera.tower.model.DatasetRunsInfo"] }, {"name":"setUser","parameterTypes":["io.seqera.tower.model.UserInfo"] }, {"name":"setVersion","parameterTypes":["java.lang.Long"] }, {"name":"setWorkspaceId","parameterTypes":["java.lang.Long"] }, {"name":"toIndentedString","parameterTypes":["java.lang.Object"] }, {"name":"toString","parameterTypes":[] }, {"name":"user","parameterTypes":["io.seqera.tower.model.UserInfo"] }, {"name":"version","parameterTypes":["java.lang.Long"] }, {"name":"workspaceId","parameterTypes":["java.lang.Long"] }] + "methods":[{"name":"","parameterTypes":[] }, {"name":"addLabelsItem","parameterTypes":["io.seqera.tower.model.LabelDbDto"] }, {"name":"dateCreated","parameterTypes":["java.time.OffsetDateTime"] }, {"name":"deleted","parameterTypes":["java.lang.Boolean"] }, {"name":"description","parameterTypes":["java.lang.String"] }, {"name":"equals","parameterTypes":["java.lang.Object"] }, {"name":"getDateCreated","parameterTypes":[] }, {"name":"getDeleted","parameterTypes":[] }, {"name":"getDescription","parameterTypes":[] }, {"name":"getHidden","parameterTypes":[] }, {"name":"getId","parameterTypes":[] }, {"name":"getLabels","parameterTypes":[] }, {"name":"getLastUpdated","parameterTypes":[] }, {"name":"getLastUpdatedBy","parameterTypes":[] }, {"name":"getMediaType","parameterTypes":[] }, {"name":"getName","parameterTypes":[] }, {"name":"getOrganizationId","parameterTypes":[] }, {"name":"getRunsInfo","parameterTypes":[] }, {"name":"getUser","parameterTypes":[] }, {"name":"getVersion","parameterTypes":[] }, {"name":"getWorkspaceId","parameterTypes":[] }, {"name":"hashCode","parameterTypes":[] }, {"name":"hidden","parameterTypes":["java.lang.Boolean"] }, {"name":"id","parameterTypes":["java.lang.String"] }, {"name":"labels","parameterTypes":["java.util.List"] }, {"name":"lastUpdated","parameterTypes":["java.time.OffsetDateTime"] }, {"name":"lastUpdatedBy","parameterTypes":["io.seqera.tower.model.UserInfo"] }, {"name":"mediaType","parameterTypes":["java.lang.String"] }, {"name":"name","parameterTypes":["java.lang.String"] }, {"name":"organizationId","parameterTypes":["java.lang.Long"] }, {"name":"runsInfo","parameterTypes":["io.seqera.tower.model.DatasetRunsInfo"] }, {"name":"setDateCreated","parameterTypes":["java.time.OffsetDateTime"] }, {"name":"setDeleted","parameterTypes":["java.lang.Boolean"] }, {"name":"setDescription","parameterTypes":["java.lang.String"] }, {"name":"setHidden","parameterTypes":["java.lang.Boolean"] }, {"name":"setId","parameterTypes":["java.lang.String"] }, {"name":"setLabels","parameterTypes":["java.util.List"] }, {"name":"setLastUpdated","parameterTypes":["java.time.OffsetDateTime"] }, {"name":"setLastUpdatedBy","parameterTypes":["io.seqera.tower.model.UserInfo"] }, {"name":"setMediaType","parameterTypes":["java.lang.String"] }, {"name":"setName","parameterTypes":["java.lang.String"] }, {"name":"setOrganizationId","parameterTypes":["java.lang.Long"] }, {"name":"setRunsInfo","parameterTypes":["io.seqera.tower.model.DatasetRunsInfo"] }, {"name":"setUser","parameterTypes":["io.seqera.tower.model.UserInfo"] }, {"name":"setVersion","parameterTypes":["java.lang.Long"] }, {"name":"setWorkspaceId","parameterTypes":["java.lang.Long"] }, {"name":"toIndentedString","parameterTypes":["java.lang.Object"] }, {"name":"toString","parameterTypes":[] }, {"name":"user","parameterTypes":["io.seqera.tower.model.UserInfo"] }, {"name":"version","parameterTypes":["java.lang.Long"] }, {"name":"workspaceId","parameterTypes":["java.lang.Long"] }, {"name":"getSourceType","parameterTypes":[] }, {"name":"setSourceType","parameterTypes":["io.seqera.tower.model.SourceType"] }, {"name":"sourceType","parameterTypes":["io.seqera.tower.model.SourceType"] }] }, { "name":"io.seqera.tower.model.DatasetQueryAttribute", @@ -3492,7 +3499,7 @@ "allDeclaredFields":true, "queryAllDeclaredMethods":true, "queryAllDeclaredConstructors":true, - "methods":[{"name":"","parameterTypes":[] }, {"name":"createdBy","parameterTypes":["io.seqera.tower.model.UserInfo"] }, {"name":"datasetDescription","parameterTypes":["java.lang.String"] }, {"name":"datasetId","parameterTypes":["java.lang.String"] }, {"name":"datasetName","parameterTypes":["java.lang.String"] }, {"name":"dateCreated","parameterTypes":["java.time.OffsetDateTime"] }, {"name":"disabled","parameterTypes":["java.lang.Boolean"] }, {"name":"equals","parameterTypes":["java.lang.Object"] }, {"name":"fileName","parameterTypes":["java.lang.String"] }, {"name":"getCreatedBy","parameterTypes":[] }, {"name":"getDatasetDescription","parameterTypes":[] }, {"name":"getDatasetId","parameterTypes":[] }, {"name":"getDatasetName","parameterTypes":[] }, {"name":"getDateCreated","parameterTypes":[] }, {"name":"getDisabled","parameterTypes":[] }, {"name":"getFileName","parameterTypes":[] }, {"name":"getHasHeader","parameterTypes":[] }, {"name":"getLastUpdated","parameterTypes":[] }, {"name":"getMediaType","parameterTypes":[] }, {"name":"getUrl","parameterTypes":[] }, {"name":"getVersion","parameterTypes":[] }, {"name":"getWorkspaceId","parameterTypes":[] }, {"name":"hasHeader","parameterTypes":["java.lang.Boolean"] }, {"name":"hashCode","parameterTypes":[] }, {"name":"lastUpdated","parameterTypes":["java.time.OffsetDateTime"] }, {"name":"mediaType","parameterTypes":["java.lang.String"] }, {"name":"setCreatedBy","parameterTypes":["io.seqera.tower.model.UserInfo"] }, {"name":"setDatasetDescription","parameterTypes":["java.lang.String"] }, {"name":"setDatasetId","parameterTypes":["java.lang.String"] }, {"name":"setDatasetName","parameterTypes":["java.lang.String"] }, {"name":"setDateCreated","parameterTypes":["java.time.OffsetDateTime"] }, {"name":"setDisabled","parameterTypes":["java.lang.Boolean"] }, {"name":"setFileName","parameterTypes":["java.lang.String"] }, {"name":"setHasHeader","parameterTypes":["java.lang.Boolean"] }, {"name":"setLastUpdated","parameterTypes":["java.time.OffsetDateTime"] }, {"name":"setMediaType","parameterTypes":["java.lang.String"] }, {"name":"setUrl","parameterTypes":["java.lang.String"] }, {"name":"setVersion","parameterTypes":["java.lang.Long"] }, {"name":"setWorkspaceId","parameterTypes":["java.lang.Long"] }, {"name":"toIndentedString","parameterTypes":["java.lang.Object"] }, {"name":"toString","parameterTypes":[] }, {"name":"url","parameterTypes":["java.lang.String"] }, {"name":"version","parameterTypes":["java.lang.Long"] }, {"name":"workspaceId","parameterTypes":["java.lang.Long"] }] + "methods":[{"name":"","parameterTypes":[] }, {"name":"createdBy","parameterTypes":["io.seqera.tower.model.UserInfo"] }, {"name":"datasetDescription","parameterTypes":["java.lang.String"] }, {"name":"datasetId","parameterTypes":["java.lang.String"] }, {"name":"datasetName","parameterTypes":["java.lang.String"] }, {"name":"dateCreated","parameterTypes":["java.time.OffsetDateTime"] }, {"name":"disabled","parameterTypes":["java.lang.Boolean"] }, {"name":"equals","parameterTypes":["java.lang.Object"] }, {"name":"fileName","parameterTypes":["java.lang.String"] }, {"name":"getCreatedBy","parameterTypes":[] }, {"name":"getDatasetDescription","parameterTypes":[] }, {"name":"getDatasetId","parameterTypes":[] }, {"name":"getDatasetName","parameterTypes":[] }, {"name":"getDateCreated","parameterTypes":[] }, {"name":"getDisabled","parameterTypes":[] }, {"name":"getFileName","parameterTypes":[] }, {"name":"getHasHeader","parameterTypes":[] }, {"name":"getLastUpdated","parameterTypes":[] }, {"name":"getMediaType","parameterTypes":[] }, {"name":"getUrl","parameterTypes":[] }, {"name":"getVersion","parameterTypes":[] }, {"name":"getWorkspaceId","parameterTypes":[] }, {"name":"hasHeader","parameterTypes":["java.lang.Boolean"] }, {"name":"hashCode","parameterTypes":[] }, {"name":"lastUpdated","parameterTypes":["java.time.OffsetDateTime"] }, {"name":"mediaType","parameterTypes":["java.lang.String"] }, {"name":"setCreatedBy","parameterTypes":["io.seqera.tower.model.UserInfo"] }, {"name":"setDatasetDescription","parameterTypes":["java.lang.String"] }, {"name":"setDatasetId","parameterTypes":["java.lang.String"] }, {"name":"setDatasetName","parameterTypes":["java.lang.String"] }, {"name":"setDateCreated","parameterTypes":["java.time.OffsetDateTime"] }, {"name":"setDisabled","parameterTypes":["java.lang.Boolean"] }, {"name":"setFileName","parameterTypes":["java.lang.String"] }, {"name":"setHasHeader","parameterTypes":["java.lang.Boolean"] }, {"name":"setLastUpdated","parameterTypes":["java.time.OffsetDateTime"] }, {"name":"setMediaType","parameterTypes":["java.lang.String"] }, {"name":"setUrl","parameterTypes":["java.lang.String"] }, {"name":"setVersion","parameterTypes":["java.lang.Long"] }, {"name":"setWorkspaceId","parameterTypes":["java.lang.Long"] }, {"name":"toIndentedString","parameterTypes":["java.lang.Object"] }, {"name":"toString","parameterTypes":[] }, {"name":"url","parameterTypes":["java.lang.String"] }, {"name":"version","parameterTypes":["java.lang.Long"] }, {"name":"workspaceId","parameterTypes":["java.lang.Long"] }, {"name":"getLinkedSource","parameterTypes":[] }, {"name":"linkedSource","parameterTypes":["io.seqera.tower.model.LinkedSourceDto"] }, {"name":"setLinkedSource","parameterTypes":["io.seqera.tower.model.LinkedSourceDto"] }] }, { "name":"io.seqera.tower.model.DefaultWorkflowEngineParameter", @@ -3806,7 +3813,7 @@ "allDeclaredFields":true, "queryAllDeclaredMethods":true, "queryAllDeclaredConstructors":true, - "methods":[{"name":"","parameterTypes":[] }, {"name":"addEnvironmentItem","parameterTypes":["io.seqera.tower.model.ConfigEnvVariable"] }, {"name":"bootDiskSizeGb","parameterTypes":["java.lang.Integer"] }, {"name":"computeJobsInstanceTemplate","parameterTypes":["java.lang.String"] }, {"name":"copyImage","parameterTypes":["java.lang.String"] }, {"name":"cpuPlatform","parameterTypes":["java.lang.String"] }, {"name":"debugMode","parameterTypes":["java.lang.Integer"] }, {"name":"environment","parameterTypes":["java.util.List"] }, {"name":"equals","parameterTypes":["java.lang.Object"] }, {"name":"fusion2Enabled","parameterTypes":["java.lang.Boolean"] }, {"name":"getBootDiskSizeGb","parameterTypes":[] }, {"name":"getComputeJobsInstanceTemplate","parameterTypes":[] }, {"name":"getCopyImage","parameterTypes":[] }, {"name":"getCpuPlatform","parameterTypes":[] }, {"name":"getDebugMode","parameterTypes":[] }, {"name":"getDiscriminator","parameterTypes":[] }, {"name":"getEnvironment","parameterTypes":[] }, {"name":"getFusion2Enabled","parameterTypes":[] }, {"name":"getHeadJobCpus","parameterTypes":[] }, {"name":"getHeadJobInstanceTemplate","parameterTypes":[] }, {"name":"getHeadJobMemoryMb","parameterTypes":[] }, {"name":"getHeadJobOptions","parameterTypes":[] }, {"name":"getHostName","parameterTypes":[] }, {"name":"getLabels","parameterTypes":[] }, {"name":"getLaunchDir","parameterTypes":[] }, {"name":"getLocation","parameterTypes":[] }, {"name":"getMachineType","parameterTypes":[] }, {"name":"getMaxQueueSize","parameterTypes":[] }, {"name":"getNetwork","parameterTypes":[] }, {"name":"getNextflowConfig","parameterTypes":[] }, {"name":"getNfsMount","parameterTypes":[] }, {"name":"getNfsTarget","parameterTypes":[] }, {"name":"getPort","parameterTypes":[] }, {"name":"getPostRunScript","parameterTypes":[] }, {"name":"getPreRunScript","parameterTypes":[] }, {"name":"getProjectId","parameterTypes":[] }, {"name":"getPropagateHeadJobOptions","parameterTypes":[] }, {"name":"getServiceAccount","parameterTypes":[] }, {"name":"getSpot","parameterTypes":[] }, {"name":"getSshDaemon","parameterTypes":[] }, {"name":"getSshImage","parameterTypes":[] }, {"name":"getSubnetwork","parameterTypes":[] }, {"name":"getUsePrivateAddress","parameterTypes":[] }, {"name":"getUserName","parameterTypes":[] }, {"name":"getWaveEnabled","parameterTypes":[] }, {"name":"getWorkDir","parameterTypes":[] }, {"name":"hashCode","parameterTypes":[] }, {"name":"headJobCpus","parameterTypes":["java.lang.Integer"] }, {"name":"headJobInstanceTemplate","parameterTypes":["java.lang.String"] }, {"name":"headJobMemoryMb","parameterTypes":["java.lang.Integer"] }, {"name":"headJobOptions","parameterTypes":["java.lang.String"] }, {"name":"hostName","parameterTypes":["java.lang.String"] }, {"name":"labels","parameterTypes":["java.util.Map"] }, {"name":"launchDir","parameterTypes":["java.lang.String"] }, {"name":"location","parameterTypes":["java.lang.String"] }, {"name":"machineType","parameterTypes":["java.lang.String"] }, {"name":"maxQueueSize","parameterTypes":["java.lang.Integer"] }, {"name":"network","parameterTypes":["java.lang.String"] }, {"name":"nextflowConfig","parameterTypes":["java.lang.String"] }, {"name":"nfsMount","parameterTypes":["java.lang.String"] }, {"name":"nfsTarget","parameterTypes":["java.lang.String"] }, {"name":"port","parameterTypes":["java.lang.Integer"] }, {"name":"postRunScript","parameterTypes":["java.lang.String"] }, {"name":"preRunScript","parameterTypes":["java.lang.String"] }, {"name":"projectId","parameterTypes":["java.lang.String"] }, {"name":"propagateHeadJobOptions","parameterTypes":["java.lang.Boolean"] }, {"name":"putLabelsItem","parameterTypes":["java.lang.String","java.lang.String"] }, {"name":"serviceAccount","parameterTypes":["java.lang.String"] }, {"name":"setBootDiskSizeGb","parameterTypes":["java.lang.Integer"] }, {"name":"setComputeJobsInstanceTemplate","parameterTypes":["java.lang.String"] }, {"name":"setCopyImage","parameterTypes":["java.lang.String"] }, {"name":"setCpuPlatform","parameterTypes":["java.lang.String"] }, {"name":"setDebugMode","parameterTypes":["java.lang.Integer"] }, {"name":"setEnvironment","parameterTypes":["java.util.List"] }, {"name":"setFusion2Enabled","parameterTypes":["java.lang.Boolean"] }, {"name":"setHeadJobCpus","parameterTypes":["java.lang.Integer"] }, {"name":"setHeadJobInstanceTemplate","parameterTypes":["java.lang.String"] }, {"name":"setHeadJobMemoryMb","parameterTypes":["java.lang.Integer"] }, {"name":"setHeadJobOptions","parameterTypes":["java.lang.String"] }, {"name":"setHostName","parameterTypes":["java.lang.String"] }, {"name":"setLabels","parameterTypes":["java.util.Map"] }, {"name":"setLaunchDir","parameterTypes":["java.lang.String"] }, {"name":"setLocation","parameterTypes":["java.lang.String"] }, {"name":"setMachineType","parameterTypes":["java.lang.String"] }, {"name":"setMaxQueueSize","parameterTypes":["java.lang.Integer"] }, {"name":"setNetwork","parameterTypes":["java.lang.String"] }, {"name":"setNextflowConfig","parameterTypes":["java.lang.String"] }, {"name":"setNfsMount","parameterTypes":["java.lang.String"] }, {"name":"setNfsTarget","parameterTypes":["java.lang.String"] }, {"name":"setPort","parameterTypes":["java.lang.Integer"] }, {"name":"setPostRunScript","parameterTypes":["java.lang.String"] }, {"name":"setPreRunScript","parameterTypes":["java.lang.String"] }, {"name":"setProjectId","parameterTypes":["java.lang.String"] }, {"name":"setPropagateHeadJobOptions","parameterTypes":["java.lang.Boolean"] }, {"name":"setServiceAccount","parameterTypes":["java.lang.String"] }, {"name":"setSpot","parameterTypes":["java.lang.Boolean"] }, {"name":"setSshDaemon","parameterTypes":["java.lang.Boolean"] }, {"name":"setSshImage","parameterTypes":["java.lang.String"] }, {"name":"setSubnetwork","parameterTypes":["java.lang.String"] }, {"name":"setUsePrivateAddress","parameterTypes":["java.lang.Boolean"] }, {"name":"setUserName","parameterTypes":["java.lang.String"] }, {"name":"setWaveEnabled","parameterTypes":["java.lang.Boolean"] }, {"name":"setWorkDir","parameterTypes":["java.lang.String"] }, {"name":"spot","parameterTypes":["java.lang.Boolean"] }, {"name":"sshDaemon","parameterTypes":["java.lang.Boolean"] }, {"name":"sshImage","parameterTypes":["java.lang.String"] }, {"name":"subnetwork","parameterTypes":["java.lang.String"] }, {"name":"toIndentedString","parameterTypes":["java.lang.Object"] }, {"name":"toString","parameterTypes":[] }, {"name":"usePrivateAddress","parameterTypes":["java.lang.Boolean"] }, {"name":"userName","parameterTypes":["java.lang.String"] }, {"name":"waveEnabled","parameterTypes":["java.lang.Boolean"] }, {"name":"workDir","parameterTypes":["java.lang.String"] }] + "methods":[{"name":"","parameterTypes":[] }, {"name":"addEnvironmentItem","parameterTypes":["io.seqera.tower.model.ConfigEnvVariable"] }, {"name":"bootDiskSizeGb","parameterTypes":["java.lang.Integer"] }, {"name":"computeJobsInstanceTemplate","parameterTypes":["java.lang.String"] }, {"name":"copyImage","parameterTypes":["java.lang.String"] }, {"name":"cpuPlatform","parameterTypes":["java.lang.String"] }, {"name":"debugMode","parameterTypes":["java.lang.Integer"] }, {"name":"environment","parameterTypes":["java.util.List"] }, {"name":"equals","parameterTypes":["java.lang.Object"] }, {"name":"fusion2Enabled","parameterTypes":["java.lang.Boolean"] }, {"name":"getBootDiskSizeGb","parameterTypes":[] }, {"name":"getComputeJobsInstanceTemplate","parameterTypes":[] }, {"name":"getCopyImage","parameterTypes":[] }, {"name":"getCpuPlatform","parameterTypes":[] }, {"name":"getDebugMode","parameterTypes":[] }, {"name":"getDiscriminator","parameterTypes":[] }, {"name":"getEnvironment","parameterTypes":[] }, {"name":"getFusion2Enabled","parameterTypes":[] }, {"name":"getHeadJobCpus","parameterTypes":[] }, {"name":"getHeadJobInstanceTemplate","parameterTypes":[] }, {"name":"getHeadJobMemoryMb","parameterTypes":[] }, {"name":"getHeadJobOptions","parameterTypes":[] }, {"name":"getHostName","parameterTypes":[] }, {"name":"getLabels","parameterTypes":[] }, {"name":"getLaunchDir","parameterTypes":[] }, {"name":"getLocation","parameterTypes":[] }, {"name":"getMachineType","parameterTypes":[] }, {"name":"getMaxQueueSize","parameterTypes":[] }, {"name":"getNetwork","parameterTypes":[] }, {"name":"getNextflowConfig","parameterTypes":[] }, {"name":"getNfsMount","parameterTypes":[] }, {"name":"getNfsTarget","parameterTypes":[] }, {"name":"getPort","parameterTypes":[] }, {"name":"getPostRunScript","parameterTypes":[] }, {"name":"getPreRunScript","parameterTypes":[] }, {"name":"getProjectId","parameterTypes":[] }, {"name":"getPropagateHeadJobOptions","parameterTypes":[] }, {"name":"getServiceAccount","parameterTypes":[] }, {"name":"getSpot","parameterTypes":[] }, {"name":"getSshDaemon","parameterTypes":[] }, {"name":"getSshImage","parameterTypes":[] }, {"name":"getSubnetwork","parameterTypes":[] }, {"name":"getUsePrivateAddress","parameterTypes":[] }, {"name":"getUserName","parameterTypes":[] }, {"name":"getWaveEnabled","parameterTypes":[] }, {"name":"getWorkDir","parameterTypes":[] }, {"name":"hashCode","parameterTypes":[] }, {"name":"headJobCpus","parameterTypes":["java.lang.Integer"] }, {"name":"headJobInstanceTemplate","parameterTypes":["java.lang.String"] }, {"name":"headJobMemoryMb","parameterTypes":["java.lang.Integer"] }, {"name":"headJobOptions","parameterTypes":["java.lang.String"] }, {"name":"hostName","parameterTypes":["java.lang.String"] }, {"name":"labels","parameterTypes":["java.util.Map"] }, {"name":"launchDir","parameterTypes":["java.lang.String"] }, {"name":"location","parameterTypes":["java.lang.String"] }, {"name":"machineType","parameterTypes":["java.lang.String"] }, {"name":"maxQueueSize","parameterTypes":["java.lang.Integer"] }, {"name":"network","parameterTypes":["java.lang.String"] }, {"name":"nextflowConfig","parameterTypes":["java.lang.String"] }, {"name":"nfsMount","parameterTypes":["java.lang.String"] }, {"name":"nfsTarget","parameterTypes":["java.lang.String"] }, {"name":"port","parameterTypes":["java.lang.Integer"] }, {"name":"postRunScript","parameterTypes":["java.lang.String"] }, {"name":"preRunScript","parameterTypes":["java.lang.String"] }, {"name":"projectId","parameterTypes":["java.lang.String"] }, {"name":"propagateHeadJobOptions","parameterTypes":["java.lang.Boolean"] }, {"name":"putLabelsItem","parameterTypes":["java.lang.String","java.lang.String"] }, {"name":"serviceAccount","parameterTypes":["java.lang.String"] }, {"name":"setBootDiskSizeGb","parameterTypes":["java.lang.Integer"] }, {"name":"setComputeJobsInstanceTemplate","parameterTypes":["java.lang.String"] }, {"name":"setCopyImage","parameterTypes":["java.lang.String"] }, {"name":"setCpuPlatform","parameterTypes":["java.lang.String"] }, {"name":"setDebugMode","parameterTypes":["java.lang.Integer"] }, {"name":"setEnvironment","parameterTypes":["java.util.List"] }, {"name":"setFusion2Enabled","parameterTypes":["java.lang.Boolean"] }, {"name":"setHeadJobCpus","parameterTypes":["java.lang.Integer"] }, {"name":"setHeadJobInstanceTemplate","parameterTypes":["java.lang.String"] }, {"name":"setHeadJobMemoryMb","parameterTypes":["java.lang.Integer"] }, {"name":"setHeadJobOptions","parameterTypes":["java.lang.String"] }, {"name":"setHostName","parameterTypes":["java.lang.String"] }, {"name":"setLabels","parameterTypes":["java.util.Map"] }, {"name":"setLaunchDir","parameterTypes":["java.lang.String"] }, {"name":"setLocation","parameterTypes":["java.lang.String"] }, {"name":"setMachineType","parameterTypes":["java.lang.String"] }, {"name":"setMaxQueueSize","parameterTypes":["java.lang.Integer"] }, {"name":"setNetwork","parameterTypes":["java.lang.String"] }, {"name":"setNextflowConfig","parameterTypes":["java.lang.String"] }, {"name":"setNfsMount","parameterTypes":["java.lang.String"] }, {"name":"setNfsTarget","parameterTypes":["java.lang.String"] }, {"name":"setPort","parameterTypes":["java.lang.Integer"] }, {"name":"setPostRunScript","parameterTypes":["java.lang.String"] }, {"name":"setPreRunScript","parameterTypes":["java.lang.String"] }, {"name":"setProjectId","parameterTypes":["java.lang.String"] }, {"name":"setPropagateHeadJobOptions","parameterTypes":["java.lang.Boolean"] }, {"name":"setServiceAccount","parameterTypes":["java.lang.String"] }, {"name":"setSpot","parameterTypes":["java.lang.Boolean"] }, {"name":"setSshDaemon","parameterTypes":["java.lang.Boolean"] }, {"name":"setSshImage","parameterTypes":["java.lang.String"] }, {"name":"setSubnetwork","parameterTypes":["java.lang.String"] }, {"name":"setUsePrivateAddress","parameterTypes":["java.lang.Boolean"] }, {"name":"setUserName","parameterTypes":["java.lang.String"] }, {"name":"setWaveEnabled","parameterTypes":["java.lang.Boolean"] }, {"name":"setWorkDir","parameterTypes":["java.lang.String"] }, {"name":"spot","parameterTypes":["java.lang.Boolean"] }, {"name":"sshDaemon","parameterTypes":["java.lang.Boolean"] }, {"name":"sshImage","parameterTypes":["java.lang.String"] }, {"name":"subnetwork","parameterTypes":["java.lang.String"] }, {"name":"toIndentedString","parameterTypes":["java.lang.Object"] }, {"name":"toString","parameterTypes":[] }, {"name":"usePrivateAddress","parameterTypes":["java.lang.Boolean"] }, {"name":"userName","parameterTypes":["java.lang.String"] }, {"name":"waveEnabled","parameterTypes":["java.lang.Boolean"] }, {"name":"workDir","parameterTypes":["java.lang.String"] }, {"name":"addComputeJobsMachineTypeItem","parameterTypes":["java.lang.String"] }, {"name":"addNetworkTagsItem","parameterTypes":["java.lang.String"] }, {"name":"bootDiskImage","parameterTypes":["java.lang.String"] }, {"name":"computeJobsMachineType","parameterTypes":["java.util.List"] }, {"name":"fusionSnapshots","parameterTypes":["java.lang.Boolean"] }, {"name":"getBootDiskImage","parameterTypes":[] }, {"name":"getComputeJobsMachineType","parameterTypes":[] }, {"name":"getFusionSnapshots","parameterTypes":[] }, {"name":"getNetworkTags","parameterTypes":[] }, {"name":"networkTags","parameterTypes":["java.util.List"] }, {"name":"setBootDiskImage","parameterTypes":["java.lang.String"] }, {"name":"setComputeJobsMachineType","parameterTypes":["java.util.List"] }, {"name":"setFusionSnapshots","parameterTypes":["java.lang.Boolean"] }, {"name":"setNetworkTags","parameterTypes":["java.util.List"] }] }, { "name":"io.seqera.tower.model.GoogleBucket", @@ -3977,6 +3984,13 @@ "queryAllDeclaredConstructors":true, "methods":[{"name":"","parameterTypes":[] }, {"name":"addConfigProfilesItem","parameterTypes":["java.lang.String"] }, {"name":"addUserSecretsItem","parameterTypes":["java.lang.String"] }, {"name":"addWorkspaceSecretsItem","parameterTypes":["java.lang.String"] }, {"name":"commitId","parameterTypes":["java.lang.String"] }, {"name":"computeEnv","parameterTypes":["io.seqera.tower.model.ComputeEnvComputeConfig"] }, {"name":"configProfiles","parameterTypes":["java.util.List"] }, {"name":"configText","parameterTypes":["java.lang.String"] }, {"name":"dateCreated","parameterTypes":["java.time.OffsetDateTime"] }, {"name":"entryName","parameterTypes":["java.lang.String"] }, {"name":"equals","parameterTypes":["java.lang.Object"] }, {"name":"getCommitId","parameterTypes":[] }, {"name":"getComputeEnv","parameterTypes":[] }, {"name":"getConfigProfiles","parameterTypes":[] }, {"name":"getConfigText","parameterTypes":[] }, {"name":"getDateCreated","parameterTypes":[] }, {"name":"getEntryName","parameterTypes":[] }, {"name":"getHeadJobCpus","parameterTypes":[] }, {"name":"getHeadJobMemoryMb","parameterTypes":[] }, {"name":"getId","parameterTypes":[] }, {"name":"getLastUpdated","parameterTypes":[] }, {"name":"getLaunchContainer","parameterTypes":[] }, {"name":"getMainScript","parameterTypes":[] }, {"name":"getOptimizationId","parameterTypes":[] }, {"name":"getOptimizationTargets","parameterTypes":[] }, {"name":"getParamsText","parameterTypes":[] }, {"name":"getPipeline","parameterTypes":[] }, {"name":"getPipelineSchemaId","parameterTypes":[] }, {"name":"getPostRunScript","parameterTypes":[] }, {"name":"getPreRunScript","parameterTypes":[] }, {"name":"getPullLatest","parameterTypes":[] }, {"name":"getResume","parameterTypes":[] }, {"name":"getResumeLaunchId","parameterTypes":[] }, {"name":"getRevision","parameterTypes":[] }, {"name":"getRunName","parameterTypes":[] }, {"name":"getSchemaName","parameterTypes":[] }, {"name":"getSessionId","parameterTypes":[] }, {"name":"getStubRun","parameterTypes":[] }, {"name":"getTowerConfig","parameterTypes":[] }, {"name":"getUserSecrets","parameterTypes":[] }, {"name":"getWorkDir","parameterTypes":[] }, {"name":"getWorkspaceId","parameterTypes":[] }, {"name":"getWorkspaceSecrets","parameterTypes":[] }, {"name":"hashCode","parameterTypes":[] }, {"name":"headJobCpus","parameterTypes":["java.lang.Integer"] }, {"name":"headJobMemoryMb","parameterTypes":["java.lang.Integer"] }, {"name":"id","parameterTypes":["java.lang.String"] }, {"name":"lastUpdated","parameterTypes":["java.time.OffsetDateTime"] }, {"name":"launchContainer","parameterTypes":["java.lang.String"] }, {"name":"mainScript","parameterTypes":["java.lang.String"] }, {"name":"optimizationId","parameterTypes":["java.lang.String"] }, {"name":"optimizationTargets","parameterTypes":["java.lang.String"] }, {"name":"paramsText","parameterTypes":["java.lang.String"] }, {"name":"pipeline","parameterTypes":["java.lang.String"] }, {"name":"pipelineSchemaId","parameterTypes":["java.lang.Long"] }, {"name":"postRunScript","parameterTypes":["java.lang.String"] }, {"name":"preRunScript","parameterTypes":["java.lang.String"] }, {"name":"pullLatest","parameterTypes":["java.lang.Boolean"] }, {"name":"resume","parameterTypes":["java.lang.Boolean"] }, {"name":"resumeLaunchId","parameterTypes":["java.lang.String"] }, {"name":"revision","parameterTypes":["java.lang.String"] }, {"name":"runName","parameterTypes":["java.lang.String"] }, {"name":"schemaName","parameterTypes":["java.lang.String"] }, {"name":"sessionId","parameterTypes":["java.lang.String"] }, {"name":"setCommitId","parameterTypes":["java.lang.String"] }, {"name":"setComputeEnv","parameterTypes":["io.seqera.tower.model.ComputeEnvComputeConfig"] }, {"name":"setConfigProfiles","parameterTypes":["java.util.List"] }, {"name":"setConfigText","parameterTypes":["java.lang.String"] }, {"name":"setDateCreated","parameterTypes":["java.time.OffsetDateTime"] }, {"name":"setEntryName","parameterTypes":["java.lang.String"] }, {"name":"setHeadJobCpus","parameterTypes":["java.lang.Integer"] }, {"name":"setHeadJobMemoryMb","parameterTypes":["java.lang.Integer"] }, {"name":"setId","parameterTypes":["java.lang.String"] }, {"name":"setLastUpdated","parameterTypes":["java.time.OffsetDateTime"] }, {"name":"setLaunchContainer","parameterTypes":["java.lang.String"] }, {"name":"setMainScript","parameterTypes":["java.lang.String"] }, {"name":"setOptimizationId","parameterTypes":["java.lang.String"] }, {"name":"setOptimizationTargets","parameterTypes":["java.lang.String"] }, {"name":"setParamsText","parameterTypes":["java.lang.String"] }, {"name":"setPipeline","parameterTypes":["java.lang.String"] }, {"name":"setPipelineSchemaId","parameterTypes":["java.lang.Long"] }, {"name":"setPostRunScript","parameterTypes":["java.lang.String"] }, {"name":"setPreRunScript","parameterTypes":["java.lang.String"] }, {"name":"setPullLatest","parameterTypes":["java.lang.Boolean"] }, {"name":"setResume","parameterTypes":["java.lang.Boolean"] }, {"name":"setResumeLaunchId","parameterTypes":["java.lang.String"] }, {"name":"setRevision","parameterTypes":["java.lang.String"] }, {"name":"setRunName","parameterTypes":["java.lang.String"] }, {"name":"setSchemaName","parameterTypes":["java.lang.String"] }, {"name":"setSessionId","parameterTypes":["java.lang.String"] }, {"name":"setStubRun","parameterTypes":["java.lang.Boolean"] }, {"name":"setTowerConfig","parameterTypes":["java.lang.String"] }, {"name":"setUserSecrets","parameterTypes":["java.util.List"] }, {"name":"setWorkDir","parameterTypes":["java.lang.String"] }, {"name":"setWorkspaceId","parameterTypes":["java.lang.Long"] }, {"name":"setWorkspaceSecrets","parameterTypes":["java.util.List"] }, {"name":"stubRun","parameterTypes":["java.lang.Boolean"] }, {"name":"toIndentedString","parameterTypes":["java.lang.Object"] }, {"name":"toString","parameterTypes":[] }, {"name":"towerConfig","parameterTypes":["java.lang.String"] }, {"name":"userSecrets","parameterTypes":["java.util.List"] }, {"name":"workDir","parameterTypes":["java.lang.String"] }, {"name":"workspaceId","parameterTypes":["java.lang.Long"] }, {"name":"workspaceSecrets","parameterTypes":["java.util.List"] }] }, +{ + "name":"io.seqera.tower.model.LinkedSourceDto", + "allDeclaredFields":true, + "queryAllDeclaredMethods":true, + "queryAllDeclaredConstructors":true, + "methods":[{"name":"","parameterTypes":[] }, {"name":"changeStatus","parameterTypes":["io.seqera.tower.model.ChangeStatus"] }, {"name":"checkedAt","parameterTypes":["java.time.OffsetDateTime"] }, {"name":"equals","parameterTypes":["java.lang.Object"] }, {"name":"getChangeStatus","parameterTypes":[] }, {"name":"getCheckedAt","parameterTypes":[] }, {"name":"getHasChangeIndicators","parameterTypes":[] }, {"name":"getUrl","parameterTypes":[] }, {"name":"hasChangeIndicators","parameterTypes":["java.lang.Boolean"] }, {"name":"hashCode","parameterTypes":[] }, {"name":"setChangeStatus","parameterTypes":["io.seqera.tower.model.ChangeStatus"] }, {"name":"setCheckedAt","parameterTypes":["java.time.OffsetDateTime"] }, {"name":"setHasChangeIndicators","parameterTypes":["java.lang.Boolean"] }, {"name":"setUrl","parameterTypes":["java.lang.String"] }, {"name":"toString","parameterTypes":[] }, {"name":"url","parameterTypes":["java.lang.String"] }] +}, { "name":"io.seqera.tower.model.ListAccessTokensResponse", "queryAllDeclaredMethods":true, @@ -4268,6 +4282,13 @@ "queryAllDeclaredConstructors":true, "methods":[{"name":"","parameterTypes":[] }, {"name":"addEnvironmentItem","parameterTypes":["io.seqera.tower.model.ConfigEnvVariable"] }, {"name":"environment","parameterTypes":["java.util.List"] }, {"name":"equals","parameterTypes":["java.lang.Object"] }, {"name":"getComputeQueue","parameterTypes":[] }, {"name":"getDiscriminator","parameterTypes":[] }, {"name":"getEnvironment","parameterTypes":[] }, {"name":"getHeadJobOptions","parameterTypes":[] }, {"name":"getHeadQueue","parameterTypes":[] }, {"name":"getHostName","parameterTypes":[] }, {"name":"getLaunchDir","parameterTypes":[] }, {"name":"getMaxQueueSize","parameterTypes":[] }, {"name":"getPort","parameterTypes":[] }, {"name":"getPostRunScript","parameterTypes":[] }, {"name":"getPreRunScript","parameterTypes":[] }, {"name":"getPropagateHeadJobOptions","parameterTypes":[] }, {"name":"getUserName","parameterTypes":[] }, {"name":"getWorkDir","parameterTypes":[] }, {"name":"hashCode","parameterTypes":[] }, {"name":"headJobOptions","parameterTypes":["java.lang.String"] }, {"name":"hostName","parameterTypes":["java.lang.String"] }, {"name":"launchDir","parameterTypes":["java.lang.String"] }, {"name":"maxQueueSize","parameterTypes":["java.lang.Integer"] }, {"name":"port","parameterTypes":["java.lang.Integer"] }, {"name":"propagateHeadJobOptions","parameterTypes":["java.lang.Boolean"] }, {"name":"setEnvironment","parameterTypes":["java.util.List"] }, {"name":"setHeadJobOptions","parameterTypes":["java.lang.String"] }, {"name":"setHostName","parameterTypes":["java.lang.String"] }, {"name":"setLaunchDir","parameterTypes":["java.lang.String"] }, {"name":"setMaxQueueSize","parameterTypes":["java.lang.Integer"] }, {"name":"setPort","parameterTypes":["java.lang.Integer"] }, {"name":"setPropagateHeadJobOptions","parameterTypes":["java.lang.Boolean"] }, {"name":"setUserName","parameterTypes":["java.lang.String"] }, {"name":"toIndentedString","parameterTypes":["java.lang.Object"] }, {"name":"toString","parameterTypes":[] }, {"name":"userName","parameterTypes":["java.lang.String"] }] }, +{ + "name":"io.seqera.tower.model.MountData", + "allDeclaredFields":true, + "queryAllDeclaredMethods":true, + "queryAllDeclaredConstructors":true, + "methods":[{"name":"","parameterTypes":[] }, {"name":"dataLinkId","parameterTypes":["java.lang.String"] }, {"name":"equals","parameterTypes":["java.lang.Object"] }, {"name":"getDataLinkId","parameterTypes":[] }, {"name":"getPath","parameterTypes":[] }, {"name":"getPath_JsonNullable","parameterTypes":[] }, {"name":"hashCode","parameterTypes":[] }, {"name":"path","parameterTypes":["java.lang.String"] }, {"name":"setDataLinkId","parameterTypes":["java.lang.String"] }, {"name":"setPath","parameterTypes":["java.lang.String"] }, {"name":"setPath_JsonNullable","parameterTypes":["org.openapitools.jackson.nullable.JsonNullable"] }, {"name":"toString","parameterTypes":[] }] +}, { "name":"io.seqera.tower.model.MultiRequestFileSchema", "queryAllDeclaredMethods":true, @@ -4590,6 +4611,13 @@ "allDeclaredConstructors":true, "methods":[{"name":"","parameterTypes":[] }, {"name":"addEnvironmentItem","parameterTypes":["io.seqera.tower.model.ConfigEnvVariable"] }, {"name":"environment","parameterTypes":["java.util.List"] }, {"name":"equals","parameterTypes":["java.lang.Object"] }, {"name":"getDiscriminator","parameterTypes":[] }, {"name":"getEnvironment","parameterTypes":[] }, {"name":"getHeadJobOptions","parameterTypes":[] }, {"name":"getHostName","parameterTypes":[] }, {"name":"getLaunchDir","parameterTypes":[] }, {"name":"getMaxQueueSize","parameterTypes":[] }, {"name":"getPort","parameterTypes":[] }, {"name":"getPropagateHeadJobOptions","parameterTypes":[] }, {"name":"getUserName","parameterTypes":[] }, {"name":"hashCode","parameterTypes":[] }, {"name":"headJobOptions","parameterTypes":["java.lang.String"] }, {"name":"hostName","parameterTypes":["java.lang.String"] }, {"name":"launchDir","parameterTypes":["java.lang.String"] }, {"name":"maxQueueSize","parameterTypes":["java.lang.Integer"] }, {"name":"port","parameterTypes":["java.lang.Integer"] }, {"name":"propagateHeadJobOptions","parameterTypes":["java.lang.Boolean"] }, {"name":"setEnvironment","parameterTypes":["java.util.List"] }, {"name":"setHeadJobOptions","parameterTypes":["java.lang.String"] }, {"name":"setHostName","parameterTypes":["java.lang.String"] }, {"name":"setLaunchDir","parameterTypes":["java.lang.String"] }, {"name":"setMaxQueueSize","parameterTypes":["java.lang.Integer"] }, {"name":"setPort","parameterTypes":["java.lang.Integer"] }, {"name":"setPropagateHeadJobOptions","parameterTypes":["java.lang.Boolean"] }, {"name":"setUserName","parameterTypes":["java.lang.String"] }, {"name":"toIndentedString","parameterTypes":["java.lang.Object"] }, {"name":"toString","parameterTypes":[] }, {"name":"userName","parameterTypes":["java.lang.String"] }] }, +{ + "name":"io.seqera.tower.model.SourceType", + "allDeclaredFields":true, + "queryAllDeclaredMethods":true, + "queryAllDeclaredConstructors":true, + "methods":[{"name":"fromValue","parameterTypes":["java.lang.String"] }, {"name":"getValue","parameterTypes":[] }, {"name":"toString","parameterTypes":[] }, {"name":"valueOf","parameterTypes":["java.lang.String"] }, {"name":"values","parameterTypes":[] }] +}, { "name":"io.seqera.tower.model.State", "queryAllDeclaredMethods":true, @@ -5174,7 +5202,7 @@ }, { "name":"java.lang.Thread", - "fields":[{"name":"threadLocalRandomProbe"}] + "fields":[{"name": "threadLocalRandomProbe"}] }, { "name":"java.lang.annotation.Annotation[]" @@ -5189,7 +5217,7 @@ }, { "name":"java.lang.reflect.AccessibleObject", - "fields":[{"name":"override"}] + "fields":[{"name": "override"}] }, { "name":"java.math.BigDecimal", @@ -5395,7 +5423,7 @@ }, { "name":"java.util.concurrent.ForkJoinTask", - "fields":[{"name":"aux"}, {"name":"status"}] + "fields":[{"name": "aux"}, {"name": "status"}] }, { "name":"java.util.concurrent.LinkedTransferQueue", @@ -5403,15 +5431,15 @@ }, { "name":"java.util.concurrent.atomic.AtomicBoolean", - "fields":[{"name":"value"}] + "fields":[{"name": "value"}] }, { "name":"java.util.concurrent.atomic.AtomicReference", - "fields":[{"name":"value"}] + "fields":[{"name": "value"}] }, { "name":"java.util.concurrent.atomic.Striped64", - "fields":[{"name":"base"}, {"name":"cellsBusy"}] + "fields":[{"name": "base"}, {"name": "cellsBusy"}] }, { "name":"javax.inject.Named", @@ -5428,7 +5456,7 @@ }, { "name":"javax.security.auth.x500.X500Principal", - "fields":[{"name":"thisX500Name"}], + "fields":[{"name": "thisX500Name"}], "methods":[{"name":"","parameterTypes":["sun.security.x509.X500Name"] }] }, { @@ -5543,11 +5571,11 @@ }, { "name":"org.glassfish.jersey.internal.util.collection.ConcurrentHashMapV8", - "fields":[{"name":"baseCount"}, {"name":"cellsBusy"}, {"name":"sizeCtl"}, {"name":"transferIndex"}, {"name":"transferOrigin"}] + "fields":[{"name": "baseCount"}, {"name": "cellsBusy"}, {"name": "sizeCtl"}, {"name": "transferIndex"}, {"name": "transferOrigin"}] }, { "name":"org.glassfish.jersey.internal.util.collection.ConcurrentHashMapV8$CounterCell", - "fields":[{"name":"value"}] + "fields":[{"name": "value"}] }, { "name":"org.glassfish.jersey.jackson.JacksonFeature", From 602c8ddb6ca60f31b577b71f9273a5b7451ace8f Mon Sep 17 00:00:00 2001 From: Cristian Ramon-Cortes Date: Fri, 10 Apr 2026 12:28:25 +0200 Subject: [PATCH 08/14] fix: register DataStudioStartRequest name JsonNullable methods for GraalVM reflection Co-Authored-By: Claude Sonnet 4.6 --- conf/reflect-config.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/conf/reflect-config.json b/conf/reflect-config.json index 172c9cd7..ac0342bf 100644 --- a/conf/reflect-config.json +++ b/conf/reflect-config.json @@ -3390,7 +3390,7 @@ "allDeclaredFields":true, "queryAllDeclaredMethods":true, "queryAllDeclaredConstructors":true, - "methods":[{"name":"","parameterTypes":[] }, {"name":"_configuration","parameterTypes":["io.seqera.tower.model.DataStudioConfiguration"] }, {"name":"addLabelIdsItem","parameterTypes":["java.lang.Long"] }, {"name":"description","parameterTypes":["java.lang.String"] }, {"name":"equals","parameterTypes":["java.lang.Object"] }, {"name":"equalsNullable","parameterTypes":["org.openapitools.jackson.nullable.JsonNullable","org.openapitools.jackson.nullable.JsonNullable"] }, {"name":"getConfiguration","parameterTypes":[] }, {"name":"getConfiguration_JsonNullable","parameterTypes":[] }, {"name":"getDescription","parameterTypes":[] }, {"name":"getDescription_JsonNullable","parameterTypes":[] }, {"name":"getLabelIds","parameterTypes":[] }, {"name":"getLabelIds_JsonNullable","parameterTypes":[] }, {"name":"getSpot","parameterTypes":[] }, {"name":"getSpot_JsonNullable","parameterTypes":[] }, {"name":"hashCode","parameterTypes":[] }, {"name":"hashCodeNullable","parameterTypes":["org.openapitools.jackson.nullable.JsonNullable"] }, {"name":"labelIds","parameterTypes":["java.util.List"] }, {"name":"setConfiguration","parameterTypes":["io.seqera.tower.model.DataStudioConfiguration"] }, {"name":"setConfiguration_JsonNullable","parameterTypes":["org.openapitools.jackson.nullable.JsonNullable"] }, {"name":"setDescription","parameterTypes":["java.lang.String"] }, {"name":"setDescription_JsonNullable","parameterTypes":["org.openapitools.jackson.nullable.JsonNullable"] }, {"name":"setLabelIds","parameterTypes":["java.util.List"] }, {"name":"setLabelIds_JsonNullable","parameterTypes":["org.openapitools.jackson.nullable.JsonNullable"] }, {"name":"setSpot","parameterTypes":["java.lang.Boolean"] }, {"name":"setSpot_JsonNullable","parameterTypes":["org.openapitools.jackson.nullable.JsonNullable"] }, {"name":"spot","parameterTypes":["java.lang.Boolean"] }, {"name":"toIndentedString","parameterTypes":["java.lang.Object"] }, {"name":"toString","parameterTypes":[] }] + "methods":[{"name":"","parameterTypes":[] }, {"name":"_configuration","parameterTypes":["io.seqera.tower.model.DataStudioConfiguration"] }, {"name":"addLabelIdsItem","parameterTypes":["java.lang.Long"] }, {"name":"description","parameterTypes":["java.lang.String"] }, {"name":"equals","parameterTypes":["java.lang.Object"] }, {"name":"equalsNullable","parameterTypes":["org.openapitools.jackson.nullable.JsonNullable","org.openapitools.jackson.nullable.JsonNullable"] }, {"name":"getConfiguration","parameterTypes":[] }, {"name":"getConfiguration_JsonNullable","parameterTypes":[] }, {"name":"getDescription","parameterTypes":[] }, {"name":"getDescription_JsonNullable","parameterTypes":[] }, {"name":"getLabelIds","parameterTypes":[] }, {"name":"getLabelIds_JsonNullable","parameterTypes":[] }, {"name":"getName","parameterTypes":[] }, {"name":"getName_JsonNullable","parameterTypes":[] }, {"name":"getSpot","parameterTypes":[] }, {"name":"getSpot_JsonNullable","parameterTypes":[] }, {"name":"hashCode","parameterTypes":[] }, {"name":"hashCodeNullable","parameterTypes":["org.openapitools.jackson.nullable.JsonNullable"] }, {"name":"labelIds","parameterTypes":["java.util.List"] }, {"name":"name","parameterTypes":["java.lang.String"] }, {"name":"setConfiguration","parameterTypes":["io.seqera.tower.model.DataStudioConfiguration"] }, {"name":"setConfiguration_JsonNullable","parameterTypes":["org.openapitools.jackson.nullable.JsonNullable"] }, {"name":"setDescription","parameterTypes":["java.lang.String"] }, {"name":"setDescription_JsonNullable","parameterTypes":["org.openapitools.jackson.nullable.JsonNullable"] }, {"name":"setLabelIds","parameterTypes":["java.util.List"] }, {"name":"setLabelIds_JsonNullable","parameterTypes":["org.openapitools.jackson.nullable.JsonNullable"] }, {"name":"setName","parameterTypes":["java.lang.String"] }, {"name":"setName_JsonNullable","parameterTypes":["org.openapitools.jackson.nullable.JsonNullable"] }, {"name":"setSpot","parameterTypes":["java.lang.Boolean"] }, {"name":"setSpot_JsonNullable","parameterTypes":["org.openapitools.jackson.nullable.JsonNullable"] }, {"name":"spot","parameterTypes":["java.lang.Boolean"] }, {"name":"toIndentedString","parameterTypes":["java.lang.Object"] }, {"name":"toString","parameterTypes":[] }] }, { "name":"io.seqera.tower.model.DataStudioStartResponse", From 72baa9902a2baae7f67c639fc11a28f88e471df8 Mon Sep 17 00:00:00 2001 From: ramonamela <25862624+ramonamela@users.noreply.github.com> Date: Mon, 13 Apr 2026 18:04:45 +0200 Subject: [PATCH 09/14] test(azure-batch): refine Azure Batch integration test script Simplify test coverage to Forge flows, fix ws_flag ordering so it comes after the subcommand, auto-fill /subnets/default when SUBNET_ID is a VNet ID, and extract cleanup into a standalone clean-azure-batch-test-resources.sh that wipes all test-* compute envs and credentials. [COMP-1464] [test] --- .../clean-azure-batch-test-resources.sh | 90 +++++++++++++++ .../scripts/test-azure-batch-features.sh | 109 ++++-------------- 2 files changed, 113 insertions(+), 86 deletions(-) create mode 100755 src/test/resources/scripts/clean-azure-batch-test-resources.sh diff --git a/src/test/resources/scripts/clean-azure-batch-test-resources.sh b/src/test/resources/scripts/clean-azure-batch-test-resources.sh new file mode 100755 index 00000000..39e13ffa --- /dev/null +++ b/src/test/resources/scripts/clean-azure-batch-test-resources.sh @@ -0,0 +1,90 @@ +#!/usr/bin/env bash +# +# Cleanup script for Azure Batch CLI test resources (COMP-1464) +# +# Removes all compute environments and credentials created by the test script +# (resources matching the test-* naming pattern). +# +# Prerequisites: +# - TOWER_ACCESS_TOKEN set +# - TOWER_API_ENDPOINT set +# - tw CLI binary on PATH or TW variable set +# +# Usage: +# export TOWER_ACCESS_TOKEN= +# export TOWER_API_ENDPOINT= +# ./clean-azure-batch-test-resources.sh [--workspace ] +# + +set -uo pipefail + +WORKSPACE="${WORKSPACE:-}" +TW="${TW:-tw}" + +while [[ $# -gt 0 ]]; do + case "$1" in + --workspace) + WORKSPACE="$2" + shift 2 + ;; + --workspace=*) + WORKSPACE="${1#*=}" + shift + ;; + *) + echo "Unknown option: $1" + exit 1 + ;; + esac +done + +ws_flag() { + if [[ -n "$WORKSPACE" ]]; then + echo "--workspace=$WORKSPACE" + fi +} + +echo "============================================================" +echo " Cleanup Azure Batch CLI Test Resources" +echo "============================================================" +echo "" +echo "Endpoint: ${TOWER_API_ENDPOINT:-api.cloud.seqera.io}" +echo "Workspace: ${WORKSPACE:-}" +echo "" + +# --------------------------------------------------------------------------- +# Remove test compute environments +# --------------------------------------------------------------------------- +echo "--- Removing test compute environments ---" + +ce_list=$($TW -o json compute-envs list $(ws_flag) 2>/dev/null) || ce_list="[]" + +for name in $(echo "$ce_list" | grep -o '"name":"test-[^"]*"' | sed 's/"name":"//;s/"//'); do + echo -n " Deleting CE '$name' ... " + if $TW compute-envs delete --name="$name" $(ws_flag) 2>/dev/null; then + echo "done" + else + echo "failed (may already be deleted)" + fi +done + +echo "" + +# --------------------------------------------------------------------------- +# Remove test credentials +# --------------------------------------------------------------------------- +echo "--- Removing test credentials ---" + +cred_list=$($TW -o json credentials list $(ws_flag) 2>/dev/null) || cred_list="[]" + +for name in $(echo "$cred_list" | grep -o '"name":"test-[^"]*"' | sed 's/"name":"//;s/"//'); do + echo -n " Deleting credential '$name' ... " + if $TW credentials delete --name="$name" $(ws_flag) 2>/dev/null; then + echo "done" + else + echo "failed (may already be deleted)" + fi +done + +echo "" +echo "Cleanup complete." diff --git a/src/test/resources/scripts/test-azure-batch-features.sh b/src/test/resources/scripts/test-azure-batch-features.sh index 7ef7f9a7..7ad02b33 100755 --- a/src/test/resources/scripts/test-azure-batch-features.sh +++ b/src/test/resources/scripts/test-azure-batch-features.sh @@ -14,7 +14,7 @@ # ./test-azure-batch-features.sh [--workspace ] # -set -euo pipefail +set -uo pipefail # --------------------------------------------------------------------------- # Configuration - override via environment variables @@ -35,15 +35,18 @@ MI_HEAD_CLIENT_ID="${MI_HEAD_CLIENT_ID:-11111111-1111-1111-1111-111111111111}" MI_POOL_CLIENT_ID="${MI_POOL_CLIENT_ID:-22222222-2222-2222-2222-222222222222}" MI_HEAD_RESOURCE_ID="${MI_HEAD_RESOURCE_ID:-/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myRg/providers/Microsoft.ManagedIdentity/userAssignedIdentities/headIdentity}" MI_POOL_RESOURCE_ID="${MI_POOL_RESOURCE_ID:-/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myRg/providers/Microsoft.ManagedIdentity/userAssignedIdentities/poolIdentity}" +# SUBNET_ID must be a full subnet resource ID (including /subnets/{name}). +# If the env var only contains a VNet ID, append /subnets/default. SUBNET_ID="${SUBNET_ID:-/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myRg/providers/Microsoft.Network/virtualNetworks/myVnet/subnets/mySubnet}" +if [[ "$SUBNET_ID" != */subnets/* ]]; then + SUBNET_ID="$SUBNET_ID/subnets/default" +fi # --------------------------------------------------------------------------- # Helpers # --------------------------------------------------------------------------- PASS=0 FAIL=0 -SKIP=0 -CLEANUP_IDS=() ws_flag() { if [[ -n "$WORKSPACE" ]]; then @@ -55,13 +58,13 @@ run_tw() { local description="$1" shift echo -n " TEST: $description ... " - if output=$("$TW" $(ws_flag) "$@" 2>&1); then + if output=$($TW "$@" $(ws_flag) 2>&1); then echo "PASS" ((PASS++)) return 0 else echo "FAIL" - echo " Command: $TW $(ws_flag) $*" + echo " Command: $TW $* $(ws_flag)" echo " Output: $output" ((FAIL++)) return 1 @@ -72,9 +75,9 @@ run_tw_expect_fail() { local description="$1" shift echo -n " TEST: $description ... " - if output=$("$TW" $(ws_flag) "$@" 2>&1); then + if output=$($TW "$@" $(ws_flag) 2>&1); then echo "FAIL (expected failure but succeeded)" - echo " Command: $TW $(ws_flag) $*" + echo " Command: $TW $* $(ws_flag)" echo " Output: $output" ((FAIL++)) return 1 @@ -87,12 +90,12 @@ run_tw_expect_fail() { cleanup_credential() { local name="$1" - "$TW" $(ws_flag) credentials delete --name="$name" 2>/dev/null || true + $TW credentials delete --name="$name" $(ws_flag) 2>/dev/null || true } cleanup_ce() { local name="$1" - "$TW" $(ws_flag) compute-envs delete --name="$name" 2>/dev/null || true + $TW compute-envs delete --name="$name" $(ws_flag) 2>/dev/null || true } # Parse arguments @@ -144,7 +147,7 @@ run_tw "Update Entra credentials" \ --storage-name="$STORAGE_NAME" \ --tenant-id="$TENANT_ID" \ --client-id="$CLIENT_ID" \ - --client-secret="new-secret-value" + --client-secret="$CLIENT_SECRET" run_tw_expect_fail "Add Entra credentials missing required --tenant-id" \ credentials add azure-entra \ @@ -220,6 +223,7 @@ run_tw "Create Forge CE (dual pool, defaults)" \ -l "$LOCATION" \ --work-dir="$WORK_DIR" \ --dual-pool \ + --head-vm-count=1 \ --worker-vm-count=8 cleanup_ce "$CE_FORGE_DUAL" @@ -248,75 +252,9 @@ cleanup_ce "$CE_FORGE_DUAL_FULL" echo "" # =================================================================== -# 5. Manual CE - Single Pool (backward compat) -# =================================================================== -echo "--- 5. Manual CE - Single Pool ---" - -CE_MANUAL_SINGLE="test-manual-single-$$" - -run_tw "Create Manual CE (single pool)" \ - compute-envs add azure-batch manual \ - -n "$CE_MANUAL_SINGLE" \ - --credentials="$CRED_NAME" \ - -l "$LOCATION" \ - --work-dir="$WORK_DIR" \ - --compute-pool-name=my-pool - -cleanup_ce "$CE_MANUAL_SINGLE" -echo "" - -# =================================================================== -# 6. Manual CE - Dual Pool (head + worker) -# =================================================================== -echo "--- 6. Manual CE - Dual Pool ---" - -CE_MANUAL_DUAL="test-manual-dual-$$" - -run_tw "Create Manual CE (separate head and worker pools)" \ - compute-envs add azure-batch manual \ - -n "$CE_MANUAL_DUAL" \ - --credentials="$CRED_NAME" \ - -l "$LOCATION" \ - --work-dir="$WORK_DIR" \ - --compute-pool-name=my-head-pool \ - --worker-pool=my-worker-pool - -cleanup_ce "$CE_MANUAL_DUAL" -echo "" - -# =================================================================== -# 7. Manual CE - All new options -# =================================================================== -echo "--- 7. Manual CE - All new options ---" - -CE_MANUAL_FULL="test-manual-full-$$" - -run_tw "Create Manual CE (all new options)" \ - compute-envs add azure-batch manual \ - -n "$CE_MANUAL_FULL" \ - --credentials="$CRED_NAME" \ - -l "$LOCATION" \ - --work-dir="$WORK_DIR" \ - --compute-pool-name=my-head-pool \ - --worker-pool=my-worker-pool \ - --fusion-v2 \ - --wave \ - --subnet-id="$SUBNET_ID" \ - --managed-identity-client-id="$MI_HEAD_CLIENT_ID" \ - --managed-identity-pool-client-id="$MI_POOL_CLIENT_ID" \ - --delete-jobs-on-completion=false \ - --delete-tasks-on-completion=true \ - --terminate-jobs-on-completion=true \ - --token-duration=24h \ - --job-max-wall-clock-time=3d - -cleanup_ce "$CE_MANUAL_FULL" -echo "" - -# =================================================================== -# 8. Cleanup toggles combinations +# 5. Cleanup toggles combinations # =================================================================== -echo "--- 8. Cleanup toggle combinations ---" +echo "--- 5. Cleanup toggle combinations ---" CE_CLEANUP="test-cleanup-$$" @@ -335,9 +273,9 @@ cleanup_ce "$CE_CLEANUP" echo "" # =================================================================== -# 9. Job max wall clock time edge cases +# 6. Job max wall clock time edge cases # =================================================================== -echo "--- 9. Job max wall clock time ---" +echo "--- 6. Job max wall clock time ---" CE_WALLCLOCK="test-wallclock-$$" @@ -384,9 +322,9 @@ run_tw_expect_fail "Reject invalid wall clock time format" \ echo "" # =================================================================== -# 10. Subnet validation +# 7. Subnet validation # =================================================================== -echo "--- 10. Subnet validation ---" +echo "--- 7. Subnet validation ---" CE_SUBNET="test-subnet-$$" @@ -404,16 +342,15 @@ echo "" # =================================================================== # Cleanup # =================================================================== -echo "--- Cleanup ---" -cleanup_credential "$CRED_NAME" -echo " Cleaned up test credential: $CRED_NAME" +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +bash "$SCRIPT_DIR/clean-azure-batch-test-resources.sh" echo "" # =================================================================== # Summary # =================================================================== echo "============================================================" -echo " Results: $PASS passed, $FAIL failed, $SKIP skipped" +echo " Results: $PASS passed, $FAIL failed" echo "============================================================" if [[ $FAIL -gt 0 ]]; then From b95862f4da0c4783c6df95ba9ed8c2cf36f5c2ba Mon Sep 17 00:00:00 2001 From: ramonamela <25862624+ramonamela@users.noreply.github.com> Date: Mon, 13 Apr 2026 18:04:53 +0200 Subject: [PATCH 10/14] fix: register Azure Batch forge options and additional SDK models for GraalVM reflection Register AzBatchForgePlatform inner classes (HeadPoolOptions, WorkerPoolOptions, ManagedIdentityOptions), AzBatchManualPlatform.ManagedIdentityOptions, Azure Entra credential commands/providers, ManageCmd for pipeline versions, plus additional SDK 1.133.0 model classes (Role DTOs, GitHubAppSecurityKeys, DataStudio/Dataset update requests, AzBatchPoolConfig, ValidateUrl) exposed by the native Azure Batch integration tests. [COMP-1464] [graalvm] --- conf/reflect-config.json | 267 +++++++++++++++++++++++++++++++++------ 1 file changed, 230 insertions(+), 37 deletions(-) diff --git a/conf/reflect-config.json b/conf/reflect-config.json index ac0342bf..c0722d73 100644 --- a/conf/reflect-config.json +++ b/conf/reflect-config.json @@ -631,6 +631,21 @@ "allDeclaredMethods":true, "methods":[{"name":"","parameterTypes":[] }] }, +{ + "name":"io.seqera.tower.cli.commands.computeenvs.platforms.AzBatchForgePlatform$HeadPoolOptions", + "allDeclaredFields":true, + "queryAllDeclaredMethods":true +}, +{ + "name":"io.seqera.tower.cli.commands.computeenvs.platforms.AzBatchForgePlatform$ManagedIdentityOptions", + "allDeclaredFields":true, + "queryAllDeclaredMethods":true +}, +{ + "name":"io.seqera.tower.cli.commands.computeenvs.platforms.AzBatchForgePlatform$WorkerPoolOptions", + "allDeclaredFields":true, + "queryAllDeclaredMethods":true +}, { "name":"io.seqera.tower.cli.commands.computeenvs.platforms.AzBatchManualPlatform", "allDeclaredFields":true, @@ -643,6 +658,11 @@ "allDeclaredMethods":true, "methods":[{"name":"","parameterTypes":[] }] }, +{ + "name":"io.seqera.tower.cli.commands.computeenvs.platforms.AzBatchManualPlatform$ManagedIdentityOptions", + "allDeclaredFields":true, + "queryAllDeclaredMethods":true +}, { "name":"io.seqera.tower.cli.commands.computeenvs.platforms.AzCloudPlatform", "allDeclaredFields":true, @@ -838,6 +858,12 @@ "allDeclaredMethods":true, "methods":[{"name":"","parameterTypes":[] }] }, +{ + "name":"io.seqera.tower.cli.commands.credentials.add.AddAzureEntraCmd", + "allDeclaredFields":true, + "queryAllDeclaredMethods":true, + "methods":[{"name":"","parameterTypes":[] }] +}, { "name":"io.seqera.tower.cli.commands.credentials.add.AddBitbucketCmd", "allDeclaredFields":true, @@ -914,6 +940,12 @@ "allDeclaredMethods":true, "methods":[{"name":"","parameterTypes":[] }] }, +{ + "name":"io.seqera.tower.cli.commands.credentials.providers.AzureEntraProvider", + "allDeclaredFields":true, + "queryAllDeclaredMethods":true, + "methods":[{"name":"","parameterTypes":[] }] +}, { "name":"io.seqera.tower.cli.commands.credentials.providers.AzureProvider", "allDeclaredFields":true, @@ -1015,6 +1047,12 @@ "allDeclaredMethods":true, "methods":[{"name":"","parameterTypes":[] }] }, +{ + "name":"io.seqera.tower.cli.commands.credentials.update.UpdateAzureEntraCmd", + "allDeclaredFields":true, + "queryAllDeclaredMethods":true, + "methods":[{"name":"","parameterTypes":[] }] +}, { "name":"io.seqera.tower.cli.commands.credentials.update.UpdateBitbucketCmd", "allDeclaredFields":true, @@ -1517,6 +1555,18 @@ "queryAllDeclaredMethods":true, "methods":[{"name":"","parameterTypes":[] }] }, +{ + "name":"io.seqera.tower.cli.commands.pipelines.versions.ManageCmd", + "allDeclaredFields":true, + "queryAllDeclaredMethods":true, + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"io.seqera.tower.cli.commands.pipelines.versions.ManageCmd$ManageOptions", + "allDeclaredFields":true, + "queryAllDeclaredMethods":true, + "methods":[{"name":"","parameterTypes":[] }] +}, { "name":"io.seqera.tower.cli.commands.pipelines.versions.UpdateCmd", "allDeclaredFields":true, @@ -2666,7 +2716,7 @@ "allDeclaredFields":true, "queryAllDeclaredMethods":true, "queryAllDeclaredConstructors":true, - "methods":[{"name":"","parameterTypes":[] }, {"name":"addAllowBucketsItem","parameterTypes":["java.lang.String"] }, {"name":"addEnvironmentItem","parameterTypes":["io.seqera.tower.model.ConfigEnvVariable"] }, {"name":"addForgedResourcesItem","parameterTypes":["java.util.Map"] }, {"name":"addSecurityGroupsItem","parameterTypes":["java.lang.String"] }, {"name":"allowBuckets","parameterTypes":["java.util.List"] }, {"name":"arm64Enabled","parameterTypes":["java.lang.Boolean"] }, {"name":"ebsBootSize","parameterTypes":["java.lang.Integer"] }, {"name":"ec2KeyPair","parameterTypes":["java.lang.String"] }, {"name":"environment","parameterTypes":["java.util.List"] }, {"name":"equals","parameterTypes":["java.lang.Object"] }, {"name":"forgedResources","parameterTypes":["java.util.List"] }, {"name":"fusion2Enabled","parameterTypes":["java.lang.Boolean"] }, {"name":"getAllowBuckets","parameterTypes":[] }, {"name":"getArm64Enabled","parameterTypes":[] }, {"name":"getDiscriminator","parameterTypes":[] }, {"name":"getEbsBootSize","parameterTypes":[] }, {"name":"getEc2KeyPair","parameterTypes":[] }, {"name":"getEnvironment","parameterTypes":[] }, {"name":"getForgedResources","parameterTypes":[] }, {"name":"getFusion2Enabled","parameterTypes":[] }, {"name":"getGpuEnabled","parameterTypes":[] }, {"name":"getHeadJobOptions","parameterTypes":[] }, {"name":"getHostName","parameterTypes":[] }, {"name":"getImageId","parameterTypes":[] }, {"name":"getInstanceProfileArn","parameterTypes":[] }, {"name":"getInstanceType","parameterTypes":[] }, {"name":"getLaunchDir","parameterTypes":[] }, {"name":"getLogGroup","parameterTypes":[] }, {"name":"getMaxQueueSize","parameterTypes":[] }, {"name":"getNextflowConfig","parameterTypes":[] }, {"name":"getPort","parameterTypes":[] }, {"name":"getPostRunScript","parameterTypes":[] }, {"name":"getPreRunScript","parameterTypes":[] }, {"name":"getPropagateHeadJobOptions","parameterTypes":[] }, {"name":"getRegion","parameterTypes":[] }, {"name":"getSecurityGroups","parameterTypes":[] }, {"name":"getSubnetId","parameterTypes":[] }, {"name":"getUserName","parameterTypes":[] }, {"name":"getWaveEnabled","parameterTypes":[] }, {"name":"getWorkDir","parameterTypes":[] }, {"name":"gpuEnabled","parameterTypes":["java.lang.Boolean"] }, {"name":"hashCode","parameterTypes":[] }, {"name":"headJobOptions","parameterTypes":["java.lang.String"] }, {"name":"hostName","parameterTypes":["java.lang.String"] }, {"name":"imageId","parameterTypes":["java.lang.String"] }, {"name":"instanceProfileArn","parameterTypes":["java.lang.String"] }, {"name":"instanceType","parameterTypes":["java.lang.String"] }, {"name":"launchDir","parameterTypes":["java.lang.String"] }, {"name":"logGroup","parameterTypes":["java.lang.String"] }, {"name":"maxQueueSize","parameterTypes":["java.lang.Integer"] }, {"name":"nextflowConfig","parameterTypes":["java.lang.String"] }, {"name":"port","parameterTypes":["java.lang.Integer"] }, {"name":"postRunScript","parameterTypes":["java.lang.String"] }, {"name":"preRunScript","parameterTypes":["java.lang.String"] }, {"name":"propagateHeadJobOptions","parameterTypes":["java.lang.Boolean"] }, {"name":"region","parameterTypes":["java.lang.String"] }, {"name":"securityGroups","parameterTypes":["java.util.List"] }, {"name":"setAllowBuckets","parameterTypes":["java.util.List"] }, {"name":"setArm64Enabled","parameterTypes":["java.lang.Boolean"] }, {"name":"setEbsBootSize","parameterTypes":["java.lang.Integer"] }, {"name":"setEc2KeyPair","parameterTypes":["java.lang.String"] }, {"name":"setEnvironment","parameterTypes":["java.util.List"] }, {"name":"setForgedResources","parameterTypes":["java.util.List"] }, {"name":"setFusion2Enabled","parameterTypes":["java.lang.Boolean"] }, {"name":"setGpuEnabled","parameterTypes":["java.lang.Boolean"] }, {"name":"setHeadJobOptions","parameterTypes":["java.lang.String"] }, {"name":"setHostName","parameterTypes":["java.lang.String"] }, {"name":"setImageId","parameterTypes":["java.lang.String"] }, {"name":"setInstanceProfileArn","parameterTypes":["java.lang.String"] }, {"name":"setInstanceType","parameterTypes":["java.lang.String"] }, {"name":"setLaunchDir","parameterTypes":["java.lang.String"] }, {"name":"setLogGroup","parameterTypes":["java.lang.String"] }, {"name":"setMaxQueueSize","parameterTypes":["java.lang.Integer"] }, {"name":"setNextflowConfig","parameterTypes":["java.lang.String"] }, {"name":"setPort","parameterTypes":["java.lang.Integer"] }, {"name":"setPostRunScript","parameterTypes":["java.lang.String"] }, {"name":"setPreRunScript","parameterTypes":["java.lang.String"] }, {"name":"setPropagateHeadJobOptions","parameterTypes":["java.lang.Boolean"] }, {"name":"setRegion","parameterTypes":["java.lang.String"] }, {"name":"setSecurityGroups","parameterTypes":["java.util.List"] }, {"name":"setSubnetId","parameterTypes":["java.lang.String"] }, {"name":"setUserName","parameterTypes":["java.lang.String"] }, {"name":"setWaveEnabled","parameterTypes":["java.lang.Boolean"] }, {"name":"setWorkDir","parameterTypes":["java.lang.String"] }, {"name":"subnetId","parameterTypes":["java.lang.String"] }, {"name":"toIndentedString","parameterTypes":["java.lang.Object"] }, {"name":"toString","parameterTypes":[] }, {"name":"userName","parameterTypes":["java.lang.String"] }, {"name":"waveEnabled","parameterTypes":["java.lang.Boolean"] }, {"name":"workDir","parameterTypes":["java.lang.String"] }, {"name":"getSchedEnabled","parameterTypes":[] }, {"name":"schedEnabled","parameterTypes":["java.lang.Boolean"] }, {"name":"setSchedEnabled","parameterTypes":["java.lang.Boolean"] }] + "methods":[{"name":"","parameterTypes":[] }, {"name":"addAllowBucketsItem","parameterTypes":["java.lang.String"] }, {"name":"addEnvironmentItem","parameterTypes":["io.seqera.tower.model.ConfigEnvVariable"] }, {"name":"addForgedResourcesItem","parameterTypes":["java.util.Map"] }, {"name":"addSecurityGroupsItem","parameterTypes":["java.lang.String"] }, {"name":"allowBuckets","parameterTypes":["java.util.List"] }, {"name":"arm64Enabled","parameterTypes":["java.lang.Boolean"] }, {"name":"ebsBootSize","parameterTypes":["java.lang.Integer"] }, {"name":"ec2KeyPair","parameterTypes":["java.lang.String"] }, {"name":"environment","parameterTypes":["java.util.List"] }, {"name":"equals","parameterTypes":["java.lang.Object"] }, {"name":"forgedResources","parameterTypes":["java.util.List"] }, {"name":"fusion2Enabled","parameterTypes":["java.lang.Boolean"] }, {"name":"getAllowBuckets","parameterTypes":[] }, {"name":"getArm64Enabled","parameterTypes":[] }, {"name":"getDiscriminator","parameterTypes":[] }, {"name":"getEbsBootSize","parameterTypes":[] }, {"name":"getEc2KeyPair","parameterTypes":[] }, {"name":"getEnvironment","parameterTypes":[] }, {"name":"getForgedResources","parameterTypes":[] }, {"name":"getFusion2Enabled","parameterTypes":[] }, {"name":"getGpuEnabled","parameterTypes":[] }, {"name":"getHeadJobOptions","parameterTypes":[] }, {"name":"getHostName","parameterTypes":[] }, {"name":"getImageId","parameterTypes":[] }, {"name":"getInstanceProfileArn","parameterTypes":[] }, {"name":"getInstanceType","parameterTypes":[] }, {"name":"getLaunchDir","parameterTypes":[] }, {"name":"getLogGroup","parameterTypes":[] }, {"name":"getMaxQueueSize","parameterTypes":[] }, {"name":"getNextflowConfig","parameterTypes":[] }, {"name":"getPort","parameterTypes":[] }, {"name":"getPostRunScript","parameterTypes":[] }, {"name":"getPreRunScript","parameterTypes":[] }, {"name":"getPropagateHeadJobOptions","parameterTypes":[] }, {"name":"getRegion","parameterTypes":[] }, {"name":"getSchedEnabled","parameterTypes":[] }, {"name":"getSecurityGroups","parameterTypes":[] }, {"name":"getSubnetId","parameterTypes":[] }, {"name":"getUserName","parameterTypes":[] }, {"name":"getWaveEnabled","parameterTypes":[] }, {"name":"getWorkDir","parameterTypes":[] }, {"name":"gpuEnabled","parameterTypes":["java.lang.Boolean"] }, {"name":"hashCode","parameterTypes":[] }, {"name":"headJobOptions","parameterTypes":["java.lang.String"] }, {"name":"hostName","parameterTypes":["java.lang.String"] }, {"name":"imageId","parameterTypes":["java.lang.String"] }, {"name":"instanceProfileArn","parameterTypes":["java.lang.String"] }, {"name":"instanceType","parameterTypes":["java.lang.String"] }, {"name":"launchDir","parameterTypes":["java.lang.String"] }, {"name":"logGroup","parameterTypes":["java.lang.String"] }, {"name":"maxQueueSize","parameterTypes":["java.lang.Integer"] }, {"name":"nextflowConfig","parameterTypes":["java.lang.String"] }, {"name":"port","parameterTypes":["java.lang.Integer"] }, {"name":"postRunScript","parameterTypes":["java.lang.String"] }, {"name":"preRunScript","parameterTypes":["java.lang.String"] }, {"name":"propagateHeadJobOptions","parameterTypes":["java.lang.Boolean"] }, {"name":"region","parameterTypes":["java.lang.String"] }, {"name":"schedEnabled","parameterTypes":["java.lang.Boolean"] }, {"name":"securityGroups","parameterTypes":["java.util.List"] }, {"name":"setAllowBuckets","parameterTypes":["java.util.List"] }, {"name":"setArm64Enabled","parameterTypes":["java.lang.Boolean"] }, {"name":"setEbsBootSize","parameterTypes":["java.lang.Integer"] }, {"name":"setEc2KeyPair","parameterTypes":["java.lang.String"] }, {"name":"setEnvironment","parameterTypes":["java.util.List"] }, {"name":"setForgedResources","parameterTypes":["java.util.List"] }, {"name":"setFusion2Enabled","parameterTypes":["java.lang.Boolean"] }, {"name":"setGpuEnabled","parameterTypes":["java.lang.Boolean"] }, {"name":"setHeadJobOptions","parameterTypes":["java.lang.String"] }, {"name":"setHostName","parameterTypes":["java.lang.String"] }, {"name":"setImageId","parameterTypes":["java.lang.String"] }, {"name":"setInstanceProfileArn","parameterTypes":["java.lang.String"] }, {"name":"setInstanceType","parameterTypes":["java.lang.String"] }, {"name":"setLaunchDir","parameterTypes":["java.lang.String"] }, {"name":"setLogGroup","parameterTypes":["java.lang.String"] }, {"name":"setMaxQueueSize","parameterTypes":["java.lang.Integer"] }, {"name":"setNextflowConfig","parameterTypes":["java.lang.String"] }, {"name":"setPort","parameterTypes":["java.lang.Integer"] }, {"name":"setPostRunScript","parameterTypes":["java.lang.String"] }, {"name":"setPreRunScript","parameterTypes":["java.lang.String"] }, {"name":"setPropagateHeadJobOptions","parameterTypes":["java.lang.Boolean"] }, {"name":"setRegion","parameterTypes":["java.lang.String"] }, {"name":"setSchedEnabled","parameterTypes":["java.lang.Boolean"] }, {"name":"setSecurityGroups","parameterTypes":["java.util.List"] }, {"name":"setSubnetId","parameterTypes":["java.lang.String"] }, {"name":"setUserName","parameterTypes":["java.lang.String"] }, {"name":"setWaveEnabled","parameterTypes":["java.lang.Boolean"] }, {"name":"setWorkDir","parameterTypes":["java.lang.String"] }, {"name":"subnetId","parameterTypes":["java.lang.String"] }, {"name":"toIndentedString","parameterTypes":["java.lang.Object"] }, {"name":"toString","parameterTypes":[] }, {"name":"userName","parameterTypes":["java.lang.String"] }, {"name":"waveEnabled","parameterTypes":["java.lang.Boolean"] }, {"name":"workDir","parameterTypes":["java.lang.String"] }] }, { "name":"io.seqera.tower.model.AwsCloudPlatformMetainfo", @@ -2676,6 +2726,7 @@ }, { "name":"io.seqera.tower.model.AwsCredentialsMode", + "allDeclaredFields":true, "queryAllDeclaredMethods":true, "methods":[{"name":"$values","parameterTypes":[] }, {"name":"fromValue","parameterTypes":["java.lang.String"] }, {"name":"getValue","parameterTypes":[] }, {"name":"toString","parameterTypes":[] }, {"name":"valueOf","parameterTypes":["java.lang.String"] }, {"name":"values","parameterTypes":[] }] }, @@ -2684,21 +2735,21 @@ "allDeclaredFields":true, "allDeclaredMethods":true, "allDeclaredConstructors":true, - "methods":[{"name":"","parameterTypes":[] }, {"name":"accessKey","parameterTypes":["java.lang.String"] }, {"name":"assumeRoleArn","parameterTypes":["java.lang.String"] }, {"name":"discriminator","parameterTypes":["java.lang.String"] }, {"name":"equals","parameterTypes":["java.lang.Object"] }, {"name":"getAccessKey","parameterTypes":[] }, {"name":"getAssumeRoleArn","parameterTypes":[] }, {"name":"getDiscriminator","parameterTypes":[] }, {"name":"getSecretKey","parameterTypes":[] }, {"name":"hashCode","parameterTypes":[] }, {"name":"secretKey","parameterTypes":["java.lang.String"] }, {"name":"setAccessKey","parameterTypes":["java.lang.String"] }, {"name":"setAssumeRoleArn","parameterTypes":["java.lang.String"] }, {"name":"setDiscriminator","parameterTypes":["java.lang.String"] }, {"name":"setSecretKey","parameterTypes":["java.lang.String"] }, {"name":"toIndentedString","parameterTypes":["java.lang.Object"] }, {"name":"toString","parameterTypes":[] }] + "methods":[{"name":"","parameterTypes":[] }, {"name":"accessKey","parameterTypes":["java.lang.String"] }, {"name":"assumeRoleArn","parameterTypes":["java.lang.String"] }, {"name":"discriminator","parameterTypes":["java.lang.String"] }, {"name":"equals","parameterTypes":["java.lang.Object"] }, {"name":"externalId","parameterTypes":["java.lang.String"] }, {"name":"getAccessKey","parameterTypes":[] }, {"name":"getAssumeRoleArn","parameterTypes":[] }, {"name":"getDiscriminator","parameterTypes":[] }, {"name":"getExternalId","parameterTypes":[] }, {"name":"getMode","parameterTypes":[] }, {"name":"getSecretKey","parameterTypes":[] }, {"name":"hashCode","parameterTypes":[] }, {"name":"mode","parameterTypes":["io.seqera.tower.model.AwsCredentialsMode"] }, {"name":"secretKey","parameterTypes":["java.lang.String"] }, {"name":"setAccessKey","parameterTypes":["java.lang.String"] }, {"name":"setAssumeRoleArn","parameterTypes":["java.lang.String"] }, {"name":"setDiscriminator","parameterTypes":["java.lang.String"] }, {"name":"setExternalId","parameterTypes":["java.lang.String"] }, {"name":"setMode","parameterTypes":["io.seqera.tower.model.AwsCredentialsMode"] }, {"name":"setSecretKey","parameterTypes":["java.lang.String"] }, {"name":"toIndentedString","parameterTypes":["java.lang.Object"] }, {"name":"toString","parameterTypes":[] }] }, { "name":"io.seqera.tower.model.AzBatchConfig", "allDeclaredFields":true, "allDeclaredMethods":true, "allDeclaredConstructors":true, - "methods":[{"name":"","parameterTypes":[] }, {"name":"addEnvironmentItem","parameterTypes":["io.seqera.tower.model.ConfigEnvVariable"] }, {"name":"autoPoolMode","parameterTypes":["java.lang.Boolean"] }, {"name":"deleteJobsOnCompletion","parameterTypes":["io.seqera.tower.model.JobCleanupPolicy"] }, {"name":"deletePoolsOnCompletion","parameterTypes":["java.lang.Boolean"] }, {"name":"environment","parameterTypes":["java.util.List"] }, {"name":"equals","parameterTypes":["java.lang.Object"] }, {"name":"equalsNullable","parameterTypes":["org.openapitools.jackson.nullable.JsonNullable","org.openapitools.jackson.nullable.JsonNullable"] }, {"name":"forge","parameterTypes":["io.seqera.tower.model.AzBatchForgeConfig"] }, {"name":"fusion2Enabled","parameterTypes":["java.lang.Boolean"] }, {"name":"getAutoPoolMode","parameterTypes":[] }, {"name":"getDeleteJobsOnCompletion","parameterTypes":[] }, {"name":"getDeletePoolsOnCompletion","parameterTypes":[] }, {"name":"getDiscriminator","parameterTypes":[] }, {"name":"getEnvironment","parameterTypes":[] }, {"name":"getForge","parameterTypes":[] }, {"name":"getFusion2Enabled","parameterTypes":[] }, {"name":"getHeadJobOptions","parameterTypes":[] }, {"name":"getHeadPool","parameterTypes":[] }, {"name":"getHostName","parameterTypes":[] }, {"name":"getLaunchDir","parameterTypes":[] }, {"name":"getManagedIdentityClientId","parameterTypes":[] }, {"name":"getManagedIdentityClientId_JsonNullable","parameterTypes":[] }, {"name":"getMaxQueueSize","parameterTypes":[] }, {"name":"getNextflowConfig","parameterTypes":[] }, {"name":"getPort","parameterTypes":[] }, {"name":"getPostRunScript","parameterTypes":[] }, {"name":"getPreRunScript","parameterTypes":[] }, {"name":"getPropagateHeadJobOptions","parameterTypes":[] }, {"name":"getRegion","parameterTypes":[] }, {"name":"getTokenDuration","parameterTypes":[] }, {"name":"getUserName","parameterTypes":[] }, {"name":"getWaveEnabled","parameterTypes":[] }, {"name":"getWorkDir","parameterTypes":[] }, {"name":"hashCode","parameterTypes":[] }, {"name":"hashCodeNullable","parameterTypes":["org.openapitools.jackson.nullable.JsonNullable"] }, {"name":"headJobOptions","parameterTypes":["java.lang.String"] }, {"name":"headPool","parameterTypes":["java.lang.String"] }, {"name":"hostName","parameterTypes":["java.lang.String"] }, {"name":"launchDir","parameterTypes":["java.lang.String"] }, {"name":"managedIdentityClientId","parameterTypes":["java.lang.String"] }, {"name":"maxQueueSize","parameterTypes":["java.lang.Integer"] }, {"name":"nextflowConfig","parameterTypes":["java.lang.String"] }, {"name":"port","parameterTypes":["java.lang.Integer"] }, {"name":"postRunScript","parameterTypes":["java.lang.String"] }, {"name":"preRunScript","parameterTypes":["java.lang.String"] }, {"name":"propagateHeadJobOptions","parameterTypes":["java.lang.Boolean"] }, {"name":"region","parameterTypes":["java.lang.String"] }, {"name":"setAutoPoolMode","parameterTypes":["java.lang.Boolean"] }, {"name":"setDeleteJobsOnCompletion","parameterTypes":["io.seqera.tower.model.JobCleanupPolicy"] }, {"name":"setDeletePoolsOnCompletion","parameterTypes":["java.lang.Boolean"] }, {"name":"setEnvironment","parameterTypes":["java.util.List"] }, {"name":"setForge","parameterTypes":["io.seqera.tower.model.AzBatchForgeConfig"] }, {"name":"setFusion2Enabled","parameterTypes":["java.lang.Boolean"] }, {"name":"setHeadJobOptions","parameterTypes":["java.lang.String"] }, {"name":"setHeadPool","parameterTypes":["java.lang.String"] }, {"name":"setHostName","parameterTypes":["java.lang.String"] }, {"name":"setLaunchDir","parameterTypes":["java.lang.String"] }, {"name":"setManagedIdentityClientId","parameterTypes":["java.lang.String"] }, {"name":"setManagedIdentityClientId_JsonNullable","parameterTypes":["org.openapitools.jackson.nullable.JsonNullable"] }, {"name":"setMaxQueueSize","parameterTypes":["java.lang.Integer"] }, {"name":"setNextflowConfig","parameterTypes":["java.lang.String"] }, {"name":"setPort","parameterTypes":["java.lang.Integer"] }, {"name":"setPostRunScript","parameterTypes":["java.lang.String"] }, {"name":"setPreRunScript","parameterTypes":["java.lang.String"] }, {"name":"setPropagateHeadJobOptions","parameterTypes":["java.lang.Boolean"] }, {"name":"setRegion","parameterTypes":["java.lang.String"] }, {"name":"setTokenDuration","parameterTypes":["java.lang.String"] }, {"name":"setUserName","parameterTypes":["java.lang.String"] }, {"name":"setWaveEnabled","parameterTypes":["java.lang.Boolean"] }, {"name":"setWorkDir","parameterTypes":["java.lang.String"] }, {"name":"toIndentedString","parameterTypes":["java.lang.Object"] }, {"name":"toString","parameterTypes":[] }, {"name":"tokenDuration","parameterTypes":["java.lang.String"] }, {"name":"userName","parameterTypes":["java.lang.String"] }, {"name":"waveEnabled","parameterTypes":["java.lang.Boolean"] }, {"name":"workDir","parameterTypes":["java.lang.String"] }] + "methods":[{"name":"","parameterTypes":[] }, {"name":"addEnvironmentItem","parameterTypes":["io.seqera.tower.model.ConfigEnvVariable"] }, {"name":"autoPoolMode","parameterTypes":["java.lang.Boolean"] }, {"name":"deleteJobsOnCompletion","parameterTypes":["io.seqera.tower.model.JobCleanupPolicy"] }, {"name":"deleteJobsOnCompletion","parameterTypes":["java.lang.Boolean"] }, {"name":"deletePoolsOnCompletion","parameterTypes":["java.lang.Boolean"] }, {"name":"deleteTasksOnCompletion","parameterTypes":["java.lang.Boolean"] }, {"name":"environment","parameterTypes":["java.util.List"] }, {"name":"equals","parameterTypes":["java.lang.Object"] }, {"name":"equalsNullable","parameterTypes":["org.openapitools.jackson.nullable.JsonNullable","org.openapitools.jackson.nullable.JsonNullable"] }, {"name":"forge","parameterTypes":["io.seqera.tower.model.AzBatchForgeConfig"] }, {"name":"fusion2Enabled","parameterTypes":["java.lang.Boolean"] }, {"name":"getAutoPoolMode","parameterTypes":[] }, {"name":"getDeleteJobsOnCompletion","parameterTypes":[] }, {"name":"getDeleteJobsOnCompletion_JsonNullable","parameterTypes":[] }, {"name":"getDeletePoolsOnCompletion","parameterTypes":[] }, {"name":"getDeleteTasksOnCompletion","parameterTypes":[] }, {"name":"getDeleteTasksOnCompletion_JsonNullable","parameterTypes":[] }, {"name":"getDiscriminator","parameterTypes":[] }, {"name":"getEnvironment","parameterTypes":[] }, {"name":"getForge","parameterTypes":[] }, {"name":"getFusion2Enabled","parameterTypes":[] }, {"name":"getHeadJobOptions","parameterTypes":[] }, {"name":"getHeadPool","parameterTypes":[] }, {"name":"getHostName","parameterTypes":[] }, {"name":"getJobMaxWallClockTime","parameterTypes":[] }, {"name":"getJobMaxWallClockTime_JsonNullable","parameterTypes":[] }, {"name":"getLaunchDir","parameterTypes":[] }, {"name":"getManagedIdentityClientId","parameterTypes":[] }, {"name":"getManagedIdentityClientId_JsonNullable","parameterTypes":[] }, {"name":"getManagedIdentityHeadResourceId","parameterTypes":[] }, {"name":"getManagedIdentityHeadResourceId_JsonNullable","parameterTypes":[] }, {"name":"getManagedIdentityPoolClientId","parameterTypes":[] }, {"name":"getManagedIdentityPoolClientId_JsonNullable","parameterTypes":[] }, {"name":"getManagedIdentityPoolResourceId","parameterTypes":[] }, {"name":"getManagedIdentityPoolResourceId_JsonNullable","parameterTypes":[] }, {"name":"getMaxQueueSize","parameterTypes":[] }, {"name":"getNextflowConfig","parameterTypes":[] }, {"name":"getPort","parameterTypes":[] }, {"name":"getPostRunScript","parameterTypes":[] }, {"name":"getPreRunScript","parameterTypes":[] }, {"name":"getPropagateHeadJobOptions","parameterTypes":[] }, {"name":"getRegion","parameterTypes":[] }, {"name":"getSubnetId","parameterTypes":[] }, {"name":"getSubnetId_JsonNullable","parameterTypes":[] }, {"name":"getTerminateJobsOnCompletion","parameterTypes":[] }, {"name":"getTerminateJobsOnCompletion_JsonNullable","parameterTypes":[] }, {"name":"getTokenDuration","parameterTypes":[] }, {"name":"getUserName","parameterTypes":[] }, {"name":"getWaveEnabled","parameterTypes":[] }, {"name":"getWorkDir","parameterTypes":[] }, {"name":"getWorkerPool","parameterTypes":[] }, {"name":"hashCode","parameterTypes":[] }, {"name":"hashCodeNullable","parameterTypes":["org.openapitools.jackson.nullable.JsonNullable"] }, {"name":"headJobOptions","parameterTypes":["java.lang.String"] }, {"name":"headPool","parameterTypes":["java.lang.String"] }, {"name":"hostName","parameterTypes":["java.lang.String"] }, {"name":"jobMaxWallClockTime","parameterTypes":["java.lang.String"] }, {"name":"launchDir","parameterTypes":["java.lang.String"] }, {"name":"managedIdentityClientId","parameterTypes":["java.lang.String"] }, {"name":"managedIdentityHeadResourceId","parameterTypes":["java.lang.String"] }, {"name":"managedIdentityPoolClientId","parameterTypes":["java.lang.String"] }, {"name":"managedIdentityPoolResourceId","parameterTypes":["java.lang.String"] }, {"name":"maxQueueSize","parameterTypes":["java.lang.Integer"] }, {"name":"nextflowConfig","parameterTypes":["java.lang.String"] }, {"name":"port","parameterTypes":["java.lang.Integer"] }, {"name":"postRunScript","parameterTypes":["java.lang.String"] }, {"name":"preRunScript","parameterTypes":["java.lang.String"] }, {"name":"propagateHeadJobOptions","parameterTypes":["java.lang.Boolean"] }, {"name":"region","parameterTypes":["java.lang.String"] }, {"name":"setAutoPoolMode","parameterTypes":["java.lang.Boolean"] }, {"name":"setDeleteJobsOnCompletion","parameterTypes":["io.seqera.tower.model.JobCleanupPolicy"] }, {"name":"setDeleteJobsOnCompletion","parameterTypes":["java.lang.Boolean"] }, {"name":"setDeleteJobsOnCompletion_JsonNullable","parameterTypes":["org.openapitools.jackson.nullable.JsonNullable"] }, {"name":"setDeletePoolsOnCompletion","parameterTypes":["java.lang.Boolean"] }, {"name":"setDeleteTasksOnCompletion","parameterTypes":["java.lang.Boolean"] }, {"name":"setDeleteTasksOnCompletion_JsonNullable","parameterTypes":["org.openapitools.jackson.nullable.JsonNullable"] }, {"name":"setEnvironment","parameterTypes":["java.util.List"] }, {"name":"setForge","parameterTypes":["io.seqera.tower.model.AzBatchForgeConfig"] }, {"name":"setFusion2Enabled","parameterTypes":["java.lang.Boolean"] }, {"name":"setHeadJobOptions","parameterTypes":["java.lang.String"] }, {"name":"setHeadPool","parameterTypes":["java.lang.String"] }, {"name":"setHostName","parameterTypes":["java.lang.String"] }, {"name":"setJobMaxWallClockTime","parameterTypes":["java.lang.String"] }, {"name":"setJobMaxWallClockTime_JsonNullable","parameterTypes":["org.openapitools.jackson.nullable.JsonNullable"] }, {"name":"setLaunchDir","parameterTypes":["java.lang.String"] }, {"name":"setManagedIdentityClientId","parameterTypes":["java.lang.String"] }, {"name":"setManagedIdentityClientId_JsonNullable","parameterTypes":["org.openapitools.jackson.nullable.JsonNullable"] }, {"name":"setManagedIdentityHeadResourceId","parameterTypes":["java.lang.String"] }, {"name":"setManagedIdentityHeadResourceId_JsonNullable","parameterTypes":["org.openapitools.jackson.nullable.JsonNullable"] }, {"name":"setManagedIdentityPoolClientId","parameterTypes":["java.lang.String"] }, {"name":"setManagedIdentityPoolClientId_JsonNullable","parameterTypes":["org.openapitools.jackson.nullable.JsonNullable"] }, {"name":"setManagedIdentityPoolResourceId","parameterTypes":["java.lang.String"] }, {"name":"setManagedIdentityPoolResourceId_JsonNullable","parameterTypes":["org.openapitools.jackson.nullable.JsonNullable"] }, {"name":"setMaxQueueSize","parameterTypes":["java.lang.Integer"] }, {"name":"setNextflowConfig","parameterTypes":["java.lang.String"] }, {"name":"setPort","parameterTypes":["java.lang.Integer"] }, {"name":"setPostRunScript","parameterTypes":["java.lang.String"] }, {"name":"setPreRunScript","parameterTypes":["java.lang.String"] }, {"name":"setPropagateHeadJobOptions","parameterTypes":["java.lang.Boolean"] }, {"name":"setRegion","parameterTypes":["java.lang.String"] }, {"name":"setSubnetId","parameterTypes":["java.lang.String"] }, {"name":"setSubnetId_JsonNullable","parameterTypes":["org.openapitools.jackson.nullable.JsonNullable"] }, {"name":"setTerminateJobsOnCompletion","parameterTypes":["java.lang.Boolean"] }, {"name":"setTerminateJobsOnCompletion_JsonNullable","parameterTypes":["org.openapitools.jackson.nullable.JsonNullable"] }, {"name":"setTokenDuration","parameterTypes":["java.lang.String"] }, {"name":"setUserName","parameterTypes":["java.lang.String"] }, {"name":"setWaveEnabled","parameterTypes":["java.lang.Boolean"] }, {"name":"setWorkDir","parameterTypes":["java.lang.String"] }, {"name":"setWorkerPool","parameterTypes":["java.lang.String"] }, {"name":"subnetId","parameterTypes":["java.lang.String"] }, {"name":"terminateJobsOnCompletion","parameterTypes":["java.lang.Boolean"] }, {"name":"toIndentedString","parameterTypes":["java.lang.Object"] }, {"name":"toString","parameterTypes":[] }, {"name":"tokenDuration","parameterTypes":["java.lang.String"] }, {"name":"userName","parameterTypes":["java.lang.String"] }, {"name":"waveEnabled","parameterTypes":["java.lang.Boolean"] }, {"name":"workDir","parameterTypes":["java.lang.String"] }, {"name":"workerPool","parameterTypes":["java.lang.String"] }] }, { "name":"io.seqera.tower.model.AzBatchForgeConfig", "allDeclaredFields":true, "allDeclaredMethods":true, "allDeclaredConstructors":true, - "methods":[{"name":"","parameterTypes":[] }, {"name":"addContainerRegIdsItem","parameterTypes":["java.lang.String"] }, {"name":"autoScale","parameterTypes":["java.lang.Boolean"] }, {"name":"containerRegIds","parameterTypes":["java.util.List"] }, {"name":"disposeOnDeletion","parameterTypes":["java.lang.Boolean"] }, {"name":"equals","parameterTypes":["java.lang.Object"] }, {"name":"getAutoScale","parameterTypes":[] }, {"name":"getContainerRegIds","parameterTypes":[] }, {"name":"getDisposeOnDeletion","parameterTypes":[] }, {"name":"getVmCount","parameterTypes":[] }, {"name":"getVmType","parameterTypes":[] }, {"name":"hashCode","parameterTypes":[] }, {"name":"setAutoScale","parameterTypes":["java.lang.Boolean"] }, {"name":"setContainerRegIds","parameterTypes":["java.util.List"] }, {"name":"setDisposeOnDeletion","parameterTypes":["java.lang.Boolean"] }, {"name":"setVmCount","parameterTypes":["java.lang.Integer"] }, {"name":"setVmType","parameterTypes":["java.lang.String"] }, {"name":"toIndentedString","parameterTypes":["java.lang.Object"] }, {"name":"toString","parameterTypes":[] }, {"name":"vmCount","parameterTypes":["java.lang.Integer"] }, {"name":"vmType","parameterTypes":["java.lang.String"] }] + "methods":[{"name":"","parameterTypes":[] }, {"name":"addContainerRegIdsItem","parameterTypes":["java.lang.String"] }, {"name":"autoScale","parameterTypes":["java.lang.Boolean"] }, {"name":"containerRegIds","parameterTypes":["java.util.List"] }, {"name":"disposeOnDeletion","parameterTypes":["java.lang.Boolean"] }, {"name":"dualPoolConfig","parameterTypes":["java.lang.Boolean"] }, {"name":"equals","parameterTypes":["java.lang.Object"] }, {"name":"getAutoScale","parameterTypes":[] }, {"name":"getContainerRegIds","parameterTypes":[] }, {"name":"getDisposeOnDeletion","parameterTypes":[] }, {"name":"getDualPoolConfig","parameterTypes":[] }, {"name":"getHeadPool","parameterTypes":[] }, {"name":"getVmCount","parameterTypes":[] }, {"name":"getVmType","parameterTypes":[] }, {"name":"getWorkerPool","parameterTypes":[] }, {"name":"hashCode","parameterTypes":[] }, {"name":"headPool","parameterTypes":["io.seqera.tower.model.AzBatchPoolConfig"] }, {"name":"setAutoScale","parameterTypes":["java.lang.Boolean"] }, {"name":"setContainerRegIds","parameterTypes":["java.util.List"] }, {"name":"setDisposeOnDeletion","parameterTypes":["java.lang.Boolean"] }, {"name":"setDualPoolConfig","parameterTypes":["java.lang.Boolean"] }, {"name":"setHeadPool","parameterTypes":["io.seqera.tower.model.AzBatchPoolConfig"] }, {"name":"setVmCount","parameterTypes":["java.lang.Integer"] }, {"name":"setVmType","parameterTypes":["java.lang.String"] }, {"name":"setWorkerPool","parameterTypes":["io.seqera.tower.model.AzBatchPoolConfig"] }, {"name":"toIndentedString","parameterTypes":["java.lang.Object"] }, {"name":"toString","parameterTypes":[] }, {"name":"vmCount","parameterTypes":["java.lang.Integer"] }, {"name":"vmType","parameterTypes":["java.lang.String"] }, {"name":"workerPool","parameterTypes":["io.seqera.tower.model.AzBatchPoolConfig"] }] }, { "name":"io.seqera.tower.model.AzBatchPlatformMetainfo", @@ -2706,6 +2757,13 @@ "queryAllDeclaredConstructors":true, "methods":[{"name":"","parameterTypes":[] }, {"name":"addContainersItem","parameterTypes":["java.lang.String"] }, {"name":"addPoolsItem","parameterTypes":["java.lang.String"] }, {"name":"addVmTypesItem","parameterTypes":["java.lang.String"] }, {"name":"addWarningsItem","parameterTypes":["java.lang.String"] }, {"name":"containers","parameterTypes":["java.util.List"] }, {"name":"discriminator","parameterTypes":["java.lang.String"] }, {"name":"equals","parameterTypes":["java.lang.Object"] }, {"name":"getContainers","parameterTypes":[] }, {"name":"getDiscriminator","parameterTypes":[] }, {"name":"getPools","parameterTypes":[] }, {"name":"getVmTypes","parameterTypes":[] }, {"name":"getWarnings","parameterTypes":[] }, {"name":"hashCode","parameterTypes":[] }, {"name":"pools","parameterTypes":["java.util.List"] }, {"name":"setContainers","parameterTypes":["java.util.List"] }, {"name":"setDiscriminator","parameterTypes":["java.lang.String"] }, {"name":"setPools","parameterTypes":["java.util.List"] }, {"name":"setVmTypes","parameterTypes":["java.util.List"] }, {"name":"setWarnings","parameterTypes":["java.util.List"] }, {"name":"toIndentedString","parameterTypes":["java.lang.Object"] }, {"name":"toString","parameterTypes":[] }, {"name":"vmTypes","parameterTypes":["java.util.List"] }, {"name":"warnings","parameterTypes":["java.util.List"] }] }, +{ + "name":"io.seqera.tower.model.AzBatchPoolConfig", + "allDeclaredFields":true, + "queryAllDeclaredMethods":true, + "queryAllDeclaredConstructors":true, + "methods":[{"name":"","parameterTypes":[] }, {"name":"autoScale","parameterTypes":["java.lang.Boolean"] }, {"name":"equals","parameterTypes":["java.lang.Object"] }, {"name":"getAutoScale","parameterTypes":[] }, {"name":"getVmCount","parameterTypes":[] }, {"name":"getVmType","parameterTypes":[] }, {"name":"hashCode","parameterTypes":[] }, {"name":"setAutoScale","parameterTypes":["java.lang.Boolean"] }, {"name":"setVmCount","parameterTypes":["java.lang.Integer"] }, {"name":"setVmType","parameterTypes":["java.lang.String"] }, {"name":"toIndentedString","parameterTypes":["java.lang.Object"] }, {"name":"toString","parameterTypes":[] }, {"name":"vmCount","parameterTypes":["java.lang.Integer"] }, {"name":"vmType","parameterTypes":["java.lang.String"] }] +}, { "name":"io.seqera.tower.model.AzCloudConfig", "allDeclaredFields":true, @@ -2769,7 +2827,7 @@ "allDeclaredFields":true, "queryAllDeclaredMethods":true, "queryAllDeclaredConstructors":true, - "methods":[{"name":"fromValue","parameterTypes":["java.lang.String"] }, {"name":"getValue","parameterTypes":[] }, {"name":"toString","parameterTypes":[] }, {"name":"valueOf","parameterTypes":["java.lang.String"] }, {"name":"values","parameterTypes":[] }] + "methods":[{"name":"$values","parameterTypes":[] }, {"name":"fromValue","parameterTypes":["java.lang.String"] }, {"name":"getValue","parameterTypes":[] }, {"name":"toString","parameterTypes":[] }, {"name":"valueOf","parameterTypes":["java.lang.String"] }, {"name":"values","parameterTypes":[] }] }, { "name":"io.seqera.tower.model.CloudPriceModel", @@ -2797,7 +2855,7 @@ "allDeclaredFields":true, "allDeclaredMethods":true, "allDeclaredConstructors":true, - "methods":[{"name":"","parameterTypes":[] }, {"name":"","parameterTypes":["java.lang.Long","java.lang.Long","java.lang.String","java.time.OffsetDateTime","java.time.OffsetDateTime","java.time.OffsetDateTime","java.lang.Boolean","io.seqera.tower.model.ComputeEnvStatus","java.lang.Boolean"] }, {"name":"config","parameterTypes":["io.seqera.tower.model.ComputeConfig"] }, {"name":"credentialsId","parameterTypes":["java.lang.String"] }, {"name":"description","parameterTypes":["java.lang.String"] }, {"name":"equals","parameterTypes":["java.lang.Object"] }, {"name":"getConfig","parameterTypes":[] }, {"name":"getCredentialsId","parameterTypes":[] }, {"name":"getDateCreated","parameterTypes":[] }, {"name":"getDeleted","parameterTypes":[] }, {"name":"getDescription","parameterTypes":[] }, {"name":"getId","parameterTypes":[] }, {"name":"getLastUpdated","parameterTypes":[] }, {"name":"getLastUsed","parameterTypes":[] }, {"name":"getMessage","parameterTypes":[] }, {"name":"getName","parameterTypes":[] }, {"name":"getOrgId","parameterTypes":[] }, {"name":"getPlatform","parameterTypes":[] }, {"name":"getPrimary","parameterTypes":[] }, {"name":"getStatus","parameterTypes":[] }, {"name":"getWorkspaceId","parameterTypes":[] }, {"name":"hashCode","parameterTypes":[] }, {"name":"message","parameterTypes":["java.lang.String"] }, {"name":"name","parameterTypes":["java.lang.String"] }, {"name":"platform","parameterTypes":["io.seqera.tower.model.ComputeEnvComputeConfig$PlatformEnum"] }, {"name":"setConfig","parameterTypes":["io.seqera.tower.model.ComputeConfig"] }, {"name":"setCredentialsId","parameterTypes":["java.lang.String"] }, {"name":"setDescription","parameterTypes":["java.lang.String"] }, {"name":"setMessage","parameterTypes":["java.lang.String"] }, {"name":"setName","parameterTypes":["java.lang.String"] }, {"name":"setPlatform","parameterTypes":["io.seqera.tower.model.ComputeEnvComputeConfig$PlatformEnum"] }, {"name":"setStatus","parameterTypes":["io.seqera.tower.model.ComputeEnvStatus"] }, {"name":"status","parameterTypes":["io.seqera.tower.model.ComputeEnvStatus"] }, {"name":"toIndentedString","parameterTypes":["java.lang.Object"] }, {"name":"toString","parameterTypes":[] }] + "methods":[{"name":"","parameterTypes":[] }, {"name":"","parameterTypes":["java.lang.Long","java.lang.Long","java.lang.String","java.time.OffsetDateTime","java.time.OffsetDateTime","java.time.OffsetDateTime","java.lang.Boolean","io.seqera.tower.model.ComputeEnvStatus","java.lang.Boolean"] }, {"name":"","parameterTypes":["java.time.OffsetDateTime","java.lang.Boolean","java.lang.String","java.time.OffsetDateTime","java.time.OffsetDateTime","java.lang.Long","java.lang.Boolean","io.seqera.tower.model.ComputeEnvStatus","java.lang.Long"] }, {"name":"config","parameterTypes":["io.seqera.tower.model.ComputeConfig"] }, {"name":"credentialsId","parameterTypes":["java.lang.String"] }, {"name":"description","parameterTypes":["java.lang.String"] }, {"name":"equals","parameterTypes":["java.lang.Object"] }, {"name":"getConfig","parameterTypes":[] }, {"name":"getCredentialsId","parameterTypes":[] }, {"name":"getDateCreated","parameterTypes":[] }, {"name":"getDeleted","parameterTypes":[] }, {"name":"getDescription","parameterTypes":[] }, {"name":"getId","parameterTypes":[] }, {"name":"getLastUpdated","parameterTypes":[] }, {"name":"getLastUsed","parameterTypes":[] }, {"name":"getMessage","parameterTypes":[] }, {"name":"getName","parameterTypes":[] }, {"name":"getOrgId","parameterTypes":[] }, {"name":"getPlatform","parameterTypes":[] }, {"name":"getPrimary","parameterTypes":[] }, {"name":"getStatus","parameterTypes":[] }, {"name":"getWorkspaceId","parameterTypes":[] }, {"name":"hashCode","parameterTypes":[] }, {"name":"message","parameterTypes":["java.lang.String"] }, {"name":"name","parameterTypes":["java.lang.String"] }, {"name":"platform","parameterTypes":["io.seqera.tower.model.ComputeEnvComputeConfig$PlatformEnum"] }, {"name":"setConfig","parameterTypes":["io.seqera.tower.model.ComputeConfig"] }, {"name":"setCredentialsId","parameterTypes":["java.lang.String"] }, {"name":"setDescription","parameterTypes":["java.lang.String"] }, {"name":"setMessage","parameterTypes":["java.lang.String"] }, {"name":"setName","parameterTypes":["java.lang.String"] }, {"name":"setPlatform","parameterTypes":["io.seqera.tower.model.ComputeEnvComputeConfig$PlatformEnum"] }, {"name":"setStatus","parameterTypes":["io.seqera.tower.model.ComputeEnvStatus"] }, {"name":"status","parameterTypes":["io.seqera.tower.model.ComputeEnvStatus"] }, {"name":"toIndentedString","parameterTypes":["java.lang.Object"] }, {"name":"toString","parameterTypes":[] }] }, { "name":"io.seqera.tower.model.ComputeEnvComputeConfig$PlatformEnum", @@ -2951,7 +3009,7 @@ "allDeclaredFields":true, "queryAllDeclaredMethods":true, "queryAllDeclaredConstructors":true, - "methods":[{"name":"","parameterTypes":[] }, {"name":"description","parameterTypes":["java.lang.String"] }, {"name":"equals","parameterTypes":["java.lang.Object"] }, {"name":"getDescription","parameterTypes":[] }, {"name":"getName","parameterTypes":[] }, {"name":"hashCode","parameterTypes":[] }, {"name":"name","parameterTypes":["java.lang.String"] }, {"name":"setDescription","parameterTypes":["java.lang.String"] }, {"name":"setName","parameterTypes":["java.lang.String"] }, {"name":"toIndentedString","parameterTypes":["java.lang.Object"] }, {"name":"toString","parameterTypes":[] }, {"name":"getSourceType","parameterTypes":[] }, {"name":"setSourceType","parameterTypes":["io.seqera.tower.model.SourceType"] }, {"name":"sourceType","parameterTypes":["io.seqera.tower.model.SourceType"] }] + "methods":[{"name":"","parameterTypes":[] }, {"name":"description","parameterTypes":["java.lang.String"] }, {"name":"equals","parameterTypes":["java.lang.Object"] }, {"name":"getDescription","parameterTypes":[] }, {"name":"getName","parameterTypes":[] }, {"name":"getSourceType","parameterTypes":[] }, {"name":"hashCode","parameterTypes":[] }, {"name":"name","parameterTypes":["java.lang.String"] }, {"name":"setDescription","parameterTypes":["java.lang.String"] }, {"name":"setName","parameterTypes":["java.lang.String"] }, {"name":"setSourceType","parameterTypes":["io.seqera.tower.model.SourceType"] }, {"name":"sourceType","parameterTypes":["io.seqera.tower.model.SourceType"] }, {"name":"toIndentedString","parameterTypes":["java.lang.Object"] }, {"name":"toString","parameterTypes":[] }] }, { "name":"io.seqera.tower.model.CreateDatasetResponse", @@ -3073,6 +3131,18 @@ "queryAllDeclaredConstructors":true, "methods":[{"name":"","parameterTypes":[] }, {"name":"equals","parameterTypes":["java.lang.Object"] }, {"name":"getName","parameterTypes":[] }, {"name":"hashCode","parameterTypes":[] }, {"name":"name","parameterTypes":["java.lang.String"] }, {"name":"setName","parameterTypes":["java.lang.String"] }, {"name":"toIndentedString","parameterTypes":["java.lang.Object"] }, {"name":"toString","parameterTypes":[] }] }, +{ + "name":"io.seqera.tower.model.CreateRoleRequest", + "queryAllDeclaredMethods":true, + "queryAllDeclaredConstructors":true, + "methods":[{"name":"","parameterTypes":[] }, {"name":"addPermissionsItem","parameterTypes":["java.lang.String"] }, {"name":"description","parameterTypes":["java.lang.String"] }, {"name":"equals","parameterTypes":["java.lang.Object"] }, {"name":"getDescription","parameterTypes":[] }, {"name":"getName","parameterTypes":[] }, {"name":"getPermissions","parameterTypes":[] }, {"name":"hashCode","parameterTypes":[] }, {"name":"name","parameterTypes":["java.lang.String"] }, {"name":"permissions","parameterTypes":["java.util.List"] }, {"name":"setDescription","parameterTypes":["java.lang.String"] }, {"name":"setName","parameterTypes":["java.lang.String"] }, {"name":"setPermissions","parameterTypes":["java.util.List"] }, {"name":"toIndentedString","parameterTypes":["java.lang.Object"] }, {"name":"toString","parameterTypes":[] }] +}, +{ + "name":"io.seqera.tower.model.CreateRoleResponse", + "queryAllDeclaredMethods":true, + "queryAllDeclaredConstructors":true, + "methods":[{"name":"","parameterTypes":[] }, {"name":"addPermissionsItem","parameterTypes":["java.lang.String"] }, {"name":"description","parameterTypes":["java.lang.String"] }, {"name":"equals","parameterTypes":["java.lang.Object"] }, {"name":"getDescription","parameterTypes":[] }, {"name":"getName","parameterTypes":[] }, {"name":"getPermissions","parameterTypes":[] }, {"name":"hashCode","parameterTypes":[] }, {"name":"name","parameterTypes":["java.lang.String"] }, {"name":"permissions","parameterTypes":["java.util.List"] }, {"name":"setDescription","parameterTypes":["java.lang.String"] }, {"name":"setName","parameterTypes":["java.lang.String"] }, {"name":"setPermissions","parameterTypes":["java.util.List"] }, {"name":"toIndentedString","parameterTypes":["java.lang.Object"] }, {"name":"toString","parameterTypes":[] }] +}, { "name":"io.seqera.tower.model.CreateSshKeyRequest", "queryAllDeclaredMethods":true, @@ -3131,7 +3201,7 @@ "allDeclaredFields":true, "allDeclaredMethods":true, "allDeclaredConstructors":true, - "methods":[{"name":"","parameterTypes":[] }, {"name":"","parameterTypes":["java.lang.Boolean","java.time.OffsetDateTime","java.time.OffsetDateTime","java.time.OffsetDateTime"] }, {"name":"baseUrl","parameterTypes":["java.lang.String"] }, {"name":"category","parameterTypes":["java.lang.String"] }, {"name":"description","parameterTypes":["java.lang.String"] }, {"name":"equals","parameterTypes":["java.lang.Object"] }, {"name":"getBaseUrl","parameterTypes":[] }, {"name":"getCategory","parameterTypes":[] }, {"name":"getDateCreated","parameterTypes":[] }, {"name":"getDeleted","parameterTypes":[] }, {"name":"getDescription","parameterTypes":[] }, {"name":"getId","parameterTypes":[] }, {"name":"getKeys","parameterTypes":[] }, {"name":"getLastUpdated","parameterTypes":[] }, {"name":"getLastUsed","parameterTypes":[] }, {"name":"getName","parameterTypes":[] }, {"name":"getProvider","parameterTypes":[] }, {"name":"hashCode","parameterTypes":[] }, {"name":"id","parameterTypes":["java.lang.String"] }, {"name":"keys","parameterTypes":["io.seqera.tower.model.SecurityKeys"] }, {"name":"name","parameterTypes":["java.lang.String"] }, {"name":"provider","parameterTypes":["io.seqera.tower.model.Credentials$ProviderEnum"] }, {"name":"setBaseUrl","parameterTypes":["java.lang.String"] }, {"name":"setCategory","parameterTypes":["java.lang.String"] }, {"name":"setDescription","parameterTypes":["java.lang.String"] }, {"name":"setId","parameterTypes":["java.lang.String"] }, {"name":"setKeys","parameterTypes":["io.seqera.tower.model.SecurityKeys"] }, {"name":"setName","parameterTypes":["java.lang.String"] }, {"name":"setProvider","parameterTypes":["io.seqera.tower.model.Credentials$ProviderEnum"] }, {"name":"toIndentedString","parameterTypes":["java.lang.Object"] }, {"name":"toString","parameterTypes":[] }] + "methods":[{"name":"","parameterTypes":[] }, {"name":"","parameterTypes":["java.lang.Boolean","java.time.OffsetDateTime","java.time.OffsetDateTime","java.time.OffsetDateTime"] }, {"name":"","parameterTypes":["java.time.OffsetDateTime","java.lang.Boolean","java.time.OffsetDateTime","java.time.OffsetDateTime"] }, {"name":"baseUrl","parameterTypes":["java.lang.String"] }, {"name":"category","parameterTypes":["java.lang.String"] }, {"name":"description","parameterTypes":["java.lang.String"] }, {"name":"equals","parameterTypes":["java.lang.Object"] }, {"name":"getBaseUrl","parameterTypes":[] }, {"name":"getCategory","parameterTypes":[] }, {"name":"getDateCreated","parameterTypes":[] }, {"name":"getDeleted","parameterTypes":[] }, {"name":"getDescription","parameterTypes":[] }, {"name":"getId","parameterTypes":[] }, {"name":"getKeys","parameterTypes":[] }, {"name":"getLastUpdated","parameterTypes":[] }, {"name":"getLastUsed","parameterTypes":[] }, {"name":"getName","parameterTypes":[] }, {"name":"getProvider","parameterTypes":[] }, {"name":"hashCode","parameterTypes":[] }, {"name":"id","parameterTypes":["java.lang.String"] }, {"name":"keys","parameterTypes":["io.seqera.tower.model.SecurityKeys"] }, {"name":"name","parameterTypes":["java.lang.String"] }, {"name":"provider","parameterTypes":["io.seqera.tower.model.Credentials$ProviderEnum"] }, {"name":"setBaseUrl","parameterTypes":["java.lang.String"] }, {"name":"setCategory","parameterTypes":["java.lang.String"] }, {"name":"setDescription","parameterTypes":["java.lang.String"] }, {"name":"setId","parameterTypes":["java.lang.String"] }, {"name":"setKeys","parameterTypes":["io.seqera.tower.model.SecurityKeys"] }, {"name":"setName","parameterTypes":["java.lang.String"] }, {"name":"setProvider","parameterTypes":["io.seqera.tower.model.Credentials$ProviderEnum"] }, {"name":"toIndentedString","parameterTypes":["java.lang.Object"] }, {"name":"toString","parameterTypes":[] }] }, { "name":"io.seqera.tower.model.Credentials$ProviderEnum", @@ -3191,7 +3261,7 @@ "allDeclaredFields":true, "queryAllDeclaredMethods":true, "queryAllDeclaredConstructors":true, - "methods":[{"name":"","parameterTypes":[] }, {"name":"equals","parameterTypes":["java.lang.Object"] }, {"name":"getUrl","parameterTypes":[] }, {"name":"hashCode","parameterTypes":[] }, {"name":"setUrl","parameterTypes":["java.lang.String"] }, {"name":"toIndentedString","parameterTypes":["java.lang.Object"] }, {"name":"toString","parameterTypes":[] }, {"name":"url","parameterTypes":["java.lang.String"] }] + "methods":[{"name":"","parameterTypes":[] }, {"name":"equals","parameterTypes":["java.lang.Object"] }, {"name":"getResolvedMimeType","parameterTypes":[] }, {"name":"getResolvedPath","parameterTypes":[] }, {"name":"getUrl","parameterTypes":[] }, {"name":"getWarning","parameterTypes":[] }, {"name":"hashCode","parameterTypes":[] }, {"name":"resolvedMimeType","parameterTypes":["java.lang.String"] }, {"name":"resolvedPath","parameterTypes":["java.lang.String"] }, {"name":"setResolvedMimeType","parameterTypes":["java.lang.String"] }, {"name":"setResolvedPath","parameterTypes":["java.lang.String"] }, {"name":"setUrl","parameterTypes":["java.lang.String"] }, {"name":"setWarning","parameterTypes":["java.lang.String"] }, {"name":"toIndentedString","parameterTypes":["java.lang.Object"] }, {"name":"toString","parameterTypes":[] }, {"name":"url","parameterTypes":["java.lang.String"] }, {"name":"warning","parameterTypes":["java.lang.String"] }] }, { "name":"io.seqera.tower.model.DataLinkDto", @@ -3315,7 +3385,7 @@ "allDeclaredFields":true, "queryAllDeclaredMethods":true, "queryAllDeclaredConstructors":true, - "methods":[{"name":"","parameterTypes":[] }, {"name":"addMountDataItem","parameterTypes":["java.lang.String"] }, {"name":"condaEnvironment","parameterTypes":["java.lang.String"] }, {"name":"cpu","parameterTypes":["java.lang.Integer"] }, {"name":"environment","parameterTypes":["java.util.Map"] }, {"name":"equals","parameterTypes":["java.lang.Object"] }, {"name":"equalsNullable","parameterTypes":["org.openapitools.jackson.nullable.JsonNullable","org.openapitools.jackson.nullable.JsonNullable"] }, {"name":"getCondaEnvironment","parameterTypes":[] }, {"name":"getCpu","parameterTypes":[] }, {"name":"getEnvironment","parameterTypes":[] }, {"name":"getEnvironment_JsonNullable","parameterTypes":[] }, {"name":"getGpu","parameterTypes":[] }, {"name":"getLifespan","parameterTypes":[] }, {"name":"getLifespanHours","parameterTypes":[] }, {"name":"getMemory","parameterTypes":[] }, {"name":"getMountData","parameterTypes":[] }, {"name":"getSshEnabled","parameterTypes":[] }, {"name":"getSshEnabled_JsonNullable","parameterTypes":[] }, {"name":"gpu","parameterTypes":["java.lang.Integer"] }, {"name":"hashCode","parameterTypes":[] }, {"name":"hashCodeNullable","parameterTypes":["org.openapitools.jackson.nullable.JsonNullable"] }, {"name":"lifespanHours","parameterTypes":["java.lang.Integer"] }, {"name":"memory","parameterTypes":["java.lang.Integer"] }, {"name":"mountData","parameterTypes":["java.util.List"] }, {"name":"putEnvironmentItem","parameterTypes":["java.lang.String","java.lang.String"] }, {"name":"setCondaEnvironment","parameterTypes":["java.lang.String"] }, {"name":"setCpu","parameterTypes":["java.lang.Integer"] }, {"name":"setEnvironment","parameterTypes":["java.util.Map"] }, {"name":"setEnvironment_JsonNullable","parameterTypes":["org.openapitools.jackson.nullable.JsonNullable"] }, {"name":"setGpu","parameterTypes":["java.lang.Integer"] }, {"name":"setLifespan","parameterTypes":["java.lang.Integer"] }, {"name":"setLifespanHours","parameterTypes":["java.lang.Integer"] }, {"name":"setMemory","parameterTypes":["java.lang.Integer"] }, {"name":"setMountData","parameterTypes":["java.util.List"] }, {"name":"setSshEnabled","parameterTypes":["java.lang.Boolean"] }, {"name":"setSshEnabled_JsonNullable","parameterTypes":["org.openapitools.jackson.nullable.JsonNullable"] }, {"name":"sshEnabled","parameterTypes":["java.lang.Boolean"] }, {"name":"toIndentedString","parameterTypes":["java.lang.Object"] }, {"name":"toString","parameterTypes":[] }, {"name":"addMountDataV2Item","parameterTypes":["io.seqera.tower.model.MountData"] }, {"name":"getMountData_JsonNullable","parameterTypes":[] }, {"name":"getMountDataV2","parameterTypes":[] }, {"name":"getMountDataV2_JsonNullable","parameterTypes":[] }, {"name":"mountDataV2","parameterTypes":["java.util.List"] }, {"name":"setMountData_JsonNullable","parameterTypes":["org.openapitools.jackson.nullable.JsonNullable"] }, {"name":"setMountDataV2","parameterTypes":["java.util.List"] }, {"name":"setMountDataV2_JsonNullable","parameterTypes":["org.openapitools.jackson.nullable.JsonNullable"] }] + "methods":[{"name":"","parameterTypes":[] }, {"name":"addMountDataItem","parameterTypes":["java.lang.String"] }, {"name":"addMountDataV2Item","parameterTypes":["io.seqera.tower.model.MountData"] }, {"name":"condaEnvironment","parameterTypes":["java.lang.String"] }, {"name":"cpu","parameterTypes":["java.lang.Integer"] }, {"name":"environment","parameterTypes":["java.util.Map"] }, {"name":"equals","parameterTypes":["java.lang.Object"] }, {"name":"equalsNullable","parameterTypes":["org.openapitools.jackson.nullable.JsonNullable","org.openapitools.jackson.nullable.JsonNullable"] }, {"name":"getCondaEnvironment","parameterTypes":[] }, {"name":"getCpu","parameterTypes":[] }, {"name":"getEnvironment","parameterTypes":[] }, {"name":"getEnvironment_JsonNullable","parameterTypes":[] }, {"name":"getGpu","parameterTypes":[] }, {"name":"getLifespan","parameterTypes":[] }, {"name":"getLifespanHours","parameterTypes":[] }, {"name":"getMemory","parameterTypes":[] }, {"name":"getMountData","parameterTypes":[] }, {"name":"getMountDataV2","parameterTypes":[] }, {"name":"getMountDataV2_JsonNullable","parameterTypes":[] }, {"name":"getMountData_JsonNullable","parameterTypes":[] }, {"name":"getSshEnabled","parameterTypes":[] }, {"name":"getSshEnabled_JsonNullable","parameterTypes":[] }, {"name":"gpu","parameterTypes":["java.lang.Integer"] }, {"name":"hashCode","parameterTypes":[] }, {"name":"hashCodeNullable","parameterTypes":["org.openapitools.jackson.nullable.JsonNullable"] }, {"name":"lifespanHours","parameterTypes":["java.lang.Integer"] }, {"name":"memory","parameterTypes":["java.lang.Integer"] }, {"name":"mountData","parameterTypes":["java.util.List"] }, {"name":"mountDataV2","parameterTypes":["java.util.List"] }, {"name":"putEnvironmentItem","parameterTypes":["java.lang.String","java.lang.String"] }, {"name":"setCondaEnvironment","parameterTypes":["java.lang.String"] }, {"name":"setCpu","parameterTypes":["java.lang.Integer"] }, {"name":"setEnvironment","parameterTypes":["java.util.Map"] }, {"name":"setEnvironment_JsonNullable","parameterTypes":["org.openapitools.jackson.nullable.JsonNullable"] }, {"name":"setGpu","parameterTypes":["java.lang.Integer"] }, {"name":"setLifespan","parameterTypes":["java.lang.Integer"] }, {"name":"setLifespanHours","parameterTypes":["java.lang.Integer"] }, {"name":"setMemory","parameterTypes":["java.lang.Integer"] }, {"name":"setMountData","parameterTypes":["java.util.List"] }, {"name":"setMountDataV2","parameterTypes":["java.util.List"] }, {"name":"setMountDataV2_JsonNullable","parameterTypes":["org.openapitools.jackson.nullable.JsonNullable"] }, {"name":"setMountData_JsonNullable","parameterTypes":["org.openapitools.jackson.nullable.JsonNullable"] }, {"name":"setSshEnabled","parameterTypes":["java.lang.Boolean"] }, {"name":"setSshEnabled_JsonNullable","parameterTypes":["org.openapitools.jackson.nullable.JsonNullable"] }, {"name":"sshEnabled","parameterTypes":["java.lang.Boolean"] }, {"name":"toIndentedString","parameterTypes":["java.lang.Object"] }, {"name":"toString","parameterTypes":[] }] }, { "name":"io.seqera.tower.model.DataStudioCreateRequest", @@ -3441,6 +3511,12 @@ "queryAllDeclaredConstructors":true, "methods":[{"name":"","parameterTypes":[] }, {"name":"addTemplatesItem","parameterTypes":["io.seqera.tower.model.DataStudioTemplate"] }, {"name":"equals","parameterTypes":["java.lang.Object"] }, {"name":"getTemplates","parameterTypes":[] }, {"name":"getTotalSize","parameterTypes":[] }, {"name":"hashCode","parameterTypes":[] }, {"name":"setTemplates","parameterTypes":["java.util.List"] }, {"name":"setTotalSize","parameterTypes":["java.lang.Long"] }, {"name":"templates","parameterTypes":["java.util.List"] }, {"name":"toIndentedString","parameterTypes":["java.lang.Object"] }, {"name":"toString","parameterTypes":[] }, {"name":"totalSize","parameterTypes":["java.lang.Long"] }] }, +{ + "name":"io.seqera.tower.model.DataStudioUpdateRequest", + "queryAllDeclaredMethods":true, + "queryAllDeclaredConstructors":true, + "methods":[{"name":"","parameterTypes":[] }, {"name":"_configuration","parameterTypes":["io.seqera.tower.model.DataStudioConfiguration"] }, {"name":"addLabelIdsItem","parameterTypes":["java.lang.Long"] }, {"name":"description","parameterTypes":["java.lang.String"] }, {"name":"equals","parameterTypes":["java.lang.Object"] }, {"name":"equalsNullable","parameterTypes":["org.openapitools.jackson.nullable.JsonNullable","org.openapitools.jackson.nullable.JsonNullable"] }, {"name":"getConfiguration","parameterTypes":[] }, {"name":"getConfiguration_JsonNullable","parameterTypes":[] }, {"name":"getDescription","parameterTypes":[] }, {"name":"getDescription_JsonNullable","parameterTypes":[] }, {"name":"getLabelIds","parameterTypes":[] }, {"name":"getLabelIds_JsonNullable","parameterTypes":[] }, {"name":"getName","parameterTypes":[] }, {"name":"getName_JsonNullable","parameterTypes":[] }, {"name":"hashCode","parameterTypes":[] }, {"name":"hashCodeNullable","parameterTypes":["org.openapitools.jackson.nullable.JsonNullable"] }, {"name":"labelIds","parameterTypes":["java.util.List"] }, {"name":"name","parameterTypes":["java.lang.String"] }, {"name":"setConfiguration","parameterTypes":["io.seqera.tower.model.DataStudioConfiguration"] }, {"name":"setConfiguration_JsonNullable","parameterTypes":["org.openapitools.jackson.nullable.JsonNullable"] }, {"name":"setDescription","parameterTypes":["java.lang.String"] }, {"name":"setDescription_JsonNullable","parameterTypes":["org.openapitools.jackson.nullable.JsonNullable"] }, {"name":"setLabelIds","parameterTypes":["java.util.List"] }, {"name":"setLabelIds_JsonNullable","parameterTypes":["org.openapitools.jackson.nullable.JsonNullable"] }, {"name":"setName","parameterTypes":["java.lang.String"] }, {"name":"setName_JsonNullable","parameterTypes":["org.openapitools.jackson.nullable.JsonNullable"] }, {"name":"toIndentedString","parameterTypes":["java.lang.Object"] }, {"name":"toString","parameterTypes":[] }] +}, { "name":"io.seqera.tower.model.DataStudioVersionStatus", "allDeclaredFields":true, @@ -3452,13 +3528,18 @@ "name":"io.seqera.tower.model.DataStudioWorkspaceSettingsRequest", "queryAllDeclaredMethods":true, "queryAllDeclaredConstructors":true, - "methods":[{"name":"","parameterTypes":[] }, {"name":"containerRepository","parameterTypes":["java.lang.String"] }, {"name":"equals","parameterTypes":["java.lang.Object"] }, {"name":"equalsNullable","parameterTypes":["org.openapitools.jackson.nullable.JsonNullable","org.openapitools.jackson.nullable.JsonNullable"] }, {"name":"getContainerRepository","parameterTypes":[] }, {"name":"getContainerRepository_JsonNullable","parameterTypes":[] }, {"name":"getLifespanHours","parameterTypes":[] }, {"name":"getPrivateStudioByDefault","parameterTypes":[] }, {"name":"hashCode","parameterTypes":[] }, {"name":"hashCodeNullable","parameterTypes":["org.openapitools.jackson.nullable.JsonNullable"] }, {"name":"lifespanHours","parameterTypes":["java.lang.Integer"] }, {"name":"privateStudioByDefault","parameterTypes":["java.lang.Boolean"] }, {"name":"setContainerRepository","parameterTypes":["java.lang.String"] }, {"name":"setContainerRepository_JsonNullable","parameterTypes":["org.openapitools.jackson.nullable.JsonNullable"] }, {"name":"setLifespanHours","parameterTypes":["java.lang.Integer"] }, {"name":"setPrivateStudioByDefault","parameterTypes":["java.lang.Boolean"] }, {"name":"toIndentedString","parameterTypes":["java.lang.Object"] }, {"name":"toString","parameterTypes":[] }] + "methods":[{"name":"","parameterTypes":[] }, {"name":"containerRepository","parameterTypes":["java.lang.String"] }, {"name":"equals","parameterTypes":["java.lang.Object"] }, {"name":"equalsNullable","parameterTypes":["org.openapitools.jackson.nullable.JsonNullable","org.openapitools.jackson.nullable.JsonNullable"] }, {"name":"getContainerRepository","parameterTypes":[] }, {"name":"getContainerRepository_JsonNullable","parameterTypes":[] }, {"name":"getLifespanHours","parameterTypes":[] }, {"name":"getNameStrategy","parameterTypes":[] }, {"name":"getNameStrategy_JsonNullable","parameterTypes":[] }, {"name":"getPrivateStudioByDefault","parameterTypes":[] }, {"name":"hashCode","parameterTypes":[] }, {"name":"hashCodeNullable","parameterTypes":["org.openapitools.jackson.nullable.JsonNullable"] }, {"name":"lifespanHours","parameterTypes":["java.lang.Integer"] }, {"name":"nameStrategy","parameterTypes":["io.seqera.tower.model.DataStudioWorkspaceSettingsRequest$NameStrategyEnum"] }, {"name":"privateStudioByDefault","parameterTypes":["java.lang.Boolean"] }, {"name":"setContainerRepository","parameterTypes":["java.lang.String"] }, {"name":"setContainerRepository_JsonNullable","parameterTypes":["org.openapitools.jackson.nullable.JsonNullable"] }, {"name":"setLifespanHours","parameterTypes":["java.lang.Integer"] }, {"name":"setNameStrategy","parameterTypes":["io.seqera.tower.model.DataStudioWorkspaceSettingsRequest$NameStrategyEnum"] }, {"name":"setNameStrategy_JsonNullable","parameterTypes":["org.openapitools.jackson.nullable.JsonNullable"] }, {"name":"setPrivateStudioByDefault","parameterTypes":["java.lang.Boolean"] }, {"name":"toIndentedString","parameterTypes":["java.lang.Object"] }, {"name":"toString","parameterTypes":[] }] +}, +{ + "name":"io.seqera.tower.model.DataStudioWorkspaceSettingsRequest$NameStrategyEnum", + "queryAllDeclaredMethods":true, + "methods":[{"name":"$values","parameterTypes":[] }, {"name":"fromValue","parameterTypes":["java.lang.String"] }, {"name":"getValue","parameterTypes":[] }, {"name":"toString","parameterTypes":[] }, {"name":"valueOf","parameterTypes":["java.lang.String"] }, {"name":"values","parameterTypes":[] }] }, { "name":"io.seqera.tower.model.DataStudioWorkspaceSettingsResponse", "queryAllDeclaredMethods":true, "queryAllDeclaredConstructors":true, - "methods":[{"name":"","parameterTypes":[] }, {"name":"containerRepository","parameterTypes":["java.lang.String"] }, {"name":"equals","parameterTypes":["java.lang.Object"] }, {"name":"equalsNullable","parameterTypes":["org.openapitools.jackson.nullable.JsonNullable","org.openapitools.jackson.nullable.JsonNullable"] }, {"name":"getContainerRepository","parameterTypes":[] }, {"name":"getContainerRepository_JsonNullable","parameterTypes":[] }, {"name":"getLifespanHours","parameterTypes":[] }, {"name":"getOrgId","parameterTypes":[] }, {"name":"getPrivateStudioByDefault","parameterTypes":[] }, {"name":"getWspId","parameterTypes":[] }, {"name":"hashCode","parameterTypes":[] }, {"name":"hashCodeNullable","parameterTypes":["org.openapitools.jackson.nullable.JsonNullable"] }, {"name":"lifespanHours","parameterTypes":["java.lang.Integer"] }, {"name":"orgId","parameterTypes":["java.lang.Long"] }, {"name":"privateStudioByDefault","parameterTypes":["java.lang.Boolean"] }, {"name":"setContainerRepository","parameterTypes":["java.lang.String"] }, {"name":"setContainerRepository_JsonNullable","parameterTypes":["org.openapitools.jackson.nullable.JsonNullable"] }, {"name":"setLifespanHours","parameterTypes":["java.lang.Integer"] }, {"name":"setOrgId","parameterTypes":["java.lang.Long"] }, {"name":"setPrivateStudioByDefault","parameterTypes":["java.lang.Boolean"] }, {"name":"setWspId","parameterTypes":["java.lang.Long"] }, {"name":"toIndentedString","parameterTypes":["java.lang.Object"] }, {"name":"toString","parameterTypes":[] }, {"name":"wspId","parameterTypes":["java.lang.Long"] }] + "methods":[{"name":"","parameterTypes":[] }, {"name":"containerRepository","parameterTypes":["java.lang.String"] }, {"name":"equals","parameterTypes":["java.lang.Object"] }, {"name":"equalsNullable","parameterTypes":["org.openapitools.jackson.nullable.JsonNullable","org.openapitools.jackson.nullable.JsonNullable"] }, {"name":"getContainerRepository","parameterTypes":[] }, {"name":"getContainerRepository_JsonNullable","parameterTypes":[] }, {"name":"getLifespanHours","parameterTypes":[] }, {"name":"getNameStrategy","parameterTypes":[] }, {"name":"getNameStrategy_JsonNullable","parameterTypes":[] }, {"name":"getOrgId","parameterTypes":[] }, {"name":"getPrivateStudioByDefault","parameterTypes":[] }, {"name":"getWspId","parameterTypes":[] }, {"name":"hashCode","parameterTypes":[] }, {"name":"hashCodeNullable","parameterTypes":["org.openapitools.jackson.nullable.JsonNullable"] }, {"name":"lifespanHours","parameterTypes":["java.lang.Integer"] }, {"name":"nameStrategy","parameterTypes":["java.lang.String"] }, {"name":"orgId","parameterTypes":["java.lang.Long"] }, {"name":"privateStudioByDefault","parameterTypes":["java.lang.Boolean"] }, {"name":"setContainerRepository","parameterTypes":["java.lang.String"] }, {"name":"setContainerRepository_JsonNullable","parameterTypes":["org.openapitools.jackson.nullable.JsonNullable"] }, {"name":"setLifespanHours","parameterTypes":["java.lang.Integer"] }, {"name":"setNameStrategy","parameterTypes":["java.lang.String"] }, {"name":"setNameStrategy_JsonNullable","parameterTypes":["org.openapitools.jackson.nullable.JsonNullable"] }, {"name":"setOrgId","parameterTypes":["java.lang.Long"] }, {"name":"setPrivateStudioByDefault","parameterTypes":["java.lang.Boolean"] }, {"name":"setWspId","parameterTypes":["java.lang.Long"] }, {"name":"toIndentedString","parameterTypes":["java.lang.Object"] }, {"name":"toString","parameterTypes":[] }, {"name":"wspId","parameterTypes":["java.lang.Long"] }] }, { "name":"io.seqera.tower.model.Dataset", @@ -3472,7 +3553,13 @@ "allDeclaredFields":true, "queryAllDeclaredMethods":true, "queryAllDeclaredConstructors":true, - "methods":[{"name":"","parameterTypes":[] }, {"name":"addLabelsItem","parameterTypes":["io.seqera.tower.model.LabelDbDto"] }, {"name":"dateCreated","parameterTypes":["java.time.OffsetDateTime"] }, {"name":"deleted","parameterTypes":["java.lang.Boolean"] }, {"name":"description","parameterTypes":["java.lang.String"] }, {"name":"equals","parameterTypes":["java.lang.Object"] }, {"name":"getDateCreated","parameterTypes":[] }, {"name":"getDeleted","parameterTypes":[] }, {"name":"getDescription","parameterTypes":[] }, {"name":"getHidden","parameterTypes":[] }, {"name":"getId","parameterTypes":[] }, {"name":"getLabels","parameterTypes":[] }, {"name":"getLastUpdated","parameterTypes":[] }, {"name":"getLastUpdatedBy","parameterTypes":[] }, {"name":"getMediaType","parameterTypes":[] }, {"name":"getName","parameterTypes":[] }, {"name":"getOrganizationId","parameterTypes":[] }, {"name":"getRunsInfo","parameterTypes":[] }, {"name":"getUser","parameterTypes":[] }, {"name":"getVersion","parameterTypes":[] }, {"name":"getWorkspaceId","parameterTypes":[] }, {"name":"hashCode","parameterTypes":[] }, {"name":"hidden","parameterTypes":["java.lang.Boolean"] }, {"name":"id","parameterTypes":["java.lang.String"] }, {"name":"labels","parameterTypes":["java.util.List"] }, {"name":"lastUpdated","parameterTypes":["java.time.OffsetDateTime"] }, {"name":"lastUpdatedBy","parameterTypes":["io.seqera.tower.model.UserInfo"] }, {"name":"mediaType","parameterTypes":["java.lang.String"] }, {"name":"name","parameterTypes":["java.lang.String"] }, {"name":"organizationId","parameterTypes":["java.lang.Long"] }, {"name":"runsInfo","parameterTypes":["io.seqera.tower.model.DatasetRunsInfo"] }, {"name":"setDateCreated","parameterTypes":["java.time.OffsetDateTime"] }, {"name":"setDeleted","parameterTypes":["java.lang.Boolean"] }, {"name":"setDescription","parameterTypes":["java.lang.String"] }, {"name":"setHidden","parameterTypes":["java.lang.Boolean"] }, {"name":"setId","parameterTypes":["java.lang.String"] }, {"name":"setLabels","parameterTypes":["java.util.List"] }, {"name":"setLastUpdated","parameterTypes":["java.time.OffsetDateTime"] }, {"name":"setLastUpdatedBy","parameterTypes":["io.seqera.tower.model.UserInfo"] }, {"name":"setMediaType","parameterTypes":["java.lang.String"] }, {"name":"setName","parameterTypes":["java.lang.String"] }, {"name":"setOrganizationId","parameterTypes":["java.lang.Long"] }, {"name":"setRunsInfo","parameterTypes":["io.seqera.tower.model.DatasetRunsInfo"] }, {"name":"setUser","parameterTypes":["io.seqera.tower.model.UserInfo"] }, {"name":"setVersion","parameterTypes":["java.lang.Long"] }, {"name":"setWorkspaceId","parameterTypes":["java.lang.Long"] }, {"name":"toIndentedString","parameterTypes":["java.lang.Object"] }, {"name":"toString","parameterTypes":[] }, {"name":"user","parameterTypes":["io.seqera.tower.model.UserInfo"] }, {"name":"version","parameterTypes":["java.lang.Long"] }, {"name":"workspaceId","parameterTypes":["java.lang.Long"] }, {"name":"getSourceType","parameterTypes":[] }, {"name":"setSourceType","parameterTypes":["io.seqera.tower.model.SourceType"] }, {"name":"sourceType","parameterTypes":["io.seqera.tower.model.SourceType"] }] + "methods":[{"name":"","parameterTypes":[] }, {"name":"addLabelsItem","parameterTypes":["io.seqera.tower.model.LabelDbDto"] }, {"name":"dateCreated","parameterTypes":["java.time.OffsetDateTime"] }, {"name":"deleted","parameterTypes":["java.lang.Boolean"] }, {"name":"description","parameterTypes":["java.lang.String"] }, {"name":"equals","parameterTypes":["java.lang.Object"] }, {"name":"getDateCreated","parameterTypes":[] }, {"name":"getDeleted","parameterTypes":[] }, {"name":"getDescription","parameterTypes":[] }, {"name":"getHidden","parameterTypes":[] }, {"name":"getId","parameterTypes":[] }, {"name":"getLabels","parameterTypes":[] }, {"name":"getLastUpdated","parameterTypes":[] }, {"name":"getLastUpdatedBy","parameterTypes":[] }, {"name":"getMediaType","parameterTypes":[] }, {"name":"getName","parameterTypes":[] }, {"name":"getOrganizationId","parameterTypes":[] }, {"name":"getRunsInfo","parameterTypes":[] }, {"name":"getSourceType","parameterTypes":[] }, {"name":"getUser","parameterTypes":[] }, {"name":"getVersion","parameterTypes":[] }, {"name":"getWorkspaceId","parameterTypes":[] }, {"name":"hashCode","parameterTypes":[] }, {"name":"hidden","parameterTypes":["java.lang.Boolean"] }, {"name":"id","parameterTypes":["java.lang.String"] }, {"name":"labels","parameterTypes":["java.util.List"] }, {"name":"lastUpdated","parameterTypes":["java.time.OffsetDateTime"] }, {"name":"lastUpdatedBy","parameterTypes":["io.seqera.tower.model.UserInfo"] }, {"name":"mediaType","parameterTypes":["java.lang.String"] }, {"name":"name","parameterTypes":["java.lang.String"] }, {"name":"organizationId","parameterTypes":["java.lang.Long"] }, {"name":"runsInfo","parameterTypes":["io.seqera.tower.model.DatasetRunsInfo"] }, {"name":"setDateCreated","parameterTypes":["java.time.OffsetDateTime"] }, {"name":"setDeleted","parameterTypes":["java.lang.Boolean"] }, {"name":"setDescription","parameterTypes":["java.lang.String"] }, {"name":"setHidden","parameterTypes":["java.lang.Boolean"] }, {"name":"setId","parameterTypes":["java.lang.String"] }, {"name":"setLabels","parameterTypes":["java.util.List"] }, {"name":"setLastUpdated","parameterTypes":["java.time.OffsetDateTime"] }, {"name":"setLastUpdatedBy","parameterTypes":["io.seqera.tower.model.UserInfo"] }, {"name":"setMediaType","parameterTypes":["java.lang.String"] }, {"name":"setName","parameterTypes":["java.lang.String"] }, {"name":"setOrganizationId","parameterTypes":["java.lang.Long"] }, {"name":"setRunsInfo","parameterTypes":["io.seqera.tower.model.DatasetRunsInfo"] }, {"name":"setSourceType","parameterTypes":["io.seqera.tower.model.SourceType"] }, {"name":"setUser","parameterTypes":["io.seqera.tower.model.UserInfo"] }, {"name":"setVersion","parameterTypes":["java.lang.Long"] }, {"name":"setWorkspaceId","parameterTypes":["java.lang.Long"] }, {"name":"sourceType","parameterTypes":["io.seqera.tower.model.SourceType"] }, {"name":"toIndentedString","parameterTypes":["java.lang.Object"] }, {"name":"toString","parameterTypes":[] }, {"name":"user","parameterTypes":["io.seqera.tower.model.UserInfo"] }, {"name":"version","parameterTypes":["java.lang.Long"] }, {"name":"workspaceId","parameterTypes":["java.lang.Long"] }] +}, +{ + "name":"io.seqera.tower.model.DatasetPreviewResponse", + "queryAllDeclaredMethods":true, + "queryAllDeclaredConstructors":true, + "methods":[{"name":"","parameterTypes":[] }, {"name":"content","parameterTypes":["java.lang.String"] }, {"name":"equals","parameterTypes":["java.lang.Object"] }, {"name":"fileTooLarge","parameterTypes":["java.lang.Boolean"] }, {"name":"getContent","parameterTypes":[] }, {"name":"getFileTooLarge","parameterTypes":[] }, {"name":"getReachable","parameterTypes":[] }, {"name":"hashCode","parameterTypes":[] }, {"name":"reachable","parameterTypes":["java.lang.Boolean"] }, {"name":"setContent","parameterTypes":["java.lang.String"] }, {"name":"setFileTooLarge","parameterTypes":["java.lang.Boolean"] }, {"name":"setReachable","parameterTypes":["java.lang.Boolean"] }, {"name":"toIndentedString","parameterTypes":["java.lang.Object"] }, {"name":"toString","parameterTypes":[] }] }, { "name":"io.seqera.tower.model.DatasetQueryAttribute", @@ -3499,7 +3586,7 @@ "allDeclaredFields":true, "queryAllDeclaredMethods":true, "queryAllDeclaredConstructors":true, - "methods":[{"name":"","parameterTypes":[] }, {"name":"createdBy","parameterTypes":["io.seqera.tower.model.UserInfo"] }, {"name":"datasetDescription","parameterTypes":["java.lang.String"] }, {"name":"datasetId","parameterTypes":["java.lang.String"] }, {"name":"datasetName","parameterTypes":["java.lang.String"] }, {"name":"dateCreated","parameterTypes":["java.time.OffsetDateTime"] }, {"name":"disabled","parameterTypes":["java.lang.Boolean"] }, {"name":"equals","parameterTypes":["java.lang.Object"] }, {"name":"fileName","parameterTypes":["java.lang.String"] }, {"name":"getCreatedBy","parameterTypes":[] }, {"name":"getDatasetDescription","parameterTypes":[] }, {"name":"getDatasetId","parameterTypes":[] }, {"name":"getDatasetName","parameterTypes":[] }, {"name":"getDateCreated","parameterTypes":[] }, {"name":"getDisabled","parameterTypes":[] }, {"name":"getFileName","parameterTypes":[] }, {"name":"getHasHeader","parameterTypes":[] }, {"name":"getLastUpdated","parameterTypes":[] }, {"name":"getMediaType","parameterTypes":[] }, {"name":"getUrl","parameterTypes":[] }, {"name":"getVersion","parameterTypes":[] }, {"name":"getWorkspaceId","parameterTypes":[] }, {"name":"hasHeader","parameterTypes":["java.lang.Boolean"] }, {"name":"hashCode","parameterTypes":[] }, {"name":"lastUpdated","parameterTypes":["java.time.OffsetDateTime"] }, {"name":"mediaType","parameterTypes":["java.lang.String"] }, {"name":"setCreatedBy","parameterTypes":["io.seqera.tower.model.UserInfo"] }, {"name":"setDatasetDescription","parameterTypes":["java.lang.String"] }, {"name":"setDatasetId","parameterTypes":["java.lang.String"] }, {"name":"setDatasetName","parameterTypes":["java.lang.String"] }, {"name":"setDateCreated","parameterTypes":["java.time.OffsetDateTime"] }, {"name":"setDisabled","parameterTypes":["java.lang.Boolean"] }, {"name":"setFileName","parameterTypes":["java.lang.String"] }, {"name":"setHasHeader","parameterTypes":["java.lang.Boolean"] }, {"name":"setLastUpdated","parameterTypes":["java.time.OffsetDateTime"] }, {"name":"setMediaType","parameterTypes":["java.lang.String"] }, {"name":"setUrl","parameterTypes":["java.lang.String"] }, {"name":"setVersion","parameterTypes":["java.lang.Long"] }, {"name":"setWorkspaceId","parameterTypes":["java.lang.Long"] }, {"name":"toIndentedString","parameterTypes":["java.lang.Object"] }, {"name":"toString","parameterTypes":[] }, {"name":"url","parameterTypes":["java.lang.String"] }, {"name":"version","parameterTypes":["java.lang.Long"] }, {"name":"workspaceId","parameterTypes":["java.lang.Long"] }, {"name":"getLinkedSource","parameterTypes":[] }, {"name":"linkedSource","parameterTypes":["io.seqera.tower.model.LinkedSourceDto"] }, {"name":"setLinkedSource","parameterTypes":["io.seqera.tower.model.LinkedSourceDto"] }] + "methods":[{"name":"","parameterTypes":[] }, {"name":"createdBy","parameterTypes":["io.seqera.tower.model.UserInfo"] }, {"name":"datasetDescription","parameterTypes":["java.lang.String"] }, {"name":"datasetId","parameterTypes":["java.lang.String"] }, {"name":"datasetName","parameterTypes":["java.lang.String"] }, {"name":"dateCreated","parameterTypes":["java.time.OffsetDateTime"] }, {"name":"disabled","parameterTypes":["java.lang.Boolean"] }, {"name":"equals","parameterTypes":["java.lang.Object"] }, {"name":"fileName","parameterTypes":["java.lang.String"] }, {"name":"getCreatedBy","parameterTypes":[] }, {"name":"getDatasetDescription","parameterTypes":[] }, {"name":"getDatasetId","parameterTypes":[] }, {"name":"getDatasetName","parameterTypes":[] }, {"name":"getDateCreated","parameterTypes":[] }, {"name":"getDisabled","parameterTypes":[] }, {"name":"getFileName","parameterTypes":[] }, {"name":"getHasHeader","parameterTypes":[] }, {"name":"getLastUpdated","parameterTypes":[] }, {"name":"getLinkedSource","parameterTypes":[] }, {"name":"getMediaType","parameterTypes":[] }, {"name":"getUrl","parameterTypes":[] }, {"name":"getVersion","parameterTypes":[] }, {"name":"getWorkspaceId","parameterTypes":[] }, {"name":"hasHeader","parameterTypes":["java.lang.Boolean"] }, {"name":"hashCode","parameterTypes":[] }, {"name":"lastUpdated","parameterTypes":["java.time.OffsetDateTime"] }, {"name":"linkedSource","parameterTypes":["io.seqera.tower.model.LinkedSourceDto"] }, {"name":"mediaType","parameterTypes":["java.lang.String"] }, {"name":"setCreatedBy","parameterTypes":["io.seqera.tower.model.UserInfo"] }, {"name":"setDatasetDescription","parameterTypes":["java.lang.String"] }, {"name":"setDatasetId","parameterTypes":["java.lang.String"] }, {"name":"setDatasetName","parameterTypes":["java.lang.String"] }, {"name":"setDateCreated","parameterTypes":["java.time.OffsetDateTime"] }, {"name":"setDisabled","parameterTypes":["java.lang.Boolean"] }, {"name":"setFileName","parameterTypes":["java.lang.String"] }, {"name":"setHasHeader","parameterTypes":["java.lang.Boolean"] }, {"name":"setLastUpdated","parameterTypes":["java.time.OffsetDateTime"] }, {"name":"setLinkedSource","parameterTypes":["io.seqera.tower.model.LinkedSourceDto"] }, {"name":"setMediaType","parameterTypes":["java.lang.String"] }, {"name":"setUrl","parameterTypes":["java.lang.String"] }, {"name":"setVersion","parameterTypes":["java.lang.Long"] }, {"name":"setWorkspaceId","parameterTypes":["java.lang.Long"] }, {"name":"toIndentedString","parameterTypes":["java.lang.Object"] }, {"name":"toString","parameterTypes":[] }, {"name":"url","parameterTypes":["java.lang.String"] }, {"name":"version","parameterTypes":["java.lang.Long"] }, {"name":"workspaceId","parameterTypes":["java.lang.Long"] }] }, { "name":"io.seqera.tower.model.DefaultWorkflowEngineParameter", @@ -3628,6 +3715,12 @@ "queryAllDeclaredConstructors":true, "methods":[{"name":"","parameterTypes":[] }, {"name":"equals","parameterTypes":["java.lang.Object"] }, {"name":"getMetainfo","parameterTypes":[] }, {"name":"hashCode","parameterTypes":[] }, {"name":"metainfo","parameterTypes":["io.seqera.tower.model.PlatformMetainfo"] }, {"name":"setMetainfo","parameterTypes":["io.seqera.tower.model.PlatformMetainfo"] }, {"name":"toIndentedString","parameterTypes":["java.lang.Object"] }, {"name":"toString","parameterTypes":[] }] }, +{ + "name":"io.seqera.tower.model.DescribeRoleResponse", + "queryAllDeclaredMethods":true, + "queryAllDeclaredConstructors":true, + "methods":[{"name":"","parameterTypes":[] }, {"name":"equals","parameterTypes":["java.lang.Object"] }, {"name":"getRole","parameterTypes":[] }, {"name":"hashCode","parameterTypes":[] }, {"name":"role","parameterTypes":["io.seqera.tower.model.RoleDto"] }, {"name":"setRole","parameterTypes":["io.seqera.tower.model.RoleDto"] }, {"name":"toIndentedString","parameterTypes":["java.lang.Object"] }, {"name":"toString","parameterTypes":[] }] +}, { "name":"io.seqera.tower.model.DescribeSshKeyResponse", "queryAllDeclaredMethods":true, @@ -3753,6 +3846,12 @@ "allDeclaredConstructors":true, "methods":[{"name":"","parameterTypes":[] }, {"name":"addMetricsItem","parameterTypes":["io.seqera.tower.model.WorkflowMetrics"] }, {"name":"equals","parameterTypes":["java.lang.Object"] }, {"name":"getMetrics","parameterTypes":[] }, {"name":"hashCode","parameterTypes":[] }, {"name":"metrics","parameterTypes":["java.util.List"] }, {"name":"setMetrics","parameterTypes":["java.util.List"] }, {"name":"toIndentedString","parameterTypes":["java.lang.Object"] }, {"name":"toString","parameterTypes":[] }] }, +{ + "name":"io.seqera.tower.model.GitHubAppSecurityKeys", + "queryAllDeclaredMethods":true, + "queryAllDeclaredConstructors":true, + "methods":[{"name":"","parameterTypes":[] }, {"name":"appId","parameterTypes":["java.lang.String"] }, {"name":"clientId","parameterTypes":["java.lang.String"] }, {"name":"clientSecret","parameterTypes":["java.lang.String"] }, {"name":"discriminator","parameterTypes":["java.lang.String"] }, {"name":"equals","parameterTypes":["java.lang.Object"] }, {"name":"getAppId","parameterTypes":[] }, {"name":"getClientId","parameterTypes":[] }, {"name":"getClientSecret","parameterTypes":[] }, {"name":"getDiscriminator","parameterTypes":[] }, {"name":"getPrivateKey","parameterTypes":[] }, {"name":"getSlug","parameterTypes":[] }, {"name":"getWebhookSecret","parameterTypes":[] }, {"name":"hashCode","parameterTypes":[] }, {"name":"privateKey","parameterTypes":["java.lang.String"] }, {"name":"setAppId","parameterTypes":["java.lang.String"] }, {"name":"setClientId","parameterTypes":["java.lang.String"] }, {"name":"setClientSecret","parameterTypes":["java.lang.String"] }, {"name":"setDiscriminator","parameterTypes":["java.lang.String"] }, {"name":"setPrivateKey","parameterTypes":["java.lang.String"] }, {"name":"setSlug","parameterTypes":["java.lang.String"] }, {"name":"setWebhookSecret","parameterTypes":["java.lang.String"] }, {"name":"slug","parameterTypes":["java.lang.String"] }, {"name":"toIndentedString","parameterTypes":["java.lang.Object"] }, {"name":"toString","parameterTypes":[] }, {"name":"webhookSecret","parameterTypes":["java.lang.String"] }] +}, { "name":"io.seqera.tower.model.GitHubSecurityKeys", "allDeclaredFields":true, @@ -3813,7 +3912,7 @@ "allDeclaredFields":true, "queryAllDeclaredMethods":true, "queryAllDeclaredConstructors":true, - "methods":[{"name":"","parameterTypes":[] }, {"name":"addEnvironmentItem","parameterTypes":["io.seqera.tower.model.ConfigEnvVariable"] }, {"name":"bootDiskSizeGb","parameterTypes":["java.lang.Integer"] }, {"name":"computeJobsInstanceTemplate","parameterTypes":["java.lang.String"] }, {"name":"copyImage","parameterTypes":["java.lang.String"] }, {"name":"cpuPlatform","parameterTypes":["java.lang.String"] }, {"name":"debugMode","parameterTypes":["java.lang.Integer"] }, {"name":"environment","parameterTypes":["java.util.List"] }, {"name":"equals","parameterTypes":["java.lang.Object"] }, {"name":"fusion2Enabled","parameterTypes":["java.lang.Boolean"] }, {"name":"getBootDiskSizeGb","parameterTypes":[] }, {"name":"getComputeJobsInstanceTemplate","parameterTypes":[] }, {"name":"getCopyImage","parameterTypes":[] }, {"name":"getCpuPlatform","parameterTypes":[] }, {"name":"getDebugMode","parameterTypes":[] }, {"name":"getDiscriminator","parameterTypes":[] }, {"name":"getEnvironment","parameterTypes":[] }, {"name":"getFusion2Enabled","parameterTypes":[] }, {"name":"getHeadJobCpus","parameterTypes":[] }, {"name":"getHeadJobInstanceTemplate","parameterTypes":[] }, {"name":"getHeadJobMemoryMb","parameterTypes":[] }, {"name":"getHeadJobOptions","parameterTypes":[] }, {"name":"getHostName","parameterTypes":[] }, {"name":"getLabels","parameterTypes":[] }, {"name":"getLaunchDir","parameterTypes":[] }, {"name":"getLocation","parameterTypes":[] }, {"name":"getMachineType","parameterTypes":[] }, {"name":"getMaxQueueSize","parameterTypes":[] }, {"name":"getNetwork","parameterTypes":[] }, {"name":"getNextflowConfig","parameterTypes":[] }, {"name":"getNfsMount","parameterTypes":[] }, {"name":"getNfsTarget","parameterTypes":[] }, {"name":"getPort","parameterTypes":[] }, {"name":"getPostRunScript","parameterTypes":[] }, {"name":"getPreRunScript","parameterTypes":[] }, {"name":"getProjectId","parameterTypes":[] }, {"name":"getPropagateHeadJobOptions","parameterTypes":[] }, {"name":"getServiceAccount","parameterTypes":[] }, {"name":"getSpot","parameterTypes":[] }, {"name":"getSshDaemon","parameterTypes":[] }, {"name":"getSshImage","parameterTypes":[] }, {"name":"getSubnetwork","parameterTypes":[] }, {"name":"getUsePrivateAddress","parameterTypes":[] }, {"name":"getUserName","parameterTypes":[] }, {"name":"getWaveEnabled","parameterTypes":[] }, {"name":"getWorkDir","parameterTypes":[] }, {"name":"hashCode","parameterTypes":[] }, {"name":"headJobCpus","parameterTypes":["java.lang.Integer"] }, {"name":"headJobInstanceTemplate","parameterTypes":["java.lang.String"] }, {"name":"headJobMemoryMb","parameterTypes":["java.lang.Integer"] }, {"name":"headJobOptions","parameterTypes":["java.lang.String"] }, {"name":"hostName","parameterTypes":["java.lang.String"] }, {"name":"labels","parameterTypes":["java.util.Map"] }, {"name":"launchDir","parameterTypes":["java.lang.String"] }, {"name":"location","parameterTypes":["java.lang.String"] }, {"name":"machineType","parameterTypes":["java.lang.String"] }, {"name":"maxQueueSize","parameterTypes":["java.lang.Integer"] }, {"name":"network","parameterTypes":["java.lang.String"] }, {"name":"nextflowConfig","parameterTypes":["java.lang.String"] }, {"name":"nfsMount","parameterTypes":["java.lang.String"] }, {"name":"nfsTarget","parameterTypes":["java.lang.String"] }, {"name":"port","parameterTypes":["java.lang.Integer"] }, {"name":"postRunScript","parameterTypes":["java.lang.String"] }, {"name":"preRunScript","parameterTypes":["java.lang.String"] }, {"name":"projectId","parameterTypes":["java.lang.String"] }, {"name":"propagateHeadJobOptions","parameterTypes":["java.lang.Boolean"] }, {"name":"putLabelsItem","parameterTypes":["java.lang.String","java.lang.String"] }, {"name":"serviceAccount","parameterTypes":["java.lang.String"] }, {"name":"setBootDiskSizeGb","parameterTypes":["java.lang.Integer"] }, {"name":"setComputeJobsInstanceTemplate","parameterTypes":["java.lang.String"] }, {"name":"setCopyImage","parameterTypes":["java.lang.String"] }, {"name":"setCpuPlatform","parameterTypes":["java.lang.String"] }, {"name":"setDebugMode","parameterTypes":["java.lang.Integer"] }, {"name":"setEnvironment","parameterTypes":["java.util.List"] }, {"name":"setFusion2Enabled","parameterTypes":["java.lang.Boolean"] }, {"name":"setHeadJobCpus","parameterTypes":["java.lang.Integer"] }, {"name":"setHeadJobInstanceTemplate","parameterTypes":["java.lang.String"] }, {"name":"setHeadJobMemoryMb","parameterTypes":["java.lang.Integer"] }, {"name":"setHeadJobOptions","parameterTypes":["java.lang.String"] }, {"name":"setHostName","parameterTypes":["java.lang.String"] }, {"name":"setLabels","parameterTypes":["java.util.Map"] }, {"name":"setLaunchDir","parameterTypes":["java.lang.String"] }, {"name":"setLocation","parameterTypes":["java.lang.String"] }, {"name":"setMachineType","parameterTypes":["java.lang.String"] }, {"name":"setMaxQueueSize","parameterTypes":["java.lang.Integer"] }, {"name":"setNetwork","parameterTypes":["java.lang.String"] }, {"name":"setNextflowConfig","parameterTypes":["java.lang.String"] }, {"name":"setNfsMount","parameterTypes":["java.lang.String"] }, {"name":"setNfsTarget","parameterTypes":["java.lang.String"] }, {"name":"setPort","parameterTypes":["java.lang.Integer"] }, {"name":"setPostRunScript","parameterTypes":["java.lang.String"] }, {"name":"setPreRunScript","parameterTypes":["java.lang.String"] }, {"name":"setProjectId","parameterTypes":["java.lang.String"] }, {"name":"setPropagateHeadJobOptions","parameterTypes":["java.lang.Boolean"] }, {"name":"setServiceAccount","parameterTypes":["java.lang.String"] }, {"name":"setSpot","parameterTypes":["java.lang.Boolean"] }, {"name":"setSshDaemon","parameterTypes":["java.lang.Boolean"] }, {"name":"setSshImage","parameterTypes":["java.lang.String"] }, {"name":"setSubnetwork","parameterTypes":["java.lang.String"] }, {"name":"setUsePrivateAddress","parameterTypes":["java.lang.Boolean"] }, {"name":"setUserName","parameterTypes":["java.lang.String"] }, {"name":"setWaveEnabled","parameterTypes":["java.lang.Boolean"] }, {"name":"setWorkDir","parameterTypes":["java.lang.String"] }, {"name":"spot","parameterTypes":["java.lang.Boolean"] }, {"name":"sshDaemon","parameterTypes":["java.lang.Boolean"] }, {"name":"sshImage","parameterTypes":["java.lang.String"] }, {"name":"subnetwork","parameterTypes":["java.lang.String"] }, {"name":"toIndentedString","parameterTypes":["java.lang.Object"] }, {"name":"toString","parameterTypes":[] }, {"name":"usePrivateAddress","parameterTypes":["java.lang.Boolean"] }, {"name":"userName","parameterTypes":["java.lang.String"] }, {"name":"waveEnabled","parameterTypes":["java.lang.Boolean"] }, {"name":"workDir","parameterTypes":["java.lang.String"] }, {"name":"addComputeJobsMachineTypeItem","parameterTypes":["java.lang.String"] }, {"name":"addNetworkTagsItem","parameterTypes":["java.lang.String"] }, {"name":"bootDiskImage","parameterTypes":["java.lang.String"] }, {"name":"computeJobsMachineType","parameterTypes":["java.util.List"] }, {"name":"fusionSnapshots","parameterTypes":["java.lang.Boolean"] }, {"name":"getBootDiskImage","parameterTypes":[] }, {"name":"getComputeJobsMachineType","parameterTypes":[] }, {"name":"getFusionSnapshots","parameterTypes":[] }, {"name":"getNetworkTags","parameterTypes":[] }, {"name":"networkTags","parameterTypes":["java.util.List"] }, {"name":"setBootDiskImage","parameterTypes":["java.lang.String"] }, {"name":"setComputeJobsMachineType","parameterTypes":["java.util.List"] }, {"name":"setFusionSnapshots","parameterTypes":["java.lang.Boolean"] }, {"name":"setNetworkTags","parameterTypes":["java.util.List"] }] + "methods":[{"name":"","parameterTypes":[] }, {"name":"addComputeJobsMachineTypeItem","parameterTypes":["java.lang.String"] }, {"name":"addEnvironmentItem","parameterTypes":["io.seqera.tower.model.ConfigEnvVariable"] }, {"name":"addNetworkTagsItem","parameterTypes":["java.lang.String"] }, {"name":"bootDiskImage","parameterTypes":["java.lang.String"] }, {"name":"bootDiskSizeGb","parameterTypes":["java.lang.Integer"] }, {"name":"computeJobsInstanceTemplate","parameterTypes":["java.lang.String"] }, {"name":"computeJobsMachineType","parameterTypes":["java.util.List"] }, {"name":"copyImage","parameterTypes":["java.lang.String"] }, {"name":"cpuPlatform","parameterTypes":["java.lang.String"] }, {"name":"debugMode","parameterTypes":["java.lang.Integer"] }, {"name":"environment","parameterTypes":["java.util.List"] }, {"name":"equals","parameterTypes":["java.lang.Object"] }, {"name":"fusion2Enabled","parameterTypes":["java.lang.Boolean"] }, {"name":"fusionSnapshots","parameterTypes":["java.lang.Boolean"] }, {"name":"getBootDiskImage","parameterTypes":[] }, {"name":"getBootDiskSizeGb","parameterTypes":[] }, {"name":"getComputeJobsInstanceTemplate","parameterTypes":[] }, {"name":"getComputeJobsMachineType","parameterTypes":[] }, {"name":"getCopyImage","parameterTypes":[] }, {"name":"getCpuPlatform","parameterTypes":[] }, {"name":"getDebugMode","parameterTypes":[] }, {"name":"getDiscriminator","parameterTypes":[] }, {"name":"getEnvironment","parameterTypes":[] }, {"name":"getFusion2Enabled","parameterTypes":[] }, {"name":"getFusionSnapshots","parameterTypes":[] }, {"name":"getHeadJobCpus","parameterTypes":[] }, {"name":"getHeadJobInstanceTemplate","parameterTypes":[] }, {"name":"getHeadJobMemoryMb","parameterTypes":[] }, {"name":"getHeadJobOptions","parameterTypes":[] }, {"name":"getHostName","parameterTypes":[] }, {"name":"getLabels","parameterTypes":[] }, {"name":"getLaunchDir","parameterTypes":[] }, {"name":"getLocation","parameterTypes":[] }, {"name":"getMachineType","parameterTypes":[] }, {"name":"getMaxQueueSize","parameterTypes":[] }, {"name":"getNetwork","parameterTypes":[] }, {"name":"getNetworkTags","parameterTypes":[] }, {"name":"getNextflowConfig","parameterTypes":[] }, {"name":"getNfsMount","parameterTypes":[] }, {"name":"getNfsTarget","parameterTypes":[] }, {"name":"getPort","parameterTypes":[] }, {"name":"getPostRunScript","parameterTypes":[] }, {"name":"getPreRunScript","parameterTypes":[] }, {"name":"getProjectId","parameterTypes":[] }, {"name":"getPropagateHeadJobOptions","parameterTypes":[] }, {"name":"getServiceAccount","parameterTypes":[] }, {"name":"getSpot","parameterTypes":[] }, {"name":"getSshDaemon","parameterTypes":[] }, {"name":"getSshImage","parameterTypes":[] }, {"name":"getSubnetwork","parameterTypes":[] }, {"name":"getUsePrivateAddress","parameterTypes":[] }, {"name":"getUserName","parameterTypes":[] }, {"name":"getWaveEnabled","parameterTypes":[] }, {"name":"getWorkDir","parameterTypes":[] }, {"name":"hashCode","parameterTypes":[] }, {"name":"headJobCpus","parameterTypes":["java.lang.Integer"] }, {"name":"headJobInstanceTemplate","parameterTypes":["java.lang.String"] }, {"name":"headJobMemoryMb","parameterTypes":["java.lang.Integer"] }, {"name":"headJobOptions","parameterTypes":["java.lang.String"] }, {"name":"hostName","parameterTypes":["java.lang.String"] }, {"name":"labels","parameterTypes":["java.util.Map"] }, {"name":"launchDir","parameterTypes":["java.lang.String"] }, {"name":"location","parameterTypes":["java.lang.String"] }, {"name":"machineType","parameterTypes":["java.lang.String"] }, {"name":"maxQueueSize","parameterTypes":["java.lang.Integer"] }, {"name":"network","parameterTypes":["java.lang.String"] }, {"name":"networkTags","parameterTypes":["java.util.List"] }, {"name":"nextflowConfig","parameterTypes":["java.lang.String"] }, {"name":"nfsMount","parameterTypes":["java.lang.String"] }, {"name":"nfsTarget","parameterTypes":["java.lang.String"] }, {"name":"port","parameterTypes":["java.lang.Integer"] }, {"name":"postRunScript","parameterTypes":["java.lang.String"] }, {"name":"preRunScript","parameterTypes":["java.lang.String"] }, {"name":"projectId","parameterTypes":["java.lang.String"] }, {"name":"propagateHeadJobOptions","parameterTypes":["java.lang.Boolean"] }, {"name":"putLabelsItem","parameterTypes":["java.lang.String","java.lang.String"] }, {"name":"serviceAccount","parameterTypes":["java.lang.String"] }, {"name":"setBootDiskImage","parameterTypes":["java.lang.String"] }, {"name":"setBootDiskSizeGb","parameterTypes":["java.lang.Integer"] }, {"name":"setComputeJobsInstanceTemplate","parameterTypes":["java.lang.String"] }, {"name":"setComputeJobsMachineType","parameterTypes":["java.util.List"] }, {"name":"setCopyImage","parameterTypes":["java.lang.String"] }, {"name":"setCpuPlatform","parameterTypes":["java.lang.String"] }, {"name":"setDebugMode","parameterTypes":["java.lang.Integer"] }, {"name":"setEnvironment","parameterTypes":["java.util.List"] }, {"name":"setFusion2Enabled","parameterTypes":["java.lang.Boolean"] }, {"name":"setFusionSnapshots","parameterTypes":["java.lang.Boolean"] }, {"name":"setHeadJobCpus","parameterTypes":["java.lang.Integer"] }, {"name":"setHeadJobInstanceTemplate","parameterTypes":["java.lang.String"] }, {"name":"setHeadJobMemoryMb","parameterTypes":["java.lang.Integer"] }, {"name":"setHeadJobOptions","parameterTypes":["java.lang.String"] }, {"name":"setHostName","parameterTypes":["java.lang.String"] }, {"name":"setLabels","parameterTypes":["java.util.Map"] }, {"name":"setLaunchDir","parameterTypes":["java.lang.String"] }, {"name":"setLocation","parameterTypes":["java.lang.String"] }, {"name":"setMachineType","parameterTypes":["java.lang.String"] }, {"name":"setMaxQueueSize","parameterTypes":["java.lang.Integer"] }, {"name":"setNetwork","parameterTypes":["java.lang.String"] }, {"name":"setNetworkTags","parameterTypes":["java.util.List"] }, {"name":"setNextflowConfig","parameterTypes":["java.lang.String"] }, {"name":"setNfsMount","parameterTypes":["java.lang.String"] }, {"name":"setNfsTarget","parameterTypes":["java.lang.String"] }, {"name":"setPort","parameterTypes":["java.lang.Integer"] }, {"name":"setPostRunScript","parameterTypes":["java.lang.String"] }, {"name":"setPreRunScript","parameterTypes":["java.lang.String"] }, {"name":"setProjectId","parameterTypes":["java.lang.String"] }, {"name":"setPropagateHeadJobOptions","parameterTypes":["java.lang.Boolean"] }, {"name":"setServiceAccount","parameterTypes":["java.lang.String"] }, {"name":"setSpot","parameterTypes":["java.lang.Boolean"] }, {"name":"setSshDaemon","parameterTypes":["java.lang.Boolean"] }, {"name":"setSshImage","parameterTypes":["java.lang.String"] }, {"name":"setSubnetwork","parameterTypes":["java.lang.String"] }, {"name":"setUsePrivateAddress","parameterTypes":["java.lang.Boolean"] }, {"name":"setUserName","parameterTypes":["java.lang.String"] }, {"name":"setWaveEnabled","parameterTypes":["java.lang.Boolean"] }, {"name":"setWorkDir","parameterTypes":["java.lang.String"] }, {"name":"spot","parameterTypes":["java.lang.Boolean"] }, {"name":"sshDaemon","parameterTypes":["java.lang.Boolean"] }, {"name":"sshImage","parameterTypes":["java.lang.String"] }, {"name":"subnetwork","parameterTypes":["java.lang.String"] }, {"name":"toIndentedString","parameterTypes":["java.lang.Object"] }, {"name":"toString","parameterTypes":[] }, {"name":"usePrivateAddress","parameterTypes":["java.lang.Boolean"] }, {"name":"userName","parameterTypes":["java.lang.String"] }, {"name":"waveEnabled","parameterTypes":["java.lang.Boolean"] }, {"name":"workDir","parameterTypes":["java.lang.String"] }] }, { "name":"io.seqera.tower.model.GoogleBucket", @@ -3838,7 +3937,7 @@ "name":"io.seqera.tower.model.GoogleImage", "queryAllDeclaredMethods":true, "queryAllDeclaredConstructors":true, - "methods":[{"name":"","parameterTypes":[] }, {"name":"arch","parameterTypes":["java.lang.String"] }, {"name":"description","parameterTypes":["java.lang.String"] }, {"name":"equals","parameterTypes":["java.lang.Object"] }, {"name":"getArch","parameterTypes":[] }, {"name":"getDescription","parameterTypes":[] }, {"name":"getId","parameterTypes":[] }, {"name":"getName","parameterTypes":[] }, {"name":"hashCode","parameterTypes":[] }, {"name":"id","parameterTypes":["java.lang.String"] }, {"name":"name","parameterTypes":["java.lang.String"] }, {"name":"setArch","parameterTypes":["java.lang.String"] }, {"name":"setDescription","parameterTypes":["java.lang.String"] }, {"name":"setId","parameterTypes":["java.lang.String"] }, {"name":"setName","parameterTypes":["java.lang.String"] }, {"name":"toIndentedString","parameterTypes":["java.lang.Object"] }, {"name":"toString","parameterTypes":[] }] + "methods":[{"name":"","parameterTypes":[] }, {"name":"arch","parameterTypes":["java.lang.String"] }, {"name":"description","parameterTypes":["java.lang.String"] }, {"name":"equals","parameterTypes":["java.lang.Object"] }, {"name":"getArch","parameterTypes":[] }, {"name":"getDescription","parameterTypes":[] }, {"name":"getId","parameterTypes":[] }, {"name":"getName","parameterTypes":[] }, {"name":"getQualifiedName","parameterTypes":[] }, {"name":"hashCode","parameterTypes":[] }, {"name":"id","parameterTypes":["java.lang.String"] }, {"name":"name","parameterTypes":["java.lang.String"] }, {"name":"qualifiedName","parameterTypes":["java.lang.String"] }, {"name":"setArch","parameterTypes":["java.lang.String"] }, {"name":"setDescription","parameterTypes":["java.lang.String"] }, {"name":"setId","parameterTypes":["java.lang.String"] }, {"name":"setName","parameterTypes":["java.lang.String"] }, {"name":"setQualifiedName","parameterTypes":["java.lang.String"] }, {"name":"toIndentedString","parameterTypes":["java.lang.Object"] }, {"name":"toString","parameterTypes":[] }] }, { "name":"io.seqera.tower.model.GoogleInstanceType", @@ -3857,7 +3956,7 @@ "name":"io.seqera.tower.model.GooglePlatformMetainfo", "queryAllDeclaredMethods":true, "queryAllDeclaredConstructors":true, - "methods":[{"name":"","parameterTypes":[] }, {"name":"addBucketsItem","parameterTypes":["io.seqera.tower.model.GooglePlatformMetainfoBucket"] }, {"name":"addFilestoresItem","parameterTypes":["io.seqera.tower.model.GooglePlatformMetainfoFilestore"] }, {"name":"addLocationsItem","parameterTypes":["java.lang.String"] }, {"name":"addWarningsItem","parameterTypes":["java.lang.String"] }, {"name":"addZonesItem","parameterTypes":["java.lang.String"] }, {"name":"buckets","parameterTypes":["java.util.List"] }, {"name":"discriminator","parameterTypes":["java.lang.String"] }, {"name":"equals","parameterTypes":["java.lang.Object"] }, {"name":"filestores","parameterTypes":["java.util.List"] }, {"name":"getBuckets","parameterTypes":[] }, {"name":"getDiscriminator","parameterTypes":[] }, {"name":"getFilestores","parameterTypes":[] }, {"name":"getLocations","parameterTypes":[] }, {"name":"getWarnings","parameterTypes":[] }, {"name":"getZones","parameterTypes":[] }, {"name":"hashCode","parameterTypes":[] }, {"name":"locations","parameterTypes":["java.util.List"] }, {"name":"setBuckets","parameterTypes":["java.util.List"] }, {"name":"setDiscriminator","parameterTypes":["java.lang.String"] }, {"name":"setFilestores","parameterTypes":["java.util.List"] }, {"name":"setLocations","parameterTypes":["java.util.List"] }, {"name":"setWarnings","parameterTypes":["java.util.List"] }, {"name":"setZones","parameterTypes":["java.util.List"] }, {"name":"toIndentedString","parameterTypes":["java.lang.Object"] }, {"name":"toString","parameterTypes":[] }, {"name":"warnings","parameterTypes":["java.util.List"] }, {"name":"zones","parameterTypes":["java.util.List"] }] + "methods":[{"name":"","parameterTypes":[] }, {"name":"addBucketsItem","parameterTypes":["io.seqera.tower.model.GooglePlatformMetainfoBucket"] }, {"name":"addFilestoresItem","parameterTypes":["io.seqera.tower.model.GooglePlatformMetainfoFilestore"] }, {"name":"addImagesItem","parameterTypes":["io.seqera.tower.model.GoogleImage"] }, {"name":"addInstanceTypesItem","parameterTypes":["io.seqera.tower.model.GoogleInstanceType"] }, {"name":"addLocationsItem","parameterTypes":["java.lang.String"] }, {"name":"addWarningsItem","parameterTypes":["java.lang.String"] }, {"name":"addZonesItem","parameterTypes":["java.lang.String"] }, {"name":"buckets","parameterTypes":["java.util.List"] }, {"name":"discriminator","parameterTypes":["java.lang.String"] }, {"name":"equals","parameterTypes":["java.lang.Object"] }, {"name":"filestores","parameterTypes":["java.util.List"] }, {"name":"getBuckets","parameterTypes":[] }, {"name":"getDiscriminator","parameterTypes":[] }, {"name":"getFilestores","parameterTypes":[] }, {"name":"getImages","parameterTypes":[] }, {"name":"getInstanceTypes","parameterTypes":[] }, {"name":"getLocations","parameterTypes":[] }, {"name":"getWarnings","parameterTypes":[] }, {"name":"getZones","parameterTypes":[] }, {"name":"hashCode","parameterTypes":[] }, {"name":"images","parameterTypes":["java.util.List"] }, {"name":"instanceTypes","parameterTypes":["java.util.List"] }, {"name":"locations","parameterTypes":["java.util.List"] }, {"name":"setBuckets","parameterTypes":["java.util.List"] }, {"name":"setDiscriminator","parameterTypes":["java.lang.String"] }, {"name":"setFilestores","parameterTypes":["java.util.List"] }, {"name":"setImages","parameterTypes":["java.util.List"] }, {"name":"setInstanceTypes","parameterTypes":["java.util.List"] }, {"name":"setLocations","parameterTypes":["java.util.List"] }, {"name":"setWarnings","parameterTypes":["java.util.List"] }, {"name":"setZones","parameterTypes":["java.util.List"] }, {"name":"toIndentedString","parameterTypes":["java.lang.Object"] }, {"name":"toString","parameterTypes":[] }, {"name":"warnings","parameterTypes":["java.util.List"] }, {"name":"zones","parameterTypes":["java.util.List"] }] }, { "name":"io.seqera.tower.model.GooglePlatformMetainfoBucket", @@ -3876,7 +3975,7 @@ "allDeclaredFields":true, "allDeclaredMethods":true, "allDeclaredConstructors":true, - "methods":[{"name":"","parameterTypes":[] }, {"name":"data","parameterTypes":["java.lang.String"] }, {"name":"discriminator","parameterTypes":["java.lang.String"] }, {"name":"equals","parameterTypes":["java.lang.Object"] }, {"name":"getData","parameterTypes":[] }, {"name":"getDiscriminator","parameterTypes":[] }, {"name":"hashCode","parameterTypes":[] }, {"name":"setData","parameterTypes":["java.lang.String"] }, {"name":"setDiscriminator","parameterTypes":["java.lang.String"] }, {"name":"toIndentedString","parameterTypes":["java.lang.Object"] }, {"name":"toString","parameterTypes":[] }] + "methods":[{"name":"","parameterTypes":[] }, {"name":"data","parameterTypes":["java.lang.String"] }, {"name":"discriminator","parameterTypes":["java.lang.String"] }, {"name":"equals","parameterTypes":["java.lang.Object"] }, {"name":"getData","parameterTypes":[] }, {"name":"getDiscriminator","parameterTypes":[] }, {"name":"getServiceAccountEmail","parameterTypes":[] }, {"name":"getTokenAudience","parameterTypes":[] }, {"name":"getWorkloadIdentityProvider","parameterTypes":[] }, {"name":"hashCode","parameterTypes":[] }, {"name":"serviceAccountEmail","parameterTypes":["java.lang.String"] }, {"name":"setData","parameterTypes":["java.lang.String"] }, {"name":"setDiscriminator","parameterTypes":["java.lang.String"] }, {"name":"setServiceAccountEmail","parameterTypes":["java.lang.String"] }, {"name":"setTokenAudience","parameterTypes":["java.lang.String"] }, {"name":"setWorkloadIdentityProvider","parameterTypes":["java.lang.String"] }, {"name":"toIndentedString","parameterTypes":["java.lang.Object"] }, {"name":"toString","parameterTypes":[] }, {"name":"tokenAudience","parameterTypes":["java.lang.String"] }, {"name":"workloadIdentityProvider","parameterTypes":["java.lang.String"] }] }, { "name":"io.seqera.tower.model.GridPlatformMetainfo", @@ -3984,12 +4083,18 @@ "queryAllDeclaredConstructors":true, "methods":[{"name":"","parameterTypes":[] }, {"name":"addConfigProfilesItem","parameterTypes":["java.lang.String"] }, {"name":"addUserSecretsItem","parameterTypes":["java.lang.String"] }, {"name":"addWorkspaceSecretsItem","parameterTypes":["java.lang.String"] }, {"name":"commitId","parameterTypes":["java.lang.String"] }, {"name":"computeEnv","parameterTypes":["io.seqera.tower.model.ComputeEnvComputeConfig"] }, {"name":"configProfiles","parameterTypes":["java.util.List"] }, {"name":"configText","parameterTypes":["java.lang.String"] }, {"name":"dateCreated","parameterTypes":["java.time.OffsetDateTime"] }, {"name":"entryName","parameterTypes":["java.lang.String"] }, {"name":"equals","parameterTypes":["java.lang.Object"] }, {"name":"getCommitId","parameterTypes":[] }, {"name":"getComputeEnv","parameterTypes":[] }, {"name":"getConfigProfiles","parameterTypes":[] }, {"name":"getConfigText","parameterTypes":[] }, {"name":"getDateCreated","parameterTypes":[] }, {"name":"getEntryName","parameterTypes":[] }, {"name":"getHeadJobCpus","parameterTypes":[] }, {"name":"getHeadJobMemoryMb","parameterTypes":[] }, {"name":"getId","parameterTypes":[] }, {"name":"getLastUpdated","parameterTypes":[] }, {"name":"getLaunchContainer","parameterTypes":[] }, {"name":"getMainScript","parameterTypes":[] }, {"name":"getOptimizationId","parameterTypes":[] }, {"name":"getOptimizationTargets","parameterTypes":[] }, {"name":"getParamsText","parameterTypes":[] }, {"name":"getPipeline","parameterTypes":[] }, {"name":"getPipelineSchemaId","parameterTypes":[] }, {"name":"getPostRunScript","parameterTypes":[] }, {"name":"getPreRunScript","parameterTypes":[] }, {"name":"getPullLatest","parameterTypes":[] }, {"name":"getResume","parameterTypes":[] }, {"name":"getResumeLaunchId","parameterTypes":[] }, {"name":"getRevision","parameterTypes":[] }, {"name":"getRunName","parameterTypes":[] }, {"name":"getSchemaName","parameterTypes":[] }, {"name":"getSessionId","parameterTypes":[] }, {"name":"getStubRun","parameterTypes":[] }, {"name":"getTowerConfig","parameterTypes":[] }, {"name":"getUserSecrets","parameterTypes":[] }, {"name":"getWorkDir","parameterTypes":[] }, {"name":"getWorkspaceId","parameterTypes":[] }, {"name":"getWorkspaceSecrets","parameterTypes":[] }, {"name":"hashCode","parameterTypes":[] }, {"name":"headJobCpus","parameterTypes":["java.lang.Integer"] }, {"name":"headJobMemoryMb","parameterTypes":["java.lang.Integer"] }, {"name":"id","parameterTypes":["java.lang.String"] }, {"name":"lastUpdated","parameterTypes":["java.time.OffsetDateTime"] }, {"name":"launchContainer","parameterTypes":["java.lang.String"] }, {"name":"mainScript","parameterTypes":["java.lang.String"] }, {"name":"optimizationId","parameterTypes":["java.lang.String"] }, {"name":"optimizationTargets","parameterTypes":["java.lang.String"] }, {"name":"paramsText","parameterTypes":["java.lang.String"] }, {"name":"pipeline","parameterTypes":["java.lang.String"] }, {"name":"pipelineSchemaId","parameterTypes":["java.lang.Long"] }, {"name":"postRunScript","parameterTypes":["java.lang.String"] }, {"name":"preRunScript","parameterTypes":["java.lang.String"] }, {"name":"pullLatest","parameterTypes":["java.lang.Boolean"] }, {"name":"resume","parameterTypes":["java.lang.Boolean"] }, {"name":"resumeLaunchId","parameterTypes":["java.lang.String"] }, {"name":"revision","parameterTypes":["java.lang.String"] }, {"name":"runName","parameterTypes":["java.lang.String"] }, {"name":"schemaName","parameterTypes":["java.lang.String"] }, {"name":"sessionId","parameterTypes":["java.lang.String"] }, {"name":"setCommitId","parameterTypes":["java.lang.String"] }, {"name":"setComputeEnv","parameterTypes":["io.seqera.tower.model.ComputeEnvComputeConfig"] }, {"name":"setConfigProfiles","parameterTypes":["java.util.List"] }, {"name":"setConfigText","parameterTypes":["java.lang.String"] }, {"name":"setDateCreated","parameterTypes":["java.time.OffsetDateTime"] }, {"name":"setEntryName","parameterTypes":["java.lang.String"] }, {"name":"setHeadJobCpus","parameterTypes":["java.lang.Integer"] }, {"name":"setHeadJobMemoryMb","parameterTypes":["java.lang.Integer"] }, {"name":"setId","parameterTypes":["java.lang.String"] }, {"name":"setLastUpdated","parameterTypes":["java.time.OffsetDateTime"] }, {"name":"setLaunchContainer","parameterTypes":["java.lang.String"] }, {"name":"setMainScript","parameterTypes":["java.lang.String"] }, {"name":"setOptimizationId","parameterTypes":["java.lang.String"] }, {"name":"setOptimizationTargets","parameterTypes":["java.lang.String"] }, {"name":"setParamsText","parameterTypes":["java.lang.String"] }, {"name":"setPipeline","parameterTypes":["java.lang.String"] }, {"name":"setPipelineSchemaId","parameterTypes":["java.lang.Long"] }, {"name":"setPostRunScript","parameterTypes":["java.lang.String"] }, {"name":"setPreRunScript","parameterTypes":["java.lang.String"] }, {"name":"setPullLatest","parameterTypes":["java.lang.Boolean"] }, {"name":"setResume","parameterTypes":["java.lang.Boolean"] }, {"name":"setResumeLaunchId","parameterTypes":["java.lang.String"] }, {"name":"setRevision","parameterTypes":["java.lang.String"] }, {"name":"setRunName","parameterTypes":["java.lang.String"] }, {"name":"setSchemaName","parameterTypes":["java.lang.String"] }, {"name":"setSessionId","parameterTypes":["java.lang.String"] }, {"name":"setStubRun","parameterTypes":["java.lang.Boolean"] }, {"name":"setTowerConfig","parameterTypes":["java.lang.String"] }, {"name":"setUserSecrets","parameterTypes":["java.util.List"] }, {"name":"setWorkDir","parameterTypes":["java.lang.String"] }, {"name":"setWorkspaceId","parameterTypes":["java.lang.Long"] }, {"name":"setWorkspaceSecrets","parameterTypes":["java.util.List"] }, {"name":"stubRun","parameterTypes":["java.lang.Boolean"] }, {"name":"toIndentedString","parameterTypes":["java.lang.Object"] }, {"name":"toString","parameterTypes":[] }, {"name":"towerConfig","parameterTypes":["java.lang.String"] }, {"name":"userSecrets","parameterTypes":["java.util.List"] }, {"name":"workDir","parameterTypes":["java.lang.String"] }, {"name":"workspaceId","parameterTypes":["java.lang.Long"] }, {"name":"workspaceSecrets","parameterTypes":["java.util.List"] }] }, +{ + "name":"io.seqera.tower.model.LinkVersionRequest", + "queryAllDeclaredMethods":true, + "queryAllDeclaredConstructors":true, + "methods":[{"name":"","parameterTypes":[] }, {"name":"equals","parameterTypes":["java.lang.Object"] }, {"name":"getHasHeader","parameterTypes":[] }, {"name":"getUrl","parameterTypes":[] }, {"name":"hasHeader","parameterTypes":["java.lang.Boolean"] }, {"name":"hashCode","parameterTypes":[] }, {"name":"setHasHeader","parameterTypes":["java.lang.Boolean"] }, {"name":"setUrl","parameterTypes":["java.lang.String"] }, {"name":"toIndentedString","parameterTypes":["java.lang.Object"] }, {"name":"toString","parameterTypes":[] }, {"name":"url","parameterTypes":["java.lang.String"] }] +}, { "name":"io.seqera.tower.model.LinkedSourceDto", "allDeclaredFields":true, "queryAllDeclaredMethods":true, "queryAllDeclaredConstructors":true, - "methods":[{"name":"","parameterTypes":[] }, {"name":"changeStatus","parameterTypes":["io.seqera.tower.model.ChangeStatus"] }, {"name":"checkedAt","parameterTypes":["java.time.OffsetDateTime"] }, {"name":"equals","parameterTypes":["java.lang.Object"] }, {"name":"getChangeStatus","parameterTypes":[] }, {"name":"getCheckedAt","parameterTypes":[] }, {"name":"getHasChangeIndicators","parameterTypes":[] }, {"name":"getUrl","parameterTypes":[] }, {"name":"hasChangeIndicators","parameterTypes":["java.lang.Boolean"] }, {"name":"hashCode","parameterTypes":[] }, {"name":"setChangeStatus","parameterTypes":["io.seqera.tower.model.ChangeStatus"] }, {"name":"setCheckedAt","parameterTypes":["java.time.OffsetDateTime"] }, {"name":"setHasChangeIndicators","parameterTypes":["java.lang.Boolean"] }, {"name":"setUrl","parameterTypes":["java.lang.String"] }, {"name":"toString","parameterTypes":[] }, {"name":"url","parameterTypes":["java.lang.String"] }] + "methods":[{"name":"","parameterTypes":[] }, {"name":"changeStatus","parameterTypes":["io.seqera.tower.model.ChangeStatus"] }, {"name":"checkedAt","parameterTypes":["java.time.OffsetDateTime"] }, {"name":"equals","parameterTypes":["java.lang.Object"] }, {"name":"getChangeStatus","parameterTypes":[] }, {"name":"getCheckedAt","parameterTypes":[] }, {"name":"getHasChangeIndicators","parameterTypes":[] }, {"name":"getUrl","parameterTypes":[] }, {"name":"hasChangeIndicators","parameterTypes":["java.lang.Boolean"] }, {"name":"hashCode","parameterTypes":[] }, {"name":"setChangeStatus","parameterTypes":["io.seqera.tower.model.ChangeStatus"] }, {"name":"setCheckedAt","parameterTypes":["java.time.OffsetDateTime"] }, {"name":"setHasChangeIndicators","parameterTypes":["java.lang.Boolean"] }, {"name":"setUrl","parameterTypes":["java.lang.String"] }, {"name":"toIndentedString","parameterTypes":["java.lang.Object"] }, {"name":"toString","parameterTypes":[] }, {"name":"url","parameterTypes":["java.lang.String"] }] }, { "name":"io.seqera.tower.model.ListAccessTokensResponse", @@ -4142,6 +4247,24 @@ "queryAllDeclaredConstructors":true, "methods":[{"name":"","parameterTypes":[] }, {"name":"addRegionsItem","parameterTypes":["io.seqera.tower.model.ComputeRegion"] }, {"name":"equals","parameterTypes":["java.lang.Object"] }, {"name":"getRegions","parameterTypes":[] }, {"name":"hashCode","parameterTypes":[] }, {"name":"regions","parameterTypes":["java.util.List"] }, {"name":"setRegions","parameterTypes":["java.util.List"] }, {"name":"toIndentedString","parameterTypes":["java.lang.Object"] }, {"name":"toString","parameterTypes":[] }] }, +{ + "name":"io.seqera.tower.model.ListRolePermissionsResponse", + "queryAllDeclaredMethods":true, + "queryAllDeclaredConstructors":true, + "methods":[{"name":"","parameterTypes":[] }, {"name":"addPermissionsItem","parameterTypes":["io.seqera.tower.model.RolePermissionResponseDto"] }, {"name":"equals","parameterTypes":["java.lang.Object"] }, {"name":"getPermissions","parameterTypes":[] }, {"name":"hashCode","parameterTypes":[] }, {"name":"permissions","parameterTypes":["java.util.List"] }, {"name":"setPermissions","parameterTypes":["java.util.List"] }, {"name":"toIndentedString","parameterTypes":["java.lang.Object"] }, {"name":"toString","parameterTypes":[] }] +}, +{ + "name":"io.seqera.tower.model.ListRolesResponse", + "queryAllDeclaredMethods":true, + "queryAllDeclaredConstructors":true, + "methods":[{"name":"","parameterTypes":[] }, {"name":"addRolesItem","parameterTypes":["io.seqera.tower.model.ListRolesResponseRoleInfo"] }, {"name":"equals","parameterTypes":["java.lang.Object"] }, {"name":"getRoles","parameterTypes":[] }, {"name":"getTotalSize","parameterTypes":[] }, {"name":"hashCode","parameterTypes":[] }, {"name":"roles","parameterTypes":["java.util.List"] }, {"name":"setRoles","parameterTypes":["java.util.List"] }, {"name":"setTotalSize","parameterTypes":["java.lang.Integer"] }, {"name":"toIndentedString","parameterTypes":["java.lang.Object"] }, {"name":"toString","parameterTypes":[] }, {"name":"totalSize","parameterTypes":["java.lang.Integer"] }] +}, +{ + "name":"io.seqera.tower.model.ListRolesResponseRoleInfo", + "queryAllDeclaredMethods":true, + "queryAllDeclaredConstructors":true, + "methods":[{"name":"","parameterTypes":[] }, {"name":"description","parameterTypes":["java.lang.String"] }, {"name":"equals","parameterTypes":["java.lang.Object"] }, {"name":"getDescription","parameterTypes":[] }, {"name":"getIsPredefined","parameterTypes":[] }, {"name":"getName","parameterTypes":[] }, {"name":"hashCode","parameterTypes":[] }, {"name":"isPredefined","parameterTypes":["java.lang.Boolean"] }, {"name":"name","parameterTypes":["java.lang.String"] }, {"name":"setDescription","parameterTypes":["java.lang.String"] }, {"name":"setIsPredefined","parameterTypes":["java.lang.Boolean"] }, {"name":"setName","parameterTypes":["java.lang.String"] }, {"name":"toIndentedString","parameterTypes":["java.lang.Object"] }, {"name":"toString","parameterTypes":[] }] +}, { "name":"io.seqera.tower.model.ListSshKeysResponse", "queryAllDeclaredMethods":true, @@ -4162,6 +4285,12 @@ "allDeclaredConstructors":true, "methods":[{"name":"","parameterTypes":[] }, {"name":"addTeamsItem","parameterTypes":["io.seqera.tower.model.TeamDbDto"] }, {"name":"equals","parameterTypes":["java.lang.Object"] }, {"name":"getTeams","parameterTypes":[] }, {"name":"getTotalSize","parameterTypes":[] }, {"name":"hashCode","parameterTypes":[] }, {"name":"setTeams","parameterTypes":["java.util.List"] }, {"name":"setTotalSize","parameterTypes":["java.lang.Long"] }, {"name":"teams","parameterTypes":["java.util.List"] }, {"name":"toIndentedString","parameterTypes":["java.lang.Object"] }, {"name":"toString","parameterTypes":[] }, {"name":"totalSize","parameterTypes":["java.lang.Long"] }] }, +{ + "name":"io.seqera.tower.model.ListUserRolesResponse", + "queryAllDeclaredMethods":true, + "queryAllDeclaredConstructors":true, + "methods":[{"name":"","parameterTypes":[] }, {"name":"addUserWorkspacesItem","parameterTypes":["io.seqera.tower.model.UserWorkspaceRolesDto"] }, {"name":"equals","parameterTypes":["java.lang.Object"] }, {"name":"getUser","parameterTypes":[] }, {"name":"getUserWorkspaces","parameterTypes":[] }, {"name":"hashCode","parameterTypes":[] }, {"name":"setUser","parameterTypes":["io.seqera.tower.model.MemberDbDto"] }, {"name":"setUserWorkspaces","parameterTypes":["java.util.List"] }, {"name":"toIndentedString","parameterTypes":["java.lang.Object"] }, {"name":"toString","parameterTypes":[] }, {"name":"user","parameterTypes":["io.seqera.tower.model.MemberDbDto"] }, {"name":"userWorkspaces","parameterTypes":["java.util.List"] }] +}, { "name":"io.seqera.tower.model.ListWorkflowsResponse", "allDeclaredFields":true, @@ -4199,7 +4328,7 @@ "name":"io.seqera.tower.model.LocalComputeConfig", "queryAllDeclaredMethods":true, "queryAllDeclaredConstructors":true, - "methods":[{"name":"","parameterTypes":[] }, {"name":"equals","parameterTypes":["java.lang.Object"] }, {"name":"fusion2Enabled","parameterTypes":["java.lang.Boolean"] }, {"name":"getFusion2Enabled","parameterTypes":[] }, {"name":"getWaveEnabled","parameterTypes":[] }, {"name":"hashCode","parameterTypes":[] }, {"name":"setFusion2Enabled","parameterTypes":["java.lang.Boolean"] }, {"name":"setWaveEnabled","parameterTypes":["java.lang.Boolean"] }, {"name":"toIndentedString","parameterTypes":["java.lang.Object"] }, {"name":"toString","parameterTypes":[] }, {"name":"waveEnabled","parameterTypes":["java.lang.Boolean"] }] + "methods":[{"name":"","parameterTypes":[] }, {"name":"equals","parameterTypes":["java.lang.Object"] }, {"name":"fusion2Enabled","parameterTypes":["java.lang.Boolean"] }, {"name":"getFusion2Enabled","parameterTypes":[] }, {"name":"getSchedEnabled","parameterTypes":[] }, {"name":"getWaveEnabled","parameterTypes":[] }, {"name":"hashCode","parameterTypes":[] }, {"name":"schedEnabled","parameterTypes":["java.lang.Boolean"] }, {"name":"setFusion2Enabled","parameterTypes":["java.lang.Boolean"] }, {"name":"setSchedEnabled","parameterTypes":["java.lang.Boolean"] }, {"name":"setWaveEnabled","parameterTypes":["java.lang.Boolean"] }, {"name":"toIndentedString","parameterTypes":["java.lang.Object"] }, {"name":"toString","parameterTypes":[] }, {"name":"waveEnabled","parameterTypes":["java.lang.Boolean"] }] }, { "name":"io.seqera.tower.model.LocalPlatformMetainfo", @@ -4287,7 +4416,7 @@ "allDeclaredFields":true, "queryAllDeclaredMethods":true, "queryAllDeclaredConstructors":true, - "methods":[{"name":"","parameterTypes":[] }, {"name":"dataLinkId","parameterTypes":["java.lang.String"] }, {"name":"equals","parameterTypes":["java.lang.Object"] }, {"name":"getDataLinkId","parameterTypes":[] }, {"name":"getPath","parameterTypes":[] }, {"name":"getPath_JsonNullable","parameterTypes":[] }, {"name":"hashCode","parameterTypes":[] }, {"name":"path","parameterTypes":["java.lang.String"] }, {"name":"setDataLinkId","parameterTypes":["java.lang.String"] }, {"name":"setPath","parameterTypes":["java.lang.String"] }, {"name":"setPath_JsonNullable","parameterTypes":["org.openapitools.jackson.nullable.JsonNullable"] }, {"name":"toString","parameterTypes":[] }] + "methods":[{"name":"","parameterTypes":[] }, {"name":"dataLinkId","parameterTypes":["java.lang.String"] }, {"name":"equals","parameterTypes":["java.lang.Object"] }, {"name":"equalsNullable","parameterTypes":["org.openapitools.jackson.nullable.JsonNullable","org.openapitools.jackson.nullable.JsonNullable"] }, {"name":"getDataLinkId","parameterTypes":[] }, {"name":"getPath","parameterTypes":[] }, {"name":"getPath_JsonNullable","parameterTypes":[] }, {"name":"hashCode","parameterTypes":[] }, {"name":"hashCodeNullable","parameterTypes":["org.openapitools.jackson.nullable.JsonNullable"] }, {"name":"path","parameterTypes":["java.lang.String"] }, {"name":"setDataLinkId","parameterTypes":["java.lang.String"] }, {"name":"setPath","parameterTypes":["java.lang.String"] }, {"name":"setPath_JsonNullable","parameterTypes":["org.openapitools.jackson.nullable.JsonNullable"] }, {"name":"toIndentedString","parameterTypes":["java.lang.Object"] }, {"name":"toString","parameterTypes":[] }] }, { "name":"io.seqera.tower.model.MultiRequestFileSchema", @@ -4335,7 +4464,7 @@ "allDeclaredFields":true, "allDeclaredMethods":true, "allDeclaredConstructors":true, - "methods":[{"name":"","parameterTypes":[] }, {"name":"","parameterTypes":["java.lang.Long","java.time.OffsetDateTime","java.time.OffsetDateTime"] }, {"name":"description","parameterTypes":["java.lang.String"] }, {"name":"equals","parameterTypes":["java.lang.Object"] }, {"name":"equalsNullable","parameterTypes":["org.openapitools.jackson.nullable.JsonNullable","org.openapitools.jackson.nullable.JsonNullable"] }, {"name":"fullName","parameterTypes":["java.lang.String"] }, {"name":"getDateCreated","parameterTypes":[] }, {"name":"getDescription","parameterTypes":[] }, {"name":"getFullName","parameterTypes":[] }, {"name":"getId","parameterTypes":[] }, {"name":"getId_JsonNullable","parameterTypes":[] }, {"name":"getLastUpdated","parameterTypes":[] }, {"name":"getLocation","parameterTypes":[] }, {"name":"getName","parameterTypes":[] }, {"name":"getWebsite","parameterTypes":[] }, {"name":"hashCode","parameterTypes":[] }, {"name":"hashCodeNullable","parameterTypes":["org.openapitools.jackson.nullable.JsonNullable"] }, {"name":"location","parameterTypes":["java.lang.String"] }, {"name":"name","parameterTypes":["java.lang.String"] }, {"name":"setDescription","parameterTypes":["java.lang.String"] }, {"name":"setFullName","parameterTypes":["java.lang.String"] }, {"name":"setId_JsonNullable","parameterTypes":["org.openapitools.jackson.nullable.JsonNullable"] }, {"name":"setLocation","parameterTypes":["java.lang.String"] }, {"name":"setName","parameterTypes":["java.lang.String"] }, {"name":"setWebsite","parameterTypes":["java.lang.String"] }, {"name":"toIndentedString","parameterTypes":["java.lang.Object"] }, {"name":"toString","parameterTypes":[] }, {"name":"website","parameterTypes":["java.lang.String"] }] + "methods":[{"name":"","parameterTypes":[] }, {"name":"","parameterTypes":["java.lang.Long","java.time.OffsetDateTime","java.time.OffsetDateTime"] }, {"name":"","parameterTypes":["java.time.OffsetDateTime","java.lang.Long","java.time.OffsetDateTime"] }, {"name":"description","parameterTypes":["java.lang.String"] }, {"name":"equals","parameterTypes":["java.lang.Object"] }, {"name":"equalsNullable","parameterTypes":["org.openapitools.jackson.nullable.JsonNullable","org.openapitools.jackson.nullable.JsonNullable"] }, {"name":"fullName","parameterTypes":["java.lang.String"] }, {"name":"getDateCreated","parameterTypes":[] }, {"name":"getDescription","parameterTypes":[] }, {"name":"getFullName","parameterTypes":[] }, {"name":"getId","parameterTypes":[] }, {"name":"getId_JsonNullable","parameterTypes":[] }, {"name":"getLastUpdated","parameterTypes":[] }, {"name":"getLocation","parameterTypes":[] }, {"name":"getName","parameterTypes":[] }, {"name":"getWebsite","parameterTypes":[] }, {"name":"hashCode","parameterTypes":[] }, {"name":"hashCodeNullable","parameterTypes":["org.openapitools.jackson.nullable.JsonNullable"] }, {"name":"location","parameterTypes":["java.lang.String"] }, {"name":"name","parameterTypes":["java.lang.String"] }, {"name":"setDescription","parameterTypes":["java.lang.String"] }, {"name":"setFullName","parameterTypes":["java.lang.String"] }, {"name":"setId_JsonNullable","parameterTypes":["org.openapitools.jackson.nullable.JsonNullable"] }, {"name":"setLocation","parameterTypes":["java.lang.String"] }, {"name":"setName","parameterTypes":["java.lang.String"] }, {"name":"setWebsite","parameterTypes":["java.lang.String"] }, {"name":"toIndentedString","parameterTypes":["java.lang.Object"] }, {"name":"toString","parameterTypes":[] }, {"name":"website","parameterTypes":["java.lang.String"] }] }, { "name":"io.seqera.tower.model.OrganizationDbDto", @@ -4508,6 +4637,18 @@ "allDeclaredConstructors":true, "methods":[{"name":"","parameterTypes":[] }, {"name":"addWarningsItem","parameterTypes":["java.lang.String"] }, {"name":"equals","parameterTypes":["java.lang.Object"] }, {"name":"getMax","parameterTypes":[] }, {"name":"getMaxLabel","parameterTypes":[] }, {"name":"getMean","parameterTypes":[] }, {"name":"getMin","parameterTypes":[] }, {"name":"getMinLabel","parameterTypes":[] }, {"name":"getQ1","parameterTypes":[] }, {"name":"getQ1Label","parameterTypes":[] }, {"name":"getQ2","parameterTypes":[] }, {"name":"getQ2Label","parameterTypes":[] }, {"name":"getQ3","parameterTypes":[] }, {"name":"getQ3Label","parameterTypes":[] }, {"name":"getWarnings","parameterTypes":[] }, {"name":"hashCode","parameterTypes":[] }, {"name":"max","parameterTypes":["java.lang.Float"] }, {"name":"maxLabel","parameterTypes":["java.lang.String"] }, {"name":"mean","parameterTypes":["java.lang.Float"] }, {"name":"min","parameterTypes":["java.lang.Float"] }, {"name":"minLabel","parameterTypes":["java.lang.String"] }, {"name":"q1","parameterTypes":["java.lang.Float"] }, {"name":"q1Label","parameterTypes":["java.lang.String"] }, {"name":"q2","parameterTypes":["java.lang.Float"] }, {"name":"q2Label","parameterTypes":["java.lang.String"] }, {"name":"q3","parameterTypes":["java.lang.Float"] }, {"name":"q3Label","parameterTypes":["java.lang.String"] }, {"name":"setMax","parameterTypes":["java.lang.Float"] }, {"name":"setMaxLabel","parameterTypes":["java.lang.String"] }, {"name":"setMean","parameterTypes":["java.lang.Float"] }, {"name":"setMin","parameterTypes":["java.lang.Float"] }, {"name":"setMinLabel","parameterTypes":["java.lang.String"] }, {"name":"setQ1","parameterTypes":["java.lang.Float"] }, {"name":"setQ1Label","parameterTypes":["java.lang.String"] }, {"name":"setQ2","parameterTypes":["java.lang.Float"] }, {"name":"setQ2Label","parameterTypes":["java.lang.String"] }, {"name":"setQ3","parameterTypes":["java.lang.Float"] }, {"name":"setQ3Label","parameterTypes":["java.lang.String"] }, {"name":"setWarnings","parameterTypes":["java.util.List"] }, {"name":"toIndentedString","parameterTypes":["java.lang.Object"] }, {"name":"toString","parameterTypes":[] }, {"name":"warnings","parameterTypes":["java.util.List"] }] }, +{ + "name":"io.seqera.tower.model.RoleDto", + "queryAllDeclaredMethods":true, + "queryAllDeclaredConstructors":true, + "methods":[{"name":"","parameterTypes":[] }, {"name":"addPermissionsItem","parameterTypes":["java.lang.String"] }, {"name":"description","parameterTypes":["java.lang.String"] }, {"name":"equals","parameterTypes":["java.lang.Object"] }, {"name":"getDescription","parameterTypes":[] }, {"name":"getIsPredefined","parameterTypes":[] }, {"name":"getName","parameterTypes":[] }, {"name":"getPermissions","parameterTypes":[] }, {"name":"hashCode","parameterTypes":[] }, {"name":"isPredefined","parameterTypes":["java.lang.Boolean"] }, {"name":"name","parameterTypes":["java.lang.String"] }, {"name":"permissions","parameterTypes":["java.util.List"] }, {"name":"setDescription","parameterTypes":["java.lang.String"] }, {"name":"setIsPredefined","parameterTypes":["java.lang.Boolean"] }, {"name":"setName","parameterTypes":["java.lang.String"] }, {"name":"setPermissions","parameterTypes":["java.util.List"] }, {"name":"toIndentedString","parameterTypes":["java.lang.Object"] }, {"name":"toString","parameterTypes":[] }] +}, +{ + "name":"io.seqera.tower.model.RolePermissionResponseDto", + "queryAllDeclaredMethods":true, + "queryAllDeclaredConstructors":true, + "methods":[{"name":"","parameterTypes":[] }, {"name":"category","parameterTypes":["java.lang.String"] }, {"name":"equals","parameterTypes":["java.lang.Object"] }, {"name":"getCategory","parameterTypes":[] }, {"name":"getName","parameterTypes":[] }, {"name":"hashCode","parameterTypes":[] }, {"name":"name","parameterTypes":["java.lang.String"] }, {"name":"setCategory","parameterTypes":["java.lang.String"] }, {"name":"setName","parameterTypes":["java.lang.String"] }, {"name":"toIndentedString","parameterTypes":["java.lang.Object"] }, {"name":"toString","parameterTypes":[] }] +}, { "name":"io.seqera.tower.model.RunId", "queryAllDeclaredMethods":true, @@ -4595,7 +4736,7 @@ "allDeclaredFields":true, "allDeclaredMethods":true, "allDeclaredConstructors":true, - "methods":[{"name":"","parameterTypes":[] }, {"name":"addAuthTypesItem","parameterTypes":["java.lang.String"] }, {"name":"addEvalWorkspaceIdsItem","parameterTypes":["java.lang.Long"] }, {"name":"addGroundswellAllowedWorkspacesItem","parameterTypes":["java.lang.Long"] }, {"name":"allowInstanceCredentials","parameterTypes":["java.lang.Boolean"] }, {"name":"allowLocalRepos","parameterTypes":["java.lang.Boolean"] }, {"name":"allowNextflowCliLogs","parameterTypes":["java.lang.Boolean"] }, {"name":"analytics","parameterTypes":["io.seqera.tower.model.Analytics"] }, {"name":"apiVersion","parameterTypes":["java.lang.String"] }, {"name":"authTypes","parameterTypes":["java.util.List"] }, {"name":"commitId","parameterTypes":["java.lang.String"] }, {"name":"contactEmail","parameterTypes":["java.lang.String"] }, {"name":"contentMaxFileSize","parameterTypes":["java.lang.Long"] }, {"name":"contentUrl","parameterTypes":["java.lang.String"] }, {"name":"equals","parameterTypes":["java.lang.Object"] }, {"name":"equalsNullable","parameterTypes":["org.openapitools.jackson.nullable.JsonNullable","org.openapitools.jackson.nullable.JsonNullable"] }, {"name":"evalWorkspaceIds","parameterTypes":["java.util.List"] }, {"name":"forgePrefix","parameterTypes":["java.lang.String"] }, {"name":"getAllowInstanceCredentials","parameterTypes":[] }, {"name":"getAllowLocalRepos","parameterTypes":[] }, {"name":"getAllowNextflowCliLogs","parameterTypes":[] }, {"name":"getAnalytics","parameterTypes":[] }, {"name":"getApiVersion","parameterTypes":[] }, {"name":"getArm64Enabled","parameterTypes":[] }, {"name":"getAuthTypes","parameterTypes":[] }, {"name":"getCommitId","parameterTypes":[] }, {"name":"getContactEmail","parameterTypes":[] }, {"name":"getContentMaxFileSize","parameterTypes":[] }, {"name":"getContentUrl","parameterTypes":[] }, {"name":"getDataExplorerAllowedWorkspaces","parameterTypes":[] }, {"name":"getEvalWorkspaceIds","parameterTypes":[] }, {"name":"getForgePrefix","parameterTypes":[] }, {"name":"getGroundswellAllowedWorkspaces","parameterTypes":[] }, {"name":"getGroundswellEnabled","parameterTypes":[] }, {"name":"getHeartbeatInterval","parameterTypes":[] }, {"name":"getLandingUrl","parameterTypes":[] }, {"name":"getLoginPath","parameterTypes":[] }, {"name":"getLogoutUrl","parameterTypes":[] }, {"name":"getLogoutUrl_JsonNullable","parameterTypes":[] }, {"name":"getNavbar","parameterTypes":[] }, {"name":"getScmsServerUrl","parameterTypes":[] }, {"name":"getSeqeraAiBaseUrl","parameterTypes":[] }, {"name":"getSeqeraAiBaseUrl_JsonNullable","parameterTypes":[] }, {"name":"getSeqeraCloud","parameterTypes":[] }, {"name":"getSeqeraComputeEnabled","parameterTypes":[] }, {"name":"getTermsOfUseUrl","parameterTypes":[] }, {"name":"getUserWorkspaceEnabled","parameterTypes":[] }, {"name":"getVersion","parameterTypes":[] }, {"name":"getWaveAllowedWorkspaces","parameterTypes":[] }, {"name":"getWaveEnabled","parameterTypes":[] }, {"name":"groundswellAllowedWorkspaces","parameterTypes":["java.util.List"] }, {"name":"groundswellEnabled","parameterTypes":["java.lang.Boolean"] }, {"name":"hashCode","parameterTypes":[] }, {"name":"hashCodeNullable","parameterTypes":["org.openapitools.jackson.nullable.JsonNullable"] }, {"name":"heartbeatInterval","parameterTypes":["java.lang.Integer"] }, {"name":"landingUrl","parameterTypes":["java.lang.String"] }, {"name":"loginPath","parameterTypes":["java.lang.String"] }, {"name":"logoutUrl","parameterTypes":["java.lang.String"] }, {"name":"navbar","parameterTypes":["io.seqera.tower.model.NavbarConfig"] }, {"name":"scmsServerUrl","parameterTypes":["java.lang.String"] }, {"name":"seqeraAiBaseUrl","parameterTypes":["java.lang.String"] }, {"name":"seqeraCloud","parameterTypes":["java.lang.Boolean"] }, {"name":"seqeraComputeEnabled","parameterTypes":["java.lang.Boolean"] }, {"name":"setAllowInstanceCredentials","parameterTypes":["java.lang.Boolean"] }, {"name":"setAllowLocalRepos","parameterTypes":["java.lang.Boolean"] }, {"name":"setAllowNextflowCliLogs","parameterTypes":["java.lang.Boolean"] }, {"name":"setAnalytics","parameterTypes":["io.seqera.tower.model.Analytics"] }, {"name":"setApiVersion","parameterTypes":["java.lang.String"] }, {"name":"setArm64Enabled","parameterTypes":["java.lang.Boolean"] }, {"name":"setAuthTypes","parameterTypes":["java.util.List"] }, {"name":"setCommitId","parameterTypes":["java.lang.String"] }, {"name":"setContactEmail","parameterTypes":["java.lang.String"] }, {"name":"setContentMaxFileSize","parameterTypes":["java.lang.Long"] }, {"name":"setContentUrl","parameterTypes":["java.lang.String"] }, {"name":"setDataExplorerAllowedWorkspaces","parameterTypes":["java.util.List"] }, {"name":"setEvalWorkspaceIds","parameterTypes":["java.util.List"] }, {"name":"setForgePrefix","parameterTypes":["java.lang.String"] }, {"name":"setGroundswellAllowedWorkspaces","parameterTypes":["java.util.List"] }, {"name":"setGroundswellEnabled","parameterTypes":["java.lang.Boolean"] }, {"name":"setHeartbeatInterval","parameterTypes":["java.lang.Integer"] }, {"name":"setLandingUrl","parameterTypes":["java.lang.String"] }, {"name":"setLoginPath","parameterTypes":["java.lang.String"] }, {"name":"setLogoutUrl","parameterTypes":["java.lang.String"] }, {"name":"setLogoutUrl_JsonNullable","parameterTypes":["org.openapitools.jackson.nullable.JsonNullable"] }, {"name":"setNavbar","parameterTypes":["io.seqera.tower.model.NavbarConfig"] }, {"name":"setScmsServerUrl","parameterTypes":["java.lang.String"] }, {"name":"setSeqeraAiBaseUrl","parameterTypes":["java.lang.String"] }, {"name":"setSeqeraAiBaseUrl_JsonNullable","parameterTypes":["org.openapitools.jackson.nullable.JsonNullable"] }, {"name":"setSeqeraCloud","parameterTypes":["java.lang.Boolean"] }, {"name":"setSeqeraComputeEnabled","parameterTypes":["java.lang.Boolean"] }, {"name":"setTermsOfUseUrl","parameterTypes":["java.lang.String"] }, {"name":"setUserWorkspaceEnabled","parameterTypes":["java.lang.Boolean"] }, {"name":"setVersion","parameterTypes":["java.lang.String"] }, {"name":"setWaveAllowedWorkspaces","parameterTypes":["java.util.List"] }, {"name":"setWaveEnabled","parameterTypes":["java.lang.Boolean"] }, {"name":"termsOfUseUrl","parameterTypes":["java.lang.String"] }, {"name":"toIndentedString","parameterTypes":["java.lang.Object"] }, {"name":"toString","parameterTypes":[] }, {"name":"userWorkspaceEnabled","parameterTypes":["java.lang.Boolean"] }, {"name":"version","parameterTypes":["java.lang.String"] }, {"name":"waveEnabled","parameterTypes":["java.lang.Boolean"] }] + "methods":[{"name":"","parameterTypes":[] }, {"name":"addAuthTypesItem","parameterTypes":["java.lang.String"] }, {"name":"addEvalWorkspaceIdsItem","parameterTypes":["java.lang.Long"] }, {"name":"addGroundswellAllowedWorkspacesItem","parameterTypes":["java.lang.Long"] }, {"name":"allowInstanceCredentials","parameterTypes":["java.lang.Boolean"] }, {"name":"allowLocalRepos","parameterTypes":["java.lang.Boolean"] }, {"name":"allowNextflowCliLogs","parameterTypes":["java.lang.Boolean"] }, {"name":"analytics","parameterTypes":["io.seqera.tower.model.Analytics"] }, {"name":"apiVersion","parameterTypes":["java.lang.String"] }, {"name":"authTypes","parameterTypes":["java.util.List"] }, {"name":"commitId","parameterTypes":["java.lang.String"] }, {"name":"contactEmail","parameterTypes":["java.lang.String"] }, {"name":"contentMaxFileSize","parameterTypes":["java.lang.Long"] }, {"name":"contentUrl","parameterTypes":["java.lang.String"] }, {"name":"equals","parameterTypes":["java.lang.Object"] }, {"name":"equalsNullable","parameterTypes":["org.openapitools.jackson.nullable.JsonNullable","org.openapitools.jackson.nullable.JsonNullable"] }, {"name":"evalWorkspaceIds","parameterTypes":["java.util.List"] }, {"name":"forgePrefix","parameterTypes":["java.lang.String"] }, {"name":"getAllowInstanceCredentials","parameterTypes":[] }, {"name":"getAllowLocalRepos","parameterTypes":[] }, {"name":"getAllowNextflowCliLogs","parameterTypes":[] }, {"name":"getAnalytics","parameterTypes":[] }, {"name":"getApiVersion","parameterTypes":[] }, {"name":"getArm64Enabled","parameterTypes":[] }, {"name":"getAuthTypes","parameterTypes":[] }, {"name":"getCommitId","parameterTypes":[] }, {"name":"getContactEmail","parameterTypes":[] }, {"name":"getContentMaxFileSize","parameterTypes":[] }, {"name":"getContentUrl","parameterTypes":[] }, {"name":"getDataExplorerAllowedWorkspaces","parameterTypes":[] }, {"name":"getEvalWorkspaceIds","parameterTypes":[] }, {"name":"getForgePrefix","parameterTypes":[] }, {"name":"getGroundswellAllowedWorkspaces","parameterTypes":[] }, {"name":"getGroundswellEnabled","parameterTypes":[] }, {"name":"getHeartbeatInterval","parameterTypes":[] }, {"name":"getLandingUrl","parameterTypes":[] }, {"name":"getLaunchParamsTextMaxSize","parameterTypes":[] }, {"name":"getLoginPath","parameterTypes":[] }, {"name":"getLogoutUrl","parameterTypes":[] }, {"name":"getLogoutUrl_JsonNullable","parameterTypes":[] }, {"name":"getNavbar","parameterTypes":[] }, {"name":"getScmsServerUrl","parameterTypes":[] }, {"name":"getSeqeraAiBaseUrl","parameterTypes":[] }, {"name":"getSeqeraAiBaseUrl_JsonNullable","parameterTypes":[] }, {"name":"getSeqeraCloud","parameterTypes":[] }, {"name":"getSeqeraComputeEnabled","parameterTypes":[] }, {"name":"getTermsOfUseUrl","parameterTypes":[] }, {"name":"getUserWorkspaceEnabled","parameterTypes":[] }, {"name":"getVersion","parameterTypes":[] }, {"name":"getWaveAllowedWorkspaces","parameterTypes":[] }, {"name":"getWaveEnabled","parameterTypes":[] }, {"name":"groundswellAllowedWorkspaces","parameterTypes":["java.util.List"] }, {"name":"groundswellEnabled","parameterTypes":["java.lang.Boolean"] }, {"name":"hashCode","parameterTypes":[] }, {"name":"hashCodeNullable","parameterTypes":["org.openapitools.jackson.nullable.JsonNullable"] }, {"name":"heartbeatInterval","parameterTypes":["java.lang.Integer"] }, {"name":"landingUrl","parameterTypes":["java.lang.String"] }, {"name":"launchParamsTextMaxSize","parameterTypes":["java.lang.Integer"] }, {"name":"loginPath","parameterTypes":["java.lang.String"] }, {"name":"logoutUrl","parameterTypes":["java.lang.String"] }, {"name":"navbar","parameterTypes":["io.seqera.tower.model.NavbarConfig"] }, {"name":"scmsServerUrl","parameterTypes":["java.lang.String"] }, {"name":"seqeraAiBaseUrl","parameterTypes":["java.lang.String"] }, {"name":"seqeraCloud","parameterTypes":["java.lang.Boolean"] }, {"name":"seqeraComputeEnabled","parameterTypes":["java.lang.Boolean"] }, {"name":"setAllowInstanceCredentials","parameterTypes":["java.lang.Boolean"] }, {"name":"setAllowLocalRepos","parameterTypes":["java.lang.Boolean"] }, {"name":"setAllowNextflowCliLogs","parameterTypes":["java.lang.Boolean"] }, {"name":"setAnalytics","parameterTypes":["io.seqera.tower.model.Analytics"] }, {"name":"setApiVersion","parameterTypes":["java.lang.String"] }, {"name":"setArm64Enabled","parameterTypes":["java.lang.Boolean"] }, {"name":"setAuthTypes","parameterTypes":["java.util.List"] }, {"name":"setCommitId","parameterTypes":["java.lang.String"] }, {"name":"setContactEmail","parameterTypes":["java.lang.String"] }, {"name":"setContentMaxFileSize","parameterTypes":["java.lang.Long"] }, {"name":"setContentUrl","parameterTypes":["java.lang.String"] }, {"name":"setDataExplorerAllowedWorkspaces","parameterTypes":["java.util.List"] }, {"name":"setEvalWorkspaceIds","parameterTypes":["java.util.List"] }, {"name":"setForgePrefix","parameterTypes":["java.lang.String"] }, {"name":"setGroundswellAllowedWorkspaces","parameterTypes":["java.util.List"] }, {"name":"setGroundswellEnabled","parameterTypes":["java.lang.Boolean"] }, {"name":"setHeartbeatInterval","parameterTypes":["java.lang.Integer"] }, {"name":"setLandingUrl","parameterTypes":["java.lang.String"] }, {"name":"setLaunchParamsTextMaxSize","parameterTypes":["java.lang.Integer"] }, {"name":"setLoginPath","parameterTypes":["java.lang.String"] }, {"name":"setLogoutUrl","parameterTypes":["java.lang.String"] }, {"name":"setLogoutUrl_JsonNullable","parameterTypes":["org.openapitools.jackson.nullable.JsonNullable"] }, {"name":"setNavbar","parameterTypes":["io.seqera.tower.model.NavbarConfig"] }, {"name":"setScmsServerUrl","parameterTypes":["java.lang.String"] }, {"name":"setSeqeraAiBaseUrl","parameterTypes":["java.lang.String"] }, {"name":"setSeqeraAiBaseUrl_JsonNullable","parameterTypes":["org.openapitools.jackson.nullable.JsonNullable"] }, {"name":"setSeqeraCloud","parameterTypes":["java.lang.Boolean"] }, {"name":"setSeqeraComputeEnabled","parameterTypes":["java.lang.Boolean"] }, {"name":"setTermsOfUseUrl","parameterTypes":["java.lang.String"] }, {"name":"setUserWorkspaceEnabled","parameterTypes":["java.lang.Boolean"] }, {"name":"setVersion","parameterTypes":["java.lang.String"] }, {"name":"setWaveAllowedWorkspaces","parameterTypes":["java.util.List"] }, {"name":"setWaveEnabled","parameterTypes":["java.lang.Boolean"] }, {"name":"termsOfUseUrl","parameterTypes":["java.lang.String"] }, {"name":"toIndentedString","parameterTypes":["java.lang.Object"] }, {"name":"toString","parameterTypes":[] }, {"name":"userWorkspaceEnabled","parameterTypes":["java.lang.Boolean"] }, {"name":"version","parameterTypes":["java.lang.String"] }, {"name":"waveEnabled","parameterTypes":["java.lang.Boolean"] }] }, { "name":"io.seqera.tower.model.ServiceInfoResponse", @@ -4616,7 +4757,7 @@ "allDeclaredFields":true, "queryAllDeclaredMethods":true, "queryAllDeclaredConstructors":true, - "methods":[{"name":"fromValue","parameterTypes":["java.lang.String"] }, {"name":"getValue","parameterTypes":[] }, {"name":"toString","parameterTypes":[] }, {"name":"valueOf","parameterTypes":["java.lang.String"] }, {"name":"values","parameterTypes":[] }] + "methods":[{"name":"$values","parameterTypes":[] }, {"name":"fromValue","parameterTypes":["java.lang.String"] }, {"name":"getValue","parameterTypes":[] }, {"name":"toString","parameterTypes":[] }, {"name":"valueOf","parameterTypes":["java.lang.String"] }, {"name":"values","parameterTypes":[] }] }, { "name":"io.seqera.tower.model.State", @@ -4677,7 +4818,7 @@ "allDeclaredFields":true, "allDeclaredMethods":true, "allDeclaredConstructors":true, - "methods":[{"name":"","parameterTypes":[] }, {"name":"addModuleItem","parameterTypes":["java.lang.String"] }, {"name":"attempt","parameterTypes":["java.lang.Integer"] }, {"name":"cloudZone","parameterTypes":["java.lang.String"] }, {"name":"complete","parameterTypes":["java.time.OffsetDateTime"] }, {"name":"container","parameterTypes":["java.lang.String"] }, {"name":"cost","parameterTypes":["java.math.BigDecimal"] }, {"name":"cpus","parameterTypes":["java.lang.Integer"] }, {"name":"dateCreated","parameterTypes":["java.time.OffsetDateTime"] }, {"name":"disk","parameterTypes":["java.lang.Long"] }, {"name":"duration","parameterTypes":["java.lang.Long"] }, {"name":"env","parameterTypes":["java.lang.String"] }, {"name":"equals","parameterTypes":["java.lang.Object"] }, {"name":"equalsNullable","parameterTypes":["org.openapitools.jackson.nullable.JsonNullable","org.openapitools.jackson.nullable.JsonNullable"] }, {"name":"errorAction","parameterTypes":["java.lang.String"] }, {"name":"executor","parameterTypes":["java.lang.String"] }, {"name":"exit","parameterTypes":["java.lang.Integer"] }, {"name":"exitStatus","parameterTypes":["java.lang.Integer"] }, {"name":"getAttempt","parameterTypes":[] }, {"name":"getCloudZone","parameterTypes":[] }, {"name":"getComplete","parameterTypes":[] }, {"name":"getContainer","parameterTypes":[] }, {"name":"getCost","parameterTypes":[] }, {"name":"getCpus","parameterTypes":[] }, {"name":"getDateCreated","parameterTypes":[] }, {"name":"getDateCreated_JsonNullable","parameterTypes":[] }, {"name":"getDisk","parameterTypes":[] }, {"name":"getDuration","parameterTypes":[] }, {"name":"getEnv","parameterTypes":[] }, {"name":"getErrorAction","parameterTypes":[] }, {"name":"getExecutor","parameterTypes":[] }, {"name":"getExit","parameterTypes":[] }, {"name":"getExitStatus","parameterTypes":[] }, {"name":"getHash","parameterTypes":[] }, {"name":"getId","parameterTypes":[] }, {"name":"getId_JsonNullable","parameterTypes":[] }, {"name":"getInvCtxt","parameterTypes":[] }, {"name":"getLastUpdated","parameterTypes":[] }, {"name":"getLastUpdated_JsonNullable","parameterTypes":[] }, {"name":"getMachineType","parameterTypes":[] }, {"name":"getMemory","parameterTypes":[] }, {"name":"getModule","parameterTypes":[] }, {"name":"getName","parameterTypes":[] }, {"name":"getNativeId","parameterTypes":[] }, {"name":"getNumSpotInterruptions","parameterTypes":[] }, {"name":"getPcpu","parameterTypes":[] }, {"name":"getPeakRss","parameterTypes":[] }, {"name":"getPeakVmem","parameterTypes":[] }, {"name":"getPmem","parameterTypes":[] }, {"name":"getPriceModel","parameterTypes":[] }, {"name":"getProcess","parameterTypes":[] }, {"name":"getQueue","parameterTypes":[] }, {"name":"getRchar","parameterTypes":[] }, {"name":"getReadBytes","parameterTypes":[] }, {"name":"getRealtime","parameterTypes":[] }, {"name":"getRss","parameterTypes":[] }, {"name":"getScratch","parameterTypes":[] }, {"name":"getScript","parameterTypes":[] }, {"name":"getStart","parameterTypes":[] }, {"name":"getStatus","parameterTypes":[] }, {"name":"getSubmit","parameterTypes":[] }, {"name":"getSyscr","parameterTypes":[] }, {"name":"getSyscw","parameterTypes":[] }, {"name":"getTag","parameterTypes":[] }, {"name":"getTaskId","parameterTypes":[] }, {"name":"getTime","parameterTypes":[] }, {"name":"getVmem","parameterTypes":[] }, {"name":"getVolCtxt","parameterTypes":[] }, {"name":"getWchar","parameterTypes":[] }, {"name":"getWorkdir","parameterTypes":[] }, {"name":"getWriteBytes","parameterTypes":[] }, {"name":"hash","parameterTypes":["java.lang.String"] }, {"name":"hashCode","parameterTypes":[] }, {"name":"hashCodeNullable","parameterTypes":["org.openapitools.jackson.nullable.JsonNullable"] }, {"name":"id","parameterTypes":["java.lang.Long"] }, {"name":"invCtxt","parameterTypes":["java.lang.Long"] }, {"name":"lastUpdated","parameterTypes":["java.time.OffsetDateTime"] }, {"name":"machineType","parameterTypes":["java.lang.String"] }, {"name":"memory","parameterTypes":["java.lang.Long"] }, {"name":"module","parameterTypes":["java.util.List"] }, {"name":"name","parameterTypes":["java.lang.String"] }, {"name":"nativeId","parameterTypes":["java.lang.String"] }, {"name":"numSpotInterruptions","parameterTypes":["java.lang.Integer"] }, {"name":"pcpu","parameterTypes":["java.lang.Double"] }, {"name":"peakRss","parameterTypes":["java.lang.Long"] }, {"name":"peakVmem","parameterTypes":["java.lang.Long"] }, {"name":"pmem","parameterTypes":["java.lang.Double"] }, {"name":"priceModel","parameterTypes":["io.seqera.tower.model.CloudPriceModel"] }, {"name":"process","parameterTypes":["java.lang.String"] }, {"name":"queue","parameterTypes":["java.lang.String"] }, {"name":"rchar","parameterTypes":["java.lang.Long"] }, {"name":"readBytes","parameterTypes":["java.lang.Long"] }, {"name":"realtime","parameterTypes":["java.lang.Long"] }, {"name":"rss","parameterTypes":["java.lang.Long"] }, {"name":"scratch","parameterTypes":["java.lang.String"] }, {"name":"script","parameterTypes":["java.lang.String"] }, {"name":"setAttempt","parameterTypes":["java.lang.Integer"] }, {"name":"setCloudZone","parameterTypes":["java.lang.String"] }, {"name":"setComplete","parameterTypes":["java.time.OffsetDateTime"] }, {"name":"setContainer","parameterTypes":["java.lang.String"] }, {"name":"setCost","parameterTypes":["java.math.BigDecimal"] }, {"name":"setCpus","parameterTypes":["java.lang.Integer"] }, {"name":"setDateCreated","parameterTypes":["java.time.OffsetDateTime"] }, {"name":"setDateCreated_JsonNullable","parameterTypes":["org.openapitools.jackson.nullable.JsonNullable"] }, {"name":"setDisk","parameterTypes":["java.lang.Long"] }, {"name":"setDuration","parameterTypes":["java.lang.Long"] }, {"name":"setEnv","parameterTypes":["java.lang.String"] }, {"name":"setErrorAction","parameterTypes":["java.lang.String"] }, {"name":"setExecutor","parameterTypes":["java.lang.String"] }, {"name":"setExit","parameterTypes":["java.lang.Integer"] }, {"name":"setExit","parameterTypes":["java.lang.String"] }, {"name":"setExitStatus","parameterTypes":["java.lang.Integer"] }, {"name":"setHash","parameterTypes":["java.lang.String"] }, {"name":"setId","parameterTypes":["java.lang.Long"] }, {"name":"setId_JsonNullable","parameterTypes":["org.openapitools.jackson.nullable.JsonNullable"] }, {"name":"setInvCtxt","parameterTypes":["java.lang.Long"] }, {"name":"setLastUpdated","parameterTypes":["java.time.OffsetDateTime"] }, {"name":"setLastUpdated_JsonNullable","parameterTypes":["org.openapitools.jackson.nullable.JsonNullable"] }, {"name":"setMachineType","parameterTypes":["java.lang.String"] }, {"name":"setMemory","parameterTypes":["java.lang.Long"] }, {"name":"setModule","parameterTypes":["java.util.List"] }, {"name":"setName","parameterTypes":["java.lang.String"] }, {"name":"setNativeId","parameterTypes":["java.lang.String"] }, {"name":"setNumSpotInterruptions","parameterTypes":["java.lang.Integer"] }, {"name":"setPcpu","parameterTypes":["java.lang.Double"] }, {"name":"setPeakRss","parameterTypes":["java.lang.Long"] }, {"name":"setPeakVmem","parameterTypes":["java.lang.Long"] }, {"name":"setPmem","parameterTypes":["java.lang.Double"] }, {"name":"setPriceModel","parameterTypes":["io.seqera.tower.model.CloudPriceModel"] }, {"name":"setProcess","parameterTypes":["java.lang.String"] }, {"name":"setQueue","parameterTypes":["java.lang.String"] }, {"name":"setRchar","parameterTypes":["java.lang.Long"] }, {"name":"setReadBytes","parameterTypes":["java.lang.Long"] }, {"name":"setRealtime","parameterTypes":["java.lang.Long"] }, {"name":"setRss","parameterTypes":["java.lang.Long"] }, {"name":"setScratch","parameterTypes":["java.lang.String"] }, {"name":"setScript","parameterTypes":["java.lang.String"] }, {"name":"setStart","parameterTypes":["java.time.OffsetDateTime"] }, {"name":"setStatus","parameterTypes":["io.seqera.tower.model.TaskStatus"] }, {"name":"setSubmit","parameterTypes":["java.time.OffsetDateTime"] }, {"name":"setSyscr","parameterTypes":["java.lang.Long"] }, {"name":"setSyscw","parameterTypes":["java.lang.Long"] }, {"name":"setTag","parameterTypes":["java.lang.String"] }, {"name":"setTaskId","parameterTypes":["java.lang.Long"] }, {"name":"setTime","parameterTypes":["java.lang.Long"] }, {"name":"setVmem","parameterTypes":["java.lang.Long"] }, {"name":"setVolCtxt","parameterTypes":["java.lang.Long"] }, {"name":"setWchar","parameterTypes":["java.lang.Long"] }, {"name":"setWorkdir","parameterTypes":["java.lang.String"] }, {"name":"setWriteBytes","parameterTypes":["java.lang.Long"] }, {"name":"start","parameterTypes":["java.time.OffsetDateTime"] }, {"name":"status","parameterTypes":["io.seqera.tower.model.TaskStatus"] }, {"name":"submit","parameterTypes":["java.time.OffsetDateTime"] }, {"name":"syscr","parameterTypes":["java.lang.Long"] }, {"name":"syscw","parameterTypes":["java.lang.Long"] }, {"name":"tag","parameterTypes":["java.lang.String"] }, {"name":"taskId","parameterTypes":["java.lang.Long"] }, {"name":"time","parameterTypes":["java.lang.Long"] }, {"name":"toIndentedString","parameterTypes":["java.lang.Object"] }, {"name":"toString","parameterTypes":[] }, {"name":"vmem","parameterTypes":["java.lang.Long"] }, {"name":"volCtxt","parameterTypes":["java.lang.Long"] }, {"name":"wchar","parameterTypes":["java.lang.Long"] }, {"name":"workdir","parameterTypes":["java.lang.String"] }, {"name":"writeBytes","parameterTypes":["java.lang.Long"] }] + "methods":[{"name":"","parameterTypes":[] }, {"name":"addModuleItem","parameterTypes":["java.lang.String"] }, {"name":"attempt","parameterTypes":["java.lang.Integer"] }, {"name":"cloudZone","parameterTypes":["java.lang.String"] }, {"name":"complete","parameterTypes":["java.time.OffsetDateTime"] }, {"name":"container","parameterTypes":["java.lang.String"] }, {"name":"cost","parameterTypes":["java.math.BigDecimal"] }, {"name":"cpus","parameterTypes":["java.lang.Integer"] }, {"name":"dateCreated","parameterTypes":["java.time.OffsetDateTime"] }, {"name":"disk","parameterTypes":["java.lang.Long"] }, {"name":"duration","parameterTypes":["java.lang.Long"] }, {"name":"env","parameterTypes":["java.lang.String"] }, {"name":"equals","parameterTypes":["java.lang.Object"] }, {"name":"equalsNullable","parameterTypes":["org.openapitools.jackson.nullable.JsonNullable","org.openapitools.jackson.nullable.JsonNullable"] }, {"name":"errorAction","parameterTypes":["java.lang.String"] }, {"name":"errorMessage","parameterTypes":["java.lang.String"] }, {"name":"executor","parameterTypes":["java.lang.String"] }, {"name":"exit","parameterTypes":["java.lang.Integer"] }, {"name":"exitStatus","parameterTypes":["java.lang.Integer"] }, {"name":"getAttempt","parameterTypes":[] }, {"name":"getCloudZone","parameterTypes":[] }, {"name":"getComplete","parameterTypes":[] }, {"name":"getContainer","parameterTypes":[] }, {"name":"getCost","parameterTypes":[] }, {"name":"getCpus","parameterTypes":[] }, {"name":"getDateCreated","parameterTypes":[] }, {"name":"getDateCreated_JsonNullable","parameterTypes":[] }, {"name":"getDisk","parameterTypes":[] }, {"name":"getDuration","parameterTypes":[] }, {"name":"getEnv","parameterTypes":[] }, {"name":"getErrorAction","parameterTypes":[] }, {"name":"getErrorMessage","parameterTypes":[] }, {"name":"getErrorMessage_JsonNullable","parameterTypes":[] }, {"name":"getExecutor","parameterTypes":[] }, {"name":"getExit","parameterTypes":[] }, {"name":"getExitStatus","parameterTypes":[] }, {"name":"getHash","parameterTypes":[] }, {"name":"getId","parameterTypes":[] }, {"name":"getId_JsonNullable","parameterTypes":[] }, {"name":"getInvCtxt","parameterTypes":[] }, {"name":"getLastUpdated","parameterTypes":[] }, {"name":"getLastUpdated_JsonNullable","parameterTypes":[] }, {"name":"getLogStreamId","parameterTypes":[] }, {"name":"getMachineType","parameterTypes":[] }, {"name":"getMemory","parameterTypes":[] }, {"name":"getModule","parameterTypes":[] }, {"name":"getName","parameterTypes":[] }, {"name":"getNativeId","parameterTypes":[] }, {"name":"getNumSpotInterruptions","parameterTypes":[] }, {"name":"getPcpu","parameterTypes":[] }, {"name":"getPeakRss","parameterTypes":[] }, {"name":"getPeakVmem","parameterTypes":[] }, {"name":"getPmem","parameterTypes":[] }, {"name":"getPriceModel","parameterTypes":[] }, {"name":"getProcess","parameterTypes":[] }, {"name":"getQueue","parameterTypes":[] }, {"name":"getRchar","parameterTypes":[] }, {"name":"getReadBytes","parameterTypes":[] }, {"name":"getRealtime","parameterTypes":[] }, {"name":"getRss","parameterTypes":[] }, {"name":"getScratch","parameterTypes":[] }, {"name":"getScript","parameterTypes":[] }, {"name":"getStart","parameterTypes":[] }, {"name":"getStatus","parameterTypes":[] }, {"name":"getSubmit","parameterTypes":[] }, {"name":"getSyscr","parameterTypes":[] }, {"name":"getSyscw","parameterTypes":[] }, {"name":"getTag","parameterTypes":[] }, {"name":"getTaskId","parameterTypes":[] }, {"name":"getTime","parameterTypes":[] }, {"name":"getVmem","parameterTypes":[] }, {"name":"getVolCtxt","parameterTypes":[] }, {"name":"getWchar","parameterTypes":[] }, {"name":"getWorkdir","parameterTypes":[] }, {"name":"getWriteBytes","parameterTypes":[] }, {"name":"hash","parameterTypes":["java.lang.String"] }, {"name":"hashCode","parameterTypes":[] }, {"name":"hashCodeNullable","parameterTypes":["org.openapitools.jackson.nullable.JsonNullable"] }, {"name":"id","parameterTypes":["java.lang.Long"] }, {"name":"invCtxt","parameterTypes":["java.lang.Long"] }, {"name":"lastUpdated","parameterTypes":["java.time.OffsetDateTime"] }, {"name":"logStreamId","parameterTypes":["java.lang.String"] }, {"name":"machineType","parameterTypes":["java.lang.String"] }, {"name":"memory","parameterTypes":["java.lang.Long"] }, {"name":"module","parameterTypes":["java.util.List"] }, {"name":"name","parameterTypes":["java.lang.String"] }, {"name":"nativeId","parameterTypes":["java.lang.String"] }, {"name":"numSpotInterruptions","parameterTypes":["java.lang.Integer"] }, {"name":"pcpu","parameterTypes":["java.lang.Double"] }, {"name":"peakRss","parameterTypes":["java.lang.Long"] }, {"name":"peakVmem","parameterTypes":["java.lang.Long"] }, {"name":"pmem","parameterTypes":["java.lang.Double"] }, {"name":"priceModel","parameterTypes":["io.seqera.tower.model.CloudPriceModel"] }, {"name":"process","parameterTypes":["java.lang.String"] }, {"name":"queue","parameterTypes":["java.lang.String"] }, {"name":"rchar","parameterTypes":["java.lang.Long"] }, {"name":"readBytes","parameterTypes":["java.lang.Long"] }, {"name":"realtime","parameterTypes":["java.lang.Long"] }, {"name":"rss","parameterTypes":["java.lang.Long"] }, {"name":"scratch","parameterTypes":["java.lang.String"] }, {"name":"script","parameterTypes":["java.lang.String"] }, {"name":"setAttempt","parameterTypes":["java.lang.Integer"] }, {"name":"setCloudZone","parameterTypes":["java.lang.String"] }, {"name":"setComplete","parameterTypes":["java.time.OffsetDateTime"] }, {"name":"setContainer","parameterTypes":["java.lang.String"] }, {"name":"setCost","parameterTypes":["java.math.BigDecimal"] }, {"name":"setCpus","parameterTypes":["java.lang.Integer"] }, {"name":"setDateCreated","parameterTypes":["java.time.OffsetDateTime"] }, {"name":"setDateCreated_JsonNullable","parameterTypes":["org.openapitools.jackson.nullable.JsonNullable"] }, {"name":"setDisk","parameterTypes":["java.lang.Long"] }, {"name":"setDuration","parameterTypes":["java.lang.Long"] }, {"name":"setEnv","parameterTypes":["java.lang.String"] }, {"name":"setErrorAction","parameterTypes":["java.lang.String"] }, {"name":"setErrorMessage","parameterTypes":["java.lang.String"] }, {"name":"setErrorMessage_JsonNullable","parameterTypes":["org.openapitools.jackson.nullable.JsonNullable"] }, {"name":"setExecutor","parameterTypes":["java.lang.String"] }, {"name":"setExit","parameterTypes":["java.lang.Integer"] }, {"name":"setExit","parameterTypes":["java.lang.String"] }, {"name":"setExitStatus","parameterTypes":["java.lang.Integer"] }, {"name":"setHash","parameterTypes":["java.lang.String"] }, {"name":"setId","parameterTypes":["java.lang.Long"] }, {"name":"setId_JsonNullable","parameterTypes":["org.openapitools.jackson.nullable.JsonNullable"] }, {"name":"setInvCtxt","parameterTypes":["java.lang.Long"] }, {"name":"setLastUpdated","parameterTypes":["java.time.OffsetDateTime"] }, {"name":"setLastUpdated_JsonNullable","parameterTypes":["org.openapitools.jackson.nullable.JsonNullable"] }, {"name":"setLogStreamId","parameterTypes":["java.lang.String"] }, {"name":"setMachineType","parameterTypes":["java.lang.String"] }, {"name":"setMemory","parameterTypes":["java.lang.Long"] }, {"name":"setModule","parameterTypes":["java.util.List"] }, {"name":"setName","parameterTypes":["java.lang.String"] }, {"name":"setNativeId","parameterTypes":["java.lang.String"] }, {"name":"setNumSpotInterruptions","parameterTypes":["java.lang.Integer"] }, {"name":"setPcpu","parameterTypes":["java.lang.Double"] }, {"name":"setPeakRss","parameterTypes":["java.lang.Long"] }, {"name":"setPeakVmem","parameterTypes":["java.lang.Long"] }, {"name":"setPmem","parameterTypes":["java.lang.Double"] }, {"name":"setPriceModel","parameterTypes":["io.seqera.tower.model.CloudPriceModel"] }, {"name":"setProcess","parameterTypes":["java.lang.String"] }, {"name":"setQueue","parameterTypes":["java.lang.String"] }, {"name":"setRchar","parameterTypes":["java.lang.Long"] }, {"name":"setReadBytes","parameterTypes":["java.lang.Long"] }, {"name":"setRealtime","parameterTypes":["java.lang.Long"] }, {"name":"setRss","parameterTypes":["java.lang.Long"] }, {"name":"setScratch","parameterTypes":["java.lang.String"] }, {"name":"setScript","parameterTypes":["java.lang.String"] }, {"name":"setStart","parameterTypes":["java.time.OffsetDateTime"] }, {"name":"setStatus","parameterTypes":["io.seqera.tower.model.TaskStatus"] }, {"name":"setSubmit","parameterTypes":["java.time.OffsetDateTime"] }, {"name":"setSyscr","parameterTypes":["java.lang.Long"] }, {"name":"setSyscw","parameterTypes":["java.lang.Long"] }, {"name":"setTag","parameterTypes":["java.lang.String"] }, {"name":"setTaskId","parameterTypes":["java.lang.Long"] }, {"name":"setTime","parameterTypes":["java.lang.Long"] }, {"name":"setVmem","parameterTypes":["java.lang.Long"] }, {"name":"setVolCtxt","parameterTypes":["java.lang.Long"] }, {"name":"setWchar","parameterTypes":["java.lang.Long"] }, {"name":"setWorkdir","parameterTypes":["java.lang.String"] }, {"name":"setWriteBytes","parameterTypes":["java.lang.Long"] }, {"name":"start","parameterTypes":["java.time.OffsetDateTime"] }, {"name":"status","parameterTypes":["io.seqera.tower.model.TaskStatus"] }, {"name":"submit","parameterTypes":["java.time.OffsetDateTime"] }, {"name":"syscr","parameterTypes":["java.lang.Long"] }, {"name":"syscw","parameterTypes":["java.lang.Long"] }, {"name":"tag","parameterTypes":["java.lang.String"] }, {"name":"taskId","parameterTypes":["java.lang.Long"] }, {"name":"time","parameterTypes":["java.lang.Long"] }, {"name":"toIndentedString","parameterTypes":["java.lang.Object"] }, {"name":"toString","parameterTypes":[] }, {"name":"vmem","parameterTypes":["java.lang.Long"] }, {"name":"volCtxt","parameterTypes":["java.lang.Long"] }, {"name":"wchar","parameterTypes":["java.lang.Long"] }, {"name":"workdir","parameterTypes":["java.lang.String"] }, {"name":"writeBytes","parameterTypes":["java.lang.Long"] }] }, { "name":"io.seqera.tower.model.TaskStatus", @@ -4691,7 +4832,7 @@ "allDeclaredFields":true, "allDeclaredMethods":true, "allDeclaredConstructors":true, - "methods":[{"name":"","parameterTypes":[] }, {"name":"","parameterTypes":["java.lang.Long","java.time.OffsetDateTime","java.time.OffsetDateTime"] }, {"name":"description","parameterTypes":["java.lang.String"] }, {"name":"equals","parameterTypes":["java.lang.Object"] }, {"name":"equalsNullable","parameterTypes":["org.openapitools.jackson.nullable.JsonNullable","org.openapitools.jackson.nullable.JsonNullable"] }, {"name":"getDateCreated","parameterTypes":[] }, {"name":"getDescription","parameterTypes":[] }, {"name":"getId","parameterTypes":[] }, {"name":"getId_JsonNullable","parameterTypes":[] }, {"name":"getLastUpdated","parameterTypes":[] }, {"name":"getName","parameterTypes":[] }, {"name":"hashCode","parameterTypes":[] }, {"name":"hashCodeNullable","parameterTypes":["org.openapitools.jackson.nullable.JsonNullable"] }, {"name":"name","parameterTypes":["java.lang.String"] }, {"name":"setDescription","parameterTypes":["java.lang.String"] }, {"name":"setId_JsonNullable","parameterTypes":["org.openapitools.jackson.nullable.JsonNullable"] }, {"name":"setName","parameterTypes":["java.lang.String"] }, {"name":"toIndentedString","parameterTypes":["java.lang.Object"] }, {"name":"toString","parameterTypes":[] }] + "methods":[{"name":"","parameterTypes":[] }, {"name":"","parameterTypes":["java.lang.Long","java.time.OffsetDateTime","java.time.OffsetDateTime"] }, {"name":"","parameterTypes":["java.time.OffsetDateTime","java.lang.Long","java.time.OffsetDateTime"] }, {"name":"description","parameterTypes":["java.lang.String"] }, {"name":"equals","parameterTypes":["java.lang.Object"] }, {"name":"equalsNullable","parameterTypes":["org.openapitools.jackson.nullable.JsonNullable","org.openapitools.jackson.nullable.JsonNullable"] }, {"name":"getDateCreated","parameterTypes":[] }, {"name":"getDescription","parameterTypes":[] }, {"name":"getId","parameterTypes":[] }, {"name":"getId_JsonNullable","parameterTypes":[] }, {"name":"getLastUpdated","parameterTypes":[] }, {"name":"getName","parameterTypes":[] }, {"name":"hashCode","parameterTypes":[] }, {"name":"hashCodeNullable","parameterTypes":["org.openapitools.jackson.nullable.JsonNullable"] }, {"name":"name","parameterTypes":["java.lang.String"] }, {"name":"setDescription","parameterTypes":["java.lang.String"] }, {"name":"setId_JsonNullable","parameterTypes":["org.openapitools.jackson.nullable.JsonNullable"] }, {"name":"setName","parameterTypes":["java.lang.String"] }, {"name":"toIndentedString","parameterTypes":["java.lang.Object"] }, {"name":"toString","parameterTypes":[] }] }, { "name":"io.seqera.tower.model.TeamDbDto", @@ -4700,6 +4841,11 @@ "allDeclaredConstructors":true, "methods":[{"name":"","parameterTypes":[] }, {"name":"avatarUrl","parameterTypes":["java.lang.String"] }, {"name":"description","parameterTypes":["java.lang.String"] }, {"name":"equals","parameterTypes":["java.lang.Object"] }, {"name":"getAvatarUrl","parameterTypes":[] }, {"name":"getDescription","parameterTypes":[] }, {"name":"getMembersCount","parameterTypes":[] }, {"name":"getName","parameterTypes":[] }, {"name":"getTeamId","parameterTypes":[] }, {"name":"hashCode","parameterTypes":[] }, {"name":"membersCount","parameterTypes":["java.lang.Long"] }, {"name":"name","parameterTypes":["java.lang.String"] }, {"name":"setAvatarUrl","parameterTypes":["java.lang.String"] }, {"name":"setDescription","parameterTypes":["java.lang.String"] }, {"name":"setMembersCount","parameterTypes":["java.lang.Long"] }, {"name":"setName","parameterTypes":["java.lang.String"] }, {"name":"setTeamId","parameterTypes":["java.lang.Long"] }, {"name":"teamId","parameterTypes":["java.lang.Long"] }, {"name":"toIndentedString","parameterTypes":["java.lang.Object"] }, {"name":"toString","parameterTypes":[] }] }, +{ + "name":"io.seqera.tower.model.TeamType", + "queryAllDeclaredMethods":true, + "methods":[{"name":"$values","parameterTypes":[] }, {"name":"fromValue","parameterTypes":["java.lang.String"] }, {"name":"getValue","parameterTypes":[] }, {"name":"toString","parameterTypes":[] }, {"name":"valueOf","parameterTypes":["java.lang.String"] }, {"name":"values","parameterTypes":[] }] +}, { "name":"io.seqera.tower.model.TraceBeginRequest", "queryAllDeclaredMethods":true, @@ -4724,6 +4870,12 @@ "queryAllDeclaredConstructors":true, "methods":[{"name":"","parameterTypes":[] }, {"name":"equals","parameterTypes":["java.lang.Object"] }, {"name":"getStatus","parameterTypes":[] }, {"name":"getWorkflowId","parameterTypes":[] }, {"name":"hashCode","parameterTypes":[] }, {"name":"setStatus","parameterTypes":["io.seqera.tower.model.TraceProcessingStatus"] }, {"name":"setWorkflowId","parameterTypes":["java.lang.String"] }, {"name":"status","parameterTypes":["io.seqera.tower.model.TraceProcessingStatus"] }, {"name":"toIndentedString","parameterTypes":["java.lang.Object"] }, {"name":"toString","parameterTypes":[] }, {"name":"workflowId","parameterTypes":["java.lang.String"] }] }, +{ + "name":"io.seqera.tower.model.TraceCreateMetadata", + "queryAllDeclaredMethods":true, + "queryAllDeclaredConstructors":true, + "methods":[{"name":"","parameterTypes":[] }, {"name":"addLabelsItem","parameterTypes":["java.lang.String"] }, {"name":"commitId","parameterTypes":["java.lang.String"] }, {"name":"computeEnvId","parameterTypes":["java.lang.String"] }, {"name":"computeEnvName","parameterTypes":["java.lang.String"] }, {"name":"computeEnvPlatform","parameterTypes":["java.lang.String"] }, {"name":"equals","parameterTypes":["java.lang.Object"] }, {"name":"equalsNullable","parameterTypes":["org.openapitools.jackson.nullable.JsonNullable","org.openapitools.jackson.nullable.JsonNullable"] }, {"name":"getCommitId","parameterTypes":[] }, {"name":"getCommitId_JsonNullable","parameterTypes":[] }, {"name":"getComputeEnvId","parameterTypes":[] }, {"name":"getComputeEnvId_JsonNullable","parameterTypes":[] }, {"name":"getComputeEnvName","parameterTypes":[] }, {"name":"getComputeEnvName_JsonNullable","parameterTypes":[] }, {"name":"getComputeEnvPlatform","parameterTypes":[] }, {"name":"getComputeEnvPlatform_JsonNullable","parameterTypes":[] }, {"name":"getLabels","parameterTypes":[] }, {"name":"getLabels_JsonNullable","parameterTypes":[] }, {"name":"getOrgName","parameterTypes":[] }, {"name":"getOrgName_JsonNullable","parameterTypes":[] }, {"name":"getPipelineId","parameterTypes":[] }, {"name":"getPipelineId_JsonNullable","parameterTypes":[] }, {"name":"getPipelineName","parameterTypes":[] }, {"name":"getPipelineName_JsonNullable","parameterTypes":[] }, {"name":"getRevision","parameterTypes":[] }, {"name":"getRevision_JsonNullable","parameterTypes":[] }, {"name":"getUserId","parameterTypes":[] }, {"name":"getUserName","parameterTypes":[] }, {"name":"getUserOrganization","parameterTypes":[] }, {"name":"getUserOrganization_JsonNullable","parameterTypes":[] }, {"name":"getWorkspaceFullName","parameterTypes":[] }, {"name":"getWorkspaceFullName_JsonNullable","parameterTypes":[] }, {"name":"getWorkspaceId","parameterTypes":[] }, {"name":"getWorkspaceId_JsonNullable","parameterTypes":[] }, {"name":"getWorkspaceName","parameterTypes":[] }, {"name":"getWorkspaceName_JsonNullable","parameterTypes":[] }, {"name":"hashCode","parameterTypes":[] }, {"name":"hashCodeNullable","parameterTypes":["org.openapitools.jackson.nullable.JsonNullable"] }, {"name":"labels","parameterTypes":["java.util.List"] }, {"name":"orgName","parameterTypes":["java.lang.String"] }, {"name":"pipelineId","parameterTypes":["java.lang.Long"] }, {"name":"pipelineName","parameterTypes":["java.lang.String"] }, {"name":"revision","parameterTypes":["java.lang.String"] }, {"name":"setCommitId","parameterTypes":["java.lang.String"] }, {"name":"setCommitId_JsonNullable","parameterTypes":["org.openapitools.jackson.nullable.JsonNullable"] }, {"name":"setComputeEnvId","parameterTypes":["java.lang.String"] }, {"name":"setComputeEnvId_JsonNullable","parameterTypes":["org.openapitools.jackson.nullable.JsonNullable"] }, {"name":"setComputeEnvName","parameterTypes":["java.lang.String"] }, {"name":"setComputeEnvName_JsonNullable","parameterTypes":["org.openapitools.jackson.nullable.JsonNullable"] }, {"name":"setComputeEnvPlatform","parameterTypes":["java.lang.String"] }, {"name":"setComputeEnvPlatform_JsonNullable","parameterTypes":["org.openapitools.jackson.nullable.JsonNullable"] }, {"name":"setLabels","parameterTypes":["java.util.List"] }, {"name":"setLabels_JsonNullable","parameterTypes":["org.openapitools.jackson.nullable.JsonNullable"] }, {"name":"setOrgName","parameterTypes":["java.lang.String"] }, {"name":"setOrgName_JsonNullable","parameterTypes":["org.openapitools.jackson.nullable.JsonNullable"] }, {"name":"setPipelineId","parameterTypes":["java.lang.Long"] }, {"name":"setPipelineId_JsonNullable","parameterTypes":["org.openapitools.jackson.nullable.JsonNullable"] }, {"name":"setPipelineName","parameterTypes":["java.lang.String"] }, {"name":"setPipelineName_JsonNullable","parameterTypes":["org.openapitools.jackson.nullable.JsonNullable"] }, {"name":"setRevision","parameterTypes":["java.lang.String"] }, {"name":"setRevision_JsonNullable","parameterTypes":["org.openapitools.jackson.nullable.JsonNullable"] }, {"name":"setUserId","parameterTypes":["java.lang.Long"] }, {"name":"setUserName","parameterTypes":["java.lang.String"] }, {"name":"setUserOrganization","parameterTypes":["java.lang.String"] }, {"name":"setUserOrganization_JsonNullable","parameterTypes":["org.openapitools.jackson.nullable.JsonNullable"] }, {"name":"setWorkspaceFullName","parameterTypes":["java.lang.String"] }, {"name":"setWorkspaceFullName_JsonNullable","parameterTypes":["org.openapitools.jackson.nullable.JsonNullable"] }, {"name":"setWorkspaceId","parameterTypes":["java.lang.Long"] }, {"name":"setWorkspaceId_JsonNullable","parameterTypes":["org.openapitools.jackson.nullable.JsonNullable"] }, {"name":"setWorkspaceName","parameterTypes":["java.lang.String"] }, {"name":"setWorkspaceName_JsonNullable","parameterTypes":["org.openapitools.jackson.nullable.JsonNullable"] }, {"name":"toIndentedString","parameterTypes":["java.lang.Object"] }, {"name":"toString","parameterTypes":[] }, {"name":"userId","parameterTypes":["java.lang.Long"] }, {"name":"userName","parameterTypes":["java.lang.String"] }, {"name":"userOrganization","parameterTypes":["java.lang.String"] }, {"name":"workspaceFullName","parameterTypes":["java.lang.String"] }, {"name":"workspaceId","parameterTypes":["java.lang.Long"] }, {"name":"workspaceName","parameterTypes":["java.lang.String"] }] +}, { "name":"io.seqera.tower.model.TraceCreateRequest", "queryAllDeclaredMethods":true, @@ -4734,7 +4886,7 @@ "name":"io.seqera.tower.model.TraceCreateResponse", "queryAllDeclaredMethods":true, "queryAllDeclaredConstructors":true, - "methods":[{"name":"","parameterTypes":[] }, {"name":"equals","parameterTypes":["java.lang.Object"] }, {"name":"getMessage","parameterTypes":[] }, {"name":"getWatchUrl","parameterTypes":[] }, {"name":"getWorkflowId","parameterTypes":[] }, {"name":"hashCode","parameterTypes":[] }, {"name":"message","parameterTypes":["java.lang.String"] }, {"name":"setMessage","parameterTypes":["java.lang.String"] }, {"name":"setWatchUrl","parameterTypes":["java.lang.String"] }, {"name":"setWorkflowId","parameterTypes":["java.lang.String"] }, {"name":"toIndentedString","parameterTypes":["java.lang.Object"] }, {"name":"toString","parameterTypes":[] }, {"name":"watchUrl","parameterTypes":["java.lang.String"] }, {"name":"workflowId","parameterTypes":["java.lang.String"] }] + "methods":[{"name":"","parameterTypes":[] }, {"name":"equals","parameterTypes":["java.lang.Object"] }, {"name":"equalsNullable","parameterTypes":["org.openapitools.jackson.nullable.JsonNullable","org.openapitools.jackson.nullable.JsonNullable"] }, {"name":"getMessage","parameterTypes":[] }, {"name":"getMetadata","parameterTypes":[] }, {"name":"getMetadata_JsonNullable","parameterTypes":[] }, {"name":"getWatchUrl","parameterTypes":[] }, {"name":"getWorkflowId","parameterTypes":[] }, {"name":"hashCode","parameterTypes":[] }, {"name":"hashCodeNullable","parameterTypes":["org.openapitools.jackson.nullable.JsonNullable"] }, {"name":"message","parameterTypes":["java.lang.String"] }, {"name":"metadata","parameterTypes":["io.seqera.tower.model.TraceCreateMetadata"] }, {"name":"setMessage","parameterTypes":["java.lang.String"] }, {"name":"setMetadata","parameterTypes":["io.seqera.tower.model.TraceCreateMetadata"] }, {"name":"setMetadata_JsonNullable","parameterTypes":["org.openapitools.jackson.nullable.JsonNullable"] }, {"name":"setWatchUrl","parameterTypes":["java.lang.String"] }, {"name":"setWorkflowId","parameterTypes":["java.lang.String"] }, {"name":"toIndentedString","parameterTypes":["java.lang.Object"] }, {"name":"toString","parameterTypes":[] }, {"name":"watchUrl","parameterTypes":["java.lang.String"] }, {"name":"workflowId","parameterTypes":["java.lang.String"] }] }, { "name":"io.seqera.tower.model.TraceHeartbeatRequest", @@ -4887,6 +5039,12 @@ "queryAllDeclaredConstructors":true, "methods":[{"name":"","parameterTypes":[] }, {"name":"equals","parameterTypes":["java.lang.Object"] }, {"name":"getValue","parameterTypes":[] }, {"name":"hashCode","parameterTypes":[] }, {"name":"setValue","parameterTypes":["java.lang.String"] }, {"name":"toIndentedString","parameterTypes":["java.lang.Object"] }, {"name":"toString","parameterTypes":[] }, {"name":"value","parameterTypes":["java.lang.String"] }] }, +{ + "name":"io.seqera.tower.model.UpdateRoleRequest", + "queryAllDeclaredMethods":true, + "queryAllDeclaredConstructors":true, + "methods":[{"name":"","parameterTypes":[] }, {"name":"addPermissionsItem","parameterTypes":["java.lang.String"] }, {"name":"description","parameterTypes":["java.lang.String"] }, {"name":"equals","parameterTypes":["java.lang.Object"] }, {"name":"getDescription","parameterTypes":[] }, {"name":"getName","parameterTypes":[] }, {"name":"getPermissions","parameterTypes":[] }, {"name":"hashCode","parameterTypes":[] }, {"name":"name","parameterTypes":["java.lang.String"] }, {"name":"permissions","parameterTypes":["java.util.List"] }, {"name":"setDescription","parameterTypes":["java.lang.String"] }, {"name":"setName","parameterTypes":["java.lang.String"] }, {"name":"setPermissions","parameterTypes":["java.util.List"] }, {"name":"toIndentedString","parameterTypes":["java.lang.Object"] }, {"name":"toString","parameterTypes":[] }] +}, { "name":"io.seqera.tower.model.UpdateTeamRequest", "queryAllDeclaredMethods":true, @@ -4947,6 +5105,36 @@ "queryAllDeclaredConstructors":true, "methods":[{"name":"","parameterTypes":[] }, {"name":"dateCreated","parameterTypes":["java.time.OffsetDateTime"] }, {"name":"equals","parameterTypes":["java.lang.Object"] }, {"name":"getDateCreated","parameterTypes":[] }, {"name":"getId","parameterTypes":[] }, {"name":"getLastUsed","parameterTypes":[] }, {"name":"getName","parameterTypes":[] }, {"name":"getPublicKey","parameterTypes":[] }, {"name":"hashCode","parameterTypes":[] }, {"name":"id","parameterTypes":["java.lang.Long"] }, {"name":"lastUsed","parameterTypes":["java.time.OffsetDateTime"] }, {"name":"name","parameterTypes":["java.lang.String"] }, {"name":"publicKey","parameterTypes":["java.lang.String"] }, {"name":"setDateCreated","parameterTypes":["java.time.OffsetDateTime"] }, {"name":"setId","parameterTypes":["java.lang.Long"] }, {"name":"setLastUsed","parameterTypes":["java.time.OffsetDateTime"] }, {"name":"setName","parameterTypes":["java.lang.String"] }, {"name":"setPublicKey","parameterTypes":["java.lang.String"] }, {"name":"toIndentedString","parameterTypes":["java.lang.Object"] }, {"name":"toString","parameterTypes":[] }] }, +{ + "name":"io.seqera.tower.model.UserWorkspacePermissionDto", + "queryAllDeclaredMethods":true, + "queryAllDeclaredConstructors":true, + "methods":[{"name":"","parameterTypes":[] }, {"name":"addRolesItem","parameterTypes":["java.lang.String"] }, {"name":"equals","parameterTypes":["java.lang.Object"] }, {"name":"getPermission","parameterTypes":[] }, {"name":"getRoles","parameterTypes":[] }, {"name":"hashCode","parameterTypes":[] }, {"name":"permission","parameterTypes":["java.lang.String"] }, {"name":"roles","parameterTypes":["java.util.List"] }, {"name":"setPermission","parameterTypes":["java.lang.String"] }, {"name":"setRoles","parameterTypes":["java.util.List"] }, {"name":"toIndentedString","parameterTypes":["java.lang.Object"] }, {"name":"toString","parameterTypes":[] }] +}, +{ + "name":"io.seqera.tower.model.UserWorkspaceRoleDto", + "queryAllDeclaredMethods":true, + "queryAllDeclaredConstructors":true, + "methods":[{"name":"","parameterTypes":[] }, {"name":"equals","parameterTypes":["java.lang.Object"] }, {"name":"getRole","parameterTypes":[] }, {"name":"getRoleSourceType","parameterTypes":[] }, {"name":"getSourceTeamId","parameterTypes":[] }, {"name":"getSourceTeamName","parameterTypes":[] }, {"name":"getSourceTeamType","parameterTypes":[] }, {"name":"hashCode","parameterTypes":[] }, {"name":"role","parameterTypes":["java.lang.String"] }, {"name":"roleSourceType","parameterTypes":["io.seqera.tower.model.WspRoleSourceType"] }, {"name":"setRole","parameterTypes":["java.lang.String"] }, {"name":"setRoleSourceType","parameterTypes":["io.seqera.tower.model.WspRoleSourceType"] }, {"name":"setSourceTeamId","parameterTypes":["java.lang.Long"] }, {"name":"setSourceTeamName","parameterTypes":["java.lang.String"] }, {"name":"setSourceTeamType","parameterTypes":["io.seqera.tower.model.TeamType"] }, {"name":"sourceTeamId","parameterTypes":["java.lang.Long"] }, {"name":"sourceTeamName","parameterTypes":["java.lang.String"] }, {"name":"sourceTeamType","parameterTypes":["io.seqera.tower.model.TeamType"] }, {"name":"toIndentedString","parameterTypes":["java.lang.Object"] }, {"name":"toString","parameterTypes":[] }] +}, +{ + "name":"io.seqera.tower.model.UserWorkspaceRolesDto", + "queryAllDeclaredMethods":true, + "queryAllDeclaredConstructors":true, + "methods":[{"name":"","parameterTypes":[] }, {"name":"addPermissionsItem","parameterTypes":["io.seqera.tower.model.UserWorkspacePermissionDto"] }, {"name":"addRolesItem","parameterTypes":["io.seqera.tower.model.UserWorkspaceRoleDto"] }, {"name":"equals","parameterTypes":["java.lang.Object"] }, {"name":"getPermissions","parameterTypes":[] }, {"name":"getRoles","parameterTypes":[] }, {"name":"getWorkspaceId","parameterTypes":[] }, {"name":"getWorkspaceName","parameterTypes":[] }, {"name":"hashCode","parameterTypes":[] }, {"name":"permissions","parameterTypes":["java.util.List"] }, {"name":"roles","parameterTypes":["java.util.List"] }, {"name":"setPermissions","parameterTypes":["java.util.List"] }, {"name":"setRoles","parameterTypes":["java.util.List"] }, {"name":"setWorkspaceId","parameterTypes":["java.lang.Long"] }, {"name":"setWorkspaceName","parameterTypes":["java.lang.String"] }, {"name":"toIndentedString","parameterTypes":["java.lang.Object"] }, {"name":"toString","parameterTypes":[] }, {"name":"workspaceId","parameterTypes":["java.lang.Long"] }, {"name":"workspaceName","parameterTypes":["java.lang.String"] }] +}, +{ + "name":"io.seqera.tower.model.ValidateUrlRequest", + "queryAllDeclaredMethods":true, + "queryAllDeclaredConstructors":true, + "methods":[{"name":"","parameterTypes":[] }, {"name":"equals","parameterTypes":["java.lang.Object"] }, {"name":"getUrl","parameterTypes":[] }, {"name":"hashCode","parameterTypes":[] }, {"name":"setUrl","parameterTypes":["java.lang.String"] }, {"name":"toIndentedString","parameterTypes":["java.lang.Object"] }, {"name":"toString","parameterTypes":[] }, {"name":"url","parameterTypes":["java.lang.String"] }] +}, +{ + "name":"io.seqera.tower.model.ValidateUrlResponse", + "queryAllDeclaredMethods":true, + "queryAllDeclaredConstructors":true, + "methods":[{"name":"","parameterTypes":[] }, {"name":"contentLength","parameterTypes":["java.lang.Long"] }, {"name":"equals","parameterTypes":["java.lang.Object"] }, {"name":"errorCode","parameterTypes":["java.lang.String"] }, {"name":"errorMessage","parameterTypes":["java.lang.String"] }, {"name":"getContentLength","parameterTypes":[] }, {"name":"getErrorCode","parameterTypes":[] }, {"name":"getErrorMessage","parameterTypes":[] }, {"name":"getHasEtag","parameterTypes":[] }, {"name":"getMediaType","parameterTypes":[] }, {"name":"getValid","parameterTypes":[] }, {"name":"hasEtag","parameterTypes":["java.lang.Boolean"] }, {"name":"hashCode","parameterTypes":[] }, {"name":"mediaType","parameterTypes":["java.lang.String"] }, {"name":"setContentLength","parameterTypes":["java.lang.Long"] }, {"name":"setErrorCode","parameterTypes":["java.lang.String"] }, {"name":"setErrorMessage","parameterTypes":["java.lang.String"] }, {"name":"setHasEtag","parameterTypes":["java.lang.Boolean"] }, {"name":"setMediaType","parameterTypes":["java.lang.String"] }, {"name":"setValid","parameterTypes":["java.lang.Boolean"] }, {"name":"toIndentedString","parameterTypes":["java.lang.Object"] }, {"name":"toString","parameterTypes":[] }, {"name":"valid","parameterTypes":["java.lang.Boolean"] }] +}, { "name":"io.seqera.tower.model.Visibility", "allDeclaredFields":true, @@ -5012,7 +5200,7 @@ "allDeclaredFields":true, "allDeclaredMethods":true, "allDeclaredConstructors":true, - "methods":[{"name":"","parameterTypes":[] }, {"name":"","parameterTypes":["java.lang.Long","java.time.OffsetDateTime","java.time.OffsetDateTime","java.lang.Boolean"] }, {"name":"addConfigFilesItem","parameterTypes":["java.lang.String"] }, {"name":"commandLine","parameterTypes":["java.lang.String"] }, {"name":"commitId","parameterTypes":["java.lang.String"] }, {"name":"complete","parameterTypes":["java.time.OffsetDateTime"] }, {"name":"configFiles","parameterTypes":["java.util.List"] }, {"name":"configText","parameterTypes":["java.lang.String"] }, {"name":"container","parameterTypes":["java.lang.String"] }, {"name":"containerEngine","parameterTypes":["java.lang.String"] }, {"name":"duration","parameterTypes":["java.lang.Long"] }, {"name":"equals","parameterTypes":["java.lang.Object"] }, {"name":"equalsNullable","parameterTypes":["org.openapitools.jackson.nullable.JsonNullable","org.openapitools.jackson.nullable.JsonNullable"] }, {"name":"errorMessage","parameterTypes":["java.lang.String"] }, {"name":"errorReport","parameterTypes":["java.lang.String"] }, {"name":"exitStatus","parameterTypes":["java.lang.Integer"] }, {"name":"fusion","parameterTypes":["io.seqera.tower.model.WfFusionMeta"] }, {"name":"getCommandLine","parameterTypes":[] }, {"name":"getCommitId","parameterTypes":[] }, {"name":"getComplete","parameterTypes":[] }, {"name":"getConfigFiles","parameterTypes":[] }, {"name":"getConfigText","parameterTypes":[] }, {"name":"getContainer","parameterTypes":[] }, {"name":"getContainerEngine","parameterTypes":[] }, {"name":"getDateCreated","parameterTypes":[] }, {"name":"getDateCreated_JsonNullable","parameterTypes":[] }, {"name":"getDeleted","parameterTypes":[] }, {"name":"getDuration","parameterTypes":[] }, {"name":"getErrorMessage","parameterTypes":[] }, {"name":"getErrorReport","parameterTypes":[] }, {"name":"getExitStatus","parameterTypes":[] }, {"name":"getFusion","parameterTypes":[] }, {"name":"getHomeDir","parameterTypes":[] }, {"name":"getId","parameterTypes":[] }, {"name":"getLastUpdated","parameterTypes":[] }, {"name":"getLastUpdated_JsonNullable","parameterTypes":[] }, {"name":"getLaunchDir","parameterTypes":[] }, {"name":"getLaunchId","parameterTypes":[] }, {"name":"getLogFile","parameterTypes":[] }, {"name":"getManifest","parameterTypes":[] }, {"name":"getNextflow","parameterTypes":[] }, {"name":"getOperationId","parameterTypes":[] }, {"name":"getOutFile","parameterTypes":[] }, {"name":"getOwnerId","parameterTypes":[] }, {"name":"getParams","parameterTypes":[] }, {"name":"getProfile","parameterTypes":[] }, {"name":"getProjectDir","parameterTypes":[] }, {"name":"getProjectName","parameterTypes":[] }, {"name":"getRepository","parameterTypes":[] }, {"name":"getRequiresAttention","parameterTypes":[] }, {"name":"getResume","parameterTypes":[] }, {"name":"getRevision","parameterTypes":[] }, {"name":"getRunName","parameterTypes":[] }, {"name":"getScriptFile","parameterTypes":[] }, {"name":"getScriptId","parameterTypes":[] }, {"name":"getScriptName","parameterTypes":[] }, {"name":"getSessionId","parameterTypes":[] }, {"name":"getStart","parameterTypes":[] }, {"name":"getStats","parameterTypes":[] }, {"name":"getStatus","parameterTypes":[] }, {"name":"getSubmit","parameterTypes":[] }, {"name":"getSuccess","parameterTypes":[] }, {"name":"getUserName","parameterTypes":[] }, {"name":"getWave","parameterTypes":[] }, {"name":"getWorkDir","parameterTypes":[] }, {"name":"hashCode","parameterTypes":[] }, {"name":"hashCodeNullable","parameterTypes":["org.openapitools.jackson.nullable.JsonNullable"] }, {"name":"homeDir","parameterTypes":["java.lang.String"] }, {"name":"id","parameterTypes":["java.lang.String"] }, {"name":"launchDir","parameterTypes":["java.lang.String"] }, {"name":"launchId","parameterTypes":["java.lang.String"] }, {"name":"logFile","parameterTypes":["java.lang.String"] }, {"name":"manifest","parameterTypes":["io.seqera.tower.model.WfManifest"] }, {"name":"nextflow","parameterTypes":["io.seqera.tower.model.WfNextflow"] }, {"name":"operationId","parameterTypes":["java.lang.String"] }, {"name":"outFile","parameterTypes":["java.lang.String"] }, {"name":"params","parameterTypes":["java.util.Map"] }, {"name":"profile","parameterTypes":["java.lang.String"] }, {"name":"projectDir","parameterTypes":["java.lang.String"] }, {"name":"projectName","parameterTypes":["java.lang.String"] }, {"name":"putParamsItem","parameterTypes":["java.lang.String","java.lang.Object"] }, {"name":"repository","parameterTypes":["java.lang.String"] }, {"name":"requiresAttention","parameterTypes":["java.lang.Boolean"] }, {"name":"resume","parameterTypes":["java.lang.Boolean"] }, {"name":"revision","parameterTypes":["java.lang.String"] }, {"name":"runName","parameterTypes":["java.lang.String"] }, {"name":"scriptFile","parameterTypes":["java.lang.String"] }, {"name":"scriptId","parameterTypes":["java.lang.String"] }, {"name":"scriptName","parameterTypes":["java.lang.String"] }, {"name":"sessionId","parameterTypes":["java.lang.String"] }, {"name":"setCommandLine","parameterTypes":["java.lang.String"] }, {"name":"setCommitId","parameterTypes":["java.lang.String"] }, {"name":"setComplete","parameterTypes":["java.time.OffsetDateTime"] }, {"name":"setConfigFiles","parameterTypes":["java.util.List"] }, {"name":"setConfigText","parameterTypes":["java.lang.String"] }, {"name":"setContainer","parameterTypes":["java.lang.String"] }, {"name":"setContainerEngine","parameterTypes":["java.lang.String"] }, {"name":"setDateCreated_JsonNullable","parameterTypes":["org.openapitools.jackson.nullable.JsonNullable"] }, {"name":"setDuration","parameterTypes":["java.lang.Long"] }, {"name":"setErrorMessage","parameterTypes":["java.lang.String"] }, {"name":"setErrorReport","parameterTypes":["java.lang.String"] }, {"name":"setExitStatus","parameterTypes":["java.lang.Integer"] }, {"name":"setFusion","parameterTypes":["io.seqera.tower.model.WfFusionMeta"] }, {"name":"setHomeDir","parameterTypes":["java.lang.String"] }, {"name":"setId","parameterTypes":["java.lang.String"] }, {"name":"setLastUpdated_JsonNullable","parameterTypes":["org.openapitools.jackson.nullable.JsonNullable"] }, {"name":"setLaunchDir","parameterTypes":["java.lang.String"] }, {"name":"setLaunchId","parameterTypes":["java.lang.String"] }, {"name":"setLogFile","parameterTypes":["java.lang.String"] }, {"name":"setManifest","parameterTypes":["io.seqera.tower.model.WfManifest"] }, {"name":"setNextflow","parameterTypes":["io.seqera.tower.model.WfNextflow"] }, {"name":"setOperationId","parameterTypes":["java.lang.String"] }, {"name":"setOutFile","parameterTypes":["java.lang.String"] }, {"name":"setParams","parameterTypes":["java.util.Map"] }, {"name":"setProfile","parameterTypes":["java.lang.String"] }, {"name":"setProjectDir","parameterTypes":["java.lang.String"] }, {"name":"setProjectName","parameterTypes":["java.lang.String"] }, {"name":"setRepository","parameterTypes":["java.lang.String"] }, {"name":"setRequiresAttention","parameterTypes":["java.lang.Boolean"] }, {"name":"setResume","parameterTypes":["java.lang.Boolean"] }, {"name":"setRevision","parameterTypes":["java.lang.String"] }, {"name":"setRunName","parameterTypes":["java.lang.String"] }, {"name":"setScriptFile","parameterTypes":["java.lang.String"] }, {"name":"setScriptId","parameterTypes":["java.lang.String"] }, {"name":"setScriptName","parameterTypes":["java.lang.String"] }, {"name":"setSessionId","parameterTypes":["java.lang.String"] }, {"name":"setStart","parameterTypes":["java.time.OffsetDateTime"] }, {"name":"setStats","parameterTypes":["io.seqera.tower.model.WfStats"] }, {"name":"setStatus","parameterTypes":["io.seqera.tower.model.WorkflowStatus"] }, {"name":"setSubmit","parameterTypes":["java.time.OffsetDateTime"] }, {"name":"setSuccess","parameterTypes":["java.lang.Boolean"] }, {"name":"setUserName","parameterTypes":["java.lang.String"] }, {"name":"setWave","parameterTypes":["io.seqera.tower.model.WfWaveMeta"] }, {"name":"setWorkDir","parameterTypes":["java.lang.String"] }, {"name":"start","parameterTypes":["java.time.OffsetDateTime"] }, {"name":"stats","parameterTypes":["io.seqera.tower.model.WfStats"] }, {"name":"status","parameterTypes":["io.seqera.tower.model.WorkflowStatus"] }, {"name":"submit","parameterTypes":["java.time.OffsetDateTime"] }, {"name":"success","parameterTypes":["java.lang.Boolean"] }, {"name":"toIndentedString","parameterTypes":["java.lang.Object"] }, {"name":"toString","parameterTypes":[] }, {"name":"userName","parameterTypes":["java.lang.String"] }, {"name":"wave","parameterTypes":["io.seqera.tower.model.WfWaveMeta"] }, {"name":"workDir","parameterTypes":["java.lang.String"] }] + "methods":[{"name":"","parameterTypes":[] }, {"name":"","parameterTypes":["java.lang.Long","java.time.OffsetDateTime","java.time.OffsetDateTime","java.lang.Boolean"] }, {"name":"","parameterTypes":["java.time.OffsetDateTime","java.lang.Boolean","java.time.OffsetDateTime","java.lang.Long"] }, {"name":"addConfigFilesItem","parameterTypes":["java.lang.String"] }, {"name":"commandLine","parameterTypes":["java.lang.String"] }, {"name":"commitId","parameterTypes":["java.lang.String"] }, {"name":"complete","parameterTypes":["java.time.OffsetDateTime"] }, {"name":"configFiles","parameterTypes":["java.util.List"] }, {"name":"configText","parameterTypes":["java.lang.String"] }, {"name":"container","parameterTypes":["java.lang.String"] }, {"name":"containerEngine","parameterTypes":["java.lang.String"] }, {"name":"duration","parameterTypes":["java.lang.Long"] }, {"name":"equals","parameterTypes":["java.lang.Object"] }, {"name":"equalsNullable","parameterTypes":["org.openapitools.jackson.nullable.JsonNullable","org.openapitools.jackson.nullable.JsonNullable"] }, {"name":"errorMessage","parameterTypes":["java.lang.String"] }, {"name":"errorReport","parameterTypes":["java.lang.String"] }, {"name":"exitStatus","parameterTypes":["java.lang.Integer"] }, {"name":"fusion","parameterTypes":["io.seqera.tower.model.WfFusionMeta"] }, {"name":"getCommandLine","parameterTypes":[] }, {"name":"getCommitId","parameterTypes":[] }, {"name":"getComplete","parameterTypes":[] }, {"name":"getConfigFiles","parameterTypes":[] }, {"name":"getConfigText","parameterTypes":[] }, {"name":"getContainer","parameterTypes":[] }, {"name":"getContainerEngine","parameterTypes":[] }, {"name":"getDateCreated","parameterTypes":[] }, {"name":"getDateCreated_JsonNullable","parameterTypes":[] }, {"name":"getDeleted","parameterTypes":[] }, {"name":"getDuration","parameterTypes":[] }, {"name":"getErrorMessage","parameterTypes":[] }, {"name":"getErrorReport","parameterTypes":[] }, {"name":"getExitStatus","parameterTypes":[] }, {"name":"getFusion","parameterTypes":[] }, {"name":"getHomeDir","parameterTypes":[] }, {"name":"getId","parameterTypes":[] }, {"name":"getLastUpdated","parameterTypes":[] }, {"name":"getLastUpdated_JsonNullable","parameterTypes":[] }, {"name":"getLaunchDir","parameterTypes":[] }, {"name":"getLaunchId","parameterTypes":[] }, {"name":"getLogFile","parameterTypes":[] }, {"name":"getManifest","parameterTypes":[] }, {"name":"getNextflow","parameterTypes":[] }, {"name":"getOperationId","parameterTypes":[] }, {"name":"getOutFile","parameterTypes":[] }, {"name":"getOwnerId","parameterTypes":[] }, {"name":"getParams","parameterTypes":[] }, {"name":"getProfile","parameterTypes":[] }, {"name":"getProjectDir","parameterTypes":[] }, {"name":"getProjectName","parameterTypes":[] }, {"name":"getRepository","parameterTypes":[] }, {"name":"getRequiresAttention","parameterTypes":[] }, {"name":"getResume","parameterTypes":[] }, {"name":"getRevision","parameterTypes":[] }, {"name":"getRunName","parameterTypes":[] }, {"name":"getScriptFile","parameterTypes":[] }, {"name":"getScriptId","parameterTypes":[] }, {"name":"getScriptName","parameterTypes":[] }, {"name":"getSessionId","parameterTypes":[] }, {"name":"getStart","parameterTypes":[] }, {"name":"getStats","parameterTypes":[] }, {"name":"getStatus","parameterTypes":[] }, {"name":"getSubmit","parameterTypes":[] }, {"name":"getSuccess","parameterTypes":[] }, {"name":"getUserName","parameterTypes":[] }, {"name":"getWave","parameterTypes":[] }, {"name":"getWorkDir","parameterTypes":[] }, {"name":"hashCode","parameterTypes":[] }, {"name":"hashCodeNullable","parameterTypes":["org.openapitools.jackson.nullable.JsonNullable"] }, {"name":"homeDir","parameterTypes":["java.lang.String"] }, {"name":"id","parameterTypes":["java.lang.String"] }, {"name":"launchDir","parameterTypes":["java.lang.String"] }, {"name":"launchId","parameterTypes":["java.lang.String"] }, {"name":"logFile","parameterTypes":["java.lang.String"] }, {"name":"manifest","parameterTypes":["io.seqera.tower.model.WfManifest"] }, {"name":"nextflow","parameterTypes":["io.seqera.tower.model.WfNextflow"] }, {"name":"operationId","parameterTypes":["java.lang.String"] }, {"name":"outFile","parameterTypes":["java.lang.String"] }, {"name":"params","parameterTypes":["java.util.Map"] }, {"name":"profile","parameterTypes":["java.lang.String"] }, {"name":"projectDir","parameterTypes":["java.lang.String"] }, {"name":"projectName","parameterTypes":["java.lang.String"] }, {"name":"putParamsItem","parameterTypes":["java.lang.String","java.lang.Object"] }, {"name":"repository","parameterTypes":["java.lang.String"] }, {"name":"requiresAttention","parameterTypes":["java.lang.Boolean"] }, {"name":"resume","parameterTypes":["java.lang.Boolean"] }, {"name":"revision","parameterTypes":["java.lang.String"] }, {"name":"runName","parameterTypes":["java.lang.String"] }, {"name":"scriptFile","parameterTypes":["java.lang.String"] }, {"name":"scriptId","parameterTypes":["java.lang.String"] }, {"name":"scriptName","parameterTypes":["java.lang.String"] }, {"name":"sessionId","parameterTypes":["java.lang.String"] }, {"name":"setCommandLine","parameterTypes":["java.lang.String"] }, {"name":"setCommitId","parameterTypes":["java.lang.String"] }, {"name":"setComplete","parameterTypes":["java.time.OffsetDateTime"] }, {"name":"setConfigFiles","parameterTypes":["java.util.List"] }, {"name":"setConfigText","parameterTypes":["java.lang.String"] }, {"name":"setContainer","parameterTypes":["java.lang.String"] }, {"name":"setContainerEngine","parameterTypes":["java.lang.String"] }, {"name":"setDateCreated_JsonNullable","parameterTypes":["org.openapitools.jackson.nullable.JsonNullable"] }, {"name":"setDuration","parameterTypes":["java.lang.Long"] }, {"name":"setErrorMessage","parameterTypes":["java.lang.String"] }, {"name":"setErrorReport","parameterTypes":["java.lang.String"] }, {"name":"setExitStatus","parameterTypes":["java.lang.Integer"] }, {"name":"setFusion","parameterTypes":["io.seqera.tower.model.WfFusionMeta"] }, {"name":"setHomeDir","parameterTypes":["java.lang.String"] }, {"name":"setId","parameterTypes":["java.lang.String"] }, {"name":"setLastUpdated_JsonNullable","parameterTypes":["org.openapitools.jackson.nullable.JsonNullable"] }, {"name":"setLaunchDir","parameterTypes":["java.lang.String"] }, {"name":"setLaunchId","parameterTypes":["java.lang.String"] }, {"name":"setLogFile","parameterTypes":["java.lang.String"] }, {"name":"setManifest","parameterTypes":["io.seqera.tower.model.WfManifest"] }, {"name":"setNextflow","parameterTypes":["io.seqera.tower.model.WfNextflow"] }, {"name":"setOperationId","parameterTypes":["java.lang.String"] }, {"name":"setOutFile","parameterTypes":["java.lang.String"] }, {"name":"setParams","parameterTypes":["java.util.Map"] }, {"name":"setProfile","parameterTypes":["java.lang.String"] }, {"name":"setProjectDir","parameterTypes":["java.lang.String"] }, {"name":"setProjectName","parameterTypes":["java.lang.String"] }, {"name":"setRepository","parameterTypes":["java.lang.String"] }, {"name":"setRequiresAttention","parameterTypes":["java.lang.Boolean"] }, {"name":"setResume","parameterTypes":["java.lang.Boolean"] }, {"name":"setRevision","parameterTypes":["java.lang.String"] }, {"name":"setRunName","parameterTypes":["java.lang.String"] }, {"name":"setScriptFile","parameterTypes":["java.lang.String"] }, {"name":"setScriptId","parameterTypes":["java.lang.String"] }, {"name":"setScriptName","parameterTypes":["java.lang.String"] }, {"name":"setSessionId","parameterTypes":["java.lang.String"] }, {"name":"setStart","parameterTypes":["java.time.OffsetDateTime"] }, {"name":"setStats","parameterTypes":["io.seqera.tower.model.WfStats"] }, {"name":"setStatus","parameterTypes":["io.seqera.tower.model.WorkflowStatus"] }, {"name":"setSubmit","parameterTypes":["java.time.OffsetDateTime"] }, {"name":"setSuccess","parameterTypes":["java.lang.Boolean"] }, {"name":"setUserName","parameterTypes":["java.lang.String"] }, {"name":"setWave","parameterTypes":["io.seqera.tower.model.WfWaveMeta"] }, {"name":"setWorkDir","parameterTypes":["java.lang.String"] }, {"name":"start","parameterTypes":["java.time.OffsetDateTime"] }, {"name":"stats","parameterTypes":["io.seqera.tower.model.WfStats"] }, {"name":"status","parameterTypes":["io.seqera.tower.model.WorkflowStatus"] }, {"name":"submit","parameterTypes":["java.time.OffsetDateTime"] }, {"name":"success","parameterTypes":["java.lang.Boolean"] }, {"name":"toIndentedString","parameterTypes":["java.lang.Object"] }, {"name":"toString","parameterTypes":[] }, {"name":"userName","parameterTypes":["java.lang.String"] }, {"name":"wave","parameterTypes":["io.seqera.tower.model.WfWaveMeta"] }, {"name":"workDir","parameterTypes":["java.lang.String"] }] }, { "name":"io.seqera.tower.model.WorkflowDbDto", @@ -5100,6 +5288,11 @@ "queryAllDeclaredConstructors":true, "methods":[{"name":"","parameterTypes":[] }, {"name":"equals","parameterTypes":["java.lang.Object"] }, {"name":"getOrgId","parameterTypes":[] }, {"name":"getOrgName","parameterTypes":[] }, {"name":"getParticipantId","parameterTypes":[] }, {"name":"getParticipantRole","parameterTypes":[] }, {"name":"getWorkspaceFullName","parameterTypes":[] }, {"name":"getWorkspaceId","parameterTypes":[] }, {"name":"getWorkspaceName","parameterTypes":[] }, {"name":"hashCode","parameterTypes":[] }, {"name":"orgId","parameterTypes":["java.lang.Long"] }, {"name":"orgName","parameterTypes":["java.lang.String"] }, {"name":"participantId","parameterTypes":["java.lang.Long"] }, {"name":"participantRole","parameterTypes":["java.lang.String"] }, {"name":"setOrgId","parameterTypes":["java.lang.Long"] }, {"name":"setOrgName","parameterTypes":["java.lang.String"] }, {"name":"setParticipantId","parameterTypes":["java.lang.Long"] }, {"name":"setParticipantRole","parameterTypes":["java.lang.String"] }, {"name":"setWorkspaceFullName","parameterTypes":["java.lang.String"] }, {"name":"setWorkspaceId","parameterTypes":["java.lang.Long"] }, {"name":"setWorkspaceName","parameterTypes":["java.lang.String"] }, {"name":"toIndentedString","parameterTypes":["java.lang.Object"] }, {"name":"toString","parameterTypes":[] }, {"name":"workspaceFullName","parameterTypes":["java.lang.String"] }, {"name":"workspaceId","parameterTypes":["java.lang.Long"] }, {"name":"workspaceName","parameterTypes":["java.lang.String"] }] }, +{ + "name":"io.seqera.tower.model.WspRoleSourceType", + "queryAllDeclaredMethods":true, + "methods":[{"name":"$values","parameterTypes":[] }, {"name":"fromValue","parameterTypes":["java.lang.String"] }, {"name":"getValue","parameterTypes":[] }, {"name":"toString","parameterTypes":[] }, {"name":"valueOf","parameterTypes":["java.lang.String"] }, {"name":"values","parameterTypes":[] }] +}, { "name":"java.io.Console", "methods":[{"name":"readPassword","parameterTypes":["java.lang.String","java.lang.Object[]"] }] @@ -5202,7 +5395,7 @@ }, { "name":"java.lang.Thread", - "fields":[{"name": "threadLocalRandomProbe"}] + "fields":[{"name":"threadLocalRandomProbe"}] }, { "name":"java.lang.annotation.Annotation[]" @@ -5217,7 +5410,7 @@ }, { "name":"java.lang.reflect.AccessibleObject", - "fields":[{"name": "override"}] + "fields":[{"name":"override"}] }, { "name":"java.math.BigDecimal", @@ -5423,7 +5616,7 @@ }, { "name":"java.util.concurrent.ForkJoinTask", - "fields":[{"name": "aux"}, {"name": "status"}] + "fields":[{"name":"aux"}, {"name":"status"}] }, { "name":"java.util.concurrent.LinkedTransferQueue", @@ -5431,15 +5624,15 @@ }, { "name":"java.util.concurrent.atomic.AtomicBoolean", - "fields":[{"name": "value"}] + "fields":[{"name":"value"}] }, { "name":"java.util.concurrent.atomic.AtomicReference", - "fields":[{"name": "value"}] + "fields":[{"name":"value"}] }, { "name":"java.util.concurrent.atomic.Striped64", - "fields":[{"name": "base"}, {"name": "cellsBusy"}] + "fields":[{"name":"base"}, {"name":"cellsBusy"}] }, { "name":"javax.inject.Named", @@ -5456,7 +5649,7 @@ }, { "name":"javax.security.auth.x500.X500Principal", - "fields":[{"name": "thisX500Name"}], + "fields":[{"name":"thisX500Name"}], "methods":[{"name":"","parameterTypes":["sun.security.x509.X500Name"] }] }, { @@ -5571,11 +5764,11 @@ }, { "name":"org.glassfish.jersey.internal.util.collection.ConcurrentHashMapV8", - "fields":[{"name": "baseCount"}, {"name": "cellsBusy"}, {"name": "sizeCtl"}, {"name": "transferIndex"}, {"name": "transferOrigin"}] + "fields":[{"name":"baseCount"}, {"name":"cellsBusy"}, {"name":"sizeCtl"}, {"name":"transferIndex"}, {"name":"transferOrigin"}] }, { "name":"org.glassfish.jersey.internal.util.collection.ConcurrentHashMapV8$CounterCell", - "fields":[{"name": "value"}] + "fields":[{"name":"value"}] }, { "name":"org.glassfish.jersey.jackson.JacksonFeature", From 459650ff307d860c7db640c3344fa512351b742e Mon Sep 17 00:00:00 2001 From: ramonamela <25862624+ramonamela@users.noreply.github.com> Date: Mon, 13 Apr 2026 18:18:43 +0200 Subject: [PATCH 11/14] refactor(azure-batch): rename --managed-identity-client-id to --managed-identity-head-client-id Align the head-job managed identity client ID flag with its resource-id counterpart so all head/pool option pairs share the same naming scheme (--managed-identity-{head,pool}-{client-id,resource-id}). Applies to both forge and manual AzBatch platforms; AzCloud is left untouched because it has no head/pool split. Addresses Stefano's review comment on PR #606. [COMP-1464] --- .../computeenvs/platforms/AzBatchForgePlatform.java | 6 +++--- .../computeenvs/platforms/AzBatchManualPlatform.java | 6 +++--- src/test/resources/scripts/test-azure-batch-features.sh | 2 +- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/main/java/io/seqera/tower/cli/commands/computeenvs/platforms/AzBatchForgePlatform.java b/src/main/java/io/seqera/tower/cli/commands/computeenvs/platforms/AzBatchForgePlatform.java index aa887fa9..ebb09651 100644 --- a/src/main/java/io/seqera/tower/cli/commands/computeenvs/platforms/AzBatchForgePlatform.java +++ b/src/main/java/io/seqera/tower/cli/commands/computeenvs/platforms/AzBatchForgePlatform.java @@ -160,7 +160,7 @@ public AzBatchConfig computeConfig(Long workspaceId, CredentialsApi credentialsA config.subnetId(subnetId); if (managedIdentity != null) { - config.managedIdentityClientId(managedIdentity.managedIdentityClientId); + config.managedIdentityClientId(managedIdentity.managedIdentityHeadClientId); config.managedIdentityPoolClientId(managedIdentity.managedIdentityPoolClientId); config.managedIdentityHeadResourceId(managedIdentity.managedIdentityHeadResourceId); config.managedIdentityPoolResourceId(managedIdentity.managedIdentityPoolResourceId); @@ -197,8 +197,8 @@ public static class WorkerPoolOptions { public static class ManagedIdentityOptions { - @Option(names = {"--managed-identity-client-id"}, description = "Head job managed identity client ID (UUID). The user-assigned managed identity used by the Nextflow launcher (head job).") - public String managedIdentityClientId; + @Option(names = {"--managed-identity-head-client-id"}, description = "Head job managed identity client ID (UUID). The user-assigned managed identity used by the Nextflow launcher (head job).") + public String managedIdentityHeadClientId; @Option(names = {"--managed-identity-pool-client-id"}, description = "Compute job managed identity client ID (UUID). The user-assigned managed identity used by compute tasks running on Batch pool nodes.") public String managedIdentityPoolClientId; diff --git a/src/main/java/io/seqera/tower/cli/commands/computeenvs/platforms/AzBatchManualPlatform.java b/src/main/java/io/seqera/tower/cli/commands/computeenvs/platforms/AzBatchManualPlatform.java index cca8d1be..000aeb95 100644 --- a/src/main/java/io/seqera/tower/cli/commands/computeenvs/platforms/AzBatchManualPlatform.java +++ b/src/main/java/io/seqera/tower/cli/commands/computeenvs/platforms/AzBatchManualPlatform.java @@ -87,7 +87,7 @@ public AzBatchConfig computeConfig() throws ApiException, IOException { config.subnetId(subnetId); if (managedIdentity != null) { - config.managedIdentityClientId(managedIdentity.managedIdentityClientId); + config.managedIdentityClientId(managedIdentity.managedIdentityHeadClientId); config.managedIdentityPoolClientId(managedIdentity.managedIdentityPoolClientId); } @@ -96,8 +96,8 @@ public AzBatchConfig computeConfig() throws ApiException, IOException { public static class ManagedIdentityOptions { - @Option(names = {"--managed-identity-client-id"}, description = "Head job managed identity client ID (UUID). The user-assigned managed identity used by the Nextflow launcher (head job).") - public String managedIdentityClientId; + @Option(names = {"--managed-identity-head-client-id"}, description = "Head job managed identity client ID (UUID). The user-assigned managed identity used by the Nextflow launcher (head job).") + public String managedIdentityHeadClientId; @Option(names = {"--managed-identity-pool-client-id"}, description = "Compute job managed identity client ID (UUID). The user-assigned managed identity used by compute tasks running on Batch pool nodes.") public String managedIdentityPoolClientId; diff --git a/src/test/resources/scripts/test-azure-batch-features.sh b/src/test/resources/scripts/test-azure-batch-features.sh index 7ad02b33..880f69d3 100755 --- a/src/test/resources/scripts/test-azure-batch-features.sh +++ b/src/test/resources/scripts/test-azure-batch-features.sh @@ -196,7 +196,7 @@ run_tw "Create Forge CE (single pool, all options)" \ --fusion-v2 \ --wave \ --subnet-id="$SUBNET_ID" \ - --managed-identity-client-id="$MI_HEAD_CLIENT_ID" \ + --managed-identity-head-client-id="$MI_HEAD_CLIENT_ID" \ --managed-identity-pool-client-id="$MI_POOL_CLIENT_ID" \ --managed-identity-head-resource-id="$MI_HEAD_RESOURCE_ID" \ --managed-identity-pool-resource-id="$MI_POOL_RESOURCE_ID" \ From d0595035a3feeec066c91f2996058575e3541f7d Mon Sep 17 00:00:00 2001 From: ramonamela <25862624+ramonamela@users.noreply.github.com> Date: Mon, 13 Apr 2026 18:25:57 +0200 Subject: [PATCH 12/14] revert(azure-batch): restore --managed-identity-client-id to mirror SDK field MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Reverting 459650ff. The CLI should mirror the API field names; the SDK model AzBatchConfig has managedIdentityClientId (head) alongside managedIdentityHeadResourceId, managedIdentityPoolClientId, managedIdentityPoolResourceId. Renaming the CLI flag to add a 'head' prefix broke that 1:1 mapping. Added a note on the Option description acknowledging the asymmetry is inherited from the SDK. Audited all other COMP-1464 flags against the tower-java-sdk 1.133.0 AzBatchConfig, AzBatchForgeConfig, AzBatchPoolConfig and AzureEntraKeys models — remaining flags already match their API counterparts (only inverted-boolean idioms like --no-auto-scale / --preserve-resources differ, and those predate COMP-1464). [COMP-1464] --- .../computeenvs/platforms/AzBatchForgePlatform.java | 6 +++--- .../computeenvs/platforms/AzBatchManualPlatform.java | 6 +++--- src/test/resources/scripts/test-azure-batch-features.sh | 2 +- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/main/java/io/seqera/tower/cli/commands/computeenvs/platforms/AzBatchForgePlatform.java b/src/main/java/io/seqera/tower/cli/commands/computeenvs/platforms/AzBatchForgePlatform.java index ebb09651..5881011f 100644 --- a/src/main/java/io/seqera/tower/cli/commands/computeenvs/platforms/AzBatchForgePlatform.java +++ b/src/main/java/io/seqera/tower/cli/commands/computeenvs/platforms/AzBatchForgePlatform.java @@ -160,7 +160,7 @@ public AzBatchConfig computeConfig(Long workspaceId, CredentialsApi credentialsA config.subnetId(subnetId); if (managedIdentity != null) { - config.managedIdentityClientId(managedIdentity.managedIdentityHeadClientId); + config.managedIdentityClientId(managedIdentity.managedIdentityClientId); config.managedIdentityPoolClientId(managedIdentity.managedIdentityPoolClientId); config.managedIdentityHeadResourceId(managedIdentity.managedIdentityHeadResourceId); config.managedIdentityPoolResourceId(managedIdentity.managedIdentityPoolResourceId); @@ -197,8 +197,8 @@ public static class WorkerPoolOptions { public static class ManagedIdentityOptions { - @Option(names = {"--managed-identity-head-client-id"}, description = "Head job managed identity client ID (UUID). The user-assigned managed identity used by the Nextflow launcher (head job).") - public String managedIdentityHeadClientId; + @Option(names = {"--managed-identity-client-id"}, description = "Head job managed identity client ID (UUID). The user-assigned managed identity used by the Nextflow launcher (head job). Mirrors the API field `managedIdentityClientId`; the `managed-identity-pool-*` / `managed-identity-head-resource-id` naming asymmetry is inherited from the SDK model.") + public String managedIdentityClientId; @Option(names = {"--managed-identity-pool-client-id"}, description = "Compute job managed identity client ID (UUID). The user-assigned managed identity used by compute tasks running on Batch pool nodes.") public String managedIdentityPoolClientId; diff --git a/src/main/java/io/seqera/tower/cli/commands/computeenvs/platforms/AzBatchManualPlatform.java b/src/main/java/io/seqera/tower/cli/commands/computeenvs/platforms/AzBatchManualPlatform.java index 000aeb95..a7150f06 100644 --- a/src/main/java/io/seqera/tower/cli/commands/computeenvs/platforms/AzBatchManualPlatform.java +++ b/src/main/java/io/seqera/tower/cli/commands/computeenvs/platforms/AzBatchManualPlatform.java @@ -87,7 +87,7 @@ public AzBatchConfig computeConfig() throws ApiException, IOException { config.subnetId(subnetId); if (managedIdentity != null) { - config.managedIdentityClientId(managedIdentity.managedIdentityHeadClientId); + config.managedIdentityClientId(managedIdentity.managedIdentityClientId); config.managedIdentityPoolClientId(managedIdentity.managedIdentityPoolClientId); } @@ -96,8 +96,8 @@ public AzBatchConfig computeConfig() throws ApiException, IOException { public static class ManagedIdentityOptions { - @Option(names = {"--managed-identity-head-client-id"}, description = "Head job managed identity client ID (UUID). The user-assigned managed identity used by the Nextflow launcher (head job).") - public String managedIdentityHeadClientId; + @Option(names = {"--managed-identity-client-id"}, description = "Head job managed identity client ID (UUID). The user-assigned managed identity used by the Nextflow launcher (head job). Mirrors the API field `managedIdentityClientId`; the `managed-identity-pool-*` / `managed-identity-head-resource-id` naming asymmetry is inherited from the SDK model.") + public String managedIdentityClientId; @Option(names = {"--managed-identity-pool-client-id"}, description = "Compute job managed identity client ID (UUID). The user-assigned managed identity used by compute tasks running on Batch pool nodes.") public String managedIdentityPoolClientId; diff --git a/src/test/resources/scripts/test-azure-batch-features.sh b/src/test/resources/scripts/test-azure-batch-features.sh index 880f69d3..7ad02b33 100755 --- a/src/test/resources/scripts/test-azure-batch-features.sh +++ b/src/test/resources/scripts/test-azure-batch-features.sh @@ -196,7 +196,7 @@ run_tw "Create Forge CE (single pool, all options)" \ --fusion-v2 \ --wave \ --subnet-id="$SUBNET_ID" \ - --managed-identity-head-client-id="$MI_HEAD_CLIENT_ID" \ + --managed-identity-client-id="$MI_HEAD_CLIENT_ID" \ --managed-identity-pool-client-id="$MI_POOL_CLIENT_ID" \ --managed-identity-head-resource-id="$MI_HEAD_RESOURCE_ID" \ --managed-identity-pool-resource-id="$MI_POOL_RESOURCE_ID" \ From 85367ed2452f35dc94f9404a1cac958e6d909764 Mon Sep 17 00:00:00 2001 From: ramonamela <25862624+ramonamela@users.noreply.github.com> Date: Mon, 13 Apr 2026 18:33:58 +0200 Subject: [PATCH 13/14] refactor(azure-batch): rename --managed-identity-client-id to --managed-identity-head-client-id Restoring the rename originally applied in 459650ff (reverted in d0595035). Per reviewer discussion on PR #606, the CLI-side head/pool symmetry (--managed-identity-{head,pool}-{client-id,resource-id}) is clearer for users than strictly mirroring the SDK's asymmetric field names, so prefer the consistent CLI naming even though the underlying API keeps managedIdentityClientId for the head job. [COMP-1464] --- .../computeenvs/platforms/AzBatchForgePlatform.java | 6 +++--- .../computeenvs/platforms/AzBatchManualPlatform.java | 6 +++--- src/test/resources/scripts/test-azure-batch-features.sh | 2 +- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/main/java/io/seqera/tower/cli/commands/computeenvs/platforms/AzBatchForgePlatform.java b/src/main/java/io/seqera/tower/cli/commands/computeenvs/platforms/AzBatchForgePlatform.java index 5881011f..ebb09651 100644 --- a/src/main/java/io/seqera/tower/cli/commands/computeenvs/platforms/AzBatchForgePlatform.java +++ b/src/main/java/io/seqera/tower/cli/commands/computeenvs/platforms/AzBatchForgePlatform.java @@ -160,7 +160,7 @@ public AzBatchConfig computeConfig(Long workspaceId, CredentialsApi credentialsA config.subnetId(subnetId); if (managedIdentity != null) { - config.managedIdentityClientId(managedIdentity.managedIdentityClientId); + config.managedIdentityClientId(managedIdentity.managedIdentityHeadClientId); config.managedIdentityPoolClientId(managedIdentity.managedIdentityPoolClientId); config.managedIdentityHeadResourceId(managedIdentity.managedIdentityHeadResourceId); config.managedIdentityPoolResourceId(managedIdentity.managedIdentityPoolResourceId); @@ -197,8 +197,8 @@ public static class WorkerPoolOptions { public static class ManagedIdentityOptions { - @Option(names = {"--managed-identity-client-id"}, description = "Head job managed identity client ID (UUID). The user-assigned managed identity used by the Nextflow launcher (head job). Mirrors the API field `managedIdentityClientId`; the `managed-identity-pool-*` / `managed-identity-head-resource-id` naming asymmetry is inherited from the SDK model.") - public String managedIdentityClientId; + @Option(names = {"--managed-identity-head-client-id"}, description = "Head job managed identity client ID (UUID). The user-assigned managed identity used by the Nextflow launcher (head job).") + public String managedIdentityHeadClientId; @Option(names = {"--managed-identity-pool-client-id"}, description = "Compute job managed identity client ID (UUID). The user-assigned managed identity used by compute tasks running on Batch pool nodes.") public String managedIdentityPoolClientId; diff --git a/src/main/java/io/seqera/tower/cli/commands/computeenvs/platforms/AzBatchManualPlatform.java b/src/main/java/io/seqera/tower/cli/commands/computeenvs/platforms/AzBatchManualPlatform.java index a7150f06..000aeb95 100644 --- a/src/main/java/io/seqera/tower/cli/commands/computeenvs/platforms/AzBatchManualPlatform.java +++ b/src/main/java/io/seqera/tower/cli/commands/computeenvs/platforms/AzBatchManualPlatform.java @@ -87,7 +87,7 @@ public AzBatchConfig computeConfig() throws ApiException, IOException { config.subnetId(subnetId); if (managedIdentity != null) { - config.managedIdentityClientId(managedIdentity.managedIdentityClientId); + config.managedIdentityClientId(managedIdentity.managedIdentityHeadClientId); config.managedIdentityPoolClientId(managedIdentity.managedIdentityPoolClientId); } @@ -96,8 +96,8 @@ public AzBatchConfig computeConfig() throws ApiException, IOException { public static class ManagedIdentityOptions { - @Option(names = {"--managed-identity-client-id"}, description = "Head job managed identity client ID (UUID). The user-assigned managed identity used by the Nextflow launcher (head job). Mirrors the API field `managedIdentityClientId`; the `managed-identity-pool-*` / `managed-identity-head-resource-id` naming asymmetry is inherited from the SDK model.") - public String managedIdentityClientId; + @Option(names = {"--managed-identity-head-client-id"}, description = "Head job managed identity client ID (UUID). The user-assigned managed identity used by the Nextflow launcher (head job).") + public String managedIdentityHeadClientId; @Option(names = {"--managed-identity-pool-client-id"}, description = "Compute job managed identity client ID (UUID). The user-assigned managed identity used by compute tasks running on Batch pool nodes.") public String managedIdentityPoolClientId; diff --git a/src/test/resources/scripts/test-azure-batch-features.sh b/src/test/resources/scripts/test-azure-batch-features.sh index 7ad02b33..880f69d3 100755 --- a/src/test/resources/scripts/test-azure-batch-features.sh +++ b/src/test/resources/scripts/test-azure-batch-features.sh @@ -196,7 +196,7 @@ run_tw "Create Forge CE (single pool, all options)" \ --fusion-v2 \ --wave \ --subnet-id="$SUBNET_ID" \ - --managed-identity-client-id="$MI_HEAD_CLIENT_ID" \ + --managed-identity-head-client-id="$MI_HEAD_CLIENT_ID" \ --managed-identity-pool-client-id="$MI_POOL_CLIENT_ID" \ --managed-identity-head-resource-id="$MI_HEAD_RESOURCE_ID" \ --managed-identity-pool-resource-id="$MI_POOL_RESOURCE_ID" \ From 8f1b5b36bdb6285dad5b12f43002315b571a120c Mon Sep 17 00:00:00 2001 From: "georgi.hristov" Date: Wed, 15 Apr 2026 12:28:55 +0100 Subject: [PATCH 14/14] feat: add a command to update studio details --- conf/reflect-config.json | 12 ++ conf/resource-config.json | 4 +- .../seqera/tower/cli/commands/StudiosCmd.java | 2 + .../tower/cli/commands/studios/UpdateCmd.java | 99 ++++++++++ .../cli/responses/studios/StudioUpdated.java | 39 ++++ .../tower/cli/studios/StudiosCmdTest.java | 177 ++++++++++++++++++ .../studios/studios_update_response.json | 51 +++++ 7 files changed, 382 insertions(+), 2 deletions(-) create mode 100644 src/main/java/io/seqera/tower/cli/commands/studios/UpdateCmd.java create mode 100644 src/main/java/io/seqera/tower/cli/responses/studios/StudioUpdated.java create mode 100644 src/test/resources/runcmd/studios/studios_update_response.json diff --git a/conf/reflect-config.json b/conf/reflect-config.json index c0722d73..d51d7bcc 100644 --- a/conf/reflect-config.json +++ b/conf/reflect-config.json @@ -1808,6 +1808,12 @@ "queryAllDeclaredMethods":true, "methods":[{"name":"","parameterTypes":[] }] }, +{ + "name":"io.seqera.tower.cli.commands.studios.UpdateCmd", + "allDeclaredFields":true, + "queryAllDeclaredMethods":true, + "methods":[{"name":"","parameterTypes":[] }] +}, { "name":"io.seqera.tower.cli.commands.studios.StudioCheckpointRefOptions", "allDeclaredFields":true, @@ -2399,6 +2405,12 @@ "queryAllDeclaredMethods":true, "queryAllDeclaredConstructors":true }, +{ + "name":"io.seqera.tower.cli.responses.studios.StudioUpdated", + "allDeclaredFields":true, + "queryAllDeclaredMethods":true, + "queryAllDeclaredConstructors":true +}, { "name":"io.seqera.tower.cli.responses.studios.StudiosCreated", "allDeclaredFields":true, diff --git a/conf/resource-config.json b/conf/resource-config.json index ff9d95a9..49fe282f 100644 --- a/conf/resource-config.json +++ b/conf/resource-config.json @@ -82,10 +82,10 @@ "locales":["und"] }, { "name":"org.glassfish.jersey.client.internal.localization", - "locales":["", "und"] + "locales":["und"] }, { "name":"org.glassfish.jersey.internal.localization", - "locales":["", "und"] + "locales":["und"] }, { "name":"org.glassfish.jersey.media.multipart.internal.localization" }] diff --git a/src/main/java/io/seqera/tower/cli/commands/StudiosCmd.java b/src/main/java/io/seqera/tower/cli/commands/StudiosCmd.java index 637d3d23..fce6cb9d 100644 --- a/src/main/java/io/seqera/tower/cli/commands/StudiosCmd.java +++ b/src/main/java/io/seqera/tower/cli/commands/StudiosCmd.java @@ -24,6 +24,7 @@ import io.seqera.tower.cli.commands.studios.StartCmd; import io.seqera.tower.cli.commands.studios.TemplatesCmd; import io.seqera.tower.cli.commands.studios.StopCmd; +import io.seqera.tower.cli.commands.studios.UpdateCmd; import io.seqera.tower.cli.commands.studios.ViewCmd; import picocli.CommandLine; @@ -39,6 +40,7 @@ CheckpointsCmd.class, AddAsNewCmd.class, StopCmd.class, + UpdateCmd.class, DeleteCmd.class, } ) diff --git a/src/main/java/io/seqera/tower/cli/commands/studios/UpdateCmd.java b/src/main/java/io/seqera/tower/cli/commands/studios/UpdateCmd.java new file mode 100644 index 00000000..a3f4bfb7 --- /dev/null +++ b/src/main/java/io/seqera/tower/cli/commands/studios/UpdateCmd.java @@ -0,0 +1,99 @@ +/* + * Copyright 2021-2026, Seqera. + * + * 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 + * + * http://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. + */ + +package io.seqera.tower.cli.commands.studios; + +import java.util.List; + +import io.seqera.tower.ApiException; +import io.seqera.tower.cli.commands.global.WorkspaceOptionalOptions; +import io.seqera.tower.cli.commands.labels.Label; +import io.seqera.tower.cli.exceptions.StudioNotFoundException; +import io.seqera.tower.cli.exceptions.TowerException; +import io.seqera.tower.cli.responses.Response; +import io.seqera.tower.cli.responses.studios.StudioUpdated; +import io.seqera.tower.model.DataStudioConfiguration; +import io.seqera.tower.model.DataStudioDto; +import io.seqera.tower.model.DataStudioUpdateRequest; +import picocli.CommandLine; + +@CommandLine.Command( + name = "update", + description = "Update a studio." +) +public class UpdateCmd extends AbstractStudiosCmd { + + @CommandLine.Mixin + public WorkspaceOptionalOptions workspace; + + @CommandLine.Mixin + public StudioRefOptions studioRefOptions; + + @CommandLine.Mixin + public StudioConfigurationOptions studioConfigOptions; + + @CommandLine.Option(names = {"--labels"}, description = "Comma-separated list of labels", split = ",", converter = Label.StudioResourceLabelsConverter.class) + public List