diff --git a/doc/hs-hosting-asset-type-structure.md b/doc/hs-hosting-asset-type-structure.md index f2af876b..f7310316 100644 --- a/doc/hs-hosting-asset-type-structure.md +++ b/doc/hs-hosting-asset-type-structure.md @@ -1,5 +1,6 @@ ## HostingAsset Type Structure + ### Domain ```plantuml @@ -11,29 +12,27 @@ package Booking #feb28c { entity BI_CLOUD_SERVER entity BI_MANAGED_SERVER entity BI_MANAGED_WEBSPACE - entity BI_DOMAIN_DNS_SETUP - entity BI_DOMAIN_SMTP_SETUP } package Hosting #feb28c{ package Domain #99bcdb { - entity HA_DOMAIN_SETUP - entity HA_DOMAIN_DNS_SETUP - entity HA_DOMAIN_HTTP_SETUP - entity HA_DOMAIN_SMTP_SETUP - entity HA_DOMAIN_MBOX_SETUP + entity HA_DOMAIN_SETUP + entity HA_DOMAIN_DNS_SETUP + entity HA_DOMAIN_HTTP_SETUP + entity HA_DOMAIN_SMTP_SETUP + entity HA_DOMAIN_MBOX_SETUP entity HA_EMAIL_ADDRESS } package Server #99bcdb { - entity HA_CLOUD_SERVER - entity HA_MANAGED_SERVER + entity HA_CLOUD_SERVER + entity HA_MANAGED_SERVER entity HA_IP_NUMBER } package Webspace #99bcdb { - entity HA_MANAGED_WEBSPACE - entity HA_UNIX_USER + entity HA_MANAGED_WEBSPACE + entity HA_UNIX_USER entity HA_EMAIL_ALIAS } @@ -43,20 +42,21 @@ BI_CLOUD_SERVER *--> BI_PRIVATE_CLOUD BI_MANAGED_SERVER *--> BI_PRIVATE_CLOUD BI_MANAGED_WEBSPACE *--> BI_MANAGED_SERVER -HA_CLOUD_SERVER ==* BI_CLOUD_SERVER -HA_MANAGED_SERVER ==* BI_MANAGED_SERVER -HA_MANAGED_WEBSPACE ==* BI_MANAGED_WEBSPACE +HA_CLOUD_SERVER *==> BI_CLOUD_SERVER +HA_MANAGED_SERVER *==> BI_MANAGED_SERVER +HA_MANAGED_WEBSPACE *==> BI_MANAGED_WEBSPACE HA_MANAGED_WEBSPACE o..> HA_MANAGED_SERVER HA_UNIX_USER *==> HA_MANAGED_WEBSPACE +HA_EMAIL_ALIAS *==> HA_MANAGED_WEBSPACE HA_DOMAIN_SETUP o..> HA_DOMAIN_SETUP HA_DOMAIN_DNS_SETUP *==> HA_DOMAIN_SETUP +HA_DOMAIN_DNS_SETUP o..> HA_MANAGED_WEBSPACE HA_DOMAIN_HTTP_SETUP *==> HA_DOMAIN_SETUP HA_DOMAIN_HTTP_SETUP o..> HA_UNIX_USER HA_DOMAIN_SMTP_SETUP *==> HA_DOMAIN_SETUP HA_DOMAIN_SMTP_SETUP o..> HA_MANAGED_WEBSPACE HA_DOMAIN_MBOX_SETUP *==> HA_DOMAIN_SETUP HA_DOMAIN_MBOX_SETUP o..> HA_MANAGED_WEBSPACE -HA_EMAIL_ALIAS *==> HA_MANAGED_WEBSPACE HA_EMAIL_ADDRESS *==> HA_DOMAIN_MBOX_SETUP HA_IP_NUMBER o..> HA_CLOUD_SERVER HA_IP_NUMBER o..> HA_MANAGED_SERVER @@ -70,6 +70,7 @@ package Legend #white { } Booking -down[hidden]->Legend ``` + ### MariaDB ```plantuml @@ -81,26 +82,24 @@ package Booking #feb28c { entity BI_CLOUD_SERVER entity BI_MANAGED_SERVER entity BI_MANAGED_WEBSPACE - entity BI_DOMAIN_DNS_SETUP - entity BI_DOMAIN_SMTP_SETUP } package Hosting #feb28c{ package MariaDB #99bcdb { - entity HA_MARIADB_INSTANCE - entity HA_MARIADB_USER + entity HA_MARIADB_INSTANCE + entity HA_MARIADB_USER entity HA_MARIADB_DATABASE } package Server #99bcdb { - entity HA_CLOUD_SERVER - entity HA_MANAGED_SERVER + entity HA_CLOUD_SERVER + entity HA_MANAGED_SERVER entity HA_IP_NUMBER } package Webspace #99bcdb { - entity HA_MANAGED_WEBSPACE - entity HA_UNIX_USER + entity HA_MANAGED_WEBSPACE + entity HA_UNIX_USER entity HA_EMAIL_ALIAS } @@ -110,16 +109,16 @@ BI_CLOUD_SERVER *--> BI_PRIVATE_CLOUD BI_MANAGED_SERVER *--> BI_PRIVATE_CLOUD BI_MANAGED_WEBSPACE *--> BI_MANAGED_SERVER -HA_CLOUD_SERVER ==* BI_CLOUD_SERVER -HA_MANAGED_SERVER ==* BI_MANAGED_SERVER -HA_MANAGED_WEBSPACE ==* BI_MANAGED_WEBSPACE +HA_CLOUD_SERVER *==> BI_CLOUD_SERVER +HA_MANAGED_SERVER *==> BI_MANAGED_SERVER +HA_MANAGED_WEBSPACE *==> BI_MANAGED_WEBSPACE HA_MANAGED_WEBSPACE o..> HA_MANAGED_SERVER HA_UNIX_USER *==> HA_MANAGED_WEBSPACE HA_EMAIL_ALIAS *==> HA_MANAGED_WEBSPACE HA_MARIADB_INSTANCE *==> HA_MANAGED_SERVER -HA_MARIADB_USER *==> HA_MARIADB_INSTANCE -HA_MARIADB_USER o..> HA_MANAGED_WEBSPACE -HA_MARIADB_DATABASE *==> HA_MANAGED_WEBSPACE +HA_MARIADB_USER *==> HA_MANAGED_WEBSPACE +HA_MARIADB_USER o..> HA_MARIADB_INSTANCE +HA_MARIADB_DATABASE *==> HA_MARIADB_USER HA_MARIADB_DATABASE o..> HA_MARIADB_INSTANCE HA_IP_NUMBER o..> HA_CLOUD_SERVER HA_IP_NUMBER o..> HA_MANAGED_SERVER @@ -133,6 +132,7 @@ package Legend #white { } Booking -down[hidden]->Legend ``` + ### PostgreSQL ```plantuml @@ -144,26 +144,24 @@ package Booking #feb28c { entity BI_CLOUD_SERVER entity BI_MANAGED_SERVER entity BI_MANAGED_WEBSPACE - entity BI_DOMAIN_DNS_SETUP - entity BI_DOMAIN_SMTP_SETUP } package Hosting #feb28c{ package PostgreSQL #99bcdb { - entity HA_PGSQL_INSTANCE - entity HA_PGSQL_USER + entity HA_PGSQL_INSTANCE + entity HA_PGSQL_USER entity HA_PGSQL_DATABASE } package Server #99bcdb { - entity HA_CLOUD_SERVER - entity HA_MANAGED_SERVER + entity HA_CLOUD_SERVER + entity HA_MANAGED_SERVER entity HA_IP_NUMBER } package Webspace #99bcdb { - entity HA_MANAGED_WEBSPACE - entity HA_UNIX_USER + entity HA_MANAGED_WEBSPACE + entity HA_UNIX_USER entity HA_EMAIL_ALIAS } @@ -173,9 +171,9 @@ BI_CLOUD_SERVER *--> BI_PRIVATE_CLOUD BI_MANAGED_SERVER *--> BI_PRIVATE_CLOUD BI_MANAGED_WEBSPACE *--> BI_MANAGED_SERVER -HA_CLOUD_SERVER ==* BI_CLOUD_SERVER -HA_MANAGED_SERVER ==* BI_MANAGED_SERVER -HA_MANAGED_WEBSPACE ==* BI_MANAGED_WEBSPACE +HA_CLOUD_SERVER *==> BI_CLOUD_SERVER +HA_MANAGED_SERVER *==> BI_MANAGED_SERVER +HA_MANAGED_WEBSPACE *==> BI_MANAGED_WEBSPACE HA_MANAGED_WEBSPACE o..> HA_MANAGED_SERVER HA_UNIX_USER *==> HA_MANAGED_WEBSPACE HA_EMAIL_ALIAS *==> HA_MANAGED_WEBSPACE @@ -196,4 +194,5 @@ package Legend #white { } Booking -down[hidden]->Legend ``` - This code generated was by HsHostingAssetType.main, do not amend manually. + +This code generated was by HsHostingAssetType.main, do not amend manually. diff --git a/src/main/java/net/hostsharing/hsadminng/hs/hosting/asset/HsHostingAssetType.java b/src/main/java/net/hostsharing/hsadminng/hs/hosting/asset/HsHostingAssetType.java index 669c4ca1..bf9563f8 100644 --- a/src/main/java/net/hostsharing/hsadminng/hs/hosting/asset/HsHostingAssetType.java +++ b/src/main/java/net/hostsharing/hsadminng/hs/hosting/asset/HsHostingAssetType.java @@ -100,13 +100,13 @@ public enum HsHostingAssetType implements Node { MARIADB_USER( // named e.g. xyz00_abc inGroup("MariaDB"), - requiredParent(MARIADB_INSTANCE), - assignedTo(MANAGED_WEBSPACE)), + requiredParent(MANAGED_WEBSPACE), // thus, the MANAGED_WEBSPACE:Agent becomes RBAC owner + assignedTo(MARIADB_INSTANCE)), // keep in mind: no RBAC grants implied MARIADB_DATABASE( // named e.g. xyz00_abc inGroup("MariaDB"), - requiredParent(MARIADB_INSTANCE), // TODO.spec: or MARIADB_USER? - assignedTo(MARIADB_USER)), // TODO.spec: or swapping parent+assignedTo? + requiredParent(MARIADB_USER), // thus, the MARIADB_USER:Agent becomes RBAC owner + assignedTo(MARIADB_INSTANCE)), // keep in mind: no RBAC grants implied IP_NUMBER( inGroup("Server"), diff --git a/src/main/java/net/hostsharing/hsadminng/hs/hosting/asset/validators/HsMariaDbDatabaseHostingAssetValidator.java b/src/main/java/net/hostsharing/hsadminng/hs/hosting/asset/validators/HsMariaDbDatabaseHostingAssetValidator.java index 593556e6..c183ffbc 100644 --- a/src/main/java/net/hostsharing/hsadminng/hs/hosting/asset/validators/HsMariaDbDatabaseHostingAssetValidator.java +++ b/src/main/java/net/hostsharing/hsadminng/hs/hosting/asset/validators/HsMariaDbDatabaseHostingAssetValidator.java @@ -14,13 +14,12 @@ class HsMariaDbDatabaseHostingAssetValidator extends HostingAssetEntityValidator MARIADB_DATABASE, AlarmContact.isOptional(), - stringProperty("encoding").matchesRegEx("[a-z0-9_]+").maxLength(24).provided("latin2", "utf8").withDefault("utf8"), - stringProperty("collation").matchesRegEx("[a-z0-9_]+").maxLength(24).provided("latin2", "utf8").withDefault("utf8")); + stringProperty("encoding").matchesRegEx("[a-z0-9_]+").maxLength(24).provided("latin1", "utf8").withDefault("utf8")); } @Override protected Pattern identifierPattern(final HsHostingAssetEntity assetEntity) { - final var webspaceIdentifier = assetEntity.getAssignedToAsset().getAssignedToAsset().getIdentifier(); + final var webspaceIdentifier = assetEntity.getParentAsset().getParentAsset().getIdentifier(); return Pattern.compile("^"+webspaceIdentifier+"$|^"+webspaceIdentifier+"_[a-z0-9]+$"); } } diff --git a/src/main/java/net/hostsharing/hsadminng/hs/hosting/asset/validators/HsMariaDbUserHostingAssetValidator.java b/src/main/java/net/hostsharing/hsadminng/hs/hosting/asset/validators/HsMariaDbUserHostingAssetValidator.java index 0b99e56c..9ee6af9a 100644 --- a/src/main/java/net/hostsharing/hsadminng/hs/hosting/asset/validators/HsMariaDbUserHostingAssetValidator.java +++ b/src/main/java/net/hostsharing/hsadminng/hs/hosting/asset/validators/HsMariaDbUserHostingAssetValidator.java @@ -27,7 +27,7 @@ class HsMariaDbUserHostingAssetValidator extends HostingAssetEntityValidator { @Override protected Pattern identifierPattern(final HsHostingAssetEntity assetEntity) { - final var webspaceIdentifier = assetEntity.getAssignedToAsset().getIdentifier(); + final var webspaceIdentifier = assetEntity.getParentAsset().getIdentifier(); return Pattern.compile("^"+webspaceIdentifier+"$|^"+webspaceIdentifier+"_[a-z0-9]+$"); } } diff --git a/src/test/java/net/hostsharing/hsadminng/hs/hosting/asset/HsHostingAssetTypeUnitTest.java b/src/test/java/net/hostsharing/hsadminng/hs/hosting/asset/HsHostingAssetTypeUnitTest.java index 8bbe7365..2b17d85b 100644 --- a/src/test/java/net/hostsharing/hsadminng/hs/hosting/asset/HsHostingAssetTypeUnitTest.java +++ b/src/test/java/net/hostsharing/hsadminng/hs/hosting/asset/HsHostingAssetTypeUnitTest.java @@ -36,13 +36,13 @@ class HsHostingAssetTypeUnitTest { entity HA_DOMAIN_MBOX_SETUP entity HA_EMAIL_ADDRESS } - + package Server #99bcdb { entity HA_CLOUD_SERVER entity HA_MANAGED_SERVER entity HA_IP_NUMBER } - + package Webspace #99bcdb { entity HA_MANAGED_WEBSPACE entity HA_UNIX_USER @@ -129,10 +129,10 @@ class HsHostingAssetTypeUnitTest { HA_UNIX_USER *==> HA_MANAGED_WEBSPACE HA_EMAIL_ALIAS *==> HA_MANAGED_WEBSPACE HA_MARIADB_INSTANCE *==> HA_MANAGED_SERVER - HA_MARIADB_USER *==> HA_MARIADB_INSTANCE - HA_MARIADB_USER o..> HA_MANAGED_WEBSPACE - HA_MARIADB_DATABASE *==> HA_MARIADB_INSTANCE - HA_MARIADB_DATABASE o..> HA_MARIADB_USER + HA_MARIADB_USER *==> HA_MANAGED_WEBSPACE + HA_MARIADB_USER o..> HA_MARIADB_INSTANCE + HA_MARIADB_DATABASE *==> HA_MARIADB_USER + HA_MARIADB_DATABASE o..> HA_MARIADB_INSTANCE HA_IP_NUMBER o..> HA_CLOUD_SERVER HA_IP_NUMBER o..> HA_MANAGED_SERVER HA_IP_NUMBER o..> HA_MANAGED_WEBSPACE @@ -145,7 +145,7 @@ class HsHostingAssetTypeUnitTest { } Booking -down[hidden]->Legend ``` - + ### PostgreSQL ```plantuml diff --git a/src/test/java/net/hostsharing/hsadminng/hs/hosting/asset/validators/HsMariaDbDatabaseHostingAssetValidatorUnitTest.java b/src/test/java/net/hostsharing/hsadminng/hs/hosting/asset/validators/HsMariaDbDatabaseHostingAssetValidatorUnitTest.java index c75a135f..c5459b31 100644 --- a/src/test/java/net/hostsharing/hsadminng/hs/hosting/asset/validators/HsMariaDbDatabaseHostingAssetValidatorUnitTest.java +++ b/src/test/java/net/hostsharing/hsadminng/hs/hosting/asset/validators/HsMariaDbDatabaseHostingAssetValidatorUnitTest.java @@ -27,8 +27,8 @@ class HsMariaDbDatabaseHostingAssetValidatorUnitTest { private static final HsHostingAssetEntity GIVEN_MARIADB_USER = HsHostingAssetEntity.builder() .type(MARIADB_USER) - .parentAsset(GIVEN_MARIADB_INSTANCE) - .assignedToAsset(TEST_MANAGED_WEBSPACE_HOSTING_ASSET) + .parentAsset(TEST_MANAGED_WEBSPACE_HOSTING_ASSET) + .assignedToAsset(GIVEN_MARIADB_INSTANCE) .identifier("xyz00_temp") .caption("some valid test MariaDB-User") .config(new HashMap<>(ofEntries( @@ -39,13 +39,12 @@ class HsMariaDbDatabaseHostingAssetValidatorUnitTest { private static HsHostingAssetEntityBuilder givenValidMariaDbDatabaseBuilder() { return HsHostingAssetEntity.builder() .type(MARIADB_DATABASE) - .parentAsset(GIVEN_MARIADB_INSTANCE) - .assignedToAsset(GIVEN_MARIADB_USER) + .parentAsset(GIVEN_MARIADB_USER) + .assignedToAsset(GIVEN_MARIADB_INSTANCE) .identifier("xyz00_temp") .caption("some valid test MariaDB-Database") .config(new HashMap<>(ofEntries( - entry("encoding", "latin1"), - entry("collation", "latin1") + entry("encoding", "latin1") ))); } @@ -59,8 +58,7 @@ class HsMariaDbDatabaseHostingAssetValidatorUnitTest { // then assertThat(props).extracting(Object::toString).containsExactlyInAnyOrder( - "{type=string, propertyName=encoding, matchesRegEx=[[a-z0-9_]+], maxLength=24, provided=[latin2, utf8], defaultValue=utf8}", - "{type=string, propertyName=collation, matchesRegEx=[[a-z0-9_]+], maxLength=24, provided=[latin2, utf8], defaultValue=utf8}" + "{type=string, propertyName=encoding, matchesRegEx=[[a-z0-9_]+], maxLength=24, provided=[latin1, utf8], defaultValue=utf8}" ); } @@ -86,8 +84,7 @@ class HsMariaDbDatabaseHostingAssetValidatorUnitTest { final var givenMariaDbUserHostingAsset = givenValidMariaDbDatabaseBuilder() .config(ofEntries( entry("unknown", "wrong"), - entry("encoding", 10), - entry("collation", 20) + entry("encoding", 10) )) .build(); final var validator = HostingAssetEntityValidatorRegistry.forType(givenMariaDbUserHostingAsset.getType()); @@ -98,8 +95,7 @@ class HsMariaDbDatabaseHostingAssetValidatorUnitTest { // then assertThat(result).containsExactlyInAnyOrder( "'MARIADB_DATABASE:xyz00_temp.config.unknown' is not expected but is set to 'wrong'", - "'MARIADB_DATABASE:xyz00_temp.config.encoding' is expected to be of type String, but is of type Integer", - "'MARIADB_DATABASE:xyz00_temp.config.collation' is expected to be of type String, but is of type Integer" + "'MARIADB_DATABASE:xyz00_temp.config.encoding' is expected to be of type String, but is of type Integer" ); } diff --git a/src/test/java/net/hostsharing/hsadminng/hs/hosting/asset/validators/HsMariaDbUserHostingAssetValidatorUnitTest.java b/src/test/java/net/hostsharing/hsadminng/hs/hosting/asset/validators/HsMariaDbUserHostingAssetValidatorUnitTest.java index 7406a6fe..7ef55796 100644 --- a/src/test/java/net/hostsharing/hsadminng/hs/hosting/asset/validators/HsMariaDbUserHostingAssetValidatorUnitTest.java +++ b/src/test/java/net/hostsharing/hsadminng/hs/hosting/asset/validators/HsMariaDbUserHostingAssetValidatorUnitTest.java @@ -27,8 +27,8 @@ class HsMariaDbUserHostingAssetValidatorUnitTest { private static HsHostingAssetEntityBuilder givenValidMariaDbUserBuilder() { return HsHostingAssetEntity.builder() .type(MARIADB_USER) - .parentAsset(GIVEN_MARIADB_INSTANCE) - .assignedToAsset(TEST_MANAGED_WEBSPACE_HOSTING_ASSET) + .parentAsset(TEST_MANAGED_WEBSPACE_HOSTING_ASSET) + .assignedToAsset(GIVEN_MARIADB_INSTANCE) .identifier("xyz00_temp") .caption("some valid test MariaDB-User") .config(new HashMap<>(ofEntries( diff --git a/src/test/java/net/hostsharing/hsadminng/hs/hosting/asset/validators/HsUnixUserHostingAssetValidatorUnitTest.java b/src/test/java/net/hostsharing/hsadminng/hs/hosting/asset/validators/HsUnixUserHostingAssetValidatorUnitTest.java index 61cebf95..0d128cab 100644 --- a/src/test/java/net/hostsharing/hsadminng/hs/hosting/asset/validators/HsUnixUserHostingAssetValidatorUnitTest.java +++ b/src/test/java/net/hostsharing/hsadminng/hs/hosting/asset/validators/HsUnixUserHostingAssetValidatorUnitTest.java @@ -169,7 +169,7 @@ class HsUnixUserHostingAssetValidatorUnitTest { "{type=enumeration, propertyName=shell, values=[/bin/false, /bin/bash, /bin/csh, /bin/dash, /usr/bin/tcsh, /usr/bin/zsh, /usr/bin/passwd], defaultValue=/bin/false}", "{type=string, propertyName=homedir, readOnly=true, computed=true}", "{type=string, propertyName=totpKey, matchesRegEx=[^0x([0-9A-Fa-f]{2})+$], minLength=20, maxLength=256, writeOnly=true, undisclosed=true}", - "{type=password, propertyName=password, minLength=8, maxLength=40, writeOnly=true, computed=true, hashedUsing=SHA512, undisclosed=true}" + "{type=password, propertyName=password, minLength=8, maxLength=40, writeOnly=true, computed=true, hashedUsing=LINUX_SHA512, undisclosed=true}" ); } }