diff --git a/examples/resourcemanager/build.gradle b/examples/resourcemanager/build.gradle index 1518830..13ea16b 100644 --- a/examples/resourcemanager/build.gradle +++ b/examples/resourcemanager/build.gradle @@ -1,3 +1,5 @@ dependencies { implementation project (':services:resourcemanager') } + +ext.mainClassName = 'cloud.stackit.sdk.resourcemanager.examples.ResourcemanagerExample' diff --git a/examples/resourcemanager/src/main/java/cloud/stackit/sdk/resourcemanager/examples/ResourcemanagerExample.java b/examples/resourcemanager/src/main/java/cloud/stackit/sdk/resourcemanager/examples/ResourcemanagerExample.java index 4893f53..34ed2aa 100644 --- a/examples/resourcemanager/src/main/java/cloud/stackit/sdk/resourcemanager/examples/ResourcemanagerExample.java +++ b/examples/resourcemanager/src/main/java/cloud/stackit/sdk/resourcemanager/examples/ResourcemanagerExample.java @@ -5,8 +5,15 @@ import cloud.stackit.sdk.resourcemanager.model.CreateFolderPayload; import cloud.stackit.sdk.resourcemanager.model.CreateProjectPayload; import cloud.stackit.sdk.resourcemanager.model.FolderResponse; +import cloud.stackit.sdk.resourcemanager.model.ListFoldersResponse; +import cloud.stackit.sdk.resourcemanager.model.ListProjectsResponse; +import cloud.stackit.sdk.resourcemanager.model.Member; +import cloud.stackit.sdk.resourcemanager.model.OrganizationResponse; +import cloud.stackit.sdk.resourcemanager.model.PartialUpdateFolderPayload; +import cloud.stackit.sdk.resourcemanager.model.PartialUpdateProjectPayload; import cloud.stackit.sdk.resourcemanager.model.Project; import java.io.IOException; +import java.util.Arrays; import java.util.Collections; import java.util.UUID; @@ -16,8 +23,23 @@ public static void main(String[] args) throws IOException { // STACKIT_SERVICE_ACCOUNT_KEY_PATH / STACKIT_SERVICE_ACCOUNT_KEY ResourceManagerApi resourceManagerApi = new ResourceManagerApi(); - // replace this with something useful for real use - UUID containerParentId = UUID.randomUUID(); + // Read the organization id and the member subject from the environment + String organizationIdString = System.getenv("STACKIT_ORGANIZATION_ID"); + String memberSubjectString = System.getenv("STACKIT_MEMBER_SUBJECT"); + if (organizationIdString == null || organizationIdString.isEmpty()) { + System.err.println("Environment variable 'STACKIT_ORGANIZATION_ID' not found."); + return; + } + if (memberSubjectString == null || memberSubjectString.isEmpty()) { + System.err.println("Environment variable 'STACKIT_MEMBER_SUBJECT' not found."); + return; + } + UUID containerParentId = UUID.fromString(organizationIdString); + + Member member = + new Member() + .role("project.owner") + .subject(memberSubjectString); // replace with an existing subject try { /* create a project */ @@ -25,14 +47,64 @@ public static void main(String[] args) throws IOException { resourceManagerApi.createProject( new CreateProjectPayload() .containerParentId(containerParentId.toString()) + .name("java-test-project") + .addMembersItem(member) .labels(Collections.singletonMap("foo", "bar"))); + System.out.println("Project:\n" + project.toString()); + + /* list projects */ + ListProjectsResponse responseListProject = + resourceManagerApi.listProjects( + organizationIdString, null, null, null, null, null); + System.out.println("Project List:\n" + responseListProject.toString()); /* create a folder */ FolderResponse folder = resourceManagerApi.createFolder( new CreateFolderPayload() .containerParentId(containerParentId.toString()) + .name("java-testing-folder") .labels(Collections.singletonMap("foo", "bar"))); + System.out.println("Folder: \n" + folder.toString()); + + /* list folders */ + ListFoldersResponse responseListFolders = + resourceManagerApi.listFolders( + organizationIdString, null, null, null, null, null); + System.out.println("Folder List:\n" + responseListFolders.toString()); + + /* delete a project label */ + resourceManagerApi.deleteProjectLabels(project.getContainerId(), Arrays.asList("foo")); + + /* delete a folder label */ + resourceManagerApi.deleteFolderLabels(folder.getContainerId(), Arrays.asList("foo")); + + /* update folder labels */ + resourceManagerApi.partialUpdateFolder( + folder.getContainerId(), + new PartialUpdateFolderPayload() + .labels(Collections.singletonMap("foo2", "bar2"))); + + /* update project move to created folder */ + resourceManagerApi.partialUpdateProject( + project.getContainerId(), + new PartialUpdateProjectPayload().containerParentId(folder.getContainerId())); + + /* get organization details */ + OrganizationResponse organizationResponse = + resourceManagerApi.getOrganization(organizationIdString); + System.out.println("Organization List:\n" + organizationResponse.toString()); + + /* since you cannot delete a folder when a project is present we need to move the project out again */ + resourceManagerApi.partialUpdateProject( + project.getContainerId(), + new PartialUpdateProjectPayload().containerParentId(organizationIdString)); + + /* delete project */ + resourceManagerApi.deleteProject(project.getContainerId()); + + /* delete folder */ + resourceManagerApi.deleteFolder(folder.getContainerId(), true); } catch (ApiException e) { throw new RuntimeException(e); }