Since swh-alter version 1.3.0, the tool can send notifications of alterations made to the archive to a dedicated kafka topic that can then be used by mirrors to take action when these events occur.
This deployment probably means:
create the proper kafka topic with dedicated permissions (should be read-accessible only by mirror accounts and writable by the account linked to the swh alter commands).
ensure the environment in which swh alter commands are executed is properly configured.
The docker integration test for the mirror stack can be used as a working example of such a deployment (minus ACLs of the topic).
In this docker env, the topic prefix dedicated to these notifications is swh.journal.mirror-notifications (can be something else if it makes more sense or help operational purpose) and the topic itself is removal_notification (currently not configurable).
Thank you
Designs
Child items
...
Show closed items
Linked items
0
Link issues together to show that they're related.
Learn more.
Creating the swh.journal.mirror-notifications.removal_notification Kafka topic in staging:
root@kafka1:~# /opt/kafka/bin/kafka-topics.sh --bootstrap-server"$SERVER"--create\--config cleanup.policy=compact \--partitions 1 \--replication-factor 2 \--topic swh.journal.mirror-notifications.removal_notificationWARNING: Due to limitations in metric names, topics with a period ('.') or underscore ('_') could collide. To avoid issues it is best to use either, but not both.Created topic swh.journal.mirror-notifications.removal_notification.
Updating the mirror existing user permissions:
root@getty:/usr/local/sbin# ./create_kafka_users_rocquencourt_staging.sh --mirror enea-stg-mirror-01Creating user enea-stg-mirror-01, with privileged access to consumer group prefix enea-stg-mirror-01-Password for user enea-stg-mirror-01:Setting user credentialsWarning: --zookeeper is deprecated and will be removed in a future version of Kafka.Use --bootstrap-server instead to specify a broker to connect to.Completed updating config for entity: user-principal 'enea-stg-mirror-01'.Granting access to topics swh.journal.objects. to enea-stg-mirror-01[...]Granting access to topics swh.journal.mirror-notifications. to enea-stg-mirror-01Adding ACLs for resource `ResourcePattern(resourceType=TOPIC, name=swh.journal.mirror-notifications., patternType=PREFIXED)`:(principal=User:enea-stg-mirror-01, host=*, operation=READ, permissionType=ALLOW)Current ACLs for resource `ResourcePattern(resourceType=TOPIC, name=swh.journal.mirror-notifications., patternType=PREFIXED)`:(principal=User:enea-stg-mirror-01, host=*, operation=READ, permissionType=ALLOW)Adding ACLs for resource `ResourcePattern(resourceType=TOPIC, name=swh.journal.mirror-notifications., patternType=PREFIXED)`:(principal=User:enea-stg-mirror-01, host=*, operation=DESCRIBE, permissionType=ALLOW)Current ACLs for resource `ResourcePattern(resourceType=TOPIC, name=swh.journal.mirror-notifications., patternType=PREFIXED)`:(principal=User:enea-stg-mirror-01, host=*, operation=READ, permissionType=ALLOW)(principal=User:enea-stg-mirror-01, host=*, operation=DESCRIBE, permissionType=ALLOW)[...]
root@getty:/usr/local/sbin# ./create_kafka_users_rocquencourt_staging.sh --mirror snyk-stg-01Creating user snyk-stg-01, with privileged access to consumer group prefix snyk-stg-01-Password for user snyk-stg-01:Setting user credentialsWarning: --zookeeper is deprecated and will be removed in a future version of Kafka.Use --bootstrap-server instead to specify a broker to connect to.Completed updating config for entity: user-principal 'snyk-stg-01'.Granting access to topics swh.journal.objects. to snyk-stg-01[...]Granting access to topics swh.journal.mirror-notifications. to snyk-stg-01Adding ACLs for resource `ResourcePattern(resourceType=TOPIC, name=swh.journal.mirror-notifications., patternType=PREFIXED)`:(principal=User:snyk-stg-01, host=*, operation=READ, permissionType=ALLOW)Current ACLs for resource `ResourcePattern(resourceType=TOPIC, name=swh.journal.mirror-notifications., patternType=PREFIXED)`:(principal=User:snyk-stg-01, host=*, operation=READ, permissionType=ALLOW)(principal=User:enea-stg-mirror-01, host=*, operation=READ, permissionType=ALLOW)(principal=User:enea-stg-mirror-01, host=*, operation=DESCRIBE, permissionType=ALLOW)Adding ACLs for resource `ResourcePattern(resourceType=TOPIC, name=swh.journal.mirror-notifications., patternType=PREFIXED)`:(principal=User:snyk-stg-01, host=*, operation=DESCRIBE, permissionType=ALLOW)Current ACLs for resource `ResourcePattern(resourceType=TOPIC, name=swh.journal.mirror-notifications., patternType=PREFIXED)`:(principal=User:enea-stg-mirror-01, host=*, operation=READ, permissionType=ALLOW)(principal=User:snyk-stg-01, host=*, operation=DESCRIBE, permissionType=ALLOW)(principal=User:snyk-stg-01, host=*, operation=READ, permissionType=ALLOW)(principal=User:enea-stg-mirror-01, host=*, operation=DESCRIBE, permissionType=ALLOW)[...]
swh@alter-85c5bc87f-tlmmk:~$ cd /srv/recovery-bundles/swh@alter-85c5bc87f-tlmmk:/srv/recovery-bundles$ IDENTIFIER=$(date +%F|sed 's/-//g')-communityrackswh@alter-85c5bc87f-tlmmk:/srv/recovery-bundles$ cat>$IDENTIFIER.originshttps://git.communityrack.org/infra/knotci-docker.git^Cswh@alter-85c5bc87f-tlmmk:/srv/recovery-bundles$ cat$IDENTIFIER.originshttps://git.communityrack.org/infra/knotci-docker.git
swh@alter-85c5bc87f-tlmmk:/srv/recovery-bundles$ swh alter remove --identifier$IDENTIFIER\--recovery-bundle /srv/recovery-bundles/$IDENTIFIER.zip \--reason'Test kafka mirrors notification topic'$(cat$IDENTIFIER.origins)WARNING:cassandra.cluster:Downgrading core protocol version from 66 to 65 for 192.168.130.181:9042. To avoid this, it is best practice to explicitly set Cluster(protocol_version) to the version supported by your cluster. http://datastax.github.io/python-driver/api/cassandra/cluster.html#cassandra.cluster.Cluster.protocol_versionWARNING:cassandra.cluster:Downgrading core protocol version from 65 to 5 for 192.168.130.181:9042. To avoid this, it is best practice to explicitly set Cluster(protocol_version) to the version supported by your cluster. http://datastax.github.io/python-driver/api/cassandra/cluster.html#cassandra.cluster.Cluster.protocol_versionINFO:cassandra.policies:Using datacenter 'sesi_rocquencourt_staging'for DCAwareRoundRobinPolicy (via host '192.168.130.181:9042');if incorrect, please specify a local_dc to the constructor, or limit contact points to local cluster nodesWARNING:cassandra.cluster:Downgrading core protocol version from 66 to 65 for 192.168.130.181:9042. To avoid this, it is best practice to explicitly set Cluster(protocol_version) to the version supported by your cluster. http://datastax.github.io/python-driver/api/cassandra/cluster.html#cassandra.cluster.Cluster.protocol_versionWARNING:cassandra.cluster:Downgrading core protocol version from 65 to 5 for 192.168.130.181:9042. To avoid this, it is best practice to explicitly set Cluster(protocol_version) to the version supported by your cluster. http://datastax.github.io/python-driver/api/cassandra/cluster.html#cassandra.cluster.Cluster.protocol_versionINFO:cassandra.policies:Using datacenter 'sesi_rocquencourt_staging'for DCAwareRoundRobinPolicy (via host '192.168.130.181:9042');if incorrect, please specify a local_dc to the constructor, or limit contact points to local cluster nodesRemoving the following origins: - swh:1:ori:6fe8619df111539cbe0a5a1760b758a1542e87caFinding removable objects…Inventorying all reachable objects… [------------------------------------]done(93 objects found / 0 left to look up)Determining which objects can be safely removed… [####################################] 100%Finding RawExtrinsicMetadata objects… [####################################] 100%Removal plan:- Origin: 1- Snapshot: 1- Release: 5- Revision: 29- Directory: 25- Content: 32- … and more objects that are not addresseable by a SWHID (OriginVisit, OriginVisitStatus, ExtID).Proceed? [y/N]: yCreating recovery bundle…Backing up Content objects… [####################################] 100%Backing up Directory objects… [####################################] 100%Backing up Revision objects… [####################################] 100%Backing up Release objects… [####################################] 100%Backing up Snapshot objects… [####################################] 100%Backing up Origin objects… [####################################] 100%Recovery bundle created.Recovery bundle decryption key: xxxxxxRemoving origins from search “search”… [####################################] 100%1 origins removed from search “search”.Removing objects from storage “cassandra”… [####################################] 100%96 objects removed from storage “cassandra”.Removing objects from storage “postgresql”… [####################################] 100%96 objects removed from storage “postgresql”.Removing objects from journal “journal”… [####################################] 100%Objects removed from journal “journal”.Removing objects from objstorage “db1”… [####################################] 100%32 objects removed from objstorage “db1”. Total time: 264.61 milliseconds, average: 8.27 milliseconds per object, standard deviation: 10.46 millisecondsRemoving objects from objstorage “storage1”… [####################################] 100%0 objects removed from objstorage “storage1”.Looking for newly added references… [####################################] 100%Sending removal notification…Removal notification sent.
swh@alter-85c5bc87f-tlmmk:/srv/recovery-bundles$ cat>$IDENTIFIER.keyswh@alter-85c5bc87f-tlmmk:/srv/recovery-bundles$ ls-trl$IDENTIFIER*-rw-r--r-- 1 swh swh 178561 Mar 24 13:05 20250324-communityrack.zip-rw-r--r-- 1 swh swh 75 Mar 24 13:06 20250324-communityrack.key
Creating the swh.journal.mirror-notifications.removal_notification Kafka topic in production:
root@kafka1:~# /opt/kafka/bin/kafka-topics.sh --bootstrap-server"$SERVER"--create\--config cleanup.policy=compact \--partitions 1 \--replication-factor 2 \--topic swh.journal.mirror-notifications.removal_notificationWARNING: Due to limitations in metric names, topics with a period ('.') or underscore ('_') could collide. To avoid issues it is best to use either, but not both.Created topic swh.journal.mirror-notifications.removal_notification.
Updating the mirror existing users permissions (enea-prod-01,grnet-prod-01,snyk-prod-01,unidue-prod-01):
root@getty:/usr/local/sbin# ./create_kafka_users_rocquencourt.sh --mirror enea-prod-01Creating user enea-prod-01, with privileged access to consumer group prefix enea-prod-01-Password for user enea-prod-01:Setting user credentials[...]Granting access to topics swh.journal.mirror-notifications. to enea-prod-01Adding ACLs for resource `ResourcePattern(resourceType=TOPIC, name=swh.journal.mirror-notifications., patternType=PREFIXED)`:(principal=User:enea-prod-01, host=*, operation=READ, permissionType=ALLOW)Current ACLs for resource `ResourcePattern(resourceType=TOPIC, name=swh.journal.mirror-notifications., patternType=PREFIXED)`:(principal=User:enea-prod-01, host=*, operation=READ, permissionType=ALLOW)Adding ACLs for resource `ResourcePattern(resourceType=TOPIC, name=swh.journal.mirror-notifications., patternType=PREFIXED)`:(principal=User:enea-prod-01, host=*, operation=DESCRIBE, permissionType=ALLOW)Current ACLs for resource `ResourcePattern(resourceType=TOPIC, name=swh.journal.mirror-notifications., patternType=PREFIXED)`:(principal=User:enea-prod-01, host=*, operation=READ, permissionType=ALLOW)(principal=User:enea-prod-01, host=*, operation=DESCRIBE, permissionType=ALLOW)Granting access to consumer group prefix enea-prod-01- to enea-prod-01Adding ACLs for resource `ResourcePattern(resourceType=GROUP, name=enea-prod-01-, patternType=PREFIXED)`:(principal=User:enea-prod-01, host=*, operation=READ, permissionType=ALLOW)Current ACLs for resource `ResourcePattern(resourceType=GROUP, name=enea-prod-01-, patternType=PREFIXED)`:(principal=User:enea-prod-01, host=*, operation=READ, permissionType=ALLOW)Adding ACLs for resource `ResourcePattern(resourceType=GROUP, name=enea-prod-01-, patternType=PREFIXED)`:(principal=User:enea-prod-01, host=*, operation=DESCRIBE, permissionType=ALLOW)Current ACLs for resource `ResourcePattern(resourceType=GROUP, name=enea-prod-01-, patternType=PREFIXED)`:(principal=User:enea-prod-01, host=*, operation=DESCRIBE, permissionType=ALLOW)(principal=User:enea-prod-01, host=*, operation=READ, permissionType=ALLOW)Adding ACLs for resource `ResourcePattern(resourceType=GROUP, name=enea-prod-01-, patternType=PREFIXED)`:(principal=User:enea-prod-01, host=*, operation=DELETE, permissionType=ALLOW)Current ACLs for resource `ResourcePattern(resourceType=GROUP, name=enea-prod-01-, patternType=PREFIXED)`:(principal=User:enea-prod-01, host=*, operation=DESCRIBE, permissionType=ALLOW)(principal=User:enea-prod-01, host=*, operation=READ, permissionType=ALLOW)(principal=User:enea-prod-01, host=*, operation=DELETE, permissionType=ALLOW)
root@getty:/usr/local/sbin# ./create_kafka_users_rocquencourt.sh --mirror grnet-prod-01Creating user grnet-prod-01, with privileged access to consumer group prefix grnet-prod-01-Password for user grnet-prod-01:Setting user credentials[...]Granting access to topics swh.journal.mirror-notifications. to grnet-prod-01Adding ACLs for resource `ResourcePattern(resourceType=TOPIC, name=swh.journal.mirror-notifications., patternType=PREFIXED)`:(principal=User:grnet-prod-01, host=*, operation=READ, permissionType=ALLOW)Current ACLs for resource `ResourcePattern(resourceType=TOPIC, name=swh.journal.mirror-notifications., patternType=PREFIXED)`:(principal=User:enea-prod-01, host=*, operation=READ, permissionType=ALLOW)(principal=User:enea-prod-01, host=*, operation=DESCRIBE, permissionType=ALLOW)(principal=User:grnet-prod-01, host=*, operation=READ, permissionType=ALLOW)Adding ACLs for resource `ResourcePattern(resourceType=TOPIC, name=swh.journal.mirror-notifications., patternType=PREFIXED)`:(principal=User:grnet-prod-01, host=*, operation=DESCRIBE, permissionType=ALLOW)Current ACLs for resource `ResourcePattern(resourceType=TOPIC, name=swh.journal.mirror-notifications., patternType=PREFIXED)`:(principal=User:grnet-prod-01, host=*, operation=DESCRIBE, permissionType=ALLOW)(principal=User:enea-prod-01, host=*, operation=READ, permissionType=ALLOW)(principal=User:enea-prod-01, host=*, operation=DESCRIBE, permissionType=ALLOW)(principal=User:grnet-prod-01, host=*, operation=READ, permissionType=ALLOW)Granting access to consumer group prefix grnet-prod-01- to grnet-prod-01Adding ACLs for resource `ResourcePattern(resourceType=GROUP, name=grnet-prod-01-, patternType=PREFIXED)`:(principal=User:grnet-prod-01, host=*, operation=READ, permissionType=ALLOW)Current ACLs for resource `ResourcePattern(resourceType=GROUP, name=grnet-prod-01-, patternType=PREFIXED)`:(principal=User:grnet-prod-01, host=*, operation=DELETE, permissionType=ALLOW)(principal=User:grnet-prod-01, host=*, operation=READ, permissionType=ALLOW)(principal=User:grnet-prod-01, host=*, operation=DESCRIBE, permissionType=ALLOW)Adding ACLs for resource `ResourcePattern(resourceType=GROUP, name=grnet-prod-01-, patternType=PREFIXED)`:(principal=User:grnet-prod-01, host=*, operation=DESCRIBE, permissionType=ALLOW)Current ACLs for resource `ResourcePattern(resourceType=GROUP, name=grnet-prod-01-, patternType=PREFIXED)`:(principal=User:grnet-prod-01, host=*, operation=DELETE, permissionType=ALLOW)(principal=User:grnet-prod-01, host=*, operation=READ, permissionType=ALLOW)(principal=User:grnet-prod-01, host=*, operation=DESCRIBE, permissionType=ALLOW)Adding ACLs for resource `ResourcePattern(resourceType=GROUP, name=grnet-prod-01-, patternType=PREFIXED)`:(principal=User:grnet-prod-01, host=*, operation=DELETE, permissionType=ALLOW)Current ACLs for resource `ResourcePattern(resourceType=GROUP, name=grnet-prod-01-, patternType=PREFIXED)`:(principal=User:grnet-prod-01, host=*, operation=DELETE, permissionType=ALLOW)(principal=User:grnet-prod-01, host=*, operation=READ, permissionType=ALLOW)(principal=User:grnet-prod-01, host=*, operation=DESCRIBE, permissionType=ALLOW)
root@getty:/usr/local/sbin# ./create_kafka_users_rocquencourt.sh --mirror snyk-prod-01Creating user snyk-prod-01, with privileged access to consumer group prefix snyk-prod-01-Password for user snyk-prod-01:Setting user credentials[...]Granting access to topics swh.journal.mirror-notifications. to snyk-prod-01Adding ACLs for resource `ResourcePattern(resourceType=TOPIC, name=swh.journal.mirror-notifications., patternType=PREFIXED)`:(principal=User:snyk-prod-01, host=*, operation=READ, permissionType=ALLOW)Current ACLs for resource `ResourcePattern(resourceType=TOPIC, name=swh.journal.mirror-notifications., patternType=PREFIXED)`:(principal=User:enea-prod-01, host=*, operation=DESCRIBE, permissionType=ALLOW)(principal=User:enea-prod-01, host=*, operation=READ, permissionType=ALLOW)(principal=User:grnet-prod-01, host=*, operation=DESCRIBE, permissionType=ALLOW)(principal=User:grnet-prod-01, host=*, operation=READ, permissionType=ALLOW)(principal=User:snyk-prod-01, host=*, operation=READ, permissionType=ALLOW)Adding ACLs for resource `ResourcePattern(resourceType=TOPIC, name=swh.journal.mirror-notifications., patternType=PREFIXED)`:(principal=User:snyk-prod-01, host=*, operation=DESCRIBE, permissionType=ALLOW)Current ACLs for resource `ResourcePattern(resourceType=TOPIC, name=swh.journal.mirror-notifications., patternType=PREFIXED)`:(principal=User:enea-prod-01, host=*, operation=DESCRIBE, permissionType=ALLOW)(principal=User:snyk-prod-01, host=*, operation=DESCRIBE, permissionType=ALLOW)(principal=User:enea-prod-01, host=*, operation=READ, permissionType=ALLOW)(principal=User:grnet-prod-01, host=*, operation=DESCRIBE, permissionType=ALLOW)(principal=User:grnet-prod-01, host=*, operation=READ, permissionType=ALLOW)(principal=User:snyk-prod-01, host=*, operation=READ, permissionType=ALLOW)Granting access to consumer group prefix snyk-prod-01- to snyk-prod-01Adding ACLs for resource `ResourcePattern(resourceType=GROUP, name=snyk-prod-01-, patternType=PREFIXED)`:(principal=User:snyk-prod-01, host=*, operation=READ, permissionType=ALLOW)Current ACLs for resource `ResourcePattern(resourceType=GROUP, name=snyk-prod-01-, patternType=PREFIXED)`:(principal=User:snyk-prod-01, host=*, operation=READ, permissionType=ALLOW)Adding ACLs for resource `ResourcePattern(resourceType=GROUP, name=snyk-prod-01-, patternType=PREFIXED)`:(principal=User:snyk-prod-01, host=*, operation=DESCRIBE, permissionType=ALLOW)Current ACLs for resource `ResourcePattern(resourceType=GROUP, name=snyk-prod-01-, patternType=PREFIXED)`:(principal=User:snyk-prod-01, host=*, operation=READ, permissionType=ALLOW)(principal=User:snyk-prod-01, host=*, operation=DESCRIBE, permissionType=ALLOW)Adding ACLs for resource `ResourcePattern(resourceType=GROUP, name=snyk-prod-01-, patternType=PREFIXED)`:(principal=User:snyk-prod-01, host=*, operation=DELETE, permissionType=ALLOW)Current ACLs for resource `ResourcePattern(resourceType=GROUP, name=snyk-prod-01-, patternType=PREFIXED)`:(principal=User:snyk-prod-01, host=*, operation=DESCRIBE, permissionType=ALLOW)(principal=User:snyk-prod-01, host=*, operation=READ, permissionType=ALLOW)(principal=User:snyk-prod-01, host=*, operation=DELETE, permissionType=ALLOW)
root@getty:/usr/local/sbin# ./create_kafka_users_rocquencourt.sh --mirror unidue-prod-01Creating user unidue-prod-01, with privileged access to consumer group prefix unidue-prod-01-Password for user unidue-prod-01:Setting user credentials[...]Granting access to topics swh.journal.mirror-notifications. to unidue-prod-01Adding ACLs for resource `ResourcePattern(resourceType=TOPIC, name=swh.journal.mirror-notifications., patternType=PREFIXED)`:(principal=User:unidue-prod-01, host=*, operation=READ, permissionType=ALLOW)Current ACLs for resource `ResourcePattern(resourceType=TOPIC, name=swh.journal.mirror-notifications., patternType=PREFIXED)`:(principal=User:unidue-prod-01, host=*, operation=READ, permissionType=ALLOW)(principal=User:enea-prod-01, host=*, operation=DESCRIBE, permissionType=ALLOW)(principal=User:snyk-prod-01, host=*, operation=DESCRIBE, permissionType=ALLOW)(principal=User:enea-prod-01, host=*, operation=READ, permissionType=ALLOW)(principal=User:grnet-prod-01, host=*, operation=DESCRIBE, permissionType=ALLOW)(principal=User:grnet-prod-01, host=*, operation=READ, permissionType=ALLOW)(principal=User:snyk-prod-01, host=*, operation=READ, permissionType=ALLOW)Adding ACLs for resource `ResourcePattern(resourceType=TOPIC, name=swh.journal.mirror-notifications., patternType=PREFIXED)`:(principal=User:unidue-prod-01, host=*, operation=DESCRIBE, permissionType=ALLOW)Current ACLs for resource `ResourcePattern(resourceType=TOPIC, name=swh.journal.mirror-notifications., patternType=PREFIXED)`:(principal=User:unidue-prod-01, host=*, operation=READ, permissionType=ALLOW)(principal=User:enea-prod-01, host=*, operation=DESCRIBE, permissionType=ALLOW)(principal=User:snyk-prod-01, host=*, operation=DESCRIBE, permissionType=ALLOW)(principal=User:enea-prod-01, host=*, operation=READ, permissionType=ALLOW)(principal=User:grnet-prod-01, host=*, operation=DESCRIBE, permissionType=ALLOW)(principal=User:unidue-prod-01, host=*, operation=DESCRIBE, permissionType=ALLOW)(principal=User:grnet-prod-01, host=*, operation=READ, permissionType=ALLOW)(principal=User:snyk-prod-01, host=*, operation=READ, permissionType=ALLOW)Granting access to consumer group prefix unidue-prod-01- to unidue-prod-01Adding ACLs for resource `ResourcePattern(resourceType=GROUP, name=unidue-prod-01-, patternType=PREFIXED)`:(principal=User:unidue-prod-01, host=*, operation=READ, permissionType=ALLOW)Current ACLs for resource `ResourcePattern(resourceType=GROUP, name=unidue-prod-01-, patternType=PREFIXED)`:(principal=User:unidue-prod-01, host=*, operation=READ, permissionType=ALLOW)(principal=User:unidue-prod-01, host=*, operation=DELETE, permissionType=ALLOW)(principal=User:unidue-prod-01, host=*, operation=DESCRIBE, permissionType=ALLOW)Adding ACLs for resource `ResourcePattern(resourceType=GROUP, name=unidue-prod-01-, patternType=PREFIXED)`:(principal=User:unidue-prod-01, host=*, operation=DESCRIBE, permissionType=ALLOW)Current ACLs for resource `ResourcePattern(resourceType=GROUP, name=unidue-prod-01-, patternType=PREFIXED)`:(principal=User:unidue-prod-01, host=*, operation=READ, permissionType=ALLOW)(principal=User:unidue-prod-01, host=*, operation=DESCRIBE, permissionType=ALLOW)(principal=User:unidue-prod-01, host=*, operation=DELETE, permissionType=ALLOW)Adding ACLs for resource `ResourcePattern(resourceType=GROUP, name=unidue-prod-01-, patternType=PREFIXED)`:(principal=User:unidue-prod-01, host=*, operation=DELETE, permissionType=ALLOW)Current ACLs for resource `ResourcePattern(resourceType=GROUP, name=unidue-prod-01-, patternType=PREFIXED)`:(principal=User:unidue-prod-01, host=*, operation=READ, permissionType=ALLOW)(principal=User:unidue-prod-01, host=*, operation=DESCRIBE, permissionType=ALLOW)(principal=User:unidue-prod-01, host=*, operation=DELETE, permissionType=ALLOW)