From aaea99cb841b1fafc21744622e89940c37e3bd91 Mon Sep 17 00:00:00 2001 From: OZGCloud <ozgcloud@mgm-tp.com> Date: Tue, 27 Jun 2023 13:12:30 +0200 Subject: [PATCH] OZG-3961 - add readme, refactor KeycloakUserSpec --- README.md | 14 ++++++ .../serviceaccount-keycloakuser-read.yaml | 0 .../serviceaccount-keycloakuser-write.yaml | 0 .../serviceaccount-secrets-read.yaml | 0 ...perator.ozgcloud.de_OzgKeycloakRealms.yaml | 44 +++++++++++++++++++ .../keycloak/user/KeycloakUserMapper.java | 4 +- .../keycloak/user/OzgKeycloakUserSpec.java | 10 ++--- .../keycloak/user/KeycloakUserMapperTest.java | 4 +- .../user/KeycloakUserSpecUserTestFactory.java | 4 +- 9 files changed, 68 insertions(+), 12 deletions(-) create mode 100644 README.md rename doc/{ => ServiceAccount}/serviceaccount-keycloakuser-read.yaml (100%) rename doc/{ => ServiceAccount}/serviceaccount-keycloakuser-write.yaml (100%) rename doc/{ => ServiceAccount}/serviceaccount-secrets-read.yaml (100%) create mode 100644 doc/crds/operator.ozgcloud.de_OzgKeycloakRealms.yaml diff --git a/README.md b/README.md new file mode 100644 index 0000000..3e9d4a9 --- /dev/null +++ b/README.md @@ -0,0 +1,14 @@ + + +# OZG Operator + +## Installation + +### CRDs im Cluster anlegen + + kubectl apply -f doc/crds/*yaml + +### Service Account anlegen + + kubectl apply -f doc/ServiceAccount/*yaml + diff --git a/doc/serviceaccount-keycloakuser-read.yaml b/doc/ServiceAccount/serviceaccount-keycloakuser-read.yaml similarity index 100% rename from doc/serviceaccount-keycloakuser-read.yaml rename to doc/ServiceAccount/serviceaccount-keycloakuser-read.yaml diff --git a/doc/serviceaccount-keycloakuser-write.yaml b/doc/ServiceAccount/serviceaccount-keycloakuser-write.yaml similarity index 100% rename from doc/serviceaccount-keycloakuser-write.yaml rename to doc/ServiceAccount/serviceaccount-keycloakuser-write.yaml diff --git a/doc/serviceaccount-secrets-read.yaml b/doc/ServiceAccount/serviceaccount-secrets-read.yaml similarity index 100% rename from doc/serviceaccount-secrets-read.yaml rename to doc/ServiceAccount/serviceaccount-secrets-read.yaml diff --git a/doc/crds/operator.ozgcloud.de_OzgKeycloakRealms.yaml b/doc/crds/operator.ozgcloud.de_OzgKeycloakRealms.yaml new file mode 100644 index 0000000..dd17754 --- /dev/null +++ b/doc/crds/operator.ozgcloud.de_OzgKeycloakRealms.yaml @@ -0,0 +1,44 @@ +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + name: kopkeycloakrealms.api.kop-stack.de +spec: + group: api.kop-stack.de + names: + kind: OzgKeycloakRealm + listKind: OzgKeycloakRealmList + plural: ozgkeycloakrealms + singular: ozgkeycloakrealm + scope: Namespaced + versions: + - name: v1 + schema: + openAPIV3Schema: + description: OzgKeycloakRealm is the Schema for the keycloak realms API + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: Spec defines the desired state of Keycloak + type: object + x-kubernetes-preserve-unknown-fields: true + status: + description: Status defines the observed state of Keycloak + type: object + x-kubernetes-preserve-unknown-fields: true + type: object + served: true + storage: true + subresources: + status: {} diff --git a/src/main/java/de/ozgcloud/operator/keycloak/user/KeycloakUserMapper.java b/src/main/java/de/ozgcloud/operator/keycloak/user/KeycloakUserMapper.java index d64a85e..b792244 100644 --- a/src/main/java/de/ozgcloud/operator/keycloak/user/KeycloakUserMapper.java +++ b/src/main/java/de/ozgcloud/operator/keycloak/user/KeycloakUserMapper.java @@ -67,7 +67,7 @@ interface KeycloakUserMapper { @Named("mapClientRoles") default Map<String, List<String>> mapClientRoles(List<OzgKeycloakUserSpec.KeycloakUserSpecClientRole> clientRoles) { return clientRoles.stream() - .collect(Collectors.groupingBy(KeycloakUserSpecClientRole::getName, - Collectors.mapping(KeycloakUserSpecClientRole::getRole, Collectors.toList()))); + .collect(Collectors.groupingBy(KeycloakUserSpecClientRole::getClientName, + Collectors.mapping(KeycloakUserSpecClientRole::getRoleName, Collectors.toList()))); } } diff --git a/src/main/java/de/ozgcloud/operator/keycloak/user/OzgKeycloakUserSpec.java b/src/main/java/de/ozgcloud/operator/keycloak/user/OzgKeycloakUserSpec.java index e54b037..cfa4617 100644 --- a/src/main/java/de/ozgcloud/operator/keycloak/user/OzgKeycloakUserSpec.java +++ b/src/main/java/de/ozgcloud/operator/keycloak/user/OzgKeycloakUserSpec.java @@ -87,12 +87,10 @@ public class OzgKeycloakUserSpec { @AllArgsConstructor public static class KeycloakUserSpecClientRole { - @JsonProperty("name") - // TODO rename to clientName - private String name; + @JsonProperty("client_name") + private String clientName; - @JsonProperty("role") - // TODO rename to roleId - private String role; + @JsonProperty("role_name") + private String roleName; } } diff --git a/src/test/java/de/ozgcloud/operator/keycloak/user/KeycloakUserMapperTest.java b/src/test/java/de/ozgcloud/operator/keycloak/user/KeycloakUserMapperTest.java index f7cbc2d..6644ddc 100644 --- a/src/test/java/de/ozgcloud/operator/keycloak/user/KeycloakUserMapperTest.java +++ b/src/test/java/de/ozgcloud/operator/keycloak/user/KeycloakUserMapperTest.java @@ -113,7 +113,7 @@ class KeycloakUserMapperTest { .hasSize(1); assertThat(mappedRoles.get(KeycloakUserSpecUserTestFactory.CLIENT_NAME)) - .contains(KeycloakUserSpecUserTestFactory.ROLE1.getRole(), KeycloakUserSpecUserTestFactory.ROLE2.getRole()); + .contains(KeycloakUserSpecUserTestFactory.ROLE1.getRoleName(), KeycloakUserSpecUserTestFactory.ROLE2.getRoleName()); } @Test @@ -121,7 +121,7 @@ class KeycloakUserMapperTest { var keycloakUser = mapper.toUserRepresentation(OzgKeycloakUserSpecTestFactory.create()); assertThat(keycloakUser.getClientRoles().get(KeycloakUserSpecUserTestFactory.CLIENT_NAME)).hasSize(2) - .contains(KeycloakUserSpecUserTestFactory.ROLE1.getRole(), KeycloakUserSpecUserTestFactory.ROLE2.getRole()); + .contains(KeycloakUserSpecUserTestFactory.ROLE1.getRoleName(), KeycloakUserSpecUserTestFactory.ROLE2.getRoleName()); } } diff --git a/src/test/java/de/ozgcloud/operator/keycloak/user/KeycloakUserSpecUserTestFactory.java b/src/test/java/de/ozgcloud/operator/keycloak/user/KeycloakUserSpecUserTestFactory.java index 1754a37..cc16319 100644 --- a/src/test/java/de/ozgcloud/operator/keycloak/user/KeycloakUserSpecUserTestFactory.java +++ b/src/test/java/de/ozgcloud/operator/keycloak/user/KeycloakUserSpecUserTestFactory.java @@ -19,8 +19,8 @@ class KeycloakUserSpecUserTestFactory { public static final KeycloakUserSpecUserGroup GROUP2 = KeycloakUserSpecUserGroup.builder().name("GROUP2").build(); public static final String CLIENT_NAME = "alfa"; - public static final KeycloakUserSpecClientRole ROLE1 = KeycloakUserSpecClientRole.builder().name(CLIENT_NAME).role("ROLE1").build(); - public static final KeycloakUserSpecClientRole ROLE2 = KeycloakUserSpecClientRole.builder().name(CLIENT_NAME).role("ROLE2").build(); + public static final KeycloakUserSpecClientRole ROLE1 = KeycloakUserSpecClientRole.builder().clientName(CLIENT_NAME).roleName("ROLE1").build(); + public static final KeycloakUserSpecClientRole ROLE2 = KeycloakUserSpecClientRole.builder().clientName(CLIENT_NAME).roleName("ROLE2").build(); public static KeycloakUserSpecUser create() { return createBuiler().build(); -- GitLab