From dfe39ceac4d11ae77580412969df87a16dd6c14a Mon Sep 17 00:00:00 2001 From: Angelo Date: Fri, 22 Aug 2025 09:07:41 +0200 Subject: [PATCH] Support new resource group id --- .../domain/environment/BaseEnvironment.java | 9 ++-- .../sdk/domain/environment/Environment.java | 3 +- .../service/EnvironmentService.java | 5 +- .../service/RestEnvironmentService.java | 9 ++-- .../commands/CreateEnvironmentRequest.java | 2 +- .../commands/UpdateEnvironmentRequest.java | 2 +- .../service/dtos/EnvironmentResponse.java | 3 +- .../sdk/domain/values/ResourceGroupId.java | 51 +++++++++++++++++++ .../sdk/domain/values/ResourceGroupType.java | 24 +++++++++ .../environment/EnvironmentAggregateTest.java | 7 +-- .../environment/EnvironmentServiceTest.java | 8 +-- .../ManagementEnvironmentTest.java | 43 ++++++++++------ .../OperationalEnvironmentTest.java | 10 ++-- .../livesystem/LiveSystemServiceTest.java | 3 +- .../fractal/sdk/utils/TestUtils.java | 3 +- 15 files changed, 139 insertions(+), 43 deletions(-) create mode 100644 fractal.sdk/src/main/java/com/yanchware/fractal/sdk/domain/values/ResourceGroupId.java create mode 100644 fractal.sdk/src/main/java/com/yanchware/fractal/sdk/domain/values/ResourceGroupType.java diff --git a/fractal.sdk/src/main/java/com/yanchware/fractal/sdk/domain/environment/BaseEnvironment.java b/fractal.sdk/src/main/java/com/yanchware/fractal/sdk/domain/environment/BaseEnvironment.java index 772b808d..f7e379b1 100644 --- a/fractal.sdk/src/main/java/com/yanchware/fractal/sdk/domain/environment/BaseEnvironment.java +++ b/fractal.sdk/src/main/java/com/yanchware/fractal/sdk/domain/environment/BaseEnvironment.java @@ -14,6 +14,7 @@ import com.yanchware.fractal.sdk.domain.livesystem.paas.providers.hetzner.HetznerRegion; import com.yanchware.fractal.sdk.domain.livesystem.paas.providers.oci.OciRegion; import com.yanchware.fractal.sdk.domain.livesystem.service.dtos.ProviderType; +import com.yanchware.fractal.sdk.domain.values.ResourceGroupId; import com.yanchware.fractal.sdk.utils.CollectionUtils; import com.yanchware.fractal.sdk.utils.SerializationUtils; import lombok.Getter; @@ -38,7 +39,7 @@ public abstract class BaseEnvironment implements Environment, Validatable { private final Map parameters; private String name; - private Collection resourceGroups; + private Collection resourceGroups; private Map tags; private Collection secrets; private CiCdProfile defaultCiCdProfile; @@ -51,7 +52,7 @@ public String getName() { } @Override - public Collection getResourceGroups() { + public Collection getResourceGroups() { return resourceGroups; } @@ -162,11 +163,11 @@ public B withName(String name) { return builder; } - public B withResourceGroup(UUID resourceGroupId) { + public B withResourceGroup(ResourceGroupId resourceGroupId) { return withResourceGroups(List.of(resourceGroupId)); } - public B withResourceGroups(Collection resourceGroups) { + public B withResourceGroups(Collection resourceGroups) { if (CollectionUtils.isBlank(resourceGroups)) { return builder; } diff --git a/fractal.sdk/src/main/java/com/yanchware/fractal/sdk/domain/environment/Environment.java b/fractal.sdk/src/main/java/com/yanchware/fractal/sdk/domain/environment/Environment.java index c6ead63d..b68f2b73 100644 --- a/fractal.sdk/src/main/java/com/yanchware/fractal/sdk/domain/environment/Environment.java +++ b/fractal.sdk/src/main/java/com/yanchware/fractal/sdk/domain/environment/Environment.java @@ -1,6 +1,7 @@ package com.yanchware.fractal.sdk.domain.environment; import com.yanchware.fractal.sdk.domain.livesystem.service.dtos.EnvironmentDto; +import com.yanchware.fractal.sdk.domain.values.ResourceGroupId; import java.util.Collection; import java.util.Map; @@ -9,7 +10,7 @@ public interface Environment { EnvironmentIdValue getId(); String getName(); - Collection getResourceGroups(); + Collection getResourceGroups(); Map getTags(); Map getParameters(); EnvironmentDto toDto(); diff --git a/fractal.sdk/src/main/java/com/yanchware/fractal/sdk/domain/environment/service/EnvironmentService.java b/fractal.sdk/src/main/java/com/yanchware/fractal/sdk/domain/environment/service/EnvironmentService.java index b743bc09..efcc174b 100644 --- a/fractal.sdk/src/main/java/com/yanchware/fractal/sdk/domain/environment/service/EnvironmentService.java +++ b/fractal.sdk/src/main/java/com/yanchware/fractal/sdk/domain/environment/service/EnvironmentService.java @@ -13,6 +13,7 @@ import com.yanchware.fractal.sdk.domain.livesystem.paas.providers.gcp.GcpRegion; import com.yanchware.fractal.sdk.domain.livesystem.paas.providers.hetzner.HetznerRegion; import com.yanchware.fractal.sdk.domain.livesystem.paas.providers.oci.OciRegion; +import com.yanchware.fractal.sdk.domain.values.ResourceGroupId; import java.util.Collection; import java.util.Map; @@ -23,14 +24,14 @@ EnvironmentResponse create( EnvironmentIdValue managementEnvironmentId, EnvironmentIdValue environmentId, String name, - Collection resourceGroups, + Collection resourceGroups, Map parameters) throws InstantiatorException; EnvironmentResponse update( EnvironmentIdValue managementEnvironmentId, EnvironmentIdValue environmentId, String name, - Collection resourceGroups, + Collection resourceGroups, Map parameters, String defaultCiCdProfileShortName) throws InstantiatorException; diff --git a/fractal.sdk/src/main/java/com/yanchware/fractal/sdk/domain/environment/service/RestEnvironmentService.java b/fractal.sdk/src/main/java/com/yanchware/fractal/sdk/domain/environment/service/RestEnvironmentService.java index 9b0ec9bf..21ef83ac 100644 --- a/fractal.sdk/src/main/java/com/yanchware/fractal/sdk/domain/environment/service/RestEnvironmentService.java +++ b/fractal.sdk/src/main/java/com/yanchware/fractal/sdk/domain/environment/service/RestEnvironmentService.java @@ -14,6 +14,7 @@ import com.yanchware.fractal.sdk.domain.livesystem.paas.providers.hetzner.HetznerRegion; import com.yanchware.fractal.sdk.domain.livesystem.paas.providers.oci.OciRegion; import com.yanchware.fractal.sdk.domain.livesystem.service.dtos.ProviderType; +import com.yanchware.fractal.sdk.domain.values.ResourceGroupId; import com.yanchware.fractal.sdk.utils.HttpUtils; import com.yanchware.fractal.sdk.utils.StringHelper; import io.github.resilience4j.retry.RetryRegistry; @@ -44,7 +45,7 @@ public EnvironmentResponse create( EnvironmentIdValue managementEnvironmentId, EnvironmentIdValue environmentId, String name, - Collection resourceGroups, + Collection resourceGroups, Map parameters) throws InstantiatorException { return executeRequestWithRetries( "createEnvironment", @@ -57,7 +58,7 @@ public EnvironmentResponse create( serializeSafely(new CreateEnvironmentRequest( managementEnvironmentId, name, - resourceGroups, + resourceGroups.stream().map(ResourceGroupId::toString).toList(), parameters))), new int[]{201}, EnvironmentResponse.class); @@ -68,7 +69,7 @@ public EnvironmentResponse update( EnvironmentIdValue managementEnvironmentId, EnvironmentIdValue environmentId, String name, - Collection resourceGroups, + Collection resourceGroups, Map parameters, String defaultCiCdProfileShortName) throws InstantiatorException { return executeRequestWithRetries( @@ -79,7 +80,7 @@ public EnvironmentResponse update( HttpUtils.buildPutRequest( getEnvironmentsUri(environmentId), sdkConfiguration, - serializeSafely(new UpdateEnvironmentRequest(managementEnvironmentId, name, resourceGroups, parameters, defaultCiCdProfileShortName))), + serializeSafely(new UpdateEnvironmentRequest(managementEnvironmentId, name, resourceGroups.stream().map(ResourceGroupId::toString).toList(), parameters, defaultCiCdProfileShortName))), new int[]{200}, EnvironmentResponse.class); } diff --git a/fractal.sdk/src/main/java/com/yanchware/fractal/sdk/domain/environment/service/commands/CreateEnvironmentRequest.java b/fractal.sdk/src/main/java/com/yanchware/fractal/sdk/domain/environment/service/commands/CreateEnvironmentRequest.java index 00f66858..66386b43 100644 --- a/fractal.sdk/src/main/java/com/yanchware/fractal/sdk/domain/environment/service/commands/CreateEnvironmentRequest.java +++ b/fractal.sdk/src/main/java/com/yanchware/fractal/sdk/domain/environment/service/commands/CreateEnvironmentRequest.java @@ -9,6 +9,6 @@ public record CreateEnvironmentRequest( EnvironmentIdValue managementEnvironmentId, String name, - Collection resourceGroups, + Collection resourceGroups, Map parameters) { } diff --git a/fractal.sdk/src/main/java/com/yanchware/fractal/sdk/domain/environment/service/commands/UpdateEnvironmentRequest.java b/fractal.sdk/src/main/java/com/yanchware/fractal/sdk/domain/environment/service/commands/UpdateEnvironmentRequest.java index d687c1cb..33736280 100644 --- a/fractal.sdk/src/main/java/com/yanchware/fractal/sdk/domain/environment/service/commands/UpdateEnvironmentRequest.java +++ b/fractal.sdk/src/main/java/com/yanchware/fractal/sdk/domain/environment/service/commands/UpdateEnvironmentRequest.java @@ -9,7 +9,7 @@ public record UpdateEnvironmentRequest( EnvironmentIdValue managementEnvironmentId, String name, - Collection resourceGroups, + Collection resourceGroups, Map parameters, String defaultCiCdProfileShortName) { } \ No newline at end of file diff --git a/fractal.sdk/src/main/java/com/yanchware/fractal/sdk/domain/environment/service/dtos/EnvironmentResponse.java b/fractal.sdk/src/main/java/com/yanchware/fractal/sdk/domain/environment/service/dtos/EnvironmentResponse.java index 7064b40b..265930b0 100644 --- a/fractal.sdk/src/main/java/com/yanchware/fractal/sdk/domain/environment/service/dtos/EnvironmentResponse.java +++ b/fractal.sdk/src/main/java/com/yanchware/fractal/sdk/domain/environment/service/dtos/EnvironmentResponse.java @@ -5,13 +5,12 @@ import java.util.Collection; import java.util.Date; import java.util.Map; -import java.util.UUID; public record EnvironmentResponse( EnvironmentIdDto managementEnvironmentId, EnvironmentIdDto id, String name, - Collection resourceGroups, + Collection resourceGroups, Map parameters, String defaultCiCdProfileShortName, String status, diff --git a/fractal.sdk/src/main/java/com/yanchware/fractal/sdk/domain/values/ResourceGroupId.java b/fractal.sdk/src/main/java/com/yanchware/fractal/sdk/domain/values/ResourceGroupId.java new file mode 100644 index 00000000..2e0e0ae3 --- /dev/null +++ b/fractal.sdk/src/main/java/com/yanchware/fractal/sdk/domain/values/ResourceGroupId.java @@ -0,0 +1,51 @@ +package com.yanchware.fractal.sdk.domain.values; + +import com.fasterxml.jackson.annotation.JsonValue; +import org.jetbrains.annotations.NotNull; + +import java.util.Objects; +import java.util.UUID; + +public record ResourceGroupId( + @NotNull ResourceGroupType resourceGroupType, + @NotNull UUID ownerId, + @NotNull String shortName) +{ + public static ResourceGroupId fromString(String s) { + var rdIdArr = s.split("/"); + if (rdIdArr.length != 3) { + throw new IllegalArgumentException("Invalid resource group id"); + } + + return new ResourceGroupId(ResourceGroupType.valueOf(rdIdArr[0].toUpperCase()), UUID.fromString(rdIdArr[1]), rdIdArr[2]); + } + + @NotNull + @Override + @JsonValue + public String toString() { + return String.format("%s/%s/%s", resourceGroupType.getValue(), ownerId.toString(), shortName); + } + + @Override + public boolean equals(Object o) { + if (o == this){ + return true; + } + if (!(o instanceof ResourceGroupId)) { + return false; + } + + ResourceGroupId other = (ResourceGroupId)o; + return this.resourceGroupType.getValue().equals(other.resourceGroupType.getValue()) + && this.ownerId.toString().equals(other.ownerId.toString()) + && this.shortName.equals(other.shortName); + } + + @Override + public int hashCode() { + return Objects.hash(resourceGroupType.getValue(), ownerId.toString(), shortName); + } + + +} diff --git a/fractal.sdk/src/main/java/com/yanchware/fractal/sdk/domain/values/ResourceGroupType.java b/fractal.sdk/src/main/java/com/yanchware/fractal/sdk/domain/values/ResourceGroupType.java new file mode 100644 index 00000000..d639ae41 --- /dev/null +++ b/fractal.sdk/src/main/java/com/yanchware/fractal/sdk/domain/values/ResourceGroupType.java @@ -0,0 +1,24 @@ +package com.yanchware.fractal.sdk.domain.values; + +import com.fasterxml.jackson.annotation.JsonValue; + +public enum ResourceGroupType { + PERSONAL("Personal"), + ORGANIZATIONAL("Organizational"); + + private final String value; + + ResourceGroupType(String value) { + this.value = value; + } + + @JsonValue + public String getValue() { + return value; + } + + @Override + public String toString() { + return value; + } +} diff --git a/fractal.sdk/src/test/java/com/yanchware/fractal/sdk/domain/environment/EnvironmentAggregateTest.java b/fractal.sdk/src/test/java/com/yanchware/fractal/sdk/domain/environment/EnvironmentAggregateTest.java index 66a1e956..282177ad 100644 --- a/fractal.sdk/src/test/java/com/yanchware/fractal/sdk/domain/environment/EnvironmentAggregateTest.java +++ b/fractal.sdk/src/test/java/com/yanchware/fractal/sdk/domain/environment/EnvironmentAggregateTest.java @@ -5,6 +5,7 @@ import com.yanchware.fractal.sdk.domain.exceptions.InstantiatorException; import com.yanchware.fractal.sdk.domain.livesystem.service.dtos.EnvironmentIdDto; import com.yanchware.fractal.sdk.domain.livesystem.service.dtos.EnvironmentTypeDto; +import com.yanchware.fractal.sdk.domain.values.ResourceGroupId; import org.junit.jupiter.api.Test; import java.util.Date; @@ -19,14 +20,14 @@ class EnvironmentAggregateTest { public void noErrors_When_ManagingSecrets() throws InstantiatorException { var mockedEnvironmentService = mock(EnvironmentService.class); var aggregate = new EnvironmentAggregate(mockedEnvironmentService); - + var ownerId = UUID.randomUUID(); var envId = new EnvironmentIdValue( EnvironmentType.PERSONAL, - UUID.randomUUID(), + ownerId, "production-001"); var managementEnvironment = ManagementEnvironment.builder() .withId(envId) - .withResourceGroup(UUID.randomUUID()) + .withResourceGroup(ResourceGroupId.fromString(String.format("Personal/%s/rg", ownerId))) .build(); aggregate.setManagementEnvironment(managementEnvironment); diff --git a/fractal.sdk/src/test/java/com/yanchware/fractal/sdk/domain/environment/EnvironmentServiceTest.java b/fractal.sdk/src/test/java/com/yanchware/fractal/sdk/domain/environment/EnvironmentServiceTest.java index d2cb42d6..e20c3345 100644 --- a/fractal.sdk/src/test/java/com/yanchware/fractal/sdk/domain/environment/EnvironmentServiceTest.java +++ b/fractal.sdk/src/test/java/com/yanchware/fractal/sdk/domain/environment/EnvironmentServiceTest.java @@ -14,6 +14,7 @@ import com.yanchware.fractal.sdk.domain.livesystem.paas.providers.azure.AzureRegion; import com.yanchware.fractal.sdk.domain.livesystem.paas.providers.gcp.GcpRegion; import com.yanchware.fractal.sdk.domain.livesystem.paas.providers.oci.OciRegion; +import com.yanchware.fractal.sdk.domain.values.ResourceGroupId; import com.yanchware.fractal.sdk.utils.LocalSdkConfiguration; import com.yanchware.fractal.sdk.utils.StringHandler; import io.github.resilience4j.retry.RetryRegistry; @@ -41,14 +42,15 @@ void setUp(WireMockRuntimeInfo wmRuntimeInfo) { .build(); var sdkConfiguration = new LocalSdkConfiguration(wmRuntimeInfo.getHttpBaseUrl()); + var ownerId = UUID.randomUUID(); mockEnvironment = ManagementEnvironment.builder() .withId(new EnvironmentIdValue( EnvironmentType.PERSONAL, - UUID.randomUUID(), + ownerId, "test-env" )) .withName("Test Environment") - .withResourceGroup(UUID.randomUUID()) + .withResourceGroup(ResourceGroupId.fromString(String.format("Personal/%s/rg", ownerId))) .build(); environmentService = new RestEnvironmentService(httpClient, sdkConfiguration, RetryRegistry.ofDefaults()); @@ -102,7 +104,7 @@ void fetchEnvironment_should_ReturnEnvironmentIdDto() throws Exception { assertThat(response.id().ownerId()).isEqualTo(mockEnvironment.getId().ownerId()); assertThat(response.id().shortName()).isEqualTo(mockEnvironment.getId().shortName()); assertThat(response.name()).isEqualTo(mockEnvironment.getName()); - assertThat(response.resourceGroups()).containsExactlyElementsOf(mockEnvironment.getResourceGroups()); + assertThat(response.resourceGroups()).containsExactlyElementsOf(mockEnvironment.getResourceGroups().stream().map(ResourceGroupId::toString).toList()); assertThat(response.parameters()).isEqualTo(mockEnvironment.toDto().parameters()); } diff --git a/fractal.sdk/src/test/java/com/yanchware/fractal/sdk/domain/environment/ManagementEnvironmentTest.java b/fractal.sdk/src/test/java/com/yanchware/fractal/sdk/domain/environment/ManagementEnvironmentTest.java index 09d8a973..d79099ea 100644 --- a/fractal.sdk/src/test/java/com/yanchware/fractal/sdk/domain/environment/ManagementEnvironmentTest.java +++ b/fractal.sdk/src/test/java/com/yanchware/fractal/sdk/domain/environment/ManagementEnvironmentTest.java @@ -8,6 +8,7 @@ import com.yanchware.fractal.sdk.domain.livesystem.paas.providers.gcp.GcpRegion; import com.yanchware.fractal.sdk.domain.livesystem.paas.providers.hetzner.HetznerRegion; import com.yanchware.fractal.sdk.domain.livesystem.paas.providers.oci.OciRegion; +import com.yanchware.fractal.sdk.domain.values.ResourceGroupId; import com.yanchware.fractal.sdk.utils.TestUtils; import org.junit.jupiter.api.Test; @@ -157,12 +158,13 @@ public void noValidationErrors_when_environmentCreatedWithValidShortName() { @Test public void noValidationErrors_when_environmentCreatedWithDnsZone() { + var ownerId = UUID.randomUUID(); var managementEnvironment = ManagementEnvironment.builder() .withId(new EnvironmentIdValue( EnvironmentType.PERSONAL, - UUID.randomUUID(), + ownerId, "production-001")) - .withResourceGroup(UUID.randomUUID()) + .withResourceGroup(ResourceGroupId.fromString(String.format("Personal/%s/rg", ownerId))) .withDnsZone( DnsZone.builder() .withName("dns.name") @@ -192,16 +194,17 @@ public void noValidationErrors_when_environmentCreatedWithDnsZone() { @Test public void noValidationErrors_when_environmentCreatedWithRegionTenantIdAndSubscriptionId() { + var ownerId = UUID.randomUUID(); var managementEnvironment = ManagementEnvironment.builder() .withId(new EnvironmentIdValue( EnvironmentType.PERSONAL, - UUID.randomUUID(), + ownerId, "production-001")) .withAzureCloudAgent( AzureRegion.AUSTRALIA_CENTRAL, UUID.randomUUID(), UUID.randomUUID()) - .withResourceGroup(UUID.randomUUID()) + .withResourceGroup(ResourceGroupId.fromString(String.format("Personal/%s/rg", ownerId))) .withDnsZone( DnsZone.builder() .withName("dns.name") @@ -230,16 +233,17 @@ public void noValidationErrors_when_environmentCreatedWithRegionTenantIdAndSubsc @Test public void noValidationErrors_when_environmentCreatedWithTags() { + var ownerId = UUID.randomUUID(); var managementEnvironment = ManagementEnvironment.builder() .withId(new EnvironmentIdValue( EnvironmentType.PERSONAL, - UUID.randomUUID(), + ownerId, "production-001")) .withAzureCloudAgent( AzureRegion.AUSTRALIA_CENTRAL, UUID.randomUUID(), UUID.randomUUID()) - .withResourceGroup(UUID.randomUUID()) + .withResourceGroup(ResourceGroupId.fromString(String.format("Personal/%s/rg", ownerId))) .withTags(Map.of("key1", "value1", "key2", "value2")) .withTag("key1", "value2") .withTag("key3", "value3") @@ -263,7 +267,7 @@ public void noValidationErrors_when_environmentCreatedWithOperationalEnvironment var operationalEnvironment = OperationalEnvironment.builder() .withShortName("operational-001") - .withResourceGroup(UUID.randomUUID()) + .withResourceGroup(ResourceGroupId.fromString(String.format("Personal/%s/rg", ownerId))) .withAzureSubscription(AzureRegion.WEST_EUROPE, UUID.randomUUID()) .withTag("key1", "value1") .withTag("key2", "value3") @@ -275,7 +279,7 @@ public void noValidationErrors_when_environmentCreatedWithOperationalEnvironment environmentType, ownerId, "production-001")) - .withResourceGroup(UUID.randomUUID()) + .withResourceGroup(ResourceGroupId.fromString(String.format("Personal/%s/rg2", ownerId))) .withAwsCloudAgent(AwsRegion.EU_NORTH_1, UUID.randomUUID().toString(), UUID.randomUUID().toString()) .withAzureCloudAgent(AzureRegion.WEST_EUROPE, UUID.randomUUID(), UUID.randomUUID()) .withGcpCloudAgent(GcpRegion.EUROPE_WEST1, UUID.randomUUID().toString(), UUID.randomUUID().toString()) @@ -310,16 +314,17 @@ public void noValidationErrors_when_environmentCreatedWithOperationalEnvironment @Test public void noValidationErrors_when_environmentCreatedWithSecrets() { + var ownerId = UUID.randomUUID(); var managementEnvironment = ManagementEnvironment.builder() .withId(new EnvironmentIdValue( EnvironmentType.PERSONAL, - UUID.randomUUID(), + ownerId, "production-001")) .withAzureCloudAgent( AzureRegion.AUSTRALIA_CENTRAL, UUID.randomUUID(), UUID.randomUUID()) - .withResourceGroup(UUID.randomUUID()) + .withResourceGroup(ResourceGroupId.fromString(String.format("Personal/%s/rg", ownerId))) .withSecret(new Secret("secret-1", "Secret Display Name","Secret Description", "value-1")) .withSecret(new Secret("secret-2", "Secret 2 Display Name","Secret 2 Description", "value-2")) .withSecrets(List.of( @@ -340,16 +345,17 @@ public void noValidationErrors_when_environmentCreatedWithSecrets() { @Test public void noValidationErrors_when_environmentCreatedWithCiCdProfiles() { + var ownerId = UUID.randomUUID(); var managementEnvironment = ManagementEnvironment.builder() .withId(new EnvironmentIdValue( EnvironmentType.PERSONAL, - UUID.randomUUID(), + ownerId, "production-001")) .withAzureCloudAgent( AzureRegion.AUSTRALIA_CENTRAL, UUID.randomUUID(), UUID.randomUUID()) - .withResourceGroup(UUID.randomUUID()) + .withResourceGroup(ResourceGroupId.fromString(String.format("Personal/%s/rg", ownerId))) .withDefaultCiCdProfile(new CiCdProfile("default", "Default", "data", "pass")) .withCiCdProfile(new CiCdProfile("custom", "Custom", "data", "pass")) .withCiCdProfile(new CiCdProfile("additional", "Additional","data", "pass")) @@ -387,12 +393,16 @@ public void noValidationErrors_when_environmentCreatedWithDnsZones() { @Test public void noValidationErrors_when_environmentCreatedWithResourceGroups() { + var ownerId = UUID.randomUUID(); var managementEnvironment = ManagementEnvironment.builder() .withId(new EnvironmentIdValue( EnvironmentType.PERSONAL, - UUID.randomUUID(), + ownerId, "production-001")) - .withResourceGroups(List.of(UUID.randomUUID(), UUID.randomUUID())) + .withResourceGroups( + List.of( + ResourceGroupId.fromString(String.format("Personal/%s/rg", ownerId)), + ResourceGroupId.fromString(String.format("Personal/%s/rg2", ownerId)))) .build(); assertThat(managementEnvironment.validate()).isEmpty(); @@ -415,11 +425,12 @@ private ManagementEnvironment generateBuilderWithInfo(String shortName) { } private ManagementEnvironment.ManagementEnvironmentBuilder generateBuilderWithId(String shortName) { + var ownerId = UUID.randomUUID(); return ManagementEnvironment.builder() .withId(new EnvironmentIdValue( EnvironmentType.PERSONAL, - UUID.randomUUID(), + ownerId, shortName)) - .withResourceGroup(UUID.randomUUID()); + .withResourceGroup(ResourceGroupId.fromString(String.format("Personal/%s/rg", ownerId))); } } \ No newline at end of file diff --git a/fractal.sdk/src/test/java/com/yanchware/fractal/sdk/domain/environment/OperationalEnvironmentTest.java b/fractal.sdk/src/test/java/com/yanchware/fractal/sdk/domain/environment/OperationalEnvironmentTest.java index bff9b076..42cd5d09 100644 --- a/fractal.sdk/src/test/java/com/yanchware/fractal/sdk/domain/environment/OperationalEnvironmentTest.java +++ b/fractal.sdk/src/test/java/com/yanchware/fractal/sdk/domain/environment/OperationalEnvironmentTest.java @@ -4,6 +4,7 @@ import com.yanchware.fractal.sdk.domain.blueprint.iaas.DnsPtrRecord; import com.yanchware.fractal.sdk.domain.blueprint.iaas.DnsZone; import com.yanchware.fractal.sdk.domain.livesystem.paas.providers.azure.AzureRegion; +import com.yanchware.fractal.sdk.domain.values.ResourceGroupId; import com.yanchware.fractal.sdk.utils.TestUtils; import org.junit.jupiter.api.Test; @@ -18,9 +19,10 @@ class OperationalEnvironmentTest { private static final String VALID_SHORT_NAME = "operational-001"; + private static final UUID VALID_OWNER_ID = UUID.randomUUID(); private static final String VALID_DISPLAY_NAME = "My Operational Environment"; - private static final UUID VALID_RESOURCE_GROUP_ID = UUID.randomUUID(); - + private static final ResourceGroupId VALID_RESOURCE_GROUP_ID = ResourceGroupId.fromString(String.format("Personal/%s/rg", VALID_OWNER_ID)); + @Test void exceptionThrown_when_environmentCreatedWithNullShortName() { assertThatThrownBy(() -> generateBuilderWithInfo(null)) @@ -152,7 +154,7 @@ void exceptionThrown_when_environmentResourceGroupsNotDefined() { void noValidationErrors_when_environmentCreateWithRequiredData() { var environment = OperationalEnvironment.builder() .withShortName("production-001") - .withResourceGroup(UUID.randomUUID()) + .withResourceGroup(VALID_RESOURCE_GROUP_ID) .withAzureSubscription(AzureRegion.WEST_EUROPE, UUID.randomUUID()) .build(); @@ -189,7 +191,7 @@ void noValidationErrors_when_environmentCreatedWithCiCdProfiles() { .withAzureSubscription( AzureRegion.AUSTRALIA_CENTRAL, UUID.randomUUID()) - .withResourceGroup(UUID.randomUUID()) + .withResourceGroup(VALID_RESOURCE_GROUP_ID) .withDefaultCiCdProfile(new CiCdProfile("default", "Default", "data", "pass")) .withCiCdProfile(new CiCdProfile("custom", "Custom", "data", "pass")) .withCiCdProfile(new CiCdProfile("additional", "Additional","data", "pass")) diff --git a/fractal.sdk/src/test/java/com/yanchware/fractal/sdk/domain/livesystem/LiveSystemServiceTest.java b/fractal.sdk/src/test/java/com/yanchware/fractal/sdk/domain/livesystem/LiveSystemServiceTest.java index d98d428b..80a25d2e 100644 --- a/fractal.sdk/src/test/java/com/yanchware/fractal/sdk/domain/livesystem/LiveSystemServiceTest.java +++ b/fractal.sdk/src/test/java/com/yanchware/fractal/sdk/domain/livesystem/LiveSystemServiceTest.java @@ -14,6 +14,7 @@ import com.yanchware.fractal.sdk.domain.livesystem.paas.providers.azure.cosmos.AzureCosmosGremlinDbms; import com.yanchware.fractal.sdk.domain.livesystem.service.LiveSystemService; import com.yanchware.fractal.sdk.domain.livesystem.service.dtos.ProviderType; +import com.yanchware.fractal.sdk.domain.values.ResourceGroupId; import com.yanchware.fractal.sdk.utils.LocalSdkConfiguration; import com.yanchware.fractal.sdk.utils.StringHandler; import io.github.resilience4j.retry.RetryRegistry; @@ -51,7 +52,7 @@ public void urlPathMatching_when_postRequestToLiveSystem(WireMockRuntimeInfo wmR EnvironmentType.PERSONAL, UUID.fromString("b2bd7eab-ee3d-4603-86ac-3112ff6b2175"), "5d5bc38d-1d23-4d10-8")) - .withResourceGroup(UUID.randomUUID()) + .withResourceGroup(ResourceGroupId.fromString("Personal/b2bd7eab-ee3d-4603-86ac-3112ff6b2175/rg")) .build(); var liveSystem = liveSystemsFactory.builder() diff --git a/fractal.sdk/src/test/java/com/yanchware/fractal/sdk/utils/TestUtils.java b/fractal.sdk/src/test/java/com/yanchware/fractal/sdk/utils/TestUtils.java index 248bf783..9dcbc284 100644 --- a/fractal.sdk/src/test/java/com/yanchware/fractal/sdk/utils/TestUtils.java +++ b/fractal.sdk/src/test/java/com/yanchware/fractal/sdk/utils/TestUtils.java @@ -37,6 +37,7 @@ import com.yanchware.fractal.sdk.domain.livesystem.service.dtos.ProviderType; import com.yanchware.fractal.sdk.domain.services.contracts.ComponentDto; import com.yanchware.fractal.sdk.domain.values.ComponentId; +import com.yanchware.fractal.sdk.domain.values.ResourceGroupId; import io.github.resilience4j.retry.RetryRegistry; import lombok.extern.slf4j.Slf4j; import org.assertj.core.api.SoftAssertions; @@ -405,7 +406,7 @@ public static Environment getEnvExample() { EnvironmentType.PERSONAL, UUID.fromString("2e114308-14ec-4d77-b610-490324fa1844"), "test")) - .withResourceGroup(UUID.randomUUID()) + .withResourceGroup(ResourceGroupId.fromString("Personal/2e114308-14ec-4d77-b610-490324fa1844/rg")) .build(); }