{"host": "deploy1003.eqiad.wmnet", "state": "core_diff", "description": "Differences to core resources", "diff": {"full": {"total": 17015, "only_in_self": [], "only_in_other": ["Cfssl::Cert[dse__opensearch-apifeatureusage-deploy]", "Cfssl::Cert[dse__opensearch-apifeatureusage-test-deploy]", "Cfssl::Cert[dse__opensearch-apifeatureusage-test]", "Cfssl::Cert[dse__opensearch-apifeatureusage]", "Cfssl::Cert[dse__opensearch-toolhub-deploy]", "Cfssl::Cert[dse__opensearch-toolhub-test-deploy]", "Cfssl::Cert[dse__opensearch-toolhub-test]", "Cfssl::Cert[dse__opensearch-toolhub]", "Cfssl::Cert[dse__opensearch-ttmserver-deploy]", "Cfssl::Cert[dse__opensearch-ttmserver-test-deploy]", "Cfssl::Cert[dse__opensearch-ttmserver-test]", "Cfssl::Cert[dse__opensearch-ttmserver]", "Cfssl::Csr[/etc/cfssl/csr/dse__opensearch-apifeatureusage-deploy.csr]", "Cfssl::Csr[/etc/cfssl/csr/dse__opensearch-apifeatureusage-test-deploy.csr]", "Cfssl::Csr[/etc/cfssl/csr/dse__opensearch-apifeatureusage-test.csr]", "Cfssl::Csr[/etc/cfssl/csr/dse__opensearch-apifeatureusage.csr]", "Cfssl::Csr[/etc/cfssl/csr/dse__opensearch-toolhub-deploy.csr]", "Cfssl::Csr[/etc/cfssl/csr/dse__opensearch-toolhub-test-deploy.csr]", "Cfssl::Csr[/etc/cfssl/csr/dse__opensearch-toolhub-test.csr]", "Cfssl::Csr[/etc/cfssl/csr/dse__opensearch-toolhub.csr]", "Cfssl::Csr[/etc/cfssl/csr/dse__opensearch-ttmserver-deploy.csr]", "Cfssl::Csr[/etc/cfssl/csr/dse__opensearch-ttmserver-test-deploy.csr]", "Cfssl::Csr[/etc/cfssl/csr/dse__opensearch-ttmserver-test.csr]", "Cfssl::Csr[/etc/cfssl/csr/dse__opensearch-ttmserver.csr]", "Exec[Generate cert dse__opensearch-apifeatureusage refresh on intermediate ca change]", "Exec[Generate cert dse__opensearch-apifeatureusage refresh]", "Exec[Generate cert dse__opensearch-apifeatureusage-deploy refresh on intermediate ca change]", "Exec[Generate cert dse__opensearch-apifeatureusage-deploy refresh]", "Exec[Generate cert dse__opensearch-apifeatureusage-deploy]", "Exec[Generate cert dse__opensearch-apifeatureusage-test refresh on intermediate ca change]", "Exec[Generate cert dse__opensearch-apifeatureusage-test refresh]", "Exec[Generate cert dse__opensearch-apifeatureusage-test-deploy refresh on intermediate ca change]", "Exec[Generate cert dse__opensearch-apifeatureusage-test-deploy refresh]", "Exec[Generate cert dse__opensearch-apifeatureusage-test-deploy]", "Exec[Generate cert dse__opensearch-apifeatureusage-test]", "Exec[Generate cert dse__opensearch-apifeatureusage]", "Exec[Generate cert dse__opensearch-toolhub refresh on intermediate ca change]", "Exec[Generate cert dse__opensearch-toolhub refresh]", "Exec[Generate cert dse__opensearch-toolhub-deploy refresh on intermediate ca change]", "Exec[Generate cert dse__opensearch-toolhub-deploy refresh]", "Exec[Generate cert dse__opensearch-toolhub-deploy]", "Exec[Generate cert dse__opensearch-toolhub-test refresh on intermediate ca change]", "Exec[Generate cert dse__opensearch-toolhub-test refresh]", "Exec[Generate cert dse__opensearch-toolhub-test-deploy refresh on intermediate ca change]", "Exec[Generate cert dse__opensearch-toolhub-test-deploy refresh]", "Exec[Generate cert dse__opensearch-toolhub-test-deploy]", "Exec[Generate cert dse__opensearch-toolhub-test]", "Exec[Generate cert dse__opensearch-toolhub]", "Exec[Generate cert dse__opensearch-ttmserver refresh on intermediate ca change]", "Exec[Generate cert dse__opensearch-ttmserver refresh]", "Exec[Generate cert dse__opensearch-ttmserver-deploy refresh on intermediate ca change]", "Exec[Generate cert dse__opensearch-ttmserver-deploy refresh]", "Exec[Generate cert dse__opensearch-ttmserver-deploy]", "Exec[Generate cert dse__opensearch-ttmserver-test refresh on intermediate ca change]", "Exec[Generate cert dse__opensearch-ttmserver-test refresh]", "Exec[Generate cert dse__opensearch-ttmserver-test-deploy refresh on intermediate ca change]", "Exec[Generate cert dse__opensearch-ttmserver-test-deploy refresh]", "Exec[Generate cert dse__opensearch-ttmserver-test-deploy]", "Exec[Generate cert dse__opensearch-ttmserver-test]", "Exec[Generate cert dse__opensearch-ttmserver]", "Exec[create chained cert /etc/kubernetes/pki/dse__opensearch-apifeatureusage-deploy.chain.pem]", "Exec[create chained cert /etc/kubernetes/pki/dse__opensearch-apifeatureusage-test-deploy.chain.pem]", "Exec[create chained cert /etc/kubernetes/pki/dse__opensearch-apifeatureusage-test.chain.pem]", "Exec[create chained cert /etc/kubernetes/pki/dse__opensearch-apifeatureusage.chain.pem]", "Exec[create chained cert /etc/kubernetes/pki/dse__opensearch-toolhub-deploy.chain.pem]", "Exec[create chained cert /etc/kubernetes/pki/dse__opensearch-toolhub-test-deploy.chain.pem]", "Exec[create chained cert /etc/kubernetes/pki/dse__opensearch-toolhub-test.chain.pem]", "Exec[create chained cert /etc/kubernetes/pki/dse__opensearch-toolhub.chain.pem]", "Exec[create chained cert /etc/kubernetes/pki/dse__opensearch-ttmserver-deploy.chain.pem]", "Exec[create chained cert /etc/kubernetes/pki/dse__opensearch-ttmserver-test-deploy.chain.pem]", "Exec[create chained cert /etc/kubernetes/pki/dse__opensearch-ttmserver-test.chain.pem]", "Exec[create chained cert /etc/kubernetes/pki/dse__opensearch-ttmserver.chain.pem]", "Exec[renew certificate - dse__opensearch-apifeatureusage-deploy]", "Exec[renew certificate - dse__opensearch-apifeatureusage-test-deploy]", "Exec[renew certificate - dse__opensearch-apifeatureusage-test]", "Exec[renew certificate - dse__opensearch-apifeatureusage]", "Exec[renew certificate - dse__opensearch-toolhub-deploy]", "Exec[renew certificate - dse__opensearch-toolhub-test-deploy]", "Exec[renew certificate - dse__opensearch-toolhub-test]", "Exec[renew certificate - dse__opensearch-toolhub]", "Exec[renew certificate - dse__opensearch-ttmserver-deploy]", "Exec[renew certificate - dse__opensearch-ttmserver-test-deploy]", "Exec[renew certificate - dse__opensearch-ttmserver-test]", "Exec[renew certificate - dse__opensearch-ttmserver]", "File[/etc/cfssl/csr/dse__opensearch-apifeatureusage-deploy.csr]", "File[/etc/cfssl/csr/dse__opensearch-apifeatureusage-test-deploy.csr]", "File[/etc/cfssl/csr/dse__opensearch-apifeatureusage-test.csr]", "File[/etc/cfssl/csr/dse__opensearch-apifeatureusage.csr]", "File[/etc/cfssl/csr/dse__opensearch-toolhub-deploy.csr]", "File[/etc/cfssl/csr/dse__opensearch-toolhub-test-deploy.csr]", "File[/etc/cfssl/csr/dse__opensearch-toolhub-test.csr]", "File[/etc/cfssl/csr/dse__opensearch-toolhub.csr]", "File[/etc/cfssl/csr/dse__opensearch-ttmserver-deploy.csr]", "File[/etc/cfssl/csr/dse__opensearch-ttmserver-test-deploy.csr]", "File[/etc/cfssl/csr/dse__opensearch-ttmserver-test.csr]", "File[/etc/cfssl/csr/dse__opensearch-ttmserver.csr]", "File[/etc/helmfile-defaults/private/dse-k8s_services/opensearch-apifeatureusage-test]", "File[/etc/helmfile-defaults/private/dse-k8s_services/opensearch-apifeatureusage]", "File[/etc/helmfile-defaults/private/dse-k8s_services/opensearch-toolhub-test]", "File[/etc/helmfile-defaults/private/dse-k8s_services/opensearch-toolhub]", "File[/etc/helmfile-defaults/private/dse-k8s_services/opensearch-ttmserver-test]", "File[/etc/helmfile-defaults/private/dse-k8s_services/opensearch-ttmserver]", "File[/etc/kubernetes/opensearch-apifeatureusage-deploy-dse-k8s-codfw.config]", "File[/etc/kubernetes/opensearch-apifeatureusage-deploy-dse-k8s-eqiad.config]", "File[/etc/kubernetes/opensearch-apifeatureusage-dse-k8s-codfw.config]", "File[/etc/kubernetes/opensearch-apifeatureusage-dse-k8s-eqiad.config]", "File[/etc/kubernetes/opensearch-apifeatureusage-test-deploy-dse-k8s-codfw.config]", "File[/etc/kubernetes/opensearch-apifeatureusage-test-deploy-dse-k8s-eqiad.config]", "File[/etc/kubernetes/opensearch-apifeatureusage-test-dse-k8s-codfw.config]", "File[/etc/kubernetes/opensearch-apifeatureusage-test-dse-k8s-eqiad.config]", "File[/etc/kubernetes/opensearch-toolhub-deploy-dse-k8s-codfw.config]", "File[/etc/kubernetes/opensearch-toolhub-deploy-dse-k8s-eqiad.config]", "File[/etc/kubernetes/opensearch-toolhub-dse-k8s-codfw.config]", "File[/etc/kubernetes/opensearch-toolhub-dse-k8s-eqiad.config]", "File[/etc/kubernetes/opensearch-toolhub-test-deploy-dse-k8s-codfw.config]", "File[/etc/kubernetes/opensearch-toolhub-test-deploy-dse-k8s-eqiad.config]", "File[/etc/kubernetes/opensearch-toolhub-test-dse-k8s-codfw.config]", "File[/etc/kubernetes/opensearch-toolhub-test-dse-k8s-eqiad.config]", "File[/etc/kubernetes/opensearch-ttmserver-deploy-dse-k8s-codfw.config]", "File[/etc/kubernetes/opensearch-ttmserver-deploy-dse-k8s-eqiad.config]", "File[/etc/kubernetes/opensearch-ttmserver-dse-k8s-codfw.config]", "File[/etc/kubernetes/opensearch-ttmserver-dse-k8s-eqiad.config]", "File[/etc/kubernetes/opensearch-ttmserver-test-deploy-dse-k8s-codfw.config]", "File[/etc/kubernetes/opensearch-ttmserver-test-deploy-dse-k8s-eqiad.config]", "File[/etc/kubernetes/opensearch-ttmserver-test-dse-k8s-codfw.config]", "File[/etc/kubernetes/opensearch-ttmserver-test-dse-k8s-eqiad.config]", "File[/etc/kubernetes/pki/dse__opensearch-apifeatureusage-deploy-key.pem]", "File[/etc/kubernetes/pki/dse__opensearch-apifeatureusage-deploy.chain.pem]", "File[/etc/kubernetes/pki/dse__opensearch-apifeatureusage-deploy.chained.pem]", "File[/etc/kubernetes/pki/dse__opensearch-apifeatureusage-deploy.csr]", "File[/etc/kubernetes/pki/dse__opensearch-apifeatureusage-deploy.pem]", "File[/etc/kubernetes/pki/dse__opensearch-apifeatureusage-key.pem]", "File[/etc/kubernetes/pki/dse__opensearch-apifeatureusage-test-deploy-key.pem]", "File[/etc/kubernetes/pki/dse__opensearch-apifeatureusage-test-deploy.chain.pem]", "File[/etc/kubernetes/pki/dse__opensearch-apifeatureusage-test-deploy.chained.pem]", "File[/etc/kubernetes/pki/dse__opensearch-apifeatureusage-test-deploy.csr]", "File[/etc/kubernetes/pki/dse__opensearch-apifeatureusage-test-deploy.pem]", "File[/etc/kubernetes/pki/dse__opensearch-apifeatureusage-test-key.pem]", "File[/etc/kubernetes/pki/dse__opensearch-apifeatureusage-test.chain.pem]", "File[/etc/kubernetes/pki/dse__opensearch-apifeatureusage-test.chained.pem]", "File[/etc/kubernetes/pki/dse__opensearch-apifeatureusage-test.csr]", "File[/etc/kubernetes/pki/dse__opensearch-apifeatureusage-test.pem]", "File[/etc/kubernetes/pki/dse__opensearch-apifeatureusage.chain.pem]", "File[/etc/kubernetes/pki/dse__opensearch-apifeatureusage.chained.pem]", "File[/etc/kubernetes/pki/dse__opensearch-apifeatureusage.csr]", "File[/etc/kubernetes/pki/dse__opensearch-apifeatureusage.pem]", "File[/etc/kubernetes/pki/dse__opensearch-toolhub-deploy-key.pem]", "File[/etc/kubernetes/pki/dse__opensearch-toolhub-deploy.chain.pem]", "File[/etc/kubernetes/pki/dse__opensearch-toolhub-deploy.chained.pem]", "File[/etc/kubernetes/pki/dse__opensearch-toolhub-deploy.csr]", "File[/etc/kubernetes/pki/dse__opensearch-toolhub-deploy.pem]", "File[/etc/kubernetes/pki/dse__opensearch-toolhub-key.pem]", "File[/etc/kubernetes/pki/dse__opensearch-toolhub-test-deploy-key.pem]", "File[/etc/kubernetes/pki/dse__opensearch-toolhub-test-deploy.chain.pem]", "File[/etc/kubernetes/pki/dse__opensearch-toolhub-test-deploy.chained.pem]", "File[/etc/kubernetes/pki/dse__opensearch-toolhub-test-deploy.csr]", "File[/etc/kubernetes/pki/dse__opensearch-toolhub-test-deploy.pem]", "File[/etc/kubernetes/pki/dse__opensearch-toolhub-test-key.pem]", "File[/etc/kubernetes/pki/dse__opensearch-toolhub-test.chain.pem]", "File[/etc/kubernetes/pki/dse__opensearch-toolhub-test.chained.pem]", "File[/etc/kubernetes/pki/dse__opensearch-toolhub-test.csr]", "File[/etc/kubernetes/pki/dse__opensearch-toolhub-test.pem]", "File[/etc/kubernetes/pki/dse__opensearch-toolhub.chain.pem]", "File[/etc/kubernetes/pki/dse__opensearch-toolhub.chained.pem]", "File[/etc/kubernetes/pki/dse__opensearch-toolhub.csr]", "File[/etc/kubernetes/pki/dse__opensearch-toolhub.pem]", "File[/etc/kubernetes/pki/dse__opensearch-ttmserver-deploy-key.pem]", "File[/etc/kubernetes/pki/dse__opensearch-ttmserver-deploy.chain.pem]", "File[/etc/kubernetes/pki/dse__opensearch-ttmserver-deploy.chained.pem]", "File[/etc/kubernetes/pki/dse__opensearch-ttmserver-deploy.csr]", "File[/etc/kubernetes/pki/dse__opensearch-ttmserver-deploy.pem]", "File[/etc/kubernetes/pki/dse__opensearch-ttmserver-key.pem]", "File[/etc/kubernetes/pki/dse__opensearch-ttmserver-test-deploy-key.pem]", "File[/etc/kubernetes/pki/dse__opensearch-ttmserver-test-deploy.chain.pem]", "File[/etc/kubernetes/pki/dse__opensearch-ttmserver-test-deploy.chained.pem]", "File[/etc/kubernetes/pki/dse__opensearch-ttmserver-test-deploy.csr]", "File[/etc/kubernetes/pki/dse__opensearch-ttmserver-test-deploy.pem]", "File[/etc/kubernetes/pki/dse__opensearch-ttmserver-test-key.pem]", "File[/etc/kubernetes/pki/dse__opensearch-ttmserver-test.chain.pem]", "File[/etc/kubernetes/pki/dse__opensearch-ttmserver-test.chained.pem]", "File[/etc/kubernetes/pki/dse__opensearch-ttmserver-test.csr]", "File[/etc/kubernetes/pki/dse__opensearch-ttmserver-test.pem]", "File[/etc/kubernetes/pki/dse__opensearch-ttmserver.chain.pem]", "File[/etc/kubernetes/pki/dse__opensearch-ttmserver.chained.pem]", "File[/etc/kubernetes/pki/dse__opensearch-ttmserver.csr]", "File[/etc/kubernetes/pki/dse__opensearch-ttmserver.pem]", "K8s::Kubeconfig[/etc/kubernetes/opensearch-apifeatureusage-deploy-dse-k8s-codfw.config]", "K8s::Kubeconfig[/etc/kubernetes/opensearch-apifeatureusage-deploy-dse-k8s-eqiad.config]", "K8s::Kubeconfig[/etc/kubernetes/opensearch-apifeatureusage-dse-k8s-codfw.config]", "K8s::Kubeconfig[/etc/kubernetes/opensearch-apifeatureusage-dse-k8s-eqiad.config]", "K8s::Kubeconfig[/etc/kubernetes/opensearch-apifeatureusage-test-deploy-dse-k8s-codfw.config]", "K8s::Kubeconfig[/etc/kubernetes/opensearch-apifeatureusage-test-deploy-dse-k8s-eqiad.config]", "K8s::Kubeconfig[/etc/kubernetes/opensearch-apifeatureusage-test-dse-k8s-codfw.config]", "K8s::Kubeconfig[/etc/kubernetes/opensearch-apifeatureusage-test-dse-k8s-eqiad.config]", "K8s::Kubeconfig[/etc/kubernetes/opensearch-toolhub-deploy-dse-k8s-codfw.config]", "K8s::Kubeconfig[/etc/kubernetes/opensearch-toolhub-deploy-dse-k8s-eqiad.config]", "K8s::Kubeconfig[/etc/kubernetes/opensearch-toolhub-dse-k8s-codfw.config]", "K8s::Kubeconfig[/etc/kubernetes/opensearch-toolhub-dse-k8s-eqiad.config]", "K8s::Kubeconfig[/etc/kubernetes/opensearch-toolhub-test-deploy-dse-k8s-codfw.config]", "K8s::Kubeconfig[/etc/kubernetes/opensearch-toolhub-test-deploy-dse-k8s-eqiad.config]", "K8s::Kubeconfig[/etc/kubernetes/opensearch-toolhub-test-dse-k8s-codfw.config]", "K8s::Kubeconfig[/etc/kubernetes/opensearch-toolhub-test-dse-k8s-eqiad.config]", "K8s::Kubeconfig[/etc/kubernetes/opensearch-ttmserver-deploy-dse-k8s-codfw.config]", "K8s::Kubeconfig[/etc/kubernetes/opensearch-ttmserver-deploy-dse-k8s-eqiad.config]", "K8s::Kubeconfig[/etc/kubernetes/opensearch-ttmserver-dse-k8s-codfw.config]", "K8s::Kubeconfig[/etc/kubernetes/opensearch-ttmserver-dse-k8s-eqiad.config]", "K8s::Kubeconfig[/etc/kubernetes/opensearch-ttmserver-test-deploy-dse-k8s-codfw.config]", "K8s::Kubeconfig[/etc/kubernetes/opensearch-ttmserver-test-deploy-dse-k8s-eqiad.config]", "K8s::Kubeconfig[/etc/kubernetes/opensearch-ttmserver-test-dse-k8s-codfw.config]", "K8s::Kubeconfig[/etc/kubernetes/opensearch-ttmserver-test-dse-k8s-eqiad.config]"], "resource_diffs": [{"resource": "K8s::Kubeconfig[/etc/kubernetes/opensearch-apifeatureusage-deploy-dse-k8s-eqiad.config]", "parameters": "--- K8s::Kubeconfig[/etc/kubernetes/opensearch-apifeatureusage-deploy-dse-k8s-eqiad.config].orig\n+++ K8s::Kubeconfig[/etc/kubernetes/opensearch-apifeatureusage-deploy-dse-k8s-eqiad.config]\n\n+    ensure      => present\n+    owner       => mwdeploy\n+    auth_cert   => {'cert': '/etc/kubernetes/pki/dse__opensearch-apifeatureusage-deploy.pem', 'key': '/etc/kubernetes/pki/dse__opensearch-apifeatureusage-deploy-key.pem', 'chain': '/etc/kubernetes/pki/dse__opensearch-apifeatureusage-deploy.chain.pem', 'chained': '/etc/kubernetes/pki/dse__opensearch-apifeatureusage-deploy.chained.pem'}\n+    group       => deployment\n+    mode        => 0640\n+    master_host => dse-k8s-ctrl.svc.eqiad.wmnet\n+    username    => opensearch-apifeatureusage-deploy\n+    namespace   => opensearch-apifeatureusage\n+    require     => ['Class[K8s::Base_dirs]']\n"}, {"resource": "File[/etc/kubernetes/pki/dse__opensearch-ttmserver-deploy.chained.pem]", "parameters": "--- File[/etc/kubernetes/pki/dse__opensearch-ttmserver-deploy.chained.pem].orig\n+++ File[/etc/kubernetes/pki/dse__opensearch-ttmserver-deploy.chained.pem]\n\n+    require => Exec[create chained cert /etc/kubernetes/pki/dse__opensearch-ttmserver-deploy.chain.pem]\n+    owner   => mwdeploy\n+    ensure  => file\n+    group   => deployment\n"}, {"resource": "File[/etc/profile.d/kube-conf.sh]", "content": "--- /etc/profile.d/kube-conf.sh.orig\n+++ /etc/profile.d/kube-conf.sh\n@@ -3,7 +3,7 @@\n \n # kube environments\n export KUBE_ENV_ENVIRONMENTS=\"eqiad codfw staging staging-eqiad staging-codfw ml-serve-eqiad ml-serve-codfw ml-staging-codfw dse-k8s-eqiad dse-k8s-codfw aux-k8s-eqiad aux-k8s-codfw\"\n-export KUBE_ENV_SERVICES=\"admin apertium api-gateway benthos-cache-invalidator changeprop changeprop-jobqueue chart-renderer cirrus-streaming-updater citoid commons-impact-analytics cxserver data-gateway developer-portal device-analytics echostore edit-analytics editor-analytics eventgate-analytics eventgate-analytics-external eventgate-logging-external eventgate-main eventstreams eventstreams-internal failoid-ng geo-analytics ipoid kartotherian linked-artifacts linkrecommendation machinetranslation mathoid media-analytics miscweb mobileapps mw-api-ext mw-api-int mw-cron mw-debug mw-experimental mw-jobrunner mw-mcrouter mw-misc mw-page-content-change-enrich mw-parsoid mw-script mw-videoscaler mw-web mw-wikifunctions opentelemetry-collector page-analytics proton push-notifications ratelimit ratelimit-media rdf-streaming-updater recommendation-api rest-gateway sessionstore shellbox shellbox-constraints shellbox-media shellbox-syntaxhighlight shellbox-timeline shellbox-video tegola-vector-tiles termbox thumbor toolhub wikidata-query-gui wikifeeds wikifunctions zotero article-descriptions article-models articletopic-outlink edit-check experimental llm logo-detection ores-legacy readability recommendation-api-ng revertrisk revise-tone-task-generator revision-models revscoring-articlequality revscoring-articletopic revscoring-draftquality revscoring-drafttopic revscoring-editquality-damaging revscoring-editquality-goodfaith revscoring-editquality-reverted analytics analytics-test kafka-mirrormaker opensearch-ipoid opensearch-ipoid-test opensearch-operator opensearch-operator-3 opensearch-semantic-search opensearch-semantic-search-test opensearch-test echoserver airflow-analytics-product airflow-analytics-test airflow-dev airflow-fr-tech airflow-main airflow-ml airflow-platform-eng airflow-research airflow-search airflow-sre airflow-test-k8s airflow-wikidata airflow-wmde blunderbuss datahub datahub-next datasets-config datasets-config-next growthbook growthbook-next llm-inference mediawiki-dumps-legacy mw-content-history-reconcile-enrich mw-content-history-reconcile-enrich-next mw-dump-rev-content-reconcile-enrich mw-dump-rev-content-reconcile-enrich-next mw-page-html-content-change-enrich mw-page-html-content-change-enrich-next mw-page-html-feature-counts-change-enrich mw-page-html-feature-counts-change-enrich-next spark spark-history spark-history-test superset superset-next test-kitchen test-kitchen-next turnilo turnilo-next wdqs-queryhammer codesearch jaeger redioscope sophroid zarcillo\"\n+export KUBE_ENV_SERVICES=\"admin apertium api-gateway benthos-cache-invalidator changeprop changeprop-jobqueue chart-renderer cirrus-streaming-updater citoid commons-impact-analytics cxserver data-gateway developer-portal device-analytics echostore edit-analytics editor-analytics eventgate-analytics eventgate-analytics-external eventgate-logging-external eventgate-main eventstreams eventstreams-internal failoid-ng geo-analytics ipoid kartotherian linked-artifacts linkrecommendation machinetranslation mathoid media-analytics miscweb mobileapps mw-api-ext mw-api-int mw-cron mw-debug mw-experimental mw-jobrunner mw-mcrouter mw-misc mw-page-content-change-enrich mw-parsoid mw-script mw-videoscaler mw-web mw-wikifunctions opentelemetry-collector page-analytics proton push-notifications ratelimit ratelimit-media rdf-streaming-updater recommendation-api rest-gateway sessionstore shellbox shellbox-constraints shellbox-media shellbox-syntaxhighlight shellbox-timeline shellbox-video tegola-vector-tiles termbox thumbor toolhub wikidata-query-gui wikifeeds wikifunctions zotero article-descriptions article-models articletopic-outlink edit-check experimental llm logo-detection ores-legacy readability recommendation-api-ng revertrisk revise-tone-task-generator revision-models revscoring-articlequality revscoring-articletopic revscoring-draftquality revscoring-drafttopic revscoring-editquality-damaging revscoring-editquality-goodfaith revscoring-editquality-reverted analytics analytics-test kafka-mirrormaker opensearch-ipoid opensearch-ipoid-test opensearch-operator opensearch-operator-3 opensearch-semantic-search opensearch-semantic-search-test opensearch-test opensearch-toolhub opensearch-toolhub-test opensearch-apifeatureusage opensearch-apifeatureusage-test opensearch-ttmserver opensearch-ttmserver-test echoserver airflow-analytics-product airflow-analytics-test airflow-dev airflow-fr-tech airflow-main airflow-ml airflow-platform-eng airflow-research airflow-search airflow-sre airflow-test-k8s airflow-wikidata airflow-wmde blunderbuss datahub datahub-next datasets-config datasets-config-next growthbook growthbook-next llm-inference mediawiki-dumps-legacy mw-content-history-reconcile-enrich mw-content-history-reconcile-enrich-next mw-dump-rev-content-reconcile-enrich mw-dump-rev-content-reconcile-enrich-next mw-page-html-content-change-enrich mw-page-html-content-change-enrich-next mw-page-html-feature-counts-change-enrich mw-page-html-feature-counts-change-enrich-next spark spark-history spark-history-test superset superset-next test-kitchen test-kitchen-next turnilo turnilo-next wdqs-queryhammer codesearch jaeger redioscope sophroid zarcillo\"\n \n # Array that maps kubernetes environments to their respective versions\n # This duplicated information from KUBE_ENV_ENVIRONMENTS, but I did not want to break existing scripts"}, {"resource": "File[/etc/kubernetes/pki/dse__opensearch-apifeatureusage-key.pem]", "parameters": "--- File[/etc/kubernetes/pki/dse__opensearch-apifeatureusage-key.pem].orig\n+++ File[/etc/kubernetes/pki/dse__opensearch-apifeatureusage-key.pem]\n\n+    mode      => 0440\n+    ensure    => file\n+    show_diff => False\n+    owner     => mwdeploy\n+    backup    => False\n+    group     => deployment\n"}, {"resource": "File[/etc/kubernetes/opensearch-toolhub-dse-k8s-eqiad.config]", "content": "--- /etc/kubernetes/opensearch-toolhub-dse-k8s-eqiad.config.orig\n+++ /etc/kubernetes/opensearch-toolhub-dse-k8s-eqiad.config\n@@ -0,0 +1,19 @@\n+apiVersion: v1\n+kind: Config\n+preferences: {}\n+current-context: default-system\n+contexts:\n+- name: default-system\n+  context:\n+    cluster: default-cluster\n+    user: opensearch-toolhub\n+    namespace: opensearch-toolhub\n+clusters:\n+- name: default-cluster\n+  cluster:\n+    server: https://dse-k8s-ctrl.svc.eqiad.wmnet:6443\n+users:\n+- name: opensearch-toolhub\n+  user:\n+    client-certificate: /etc/kubernetes/pki/dse__opensearch-toolhub.pem\n+    client-key: /etc/kubernetes/pki/dse__opensearch-toolhub-key.pem", "parameters": "--- File[/etc/kubernetes/opensearch-toolhub-dse-k8s-eqiad.config].orig\n+++ File[/etc/kubernetes/opensearch-toolhub-dse-k8s-eqiad.config]\n\n+    mode   => 0640\n+    owner  => mwdeploy\n+    ensure => present\n+    group  => deployment\n"}, {"resource": "Cfssl::Csr[/etc/cfssl/csr/dse__opensearch-ttmserver-test-deploy.csr]", "parameters": "--- Cfssl::Csr[/etc/cfssl/csr/dse__opensearch-ttmserver-test-deploy.csr].orig\n+++ Cfssl::Csr[/etc/cfssl/csr/dse__opensearch-ttmserver-test-deploy.csr]\n\n+    key         => {'algo': 'ecdsa', 'size': 256}\n+    common_name => opensearch-ttmserver-test-deploy\n+    names       => [{'organisation': 'view'}, {'organisation': 'deploy'}]\n+    ensure      => present\n+    hosts       => []\n"}, {"resource": "Exec[Generate cert dse__opensearch-apifeatureusage-test refresh]", "parameters": "--- Exec[Generate cert dse__opensearch-apifeatureusage-test refresh].orig\n+++ Exec[Generate cert dse__opensearch-apifeatureusage-test refresh]\n\n+    environment => ['GODEBUG=x509ignoreCN=0']\n+    command     => /usr/bin/cfssl gencert -config /etc/cfssl/client-cfssl.conf -tls-remote-ca /etc/ssl/certs/wmf-ca-certificates.crt -mutual-tls-client-cert /etc/cfssl/mutual_tls_client_cert.pem -mutual-tls-client-key /var/lib/puppet/ssl/private_keys/deploy1003.eqiad.wmnet.pem -label dse  /etc/cfssl/csr/dse__opensearch-apifeatureusage-test.csr | /usr/bin/cfssljson -bare /etc/kubernetes/pki/dse__opensearch-apifeatureusage-test\n\n+    refreshonly => True\n+    subscribe   => File[/etc/cfssl/csr/dse__opensearch-apifeatureusage-test.csr]\n"}, {"resource": "Exec[Generate cert dse__opensearch-toolhub-test-deploy refresh on intermediate ca change]", "parameters": "--- Exec[Generate cert dse__opensearch-toolhub-test-deploy refresh on intermediate ca change].orig\n+++ Exec[Generate cert dse__opensearch-toolhub-test-deploy refresh on intermediate ca change]\n\n+    environment => ['GODEBUG=x509ignoreCN=0']\n+    require     => Cfssl::Csr[/etc/cfssl/csr/dse__opensearch-toolhub-test-deploy.csr]\n+    command     => /usr/bin/cfssl gencert -config /etc/cfssl/client-cfssl.conf -tls-remote-ca /etc/ssl/certs/wmf-ca-certificates.crt -mutual-tls-client-cert /etc/cfssl/mutual_tls_client_cert.pem -mutual-tls-client-key /var/lib/puppet/ssl/private_keys/deploy1003.eqiad.wmnet.pem -label dse  /etc/cfssl/csr/dse__opensearch-toolhub-test-deploy.csr | /usr/bin/cfssljson -bare /etc/kubernetes/pki/dse__opensearch-toolhub-test-deploy\n\n+    refreshonly => True\n+    subscribe   => File[/etc/kubernetes/pki/dse__opensearch-toolhub-test-deploy.chain.pem]\n"}, {"resource": "Cfssl::Csr[/etc/cfssl/csr/dse__opensearch-toolhub-test.csr]", "parameters": "--- Cfssl::Csr[/etc/cfssl/csr/dse__opensearch-toolhub-test.csr].orig\n+++ Cfssl::Csr[/etc/cfssl/csr/dse__opensearch-toolhub-test.csr]\n\n+    key         => {'algo': 'ecdsa', 'size': 256}\n+    common_name => opensearch-toolhub-test\n+    names       => [{'organisation': 'view'}]\n+    ensure      => present\n+    hosts       => []\n"}, {"resource": "K8s::Kubeconfig[/etc/kubernetes/opensearch-apifeatureusage-test-dse-k8s-codfw.config]", "parameters": "--- K8s::Kubeconfig[/etc/kubernetes/opensearch-apifeatureusage-test-dse-k8s-codfw.config].orig\n+++ K8s::Kubeconfig[/etc/kubernetes/opensearch-apifeatureusage-test-dse-k8s-codfw.config]\n\n+    ensure      => present\n+    owner       => mwdeploy\n+    auth_cert   => {'cert': '/etc/kubernetes/pki/dse__opensearch-apifeatureusage-test.pem', 'key': '/etc/kubernetes/pki/dse__opensearch-apifeatureusage-test-key.pem', 'chain': '/etc/kubernetes/pki/dse__opensearch-apifeatureusage-test.chain.pem', 'chained': '/etc/kubernetes/pki/dse__opensearch-apifeatureusage-test.chained.pem'}\n+    group       => deployment\n+    mode        => 0640\n+    master_host => dse-k8s-ctrl.svc.codfw.wmnet\n+    username    => opensearch-apifeatureusage-test\n+    namespace   => opensearch-apifeatureusage-test\n+    require     => ['Class[K8s::Base_dirs]']\n"}, {"resource": "Exec[Generate cert dse__opensearch-ttmserver-test-deploy]", "parameters": "--- Exec[Generate cert dse__opensearch-ttmserver-test-deploy].orig\n+++ Exec[Generate cert dse__opensearch-ttmserver-test-deploy]\n\n+    environment => ['GODEBUG=x509ignoreCN=0']\n+    command     => /usr/bin/cfssl gencert -config /etc/cfssl/client-cfssl.conf -tls-remote-ca /etc/ssl/certs/wmf-ca-certificates.crt -mutual-tls-client-cert /etc/cfssl/mutual_tls_client_cert.pem -mutual-tls-client-key /var/lib/puppet/ssl/private_keys/deploy1003.eqiad.wmnet.pem -label dse  /etc/cfssl/csr/dse__opensearch-ttmserver-test-deploy.csr | /usr/bin/cfssljson -bare /etc/kubernetes/pki/dse__opensearch-ttmserver-test-deploy\n\n+    unless      => /usr/bin/test \"$(/usr/bin/openssl x509 -in /etc/kubernetes/pki/dse__opensearch-ttmserver-test-deploy.pem -noout -pubkey 2>&1)\" == \"$(/usr/bin/openssl pkey -pubout -in /etc/kubernetes/pki/dse__opensearch-ttmserver-test-deploy-key.pem 2>&1)\"\n\n+    require     => Cfssl::Csr[/etc/cfssl/csr/dse__opensearch-ttmserver-test-deploy.csr]\n"}, {"resource": "File[/etc/kubernetes/opensearch-ttmserver-test-deploy-dse-k8s-codfw.config]", "content": "--- /etc/kubernetes/opensearch-ttmserver-test-deploy-dse-k8s-codfw.config.orig\n+++ /etc/kubernetes/opensearch-ttmserver-test-deploy-dse-k8s-codfw.config\n@@ -0,0 +1,19 @@\n+apiVersion: v1\n+kind: Config\n+preferences: {}\n+current-context: default-system\n+contexts:\n+- name: default-system\n+  context:\n+    cluster: default-cluster\n+    user: opensearch-ttmserver-test-deploy\n+    namespace: opensearch-ttmserver-test\n+clusters:\n+- name: default-cluster\n+  cluster:\n+    server: https://dse-k8s-ctrl.svc.codfw.wmnet:6443\n+users:\n+- name: opensearch-ttmserver-test-deploy\n+  user:\n+    client-certificate: /etc/kubernetes/pki/dse__opensearch-ttmserver-test-deploy.pem\n+    client-key: /etc/kubernetes/pki/dse__opensearch-ttmserver-test-deploy-key.pem", "parameters": "--- File[/etc/kubernetes/opensearch-ttmserver-test-deploy-dse-k8s-codfw.config].orig\n+++ File[/etc/kubernetes/opensearch-ttmserver-test-deploy-dse-k8s-codfw.config]\n\n+    mode   => 0640\n+    owner  => mwdeploy\n+    ensure => present\n+    group  => deployment\n"}, {"resource": "K8s::Kubeconfig[/etc/kubernetes/opensearch-ttmserver-deploy-dse-k8s-codfw.config]", "parameters": "--- K8s::Kubeconfig[/etc/kubernetes/opensearch-ttmserver-deploy-dse-k8s-codfw.config].orig\n+++ K8s::Kubeconfig[/etc/kubernetes/opensearch-ttmserver-deploy-dse-k8s-codfw.config]\n\n+    ensure      => present\n+    owner       => mwdeploy\n+    auth_cert   => {'cert': '/etc/kubernetes/pki/dse__opensearch-ttmserver-deploy.pem', 'key': '/etc/kubernetes/pki/dse__opensearch-ttmserver-deploy-key.pem', 'chain': '/etc/kubernetes/pki/dse__opensearch-ttmserver-deploy.chain.pem', 'chained': '/etc/kubernetes/pki/dse__opensearch-ttmserver-deploy.chained.pem'}\n+    group       => deployment\n+    mode        => 0640\n+    master_host => dse-k8s-ctrl.svc.codfw.wmnet\n+    username    => opensearch-ttmserver-deploy\n+    namespace   => opensearch-ttmserver\n+    require     => ['Class[K8s::Base_dirs]']\n"}, {"resource": "File[/etc/kubernetes/pki/dse__opensearch-apifeatureusage-test.chained.pem]", "parameters": "--- File[/etc/kubernetes/pki/dse__opensearch-apifeatureusage-test.chained.pem].orig\n+++ File[/etc/kubernetes/pki/dse__opensearch-apifeatureusage-test.chained.pem]\n\n+    require => Exec[create chained cert /etc/kubernetes/pki/dse__opensearch-apifeatureusage-test.chain.pem]\n+    owner   => mwdeploy\n+    ensure  => file\n+    group   => deployment\n"}, {"resource": "File[/etc/cfssl/csr/dse__opensearch-apifeatureusage-deploy.csr]", "content": "--- /etc/cfssl/csr/dse__opensearch-apifeatureusage-deploy.csr.orig\n+++ /etc/cfssl/csr/dse__opensearch-apifeatureusage-deploy.csr\n@@ -0,0 +1,26 @@\n+{\n+  \"CN\": \"opensearch-apifeatureusage-deploy\",\n+  \"hosts\": [\n+    \"opensearch-apifeatureusage-deploy\"\n+  ],\n+  \"key\": {\n+    \"algo\": \"ecdsa\",\n+    \"size\": 256\n+  },\n+  \"names\": [\n+    {\n+      \"C\": null,\n+      \"L\": null,\n+      \"O\": \"view\",\n+      \"OU\": null,\n+      \"S\": null\n+    },\n+    {\n+      \"C\": null,\n+      \"L\": null,\n+      \"O\": \"deploy\",\n+      \"OU\": null,\n+      \"S\": null\n+    }\n+  ]\n+}", "parameters": "--- File[/etc/cfssl/csr/dse__opensearch-apifeatureusage-deploy.csr].orig\n+++ File[/etc/cfssl/csr/dse__opensearch-apifeatureusage-deploy.csr]\n\n+    mode   => 0400\n+    owner  => root\n+    ensure => file\n+    group  => root\n"}, {"resource": "Cfssl::Csr[/etc/cfssl/csr/dse__opensearch-apifeatureusage-test.csr]", "parameters": "--- Cfssl::Csr[/etc/cfssl/csr/dse__opensearch-apifeatureusage-test.csr].orig\n+++ Cfssl::Csr[/etc/cfssl/csr/dse__opensearch-apifeatureusage-test.csr]\n\n+    key         => {'algo': 'ecdsa', 'size': 256}\n+    common_name => opensearch-apifeatureusage-test\n+    names       => [{'organisation': 'view'}]\n+    ensure      => present\n+    hosts       => []\n"}, {"resource": "Exec[Generate cert dse__opensearch-apifeatureusage refresh on intermediate ca change]", "parameters": "--- Exec[Generate cert dse__opensearch-apifeatureusage refresh on intermediate ca change].orig\n+++ Exec[Generate cert dse__opensearch-apifeatureusage refresh on intermediate ca change]\n\n+    environment => ['GODEBUG=x509ignoreCN=0']\n+    require     => Cfssl::Csr[/etc/cfssl/csr/dse__opensearch-apifeatureusage.csr]\n+    command     => /usr/bin/cfssl gencert -config /etc/cfssl/client-cfssl.conf -tls-remote-ca /etc/ssl/certs/wmf-ca-certificates.crt -mutual-tls-client-cert /etc/cfssl/mutual_tls_client_cert.pem -mutual-tls-client-key /var/lib/puppet/ssl/private_keys/deploy1003.eqiad.wmnet.pem -label dse  /etc/cfssl/csr/dse__opensearch-apifeatureusage.csr | /usr/bin/cfssljson -bare /etc/kubernetes/pki/dse__opensearch-apifeatureusage\n\n+    refreshonly => True\n+    subscribe   => File[/etc/kubernetes/pki/dse__opensearch-apifeatureusage.chain.pem]\n"}, {"resource": "File[/etc/kubernetes/opensearch-toolhub-deploy-dse-k8s-eqiad.config]", "content": "--- /etc/kubernetes/opensearch-toolhub-deploy-dse-k8s-eqiad.config.orig\n+++ /etc/kubernetes/opensearch-toolhub-deploy-dse-k8s-eqiad.config\n@@ -0,0 +1,19 @@\n+apiVersion: v1\n+kind: Config\n+preferences: {}\n+current-context: default-system\n+contexts:\n+- name: default-system\n+  context:\n+    cluster: default-cluster\n+    user: opensearch-toolhub-deploy\n+    namespace: opensearch-toolhub\n+clusters:\n+- name: default-cluster\n+  cluster:\n+    server: https://dse-k8s-ctrl.svc.eqiad.wmnet:6443\n+users:\n+- name: opensearch-toolhub-deploy\n+  user:\n+    client-certificate: /etc/kubernetes/pki/dse__opensearch-toolhub-deploy.pem\n+    client-key: /etc/kubernetes/pki/dse__opensearch-toolhub-deploy-key.pem", "parameters": "--- File[/etc/kubernetes/opensearch-toolhub-deploy-dse-k8s-eqiad.config].orig\n+++ File[/etc/kubernetes/opensearch-toolhub-deploy-dse-k8s-eqiad.config]\n\n+    mode   => 0640\n+    owner  => mwdeploy\n+    ensure => present\n+    group  => deployment\n"}, {"resource": "File[/etc/kubernetes/opensearch-ttmserver-dse-k8s-eqiad.config]", "content": "--- /etc/kubernetes/opensearch-ttmserver-dse-k8s-eqiad.config.orig\n+++ /etc/kubernetes/opensearch-ttmserver-dse-k8s-eqiad.config\n@@ -0,0 +1,19 @@\n+apiVersion: v1\n+kind: Config\n+preferences: {}\n+current-context: default-system\n+contexts:\n+- name: default-system\n+  context:\n+    cluster: default-cluster\n+    user: opensearch-ttmserver\n+    namespace: opensearch-ttmserver\n+clusters:\n+- name: default-cluster\n+  cluster:\n+    server: https://dse-k8s-ctrl.svc.eqiad.wmnet:6443\n+users:\n+- name: opensearch-ttmserver\n+  user:\n+    client-certificate: /etc/kubernetes/pki/dse__opensearch-ttmserver.pem\n+    client-key: /etc/kubernetes/pki/dse__opensearch-ttmserver-key.pem", "parameters": "--- File[/etc/kubernetes/opensearch-ttmserver-dse-k8s-eqiad.config].orig\n+++ File[/etc/kubernetes/opensearch-ttmserver-dse-k8s-eqiad.config]\n\n+    mode   => 0640\n+    owner  => mwdeploy\n+    ensure => present\n+    group  => deployment\n"}, {"resource": "Cfssl::Cert[dse__opensearch-apifeatureusage]", "parameters": "--- Cfssl::Cert[dse__opensearch-apifeatureusage].orig\n+++ Cfssl::Cert[dse__opensearch-apifeatureusage]\n\n+    key             => {'algo': 'ecdsa', 'size': 256}\n+    ensure          => present\n+    owner           => mwdeploy\n+    renew_seconds   => 952200\n+    group           => deployment\n+    common_name     => opensearch-apifeatureusage\n+    mode            => 0740\n+    notify_services => []\n+    label           => dse\n+    environment     => ['GODEBUG=x509ignoreCN=0']\n+    auto_renew      => True\n+    outdir          => /etc/kubernetes/pki\n+    hosts           => []\n+    before_services => []\n+    names           => [{'organisation': 'view'}]\n+    provide_chain   => True\n"}, {"resource": "File[/etc/kubernetes/opensearch-apifeatureusage-test-deploy-dse-k8s-eqiad.config]", "content": "--- /etc/kubernetes/opensearch-apifeatureusage-test-deploy-dse-k8s-eqiad.config.orig\n+++ /etc/kubernetes/opensearch-apifeatureusage-test-deploy-dse-k8s-eqiad.config\n@@ -0,0 +1,19 @@\n+apiVersion: v1\n+kind: Config\n+preferences: {}\n+current-context: default-system\n+contexts:\n+- name: default-system\n+  context:\n+    cluster: default-cluster\n+    user: opensearch-apifeatureusage-test-deploy\n+    namespace: opensearch-apifeatureusage-test\n+clusters:\n+- name: default-cluster\n+  cluster:\n+    server: https://dse-k8s-ctrl.svc.eqiad.wmnet:6443\n+users:\n+- name: opensearch-apifeatureusage-test-deploy\n+  user:\n+    client-certificate: /etc/kubernetes/pki/dse__opensearch-apifeatureusage-test-deploy.pem\n+    client-key: /etc/kubernetes/pki/dse__opensearch-apifeatureusage-test-deploy-key.pem", "parameters": "--- File[/etc/kubernetes/opensearch-apifeatureusage-test-deploy-dse-k8s-eqiad.config].orig\n+++ File[/etc/kubernetes/opensearch-apifeatureusage-test-deploy-dse-k8s-eqiad.config]\n\n+    mode   => 0640\n+    owner  => mwdeploy\n+    ensure => present\n+    group  => deployment\n"}, {"resource": "File[/etc/kubernetes/pki/dse__opensearch-apifeatureusage.chained.pem]", "parameters": "--- File[/etc/kubernetes/pki/dse__opensearch-apifeatureusage.chained.pem].orig\n+++ File[/etc/kubernetes/pki/dse__opensearch-apifeatureusage.chained.pem]\n\n+    require => Exec[create chained cert /etc/kubernetes/pki/dse__opensearch-apifeatureusage.chain.pem]\n+    owner   => mwdeploy\n+    ensure  => file\n+    group   => deployment\n"}, {"resource": "File[/etc/kubernetes/pki/dse__opensearch-ttmserver-deploy.pem]", "parameters": "--- File[/etc/kubernetes/pki/dse__opensearch-ttmserver-deploy.pem].orig\n+++ File[/etc/kubernetes/pki/dse__opensearch-ttmserver-deploy.pem]\n\n+    mode   => 0440\n+    owner  => mwdeploy\n+    ensure => file\n+    group  => deployment\n"}, {"resource": "File[/etc/helmfile-defaults/private/dse-k8s_services/opensearch-ttmserver]", "parameters": "--- File[/etc/helmfile-defaults/private/dse-k8s_services/opensearch-ttmserver].orig\n+++ File[/etc/helmfile-defaults/private/dse-k8s_services/opensearch-ttmserver]\n\n+    group   => deployment\n+    mode    => 0751\n+    ensure  => directory\n+    recurse => True\n+    owner   => mwdeploy\n+    force   => True\n"}, {"resource": "Exec[create chained cert /etc/kubernetes/pki/dse__opensearch-ttmserver-test.chain.pem]", "parameters": "--- Exec[create chained cert /etc/kubernetes/pki/dse__opensearch-ttmserver-test.chain.pem].orig\n+++ Exec[create chained cert /etc/kubernetes/pki/dse__opensearch-ttmserver-test.chain.pem]\n\n+    unless    => /usr/bin/test \"$(/bin/cat /etc/kubernetes/pki/dse__opensearch-ttmserver-test.pem /etc/kubernetes/pki/dse__opensearch-ttmserver-test.chain.pem | sha512sum)\" == \"$(/bin/cat /etc/kubernetes/pki/dse__opensearch-ttmserver-test.chained.pem | sha512sum)\"\n\n+    command   => /bin/cat /etc/kubernetes/pki/dse__opensearch-ttmserver-test.pem /etc/kubernetes/pki/dse__opensearch-ttmserver-test.chain.pem > /etc/kubernetes/pki/dse__opensearch-ttmserver-test.chained.pem\n+    require   => Exec[Generate cert dse__opensearch-ttmserver-test refresh on intermediate ca change]\n+    subscribe => ['Exec[renew certificate - dse__opensearch-ttmserver-test]', 'File[/etc/kubernetes/pki/dse__opensearch-ttmserver-test.chain.pem]', 'File[/etc/kubernetes/pki/dse__opensearch-ttmserver-test.pem]']\n"}, {"resource": "File[/etc/kubernetes/opensearch-apifeatureusage-deploy-dse-k8s-codfw.config]", "content": "--- /etc/kubernetes/opensearch-apifeatureusage-deploy-dse-k8s-codfw.config.orig\n+++ /etc/kubernetes/opensearch-apifeatureusage-deploy-dse-k8s-codfw.config\n@@ -0,0 +1,19 @@\n+apiVersion: v1\n+kind: Config\n+preferences: {}\n+current-context: default-system\n+contexts:\n+- name: default-system\n+  context:\n+    cluster: default-cluster\n+    user: opensearch-apifeatureusage-deploy\n+    namespace: opensearch-apifeatureusage\n+clusters:\n+- name: default-cluster\n+  cluster:\n+    server: https://dse-k8s-ctrl.svc.codfw.wmnet:6443\n+users:\n+- name: opensearch-apifeatureusage-deploy\n+  user:\n+    client-certificate: /etc/kubernetes/pki/dse__opensearch-apifeatureusage-deploy.pem\n+    client-key: /etc/kubernetes/pki/dse__opensearch-apifeatureusage-deploy-key.pem", "parameters": "--- File[/etc/kubernetes/opensearch-apifeatureusage-deploy-dse-k8s-codfw.config].orig\n+++ File[/etc/kubernetes/opensearch-apifeatureusage-deploy-dse-k8s-codfw.config]\n\n+    mode   => 0640\n+    owner  => mwdeploy\n+    ensure => present\n+    group  => deployment\n"}, {"resource": "File[/etc/kubernetes/pki/dse__opensearch-toolhub.chained.pem]", "parameters": "--- File[/etc/kubernetes/pki/dse__opensearch-toolhub.chained.pem].orig\n+++ File[/etc/kubernetes/pki/dse__opensearch-toolhub.chained.pem]\n\n+    require => Exec[create chained cert /etc/kubernetes/pki/dse__opensearch-toolhub.chain.pem]\n+    owner   => mwdeploy\n+    ensure  => file\n+    group   => deployment\n"}, {"resource": "Exec[Generate cert dse__opensearch-ttmserver refresh]", "parameters": "--- Exec[Generate cert dse__opensearch-ttmserver refresh].orig\n+++ Exec[Generate cert dse__opensearch-ttmserver refresh]\n\n+    environment => ['GODEBUG=x509ignoreCN=0']\n+    command     => /usr/bin/cfssl gencert -config /etc/cfssl/client-cfssl.conf -tls-remote-ca /etc/ssl/certs/wmf-ca-certificates.crt -mutual-tls-client-cert /etc/cfssl/mutual_tls_client_cert.pem -mutual-tls-client-key /var/lib/puppet/ssl/private_keys/deploy1003.eqiad.wmnet.pem -label dse  /etc/cfssl/csr/dse__opensearch-ttmserver.csr | /usr/bin/cfssljson -bare /etc/kubernetes/pki/dse__opensearch-ttmserver\n\n+    refreshonly => True\n+    subscribe   => File[/etc/cfssl/csr/dse__opensearch-ttmserver.csr]\n"}, {"resource": "File[/etc/kubernetes/pki/dse__opensearch-apifeatureusage-deploy.csr]", "parameters": "--- File[/etc/kubernetes/pki/dse__opensearch-apifeatureusage-deploy.csr].orig\n+++ File[/etc/kubernetes/pki/dse__opensearch-apifeatureusage-deploy.csr]\n\n+    mode   => 0440\n+    owner  => mwdeploy\n+    ensure => file\n+    group  => deployment\n"}, {"resource": "Cfssl::Csr[/etc/cfssl/csr/dse__opensearch-toolhub-test-deploy.csr]", "parameters": "--- Cfssl::Csr[/etc/cfssl/csr/dse__opensearch-toolhub-test-deploy.csr].orig\n+++ Cfssl::Csr[/etc/cfssl/csr/dse__opensearch-toolhub-test-deploy.csr]\n\n+    key         => {'algo': 'ecdsa', 'size': 256}\n+    common_name => opensearch-toolhub-test-deploy\n+    names       => [{'organisation': 'view'}, {'organisation': 'deploy'}]\n+    ensure      => present\n+    hosts       => []\n"}, {"resource": "File[/etc/kubernetes/pki/dse__opensearch-toolhub-test.chain.pem]", "parameters": "--- File[/etc/kubernetes/pki/dse__opensearch-toolhub-test.chain.pem].orig\n+++ File[/etc/kubernetes/pki/dse__opensearch-toolhub-test.chain.pem]\n\n+    mode   => 0440\n+    ensure => file\n+    owner  => mwdeploy\n+    source => puppet:///modules/profile/pki/intermediates/dse-cert.pem\n+    group  => deployment\n"}, {"resource": "File[/etc/kubernetes/pki/dse__opensearch-apifeatureusage-test-deploy-key.pem]", "parameters": "--- File[/etc/kubernetes/pki/dse__opensearch-apifeatureusage-test-deploy-key.pem].orig\n+++ File[/etc/kubernetes/pki/dse__opensearch-apifeatureusage-test-deploy-key.pem]\n\n+    mode      => 0440\n+    ensure    => file\n+    show_diff => False\n+    owner     => mwdeploy\n+    backup    => False\n+    group     => deployment\n"}, {"resource": "File[/etc/cfssl/csr/dse__opensearch-apifeatureusage-test-deploy.csr]", "content": "--- /etc/cfssl/csr/dse__opensearch-apifeatureusage-test-deploy.csr.orig\n+++ /etc/cfssl/csr/dse__opensearch-apifeatureusage-test-deploy.csr\n@@ -0,0 +1,26 @@\n+{\n+  \"CN\": \"opensearch-apifeatureusage-test-deploy\",\n+  \"hosts\": [\n+    \"opensearch-apifeatureusage-test-deploy\"\n+  ],\n+  \"key\": {\n+    \"algo\": \"ecdsa\",\n+    \"size\": 256\n+  },\n+  \"names\": [\n+    {\n+      \"C\": null,\n+      \"L\": null,\n+      \"O\": \"view\",\n+      \"OU\": null,\n+      \"S\": null\n+    },\n+    {\n+      \"C\": null,\n+      \"L\": null,\n+      \"O\": \"deploy\",\n+      \"OU\": null,\n+      \"S\": null\n+    }\n+  ]\n+}", "parameters": "--- File[/etc/cfssl/csr/dse__opensearch-apifeatureusage-test-deploy.csr].orig\n+++ File[/etc/cfssl/csr/dse__opensearch-apifeatureusage-test-deploy.csr]\n\n+    mode   => 0400\n+    owner  => root\n+    ensure => file\n+    group  => root\n"}, {"resource": "Cfssl::Cert[dse__opensearch-ttmserver-test-deploy]", "parameters": "--- Cfssl::Cert[dse__opensearch-ttmserver-test-deploy].orig\n+++ Cfssl::Cert[dse__opensearch-ttmserver-test-deploy]\n\n+    key             => {'algo': 'ecdsa', 'size': 256}\n+    ensure          => present\n+    owner           => mwdeploy\n+    renew_seconds   => 952200\n+    group           => deployment\n+    common_name     => opensearch-ttmserver-test-deploy\n+    mode            => 0740\n+    notify_services => []\n+    label           => dse\n+    environment     => ['GODEBUG=x509ignoreCN=0']\n+    auto_renew      => True\n+    outdir          => /etc/kubernetes/pki\n+    hosts           => []\n+    before_services => []\n+    names           => [{'organisation': 'view'}, {'organisation': 'deploy'}]\n+    provide_chain   => True\n"}, {"resource": "Exec[Generate cert dse__opensearch-ttmserver-test-deploy refresh]", "parameters": "--- Exec[Generate cert dse__opensearch-ttmserver-test-deploy refresh].orig\n+++ Exec[Generate cert dse__opensearch-ttmserver-test-deploy refresh]\n\n+    environment => ['GODEBUG=x509ignoreCN=0']\n+    command     => /usr/bin/cfssl gencert -config /etc/cfssl/client-cfssl.conf -tls-remote-ca /etc/ssl/certs/wmf-ca-certificates.crt -mutual-tls-client-cert /etc/cfssl/mutual_tls_client_cert.pem -mutual-tls-client-key /var/lib/puppet/ssl/private_keys/deploy1003.eqiad.wmnet.pem -label dse  /etc/cfssl/csr/dse__opensearch-ttmserver-test-deploy.csr | /usr/bin/cfssljson -bare /etc/kubernetes/pki/dse__opensearch-ttmserver-test-deploy\n\n+    refreshonly => True\n+    subscribe   => File[/etc/cfssl/csr/dse__opensearch-ttmserver-test-deploy.csr]\n"}, {"resource": "Exec[renew certificate - dse__opensearch-apifeatureusage-deploy]", "parameters": "--- Exec[renew certificate - dse__opensearch-apifeatureusage-deploy].orig\n+++ Exec[renew certificate - dse__opensearch-apifeatureusage-deploy]\n\n+    environment => ['GODEBUG=x509ignoreCN=0']\n+    command     => /usr/bin/cfssl sign -config /etc/cfssl/client-cfssl.conf -tls-remote-ca /etc/ssl/certs/wmf-ca-certificates.crt -mutual-tls-client-cert /etc/cfssl/mutual_tls_client_cert.pem -mutual-tls-client-key /var/lib/puppet/ssl/private_keys/deploy1003.eqiad.wmnet.pem -label dse  /etc/kubernetes/pki/dse__opensearch-apifeatureusage-deploy.csr | /usr/bin/cfssljson -bare /etc/kubernetes/pki/dse__opensearch-apifeatureusage-deploy\n\n+    unless      => /usr/bin/openssl x509 -in /etc/kubernetes/pki/dse__opensearch-apifeatureusage-deploy.pem -checkend 952200\n+    require     => Exec[Generate cert dse__opensearch-apifeatureusage-deploy]\n"}, {"resource": "File[/etc/kubernetes/pki/dse__opensearch-apifeatureusage-test-key.pem]", "parameters": "--- File[/etc/kubernetes/pki/dse__opensearch-apifeatureusage-test-key.pem].orig\n+++ File[/etc/kubernetes/pki/dse__opensearch-apifeatureusage-test-key.pem]\n\n+    mode      => 0440\n+    ensure    => file\n+    show_diff => False\n+    owner     => mwdeploy\n+    backup    => False\n+    group     => deployment\n"}, {"resource": "K8s::Kubeconfig[/etc/kubernetes/opensearch-ttmserver-test-dse-k8s-codfw.config]", "parameters": "--- K8s::Kubeconfig[/etc/kubernetes/opensearch-ttmserver-test-dse-k8s-codfw.config].orig\n+++ K8s::Kubeconfig[/etc/kubernetes/opensearch-ttmserver-test-dse-k8s-codfw.config]\n\n+    ensure      => present\n+    owner       => mwdeploy\n+    auth_cert   => {'cert': '/etc/kubernetes/pki/dse__opensearch-ttmserver-test.pem', 'key': '/etc/kubernetes/pki/dse__opensearch-ttmserver-test-key.pem', 'chain': '/etc/kubernetes/pki/dse__opensearch-ttmserver-test.chain.pem', 'chained': '/etc/kubernetes/pki/dse__opensearch-ttmserver-test.chained.pem'}\n+    group       => deployment\n+    mode        => 0640\n+    master_host => dse-k8s-ctrl.svc.codfw.wmnet\n+    username    => opensearch-ttmserver-test\n+    namespace   => opensearch-ttmserver-test\n+    require     => ['Class[K8s::Base_dirs]']\n"}, {"resource": "File[/etc/helmfile-defaults/services-dse-k8s-eqiad.yaml]", "content": "--- /etc/helmfile-defaults/services-dse-k8s-eqiad.yaml.orig\n+++ /etc/helmfile-defaults/services-dse-k8s-eqiad.yaml\n@@ -48,6 +48,30 @@\n     usernames:\n     - name: opensearch-test\n     - name: opensearch-test-deploy\n+  opensearch-toolhub:\n+    usernames:\n+    - name: opensearch-toolhub\n+    - name: opensearch-toolhub-deploy\n+  opensearch-toolhub-test:\n+    usernames:\n+    - name: opensearch-toolhub-test\n+    - name: opensearch-toolhub-test-deploy\n+  opensearch-apifeatureusage:\n+    usernames:\n+    - name: opensearch-apifeatureusage\n+    - name: opensearch-apifeatureusage-deploy\n+  opensearch-apifeatureusage-test:\n+    usernames:\n+    - name: opensearch-apifeatureusage-test\n+    - name: opensearch-apifeatureusage-test-deploy\n+  opensearch-ttmserver:\n+    usernames:\n+    - name: opensearch-ttmserver\n+    - name: opensearch-ttmserver-deploy\n+  opensearch-ttmserver-test:\n+    usernames:\n+    - name: opensearch-ttmserver-test\n+    - name: opensearch-ttmserver-test-deploy\n   airflow-analytics-product:\n     private_files:\n       group: airflow-deployers"}, {"resource": "File[/etc/kubernetes/pki/dse__opensearch-ttmserver-deploy.chain.pem]", "parameters": "--- File[/etc/kubernetes/pki/dse__opensearch-ttmserver-deploy.chain.pem].orig\n+++ File[/etc/kubernetes/pki/dse__opensearch-ttmserver-deploy.chain.pem]\n\n+    mode   => 0440\n+    ensure => file\n+    owner  => mwdeploy\n+    source => puppet:///modules/profile/pki/intermediates/dse-cert.pem\n+    group  => deployment\n"}, {"resource": "File[/etc/kubernetes/opensearch-ttmserver-deploy-dse-k8s-eqiad.config]", "content": "--- /etc/kubernetes/opensearch-ttmserver-deploy-dse-k8s-eqiad.config.orig\n+++ /etc/kubernetes/opensearch-ttmserver-deploy-dse-k8s-eqiad.config\n@@ -0,0 +1,19 @@\n+apiVersion: v1\n+kind: Config\n+preferences: {}\n+current-context: default-system\n+contexts:\n+- name: default-system\n+  context:\n+    cluster: default-cluster\n+    user: opensearch-ttmserver-deploy\n+    namespace: opensearch-ttmserver\n+clusters:\n+- name: default-cluster\n+  cluster:\n+    server: https://dse-k8s-ctrl.svc.eqiad.wmnet:6443\n+users:\n+- name: opensearch-ttmserver-deploy\n+  user:\n+    client-certificate: /etc/kubernetes/pki/dse__opensearch-ttmserver-deploy.pem\n+    client-key: /etc/kubernetes/pki/dse__opensearch-ttmserver-deploy-key.pem", "parameters": "--- File[/etc/kubernetes/opensearch-ttmserver-deploy-dse-k8s-eqiad.config].orig\n+++ File[/etc/kubernetes/opensearch-ttmserver-deploy-dse-k8s-eqiad.config]\n\n+    mode   => 0640\n+    owner  => mwdeploy\n+    ensure => present\n+    group  => deployment\n"}, {"resource": "Cfssl::Cert[dse__opensearch-apifeatureusage-test-deploy]", "parameters": "--- Cfssl::Cert[dse__opensearch-apifeatureusage-test-deploy].orig\n+++ Cfssl::Cert[dse__opensearch-apifeatureusage-test-deploy]\n\n+    key             => {'algo': 'ecdsa', 'size': 256}\n+    ensure          => present\n+    owner           => mwdeploy\n+    renew_seconds   => 952200\n+    group           => deployment\n+    common_name     => opensearch-apifeatureusage-test-deploy\n+    mode            => 0740\n+    notify_services => []\n+    label           => dse\n+    environment     => ['GODEBUG=x509ignoreCN=0']\n+    auto_renew      => True\n+    outdir          => /etc/kubernetes/pki\n+    hosts           => []\n+    before_services => []\n+    names           => [{'organisation': 'view'}, {'organisation': 'deploy'}]\n+    provide_chain   => True\n"}, {"resource": "Cfssl::Cert[dse__opensearch-ttmserver-deploy]", "parameters": "--- Cfssl::Cert[dse__opensearch-ttmserver-deploy].orig\n+++ Cfssl::Cert[dse__opensearch-ttmserver-deploy]\n\n+    key             => {'algo': 'ecdsa', 'size': 256}\n+    ensure          => present\n+    owner           => mwdeploy\n+    renew_seconds   => 952200\n+    group           => deployment\n+    common_name     => opensearch-ttmserver-deploy\n+    mode            => 0740\n+    notify_services => []\n+    label           => dse\n+    environment     => ['GODEBUG=x509ignoreCN=0']\n+    auto_renew      => True\n+    outdir          => /etc/kubernetes/pki\n+    hosts           => []\n+    before_services => []\n+    names           => [{'organisation': 'view'}, {'organisation': 'deploy'}]\n+    provide_chain   => True\n"}, {"resource": "K8s::Kubeconfig[/etc/kubernetes/opensearch-toolhub-dse-k8s-codfw.config]", "parameters": "--- K8s::Kubeconfig[/etc/kubernetes/opensearch-toolhub-dse-k8s-codfw.config].orig\n+++ K8s::Kubeconfig[/etc/kubernetes/opensearch-toolhub-dse-k8s-codfw.config]\n\n+    ensure      => present\n+    owner       => mwdeploy\n+    auth_cert   => {'cert': '/etc/kubernetes/pki/dse__opensearch-toolhub.pem', 'key': '/etc/kubernetes/pki/dse__opensearch-toolhub-key.pem', 'chain': '/etc/kubernetes/pki/dse__opensearch-toolhub.chain.pem', 'chained': '/etc/kubernetes/pki/dse__opensearch-toolhub.chained.pem'}\n+    group       => deployment\n+    mode        => 0640\n+    master_host => dse-k8s-ctrl.svc.codfw.wmnet\n+    username    => opensearch-toolhub\n+    namespace   => opensearch-toolhub\n+    require     => ['Class[K8s::Base_dirs]']\n"}, {"resource": "File[/etc/kubernetes/pki/dse__opensearch-toolhub-key.pem]", "parameters": "--- File[/etc/kubernetes/pki/dse__opensearch-toolhub-key.pem].orig\n+++ File[/etc/kubernetes/pki/dse__opensearch-toolhub-key.pem]\n\n+    mode      => 0440\n+    ensure    => file\n+    show_diff => False\n+    owner     => mwdeploy\n+    backup    => False\n+    group     => deployment\n"}, {"resource": "File[/etc/helmfile-defaults/private/dse-k8s_services/opensearch-toolhub]", "parameters": "--- File[/etc/helmfile-defaults/private/dse-k8s_services/opensearch-toolhub].orig\n+++ File[/etc/helmfile-defaults/private/dse-k8s_services/opensearch-toolhub]\n\n+    group   => deployment\n+    mode    => 0751\n+    ensure  => directory\n+    recurse => True\n+    owner   => mwdeploy\n+    force   => True\n"}, {"resource": "K8s::Kubeconfig[/etc/kubernetes/opensearch-ttmserver-test-deploy-dse-k8s-codfw.config]", "parameters": "--- K8s::Kubeconfig[/etc/kubernetes/opensearch-ttmserver-test-deploy-dse-k8s-codfw.config].orig\n+++ K8s::Kubeconfig[/etc/kubernetes/opensearch-ttmserver-test-deploy-dse-k8s-codfw.config]\n\n+    ensure      => present\n+    owner       => mwdeploy\n+    auth_cert   => {'cert': '/etc/kubernetes/pki/dse__opensearch-ttmserver-test-deploy.pem', 'key': '/etc/kubernetes/pki/dse__opensearch-ttmserver-test-deploy-key.pem', 'chain': '/etc/kubernetes/pki/dse__opensearch-ttmserver-test-deploy.chain.pem', 'chained': '/etc/kubernetes/pki/dse__opensearch-ttmserver-test-deploy.chained.pem'}\n+    group       => deployment\n+    mode        => 0640\n+    master_host => dse-k8s-ctrl.svc.codfw.wmnet\n+    username    => opensearch-ttmserver-test-deploy\n+    namespace   => opensearch-ttmserver-test\n+    require     => ['Class[K8s::Base_dirs]']\n"}, {"resource": "K8s::Kubeconfig[/etc/kubernetes/opensearch-apifeatureusage-dse-k8s-codfw.config]", "parameters": "--- K8s::Kubeconfig[/etc/kubernetes/opensearch-apifeatureusage-dse-k8s-codfw.config].orig\n+++ K8s::Kubeconfig[/etc/kubernetes/opensearch-apifeatureusage-dse-k8s-codfw.config]\n\n+    ensure      => present\n+    owner       => mwdeploy\n+    auth_cert   => {'cert': '/etc/kubernetes/pki/dse__opensearch-apifeatureusage.pem', 'key': '/etc/kubernetes/pki/dse__opensearch-apifeatureusage-key.pem', 'chain': '/etc/kubernetes/pki/dse__opensearch-apifeatureusage.chain.pem', 'chained': '/etc/kubernetes/pki/dse__opensearch-apifeatureusage.chained.pem'}\n+    group       => deployment\n+    mode        => 0640\n+    master_host => dse-k8s-ctrl.svc.codfw.wmnet\n+    username    => opensearch-apifeatureusage\n+    namespace   => opensearch-apifeatureusage\n+    require     => ['Class[K8s::Base_dirs]']\n"}, {"resource": "File[/etc/helmfile-defaults/services-dse-k8s-codfw.yaml]", "content": "--- /etc/helmfile-defaults/services-dse-k8s-codfw.yaml.orig\n+++ /etc/helmfile-defaults/services-dse-k8s-codfw.yaml\n@@ -48,6 +48,30 @@\n     usernames:\n     - name: opensearch-test\n     - name: opensearch-test-deploy\n+  opensearch-toolhub:\n+    usernames:\n+    - name: opensearch-toolhub\n+    - name: opensearch-toolhub-deploy\n+  opensearch-toolhub-test:\n+    usernames:\n+    - name: opensearch-toolhub-test\n+    - name: opensearch-toolhub-test-deploy\n+  opensearch-apifeatureusage:\n+    usernames:\n+    - name: opensearch-apifeatureusage\n+    - name: opensearch-apifeatureusage-deploy\n+  opensearch-apifeatureusage-test:\n+    usernames:\n+    - name: opensearch-apifeatureusage-test\n+    - name: opensearch-apifeatureusage-test-deploy\n+  opensearch-ttmserver:\n+    usernames:\n+    - name: opensearch-ttmserver\n+    - name: opensearch-ttmserver-deploy\n+  opensearch-ttmserver-test:\n+    usernames:\n+    - name: opensearch-ttmserver-test\n+    - name: opensearch-ttmserver-test-deploy\n   echoserver:\n     usernames:\n     - name: echoserver"}, {"resource": "Exec[Generate cert dse__opensearch-ttmserver-test refresh on intermediate ca change]", "parameters": "--- Exec[Generate cert dse__opensearch-ttmserver-test refresh on intermediate ca change].orig\n+++ Exec[Generate cert dse__opensearch-ttmserver-test refresh on intermediate ca change]\n\n+    environment => ['GODEBUG=x509ignoreCN=0']\n+    require     => Cfssl::Csr[/etc/cfssl/csr/dse__opensearch-ttmserver-test.csr]\n+    command     => /usr/bin/cfssl gencert -config /etc/cfssl/client-cfssl.conf -tls-remote-ca /etc/ssl/certs/wmf-ca-certificates.crt -mutual-tls-client-cert /etc/cfssl/mutual_tls_client_cert.pem -mutual-tls-client-key /var/lib/puppet/ssl/private_keys/deploy1003.eqiad.wmnet.pem -label dse  /etc/cfssl/csr/dse__opensearch-ttmserver-test.csr | /usr/bin/cfssljson -bare /etc/kubernetes/pki/dse__opensearch-ttmserver-test\n\n+    refreshonly => True\n+    subscribe   => File[/etc/kubernetes/pki/dse__opensearch-ttmserver-test.chain.pem]\n"}, {"resource": "File[/etc/kubernetes/pki/dse__opensearch-ttmserver-key.pem]", "parameters": "--- File[/etc/kubernetes/pki/dse__opensearch-ttmserver-key.pem].orig\n+++ File[/etc/kubernetes/pki/dse__opensearch-ttmserver-key.pem]\n\n+    mode      => 0440\n+    ensure    => file\n+    show_diff => False\n+    owner     => mwdeploy\n+    backup    => False\n+    group     => deployment\n"}, {"resource": "Exec[Generate cert dse__opensearch-toolhub-deploy]", "parameters": "--- Exec[Generate cert dse__opensearch-toolhub-deploy].orig\n+++ Exec[Generate cert dse__opensearch-toolhub-deploy]\n\n+    environment => ['GODEBUG=x509ignoreCN=0']\n+    command     => /usr/bin/cfssl gencert -config /etc/cfssl/client-cfssl.conf -tls-remote-ca /etc/ssl/certs/wmf-ca-certificates.crt -mutual-tls-client-cert /etc/cfssl/mutual_tls_client_cert.pem -mutual-tls-client-key /var/lib/puppet/ssl/private_keys/deploy1003.eqiad.wmnet.pem -label dse  /etc/cfssl/csr/dse__opensearch-toolhub-deploy.csr | /usr/bin/cfssljson -bare /etc/kubernetes/pki/dse__opensearch-toolhub-deploy\n\n+    unless      => /usr/bin/test \"$(/usr/bin/openssl x509 -in /etc/kubernetes/pki/dse__opensearch-toolhub-deploy.pem -noout -pubkey 2>&1)\" == \"$(/usr/bin/openssl pkey -pubout -in /etc/kubernetes/pki/dse__opensearch-toolhub-deploy-key.pem 2>&1)\"\n\n+    require     => Cfssl::Csr[/etc/cfssl/csr/dse__opensearch-toolhub-deploy.csr]\n"}, {"resource": "File[/etc/kubernetes/opensearch-ttmserver-deploy-dse-k8s-codfw.config]", "content": "--- /etc/kubernetes/opensearch-ttmserver-deploy-dse-k8s-codfw.config.orig\n+++ /etc/kubernetes/opensearch-ttmserver-deploy-dse-k8s-codfw.config\n@@ -0,0 +1,19 @@\n+apiVersion: v1\n+kind: Config\n+preferences: {}\n+current-context: default-system\n+contexts:\n+- name: default-system\n+  context:\n+    cluster: default-cluster\n+    user: opensearch-ttmserver-deploy\n+    namespace: opensearch-ttmserver\n+clusters:\n+- name: default-cluster\n+  cluster:\n+    server: https://dse-k8s-ctrl.svc.codfw.wmnet:6443\n+users:\n+- name: opensearch-ttmserver-deploy\n+  user:\n+    client-certificate: /etc/kubernetes/pki/dse__opensearch-ttmserver-deploy.pem\n+    client-key: /etc/kubernetes/pki/dse__opensearch-ttmserver-deploy-key.pem", "parameters": "--- File[/etc/kubernetes/opensearch-ttmserver-deploy-dse-k8s-codfw.config].orig\n+++ File[/etc/kubernetes/opensearch-ttmserver-deploy-dse-k8s-codfw.config]\n\n+    mode   => 0640\n+    owner  => mwdeploy\n+    ensure => present\n+    group  => deployment\n"}, {"resource": "K8s::Kubeconfig[/etc/kubernetes/opensearch-toolhub-test-dse-k8s-codfw.config]", "parameters": "--- K8s::Kubeconfig[/etc/kubernetes/opensearch-toolhub-test-dse-k8s-codfw.config].orig\n+++ K8s::Kubeconfig[/etc/kubernetes/opensearch-toolhub-test-dse-k8s-codfw.config]\n\n+    ensure      => present\n+    owner       => mwdeploy\n+    auth_cert   => {'cert': '/etc/kubernetes/pki/dse__opensearch-toolhub-test.pem', 'key': '/etc/kubernetes/pki/dse__opensearch-toolhub-test-key.pem', 'chain': '/etc/kubernetes/pki/dse__opensearch-toolhub-test.chain.pem', 'chained': '/etc/kubernetes/pki/dse__opensearch-toolhub-test.chained.pem'}\n+    group       => deployment\n+    mode        => 0640\n+    master_host => dse-k8s-ctrl.svc.codfw.wmnet\n+    username    => opensearch-toolhub-test\n+    namespace   => opensearch-toolhub-test\n+    require     => ['Class[K8s::Base_dirs]']\n"}, {"resource": "K8s::Kubeconfig[/etc/kubernetes/opensearch-apifeatureusage-dse-k8s-eqiad.config]", "parameters": "--- K8s::Kubeconfig[/etc/kubernetes/opensearch-apifeatureusage-dse-k8s-eqiad.config].orig\n+++ K8s::Kubeconfig[/etc/kubernetes/opensearch-apifeatureusage-dse-k8s-eqiad.config]\n\n+    ensure      => present\n+    owner       => mwdeploy\n+    auth_cert   => {'cert': '/etc/kubernetes/pki/dse__opensearch-apifeatureusage.pem', 'key': '/etc/kubernetes/pki/dse__opensearch-apifeatureusage-key.pem', 'chain': '/etc/kubernetes/pki/dse__opensearch-apifeatureusage.chain.pem', 'chained': '/etc/kubernetes/pki/dse__opensearch-apifeatureusage.chained.pem'}\n+    group       => deployment\n+    mode        => 0640\n+    master_host => dse-k8s-ctrl.svc.eqiad.wmnet\n+    username    => opensearch-apifeatureusage\n+    namespace   => opensearch-apifeatureusage\n+    require     => ['Class[K8s::Base_dirs]']\n"}, {"resource": "File[/etc/kubernetes/pki/dse__opensearch-apifeatureusage-deploy.chain.pem]", "parameters": "--- File[/etc/kubernetes/pki/dse__opensearch-apifeatureusage-deploy.chain.pem].orig\n+++ File[/etc/kubernetes/pki/dse__opensearch-apifeatureusage-deploy.chain.pem]\n\n+    mode   => 0440\n+    ensure => file\n+    owner  => mwdeploy\n+    source => puppet:///modules/profile/pki/intermediates/dse-cert.pem\n+    group  => deployment\n"}, {"resource": "Exec[Generate cert dse__opensearch-apifeatureusage-test-deploy]", "parameters": "--- Exec[Generate cert dse__opensearch-apifeatureusage-test-deploy].orig\n+++ Exec[Generate cert dse__opensearch-apifeatureusage-test-deploy]\n\n+    environment => ['GODEBUG=x509ignoreCN=0']\n+    command     => /usr/bin/cfssl gencert -config /etc/cfssl/client-cfssl.conf -tls-remote-ca /etc/ssl/certs/wmf-ca-certificates.crt -mutual-tls-client-cert /etc/cfssl/mutual_tls_client_cert.pem -mutual-tls-client-key /var/lib/puppet/ssl/private_keys/deploy1003.eqiad.wmnet.pem -label dse  /etc/cfssl/csr/dse__opensearch-apifeatureusage-test-deploy.csr | /usr/bin/cfssljson -bare /etc/kubernetes/pki/dse__opensearch-apifeatureusage-test-deploy\n\n+    unless      => /usr/bin/test \"$(/usr/bin/openssl x509 -in /etc/kubernetes/pki/dse__opensearch-apifeatureusage-test-deploy.pem -noout -pubkey 2>&1)\" == \"$(/usr/bin/openssl pkey -pubout -in /etc/kubernetes/pki/dse__opensearch-apifeatureusage-test-deploy-key.pem 2>&1)\"\n\n+    require     => Cfssl::Csr[/etc/cfssl/csr/dse__opensearch-apifeatureusage-test-deploy.csr]\n"}, {"resource": "File[/etc/kubernetes/opensearch-apifeatureusage-test-deploy-dse-k8s-codfw.config]", "content": "--- /etc/kubernetes/opensearch-apifeatureusage-test-deploy-dse-k8s-codfw.config.orig\n+++ /etc/kubernetes/opensearch-apifeatureusage-test-deploy-dse-k8s-codfw.config\n@@ -0,0 +1,19 @@\n+apiVersion: v1\n+kind: Config\n+preferences: {}\n+current-context: default-system\n+contexts:\n+- name: default-system\n+  context:\n+    cluster: default-cluster\n+    user: opensearch-apifeatureusage-test-deploy\n+    namespace: opensearch-apifeatureusage-test\n+clusters:\n+- name: default-cluster\n+  cluster:\n+    server: https://dse-k8s-ctrl.svc.codfw.wmnet:6443\n+users:\n+- name: opensearch-apifeatureusage-test-deploy\n+  user:\n+    client-certificate: /etc/kubernetes/pki/dse__opensearch-apifeatureusage-test-deploy.pem\n+    client-key: /etc/kubernetes/pki/dse__opensearch-apifeatureusage-test-deploy-key.pem", "parameters": "--- File[/etc/kubernetes/opensearch-apifeatureusage-test-deploy-dse-k8s-codfw.config].orig\n+++ File[/etc/kubernetes/opensearch-apifeatureusage-test-deploy-dse-k8s-codfw.config]\n\n+    mode   => 0640\n+    owner  => mwdeploy\n+    ensure => present\n+    group  => deployment\n"}, {"resource": "Exec[renew certificate - dse__opensearch-toolhub-test-deploy]", "parameters": "--- Exec[renew certificate - dse__opensearch-toolhub-test-deploy].orig\n+++ Exec[renew certificate - dse__opensearch-toolhub-test-deploy]\n\n+    environment => ['GODEBUG=x509ignoreCN=0']\n+    command     => /usr/bin/cfssl sign -config /etc/cfssl/client-cfssl.conf -tls-remote-ca /etc/ssl/certs/wmf-ca-certificates.crt -mutual-tls-client-cert /etc/cfssl/mutual_tls_client_cert.pem -mutual-tls-client-key /var/lib/puppet/ssl/private_keys/deploy1003.eqiad.wmnet.pem -label dse  /etc/kubernetes/pki/dse__opensearch-toolhub-test-deploy.csr | /usr/bin/cfssljson -bare /etc/kubernetes/pki/dse__opensearch-toolhub-test-deploy\n\n+    unless      => /usr/bin/openssl x509 -in /etc/kubernetes/pki/dse__opensearch-toolhub-test-deploy.pem -checkend 952200\n+    require     => Exec[Generate cert dse__opensearch-toolhub-test-deploy]\n"}, {"resource": "Exec[Generate cert dse__opensearch-toolhub-test-deploy refresh]", "parameters": "--- Exec[Generate cert dse__opensearch-toolhub-test-deploy refresh].orig\n+++ Exec[Generate cert dse__opensearch-toolhub-test-deploy refresh]\n\n+    environment => ['GODEBUG=x509ignoreCN=0']\n+    command     => /usr/bin/cfssl gencert -config /etc/cfssl/client-cfssl.conf -tls-remote-ca /etc/ssl/certs/wmf-ca-certificates.crt -mutual-tls-client-cert /etc/cfssl/mutual_tls_client_cert.pem -mutual-tls-client-key /var/lib/puppet/ssl/private_keys/deploy1003.eqiad.wmnet.pem -label dse  /etc/cfssl/csr/dse__opensearch-toolhub-test-deploy.csr | /usr/bin/cfssljson -bare /etc/kubernetes/pki/dse__opensearch-toolhub-test-deploy\n\n+    refreshonly => True\n+    subscribe   => File[/etc/cfssl/csr/dse__opensearch-toolhub-test-deploy.csr]\n"}, {"resource": "Exec[Generate cert dse__opensearch-apifeatureusage refresh]", "parameters": "--- Exec[Generate cert dse__opensearch-apifeatureusage refresh].orig\n+++ Exec[Generate cert dse__opensearch-apifeatureusage refresh]\n\n+    environment => ['GODEBUG=x509ignoreCN=0']\n+    command     => /usr/bin/cfssl gencert -config /etc/cfssl/client-cfssl.conf -tls-remote-ca /etc/ssl/certs/wmf-ca-certificates.crt -mutual-tls-client-cert /etc/cfssl/mutual_tls_client_cert.pem -mutual-tls-client-key /var/lib/puppet/ssl/private_keys/deploy1003.eqiad.wmnet.pem -label dse  /etc/cfssl/csr/dse__opensearch-apifeatureusage.csr | /usr/bin/cfssljson -bare /etc/kubernetes/pki/dse__opensearch-apifeatureusage\n\n+    refreshonly => True\n+    subscribe   => File[/etc/cfssl/csr/dse__opensearch-apifeatureusage.csr]\n"}, {"resource": "File[/etc/kubernetes/pki/dse__opensearch-toolhub.chain.pem]", "parameters": "--- File[/etc/kubernetes/pki/dse__opensearch-toolhub.chain.pem].orig\n+++ File[/etc/kubernetes/pki/dse__opensearch-toolhub.chain.pem]\n\n+    mode   => 0440\n+    ensure => file\n+    owner  => mwdeploy\n+    source => puppet:///modules/profile/pki/intermediates/dse-cert.pem\n+    group  => deployment\n"}, {"resource": "File[/etc/kubernetes/pki/dse__opensearch-apifeatureusage-test.pem]", "parameters": "--- File[/etc/kubernetes/pki/dse__opensearch-apifeatureusage-test.pem].orig\n+++ File[/etc/kubernetes/pki/dse__opensearch-apifeatureusage-test.pem]\n\n+    mode   => 0440\n+    owner  => mwdeploy\n+    ensure => file\n+    group  => deployment\n"}, {"resource": "File[/etc/kubernetes/pki/dse__opensearch-toolhub-deploy.csr]", "parameters": "--- File[/etc/kubernetes/pki/dse__opensearch-toolhub-deploy.csr].orig\n+++ File[/etc/kubernetes/pki/dse__opensearch-toolhub-deploy.csr]\n\n+    mode   => 0440\n+    owner  => mwdeploy\n+    ensure => file\n+    group  => deployment\n"}, {"resource": "K8s::Kubeconfig[/etc/kubernetes/opensearch-ttmserver-deploy-dse-k8s-eqiad.config]", "parameters": "--- K8s::Kubeconfig[/etc/kubernetes/opensearch-ttmserver-deploy-dse-k8s-eqiad.config].orig\n+++ K8s::Kubeconfig[/etc/kubernetes/opensearch-ttmserver-deploy-dse-k8s-eqiad.config]\n\n+    ensure      => present\n+    owner       => mwdeploy\n+    auth_cert   => {'cert': '/etc/kubernetes/pki/dse__opensearch-ttmserver-deploy.pem', 'key': '/etc/kubernetes/pki/dse__opensearch-ttmserver-deploy-key.pem', 'chain': '/etc/kubernetes/pki/dse__opensearch-ttmserver-deploy.chain.pem', 'chained': '/etc/kubernetes/pki/dse__opensearch-ttmserver-deploy.chained.pem'}\n+    group       => deployment\n+    mode        => 0640\n+    master_host => dse-k8s-ctrl.svc.eqiad.wmnet\n+    username    => opensearch-ttmserver-deploy\n+    namespace   => opensearch-ttmserver\n+    require     => ['Class[K8s::Base_dirs]']\n"}, {"resource": "File[/etc/kubernetes/opensearch-ttmserver-test-dse-k8s-eqiad.config]", "content": "--- /etc/kubernetes/opensearch-ttmserver-test-dse-k8s-eqiad.config.orig\n+++ /etc/kubernetes/opensearch-ttmserver-test-dse-k8s-eqiad.config\n@@ -0,0 +1,19 @@\n+apiVersion: v1\n+kind: Config\n+preferences: {}\n+current-context: default-system\n+contexts:\n+- name: default-system\n+  context:\n+    cluster: default-cluster\n+    user: opensearch-ttmserver-test\n+    namespace: opensearch-ttmserver-test\n+clusters:\n+- name: default-cluster\n+  cluster:\n+    server: https://dse-k8s-ctrl.svc.eqiad.wmnet:6443\n+users:\n+- name: opensearch-ttmserver-test\n+  user:\n+    client-certificate: /etc/kubernetes/pki/dse__opensearch-ttmserver-test.pem\n+    client-key: /etc/kubernetes/pki/dse__opensearch-ttmserver-test-key.pem", "parameters": "--- File[/etc/kubernetes/opensearch-ttmserver-test-dse-k8s-eqiad.config].orig\n+++ File[/etc/kubernetes/opensearch-ttmserver-test-dse-k8s-eqiad.config]\n\n+    mode   => 0640\n+    owner  => mwdeploy\n+    ensure => present\n+    group  => deployment\n"}, {"resource": "File[/etc/kubernetes/pki/dse__opensearch-ttmserver-deploy-key.pem]", "parameters": "--- File[/etc/kubernetes/pki/dse__opensearch-ttmserver-deploy-key.pem].orig\n+++ File[/etc/kubernetes/pki/dse__opensearch-ttmserver-deploy-key.pem]\n\n+    mode      => 0440\n+    ensure    => file\n+    show_diff => False\n+    owner     => mwdeploy\n+    backup    => False\n+    group     => deployment\n"}, {"resource": "Exec[Generate cert dse__opensearch-toolhub refresh]", "parameters": "--- Exec[Generate cert dse__opensearch-toolhub refresh].orig\n+++ Exec[Generate cert dse__opensearch-toolhub refresh]\n\n+    environment => ['GODEBUG=x509ignoreCN=0']\n+    command     => /usr/bin/cfssl gencert -config /etc/cfssl/client-cfssl.conf -tls-remote-ca /etc/ssl/certs/wmf-ca-certificates.crt -mutual-tls-client-cert /etc/cfssl/mutual_tls_client_cert.pem -mutual-tls-client-key /var/lib/puppet/ssl/private_keys/deploy1003.eqiad.wmnet.pem -label dse  /etc/cfssl/csr/dse__opensearch-toolhub.csr | /usr/bin/cfssljson -bare /etc/kubernetes/pki/dse__opensearch-toolhub\n\n+    refreshonly => True\n+    subscribe   => File[/etc/cfssl/csr/dse__opensearch-toolhub.csr]\n"}, {"resource": "File[/etc/cfssl/csr/dse__opensearch-apifeatureusage-test.csr]", "content": "--- /etc/cfssl/csr/dse__opensearch-apifeatureusage-test.csr.orig\n+++ /etc/cfssl/csr/dse__opensearch-apifeatureusage-test.csr\n@@ -0,0 +1,19 @@\n+{\n+  \"CN\": \"opensearch-apifeatureusage-test\",\n+  \"hosts\": [\n+    \"opensearch-apifeatureusage-test\"\n+  ],\n+  \"key\": {\n+    \"algo\": \"ecdsa\",\n+    \"size\": 256\n+  },\n+  \"names\": [\n+    {\n+      \"C\": null,\n+      \"L\": null,\n+      \"O\": \"view\",\n+      \"OU\": null,\n+      \"S\": null\n+    }\n+  ]\n+}", "parameters": "--- File[/etc/cfssl/csr/dse__opensearch-apifeatureusage-test.csr].orig\n+++ File[/etc/cfssl/csr/dse__opensearch-apifeatureusage-test.csr]\n\n+    mode   => 0400\n+    owner  => root\n+    ensure => file\n+    group  => root\n"}, {"resource": "Exec[Generate cert dse__opensearch-toolhub-test refresh on intermediate ca change]", "parameters": "--- Exec[Generate cert dse__opensearch-toolhub-test refresh on intermediate ca change].orig\n+++ Exec[Generate cert dse__opensearch-toolhub-test refresh on intermediate ca change]\n\n+    environment => ['GODEBUG=x509ignoreCN=0']\n+    require     => Cfssl::Csr[/etc/cfssl/csr/dse__opensearch-toolhub-test.csr]\n+    command     => /usr/bin/cfssl gencert -config /etc/cfssl/client-cfssl.conf -tls-remote-ca /etc/ssl/certs/wmf-ca-certificates.crt -mutual-tls-client-cert /etc/cfssl/mutual_tls_client_cert.pem -mutual-tls-client-key /var/lib/puppet/ssl/private_keys/deploy1003.eqiad.wmnet.pem -label dse  /etc/cfssl/csr/dse__opensearch-toolhub-test.csr | /usr/bin/cfssljson -bare /etc/kubernetes/pki/dse__opensearch-toolhub-test\n\n+    refreshonly => True\n+    subscribe   => File[/etc/kubernetes/pki/dse__opensearch-toolhub-test.chain.pem]\n"}, {"resource": "Exec[Generate cert dse__opensearch-ttmserver refresh on intermediate ca change]", "parameters": "--- Exec[Generate cert dse__opensearch-ttmserver refresh on intermediate ca change].orig\n+++ Exec[Generate cert dse__opensearch-ttmserver refresh on intermediate ca change]\n\n+    environment => ['GODEBUG=x509ignoreCN=0']\n+    require     => Cfssl::Csr[/etc/cfssl/csr/dse__opensearch-ttmserver.csr]\n+    command     => /usr/bin/cfssl gencert -config /etc/cfssl/client-cfssl.conf -tls-remote-ca /etc/ssl/certs/wmf-ca-certificates.crt -mutual-tls-client-cert /etc/cfssl/mutual_tls_client_cert.pem -mutual-tls-client-key /var/lib/puppet/ssl/private_keys/deploy1003.eqiad.wmnet.pem -label dse  /etc/cfssl/csr/dse__opensearch-ttmserver.csr | /usr/bin/cfssljson -bare /etc/kubernetes/pki/dse__opensearch-ttmserver\n\n+    refreshonly => True\n+    subscribe   => File[/etc/kubernetes/pki/dse__opensearch-ttmserver.chain.pem]\n"}, {"resource": "File[/etc/kubernetes/pki/dse__opensearch-toolhub-deploy.pem]", "parameters": "--- File[/etc/kubernetes/pki/dse__opensearch-toolhub-deploy.pem].orig\n+++ File[/etc/kubernetes/pki/dse__opensearch-toolhub-deploy.pem]\n\n+    mode   => 0440\n+    owner  => mwdeploy\n+    ensure => file\n+    group  => deployment\n"}, {"resource": "Exec[Generate cert dse__opensearch-toolhub-test]", "parameters": "--- Exec[Generate cert dse__opensearch-toolhub-test].orig\n+++ Exec[Generate cert dse__opensearch-toolhub-test]\n\n+    environment => ['GODEBUG=x509ignoreCN=0']\n+    command     => /usr/bin/cfssl gencert -config /etc/cfssl/client-cfssl.conf -tls-remote-ca /etc/ssl/certs/wmf-ca-certificates.crt -mutual-tls-client-cert /etc/cfssl/mutual_tls_client_cert.pem -mutual-tls-client-key /var/lib/puppet/ssl/private_keys/deploy1003.eqiad.wmnet.pem -label dse  /etc/cfssl/csr/dse__opensearch-toolhub-test.csr | /usr/bin/cfssljson -bare /etc/kubernetes/pki/dse__opensearch-toolhub-test\n\n+    unless      => /usr/bin/test \"$(/usr/bin/openssl x509 -in /etc/kubernetes/pki/dse__opensearch-toolhub-test.pem -noout -pubkey 2>&1)\" == \"$(/usr/bin/openssl pkey -pubout -in /etc/kubernetes/pki/dse__opensearch-toolhub-test-key.pem 2>&1)\"\n\n+    require     => Cfssl::Csr[/etc/cfssl/csr/dse__opensearch-toolhub-test.csr]\n"}, {"resource": "K8s::Kubeconfig[/etc/kubernetes/opensearch-ttmserver-test-deploy-dse-k8s-eqiad.config]", "parameters": "--- K8s::Kubeconfig[/etc/kubernetes/opensearch-ttmserver-test-deploy-dse-k8s-eqiad.config].orig\n+++ K8s::Kubeconfig[/etc/kubernetes/opensearch-ttmserver-test-deploy-dse-k8s-eqiad.config]\n\n+    ensure      => present\n+    owner       => mwdeploy\n+    auth_cert   => {'cert': '/etc/kubernetes/pki/dse__opensearch-ttmserver-test-deploy.pem', 'key': '/etc/kubernetes/pki/dse__opensearch-ttmserver-test-deploy-key.pem', 'chain': '/etc/kubernetes/pki/dse__opensearch-ttmserver-test-deploy.chain.pem', 'chained': '/etc/kubernetes/pki/dse__opensearch-ttmserver-test-deploy.chained.pem'}\n+    group       => deployment\n+    mode        => 0640\n+    master_host => dse-k8s-ctrl.svc.eqiad.wmnet\n+    username    => opensearch-ttmserver-test-deploy\n+    namespace   => opensearch-ttmserver-test\n+    require     => ['Class[K8s::Base_dirs]']\n"}, {"resource": "File[/etc/helmfile-defaults/private/dse-k8s_services/opensearch-ttmserver-test]", "parameters": "--- File[/etc/helmfile-defaults/private/dse-k8s_services/opensearch-ttmserver-test].orig\n+++ File[/etc/helmfile-defaults/private/dse-k8s_services/opensearch-ttmserver-test]\n\n+    group   => deployment\n+    mode    => 0751\n+    ensure  => directory\n+    recurse => True\n+    owner   => mwdeploy\n+    force   => True\n"}, {"resource": "File[/etc/kubernetes/pki/dse__opensearch-ttmserver-test-deploy-key.pem]", "parameters": "--- File[/etc/kubernetes/pki/dse__opensearch-ttmserver-test-deploy-key.pem].orig\n+++ File[/etc/kubernetes/pki/dse__opensearch-ttmserver-test-deploy-key.pem]\n\n+    mode      => 0440\n+    ensure    => file\n+    show_diff => False\n+    owner     => mwdeploy\n+    backup    => False\n+    group     => deployment\n"}, {"resource": "Cfssl::Csr[/etc/cfssl/csr/dse__opensearch-toolhub-deploy.csr]", "parameters": "--- Cfssl::Csr[/etc/cfssl/csr/dse__opensearch-toolhub-deploy.csr].orig\n+++ Cfssl::Csr[/etc/cfssl/csr/dse__opensearch-toolhub-deploy.csr]\n\n+    key         => {'algo': 'ecdsa', 'size': 256}\n+    common_name => opensearch-toolhub-deploy\n+    names       => [{'organisation': 'view'}, {'organisation': 'deploy'}]\n+    ensure      => present\n+    hosts       => []\n"}, {"resource": "Cfssl::Cert[dse__opensearch-toolhub-test-deploy]", "parameters": "--- Cfssl::Cert[dse__opensearch-toolhub-test-deploy].orig\n+++ Cfssl::Cert[dse__opensearch-toolhub-test-deploy]\n\n+    key             => {'algo': 'ecdsa', 'size': 256}\n+    ensure          => present\n+    owner           => mwdeploy\n+    renew_seconds   => 952200\n+    group           => deployment\n+    common_name     => opensearch-toolhub-test-deploy\n+    mode            => 0740\n+    notify_services => []\n+    label           => dse\n+    environment     => ['GODEBUG=x509ignoreCN=0']\n+    auto_renew      => True\n+    outdir          => /etc/kubernetes/pki\n+    hosts           => []\n+    before_services => []\n+    names           => [{'organisation': 'view'}, {'organisation': 'deploy'}]\n+    provide_chain   => True\n"}, {"resource": "Exec[renew certificate - dse__opensearch-toolhub]", "parameters": "--- Exec[renew certificate - dse__opensearch-toolhub].orig\n+++ Exec[renew certificate - dse__opensearch-toolhub]\n\n+    environment => ['GODEBUG=x509ignoreCN=0']\n+    command     => /usr/bin/cfssl sign -config /etc/cfssl/client-cfssl.conf -tls-remote-ca /etc/ssl/certs/wmf-ca-certificates.crt -mutual-tls-client-cert /etc/cfssl/mutual_tls_client_cert.pem -mutual-tls-client-key /var/lib/puppet/ssl/private_keys/deploy1003.eqiad.wmnet.pem -label dse  /etc/kubernetes/pki/dse__opensearch-toolhub.csr | /usr/bin/cfssljson -bare /etc/kubernetes/pki/dse__opensearch-toolhub\n\n+    unless      => /usr/bin/openssl x509 -in /etc/kubernetes/pki/dse__opensearch-toolhub.pem -checkend 952200\n+    require     => Exec[Generate cert dse__opensearch-toolhub]\n"}, {"resource": "K8s::Kubeconfig[/etc/kubernetes/opensearch-apifeatureusage-test-dse-k8s-eqiad.config]", "parameters": "--- K8s::Kubeconfig[/etc/kubernetes/opensearch-apifeatureusage-test-dse-k8s-eqiad.config].orig\n+++ K8s::Kubeconfig[/etc/kubernetes/opensearch-apifeatureusage-test-dse-k8s-eqiad.config]\n\n+    ensure      => present\n+    owner       => mwdeploy\n+    auth_cert   => {'cert': '/etc/kubernetes/pki/dse__opensearch-apifeatureusage-test.pem', 'key': '/etc/kubernetes/pki/dse__opensearch-apifeatureusage-test-key.pem', 'chain': '/etc/kubernetes/pki/dse__opensearch-apifeatureusage-test.chain.pem', 'chained': '/etc/kubernetes/pki/dse__opensearch-apifeatureusage-test.chained.pem'}\n+    group       => deployment\n+    mode        => 0640\n+    master_host => dse-k8s-ctrl.svc.eqiad.wmnet\n+    username    => opensearch-apifeatureusage-test\n+    namespace   => opensearch-apifeatureusage-test\n+    require     => ['Class[K8s::Base_dirs]']\n"}, {"resource": "File[/etc/cfssl/csr/dse__opensearch-ttmserver.csr]", "content": "--- /etc/cfssl/csr/dse__opensearch-ttmserver.csr.orig\n+++ /etc/cfssl/csr/dse__opensearch-ttmserver.csr\n@@ -0,0 +1,19 @@\n+{\n+  \"CN\": \"opensearch-ttmserver\",\n+  \"hosts\": [\n+    \"opensearch-ttmserver\"\n+  ],\n+  \"key\": {\n+    \"algo\": \"ecdsa\",\n+    \"size\": 256\n+  },\n+  \"names\": [\n+    {\n+      \"C\": null,\n+      \"L\": null,\n+      \"O\": \"view\",\n+      \"OU\": null,\n+      \"S\": null\n+    }\n+  ]\n+}", "parameters": "--- File[/etc/cfssl/csr/dse__opensearch-ttmserver.csr].orig\n+++ File[/etc/cfssl/csr/dse__opensearch-ttmserver.csr]\n\n+    mode   => 0400\n+    owner  => root\n+    ensure => file\n+    group  => root\n"}, {"resource": "Exec[create chained cert /etc/kubernetes/pki/dse__opensearch-ttmserver.chain.pem]", "parameters": "--- Exec[create chained cert /etc/kubernetes/pki/dse__opensearch-ttmserver.chain.pem].orig\n+++ Exec[create chained cert /etc/kubernetes/pki/dse__opensearch-ttmserver.chain.pem]\n\n+    unless    => /usr/bin/test \"$(/bin/cat /etc/kubernetes/pki/dse__opensearch-ttmserver.pem /etc/kubernetes/pki/dse__opensearch-ttmserver.chain.pem | sha512sum)\" == \"$(/bin/cat /etc/kubernetes/pki/dse__opensearch-ttmserver.chained.pem | sha512sum)\"\n\n+    command   => /bin/cat /etc/kubernetes/pki/dse__opensearch-ttmserver.pem /etc/kubernetes/pki/dse__opensearch-ttmserver.chain.pem > /etc/kubernetes/pki/dse__opensearch-ttmserver.chained.pem\n+    require   => Exec[Generate cert dse__opensearch-ttmserver refresh on intermediate ca change]\n+    subscribe => ['Exec[renew certificate - dse__opensearch-ttmserver]', 'File[/etc/kubernetes/pki/dse__opensearch-ttmserver.chain.pem]', 'File[/etc/kubernetes/pki/dse__opensearch-ttmserver.pem]']\n"}, {"resource": "Exec[Generate cert dse__opensearch-toolhub refresh on intermediate ca change]", "parameters": "--- Exec[Generate cert dse__opensearch-toolhub refresh on intermediate ca change].orig\n+++ Exec[Generate cert dse__opensearch-toolhub refresh on intermediate ca change]\n\n+    environment => ['GODEBUG=x509ignoreCN=0']\n+    require     => Cfssl::Csr[/etc/cfssl/csr/dse__opensearch-toolhub.csr]\n+    command     => /usr/bin/cfssl gencert -config /etc/cfssl/client-cfssl.conf -tls-remote-ca /etc/ssl/certs/wmf-ca-certificates.crt -mutual-tls-client-cert /etc/cfssl/mutual_tls_client_cert.pem -mutual-tls-client-key /var/lib/puppet/ssl/private_keys/deploy1003.eqiad.wmnet.pem -label dse  /etc/cfssl/csr/dse__opensearch-toolhub.csr | /usr/bin/cfssljson -bare /etc/kubernetes/pki/dse__opensearch-toolhub\n\n+    refreshonly => True\n+    subscribe   => File[/etc/kubernetes/pki/dse__opensearch-toolhub.chain.pem]\n"}, {"resource": "Exec[Generate cert dse__opensearch-apifeatureusage]", "parameters": "--- Exec[Generate cert dse__opensearch-apifeatureusage].orig\n+++ Exec[Generate cert dse__opensearch-apifeatureusage]\n\n+    environment => ['GODEBUG=x509ignoreCN=0']\n+    command     => /usr/bin/cfssl gencert -config /etc/cfssl/client-cfssl.conf -tls-remote-ca /etc/ssl/certs/wmf-ca-certificates.crt -mutual-tls-client-cert /etc/cfssl/mutual_tls_client_cert.pem -mutual-tls-client-key /var/lib/puppet/ssl/private_keys/deploy1003.eqiad.wmnet.pem -label dse  /etc/cfssl/csr/dse__opensearch-apifeatureusage.csr | /usr/bin/cfssljson -bare /etc/kubernetes/pki/dse__opensearch-apifeatureusage\n\n+    unless      => /usr/bin/test \"$(/usr/bin/openssl x509 -in /etc/kubernetes/pki/dse__opensearch-apifeatureusage.pem -noout -pubkey 2>&1)\" == \"$(/usr/bin/openssl pkey -pubout -in /etc/kubernetes/pki/dse__opensearch-apifeatureusage-key.pem 2>&1)\"\n\n+    require     => Cfssl::Csr[/etc/cfssl/csr/dse__opensearch-apifeatureusage.csr]\n"}, {"resource": "File[/etc/kubernetes/pki/dse__opensearch-toolhub-test-deploy-key.pem]", "parameters": "--- File[/etc/kubernetes/pki/dse__opensearch-toolhub-test-deploy-key.pem].orig\n+++ File[/etc/kubernetes/pki/dse__opensearch-toolhub-test-deploy-key.pem]\n\n+    mode      => 0440\n+    ensure    => file\n+    show_diff => False\n+    owner     => mwdeploy\n+    backup    => False\n+    group     => deployment\n"}, {"resource": "File[/etc/kubernetes/pki/dse__opensearch-toolhub-test-deploy.chained.pem]", "parameters": "--- File[/etc/kubernetes/pki/dse__opensearch-toolhub-test-deploy.chained.pem].orig\n+++ File[/etc/kubernetes/pki/dse__opensearch-toolhub-test-deploy.chained.pem]\n\n+    require => Exec[create chained cert /etc/kubernetes/pki/dse__opensearch-toolhub-test-deploy.chain.pem]\n+    owner   => mwdeploy\n+    ensure  => file\n+    group   => deployment\n"}, {"resource": "File[/etc/kubernetes/pki/dse__opensearch-apifeatureusage-deploy-key.pem]", "parameters": "--- File[/etc/kubernetes/pki/dse__opensearch-apifeatureusage-deploy-key.pem].orig\n+++ File[/etc/kubernetes/pki/dse__opensearch-apifeatureusage-deploy-key.pem]\n\n+    mode      => 0440\n+    ensure    => file\n+    show_diff => False\n+    owner     => mwdeploy\n+    backup    => False\n+    group     => deployment\n"}, {"resource": "File[/etc/kubernetes/pki/dse__opensearch-ttmserver.chain.pem]", "parameters": "--- File[/etc/kubernetes/pki/dse__opensearch-ttmserver.chain.pem].orig\n+++ File[/etc/kubernetes/pki/dse__opensearch-ttmserver.chain.pem]\n\n+    mode   => 0440\n+    ensure => file\n+    owner  => mwdeploy\n+    source => puppet:///modules/profile/pki/intermediates/dse-cert.pem\n+    group  => deployment\n"}, {"resource": "File[/etc/kubernetes/pki/dse__opensearch-toolhub-test-deploy.pem]", "parameters": "--- File[/etc/kubernetes/pki/dse__opensearch-toolhub-test-deploy.pem].orig\n+++ File[/etc/kubernetes/pki/dse__opensearch-toolhub-test-deploy.pem]\n\n+    mode   => 0440\n+    owner  => mwdeploy\n+    ensure => file\n+    group  => deployment\n"}, {"resource": "File[/etc/cfssl/csr/dse__opensearch-ttmserver-deploy.csr]", "content": "--- /etc/cfssl/csr/dse__opensearch-ttmserver-deploy.csr.orig\n+++ /etc/cfssl/csr/dse__opensearch-ttmserver-deploy.csr\n@@ -0,0 +1,26 @@\n+{\n+  \"CN\": \"opensearch-ttmserver-deploy\",\n+  \"hosts\": [\n+    \"opensearch-ttmserver-deploy\"\n+  ],\n+  \"key\": {\n+    \"algo\": \"ecdsa\",\n+    \"size\": 256\n+  },\n+  \"names\": [\n+    {\n+      \"C\": null,\n+      \"L\": null,\n+      \"O\": \"view\",\n+      \"OU\": null,\n+      \"S\": null\n+    },\n+    {\n+      \"C\": null,\n+      \"L\": null,\n+      \"O\": \"deploy\",\n+      \"OU\": null,\n+      \"S\": null\n+    }\n+  ]\n+}", "parameters": "--- File[/etc/cfssl/csr/dse__opensearch-ttmserver-deploy.csr].orig\n+++ File[/etc/cfssl/csr/dse__opensearch-ttmserver-deploy.csr]\n\n+    mode   => 0400\n+    owner  => root\n+    ensure => file\n+    group  => root\n"}, {"resource": "Exec[create chained cert /etc/kubernetes/pki/dse__opensearch-ttmserver-test-deploy.chain.pem]", "parameters": "--- Exec[create chained cert /etc/kubernetes/pki/dse__opensearch-ttmserver-test-deploy.chain.pem].orig\n+++ Exec[create chained cert /etc/kubernetes/pki/dse__opensearch-ttmserver-test-deploy.chain.pem]\n\n+    unless    => /usr/bin/test \"$(/bin/cat /etc/kubernetes/pki/dse__opensearch-ttmserver-test-deploy.pem /etc/kubernetes/pki/dse__opensearch-ttmserver-test-deploy.chain.pem | sha512sum)\" == \"$(/bin/cat /etc/kubernetes/pki/dse__opensearch-ttmserver-test-deploy.chained.pem | sha512sum)\"\n\n+    command   => /bin/cat /etc/kubernetes/pki/dse__opensearch-ttmserver-test-deploy.pem /etc/kubernetes/pki/dse__opensearch-ttmserver-test-deploy.chain.pem > /etc/kubernetes/pki/dse__opensearch-ttmserver-test-deploy.chained.pem\n+    require   => Exec[Generate cert dse__opensearch-ttmserver-test-deploy refresh on intermediate ca change]\n+    subscribe => ['Exec[renew certificate - dse__opensearch-ttmserver-test-deploy]', 'File[/etc/kubernetes/pki/dse__opensearch-ttmserver-test-deploy.chain.pem]', 'File[/etc/kubernetes/pki/dse__opensearch-ttmserver-test-deploy.pem]']\n"}, {"resource": "File[/etc/kubernetes/pki/dse__opensearch-apifeatureusage-test-deploy.csr]", "parameters": "--- File[/etc/kubernetes/pki/dse__opensearch-apifeatureusage-test-deploy.csr].orig\n+++ File[/etc/kubernetes/pki/dse__opensearch-apifeatureusage-test-deploy.csr]\n\n+    mode   => 0440\n+    owner  => mwdeploy\n+    ensure => file\n+    group  => deployment\n"}, {"resource": "Exec[Generate cert dse__opensearch-toolhub-test refresh]", "parameters": "--- Exec[Generate cert dse__opensearch-toolhub-test refresh].orig\n+++ Exec[Generate cert dse__opensearch-toolhub-test refresh]\n\n+    environment => ['GODEBUG=x509ignoreCN=0']\n+    command     => /usr/bin/cfssl gencert -config /etc/cfssl/client-cfssl.conf -tls-remote-ca /etc/ssl/certs/wmf-ca-certificates.crt -mutual-tls-client-cert /etc/cfssl/mutual_tls_client_cert.pem -mutual-tls-client-key /var/lib/puppet/ssl/private_keys/deploy1003.eqiad.wmnet.pem -label dse  /etc/cfssl/csr/dse__opensearch-toolhub-test.csr | /usr/bin/cfssljson -bare /etc/kubernetes/pki/dse__opensearch-toolhub-test\n\n+    refreshonly => True\n+    subscribe   => File[/etc/cfssl/csr/dse__opensearch-toolhub-test.csr]\n"}, {"resource": "Exec[renew certificate - dse__opensearch-apifeatureusage-test]", "parameters": "--- Exec[renew certificate - dse__opensearch-apifeatureusage-test].orig\n+++ Exec[renew certificate - dse__opensearch-apifeatureusage-test]\n\n+    environment => ['GODEBUG=x509ignoreCN=0']\n+    command     => /usr/bin/cfssl sign -config /etc/cfssl/client-cfssl.conf -tls-remote-ca /etc/ssl/certs/wmf-ca-certificates.crt -mutual-tls-client-cert /etc/cfssl/mutual_tls_client_cert.pem -mutual-tls-client-key /var/lib/puppet/ssl/private_keys/deploy1003.eqiad.wmnet.pem -label dse  /etc/kubernetes/pki/dse__opensearch-apifeatureusage-test.csr | /usr/bin/cfssljson -bare /etc/kubernetes/pki/dse__opensearch-apifeatureusage-test\n\n+    unless      => /usr/bin/openssl x509 -in /etc/kubernetes/pki/dse__opensearch-apifeatureusage-test.pem -checkend 952200\n+    require     => Exec[Generate cert dse__opensearch-apifeatureusage-test]\n"}, {"resource": "File[/etc/cfssl/csr/dse__opensearch-apifeatureusage.csr]", "content": "--- /etc/cfssl/csr/dse__opensearch-apifeatureusage.csr.orig\n+++ /etc/cfssl/csr/dse__opensearch-apifeatureusage.csr\n@@ -0,0 +1,19 @@\n+{\n+  \"CN\": \"opensearch-apifeatureusage\",\n+  \"hosts\": [\n+    \"opensearch-apifeatureusage\"\n+  ],\n+  \"key\": {\n+    \"algo\": \"ecdsa\",\n+    \"size\": 256\n+  },\n+  \"names\": [\n+    {\n+      \"C\": null,\n+      \"L\": null,\n+      \"O\": \"view\",\n+      \"OU\": null,\n+      \"S\": null\n+    }\n+  ]\n+}", "parameters": "--- File[/etc/cfssl/csr/dse__opensearch-apifeatureusage.csr].orig\n+++ File[/etc/cfssl/csr/dse__opensearch-apifeatureusage.csr]\n\n+    mode   => 0400\n+    owner  => root\n+    ensure => file\n+    group  => root\n"}, {"resource": "Cfssl::Csr[/etc/cfssl/csr/dse__opensearch-ttmserver.csr]", "parameters": "--- Cfssl::Csr[/etc/cfssl/csr/dse__opensearch-ttmserver.csr].orig\n+++ Cfssl::Csr[/etc/cfssl/csr/dse__opensearch-ttmserver.csr]\n\n+    key         => {'algo': 'ecdsa', 'size': 256}\n+    common_name => opensearch-ttmserver\n+    names       => [{'organisation': 'view'}]\n+    ensure      => present\n+    hosts       => []\n"}, {"resource": "Exec[create chained cert /etc/kubernetes/pki/dse__opensearch-apifeatureusage-deploy.chain.pem]", "parameters": "--- Exec[create chained cert /etc/kubernetes/pki/dse__opensearch-apifeatureusage-deploy.chain.pem].orig\n+++ Exec[create chained cert /etc/kubernetes/pki/dse__opensearch-apifeatureusage-deploy.chain.pem]\n\n+    unless    => /usr/bin/test \"$(/bin/cat /etc/kubernetes/pki/dse__opensearch-apifeatureusage-deploy.pem /etc/kubernetes/pki/dse__opensearch-apifeatureusage-deploy.chain.pem | sha512sum)\" == \"$(/bin/cat /etc/kubernetes/pki/dse__opensearch-apifeatureusage-deploy.chained.pem | sha512sum)\"\n\n+    command   => /bin/cat /etc/kubernetes/pki/dse__opensearch-apifeatureusage-deploy.pem /etc/kubernetes/pki/dse__opensearch-apifeatureusage-deploy.chain.pem > /etc/kubernetes/pki/dse__opensearch-apifeatureusage-deploy.chained.pem\n+    require   => Exec[Generate cert dse__opensearch-apifeatureusage-deploy refresh on intermediate ca change]\n+    subscribe => ['Exec[renew certificate - dse__opensearch-apifeatureusage-deploy]', 'File[/etc/kubernetes/pki/dse__opensearch-apifeatureusage-deploy.chain.pem]', 'File[/etc/kubernetes/pki/dse__opensearch-apifeatureusage-deploy.pem]']\n"}, {"resource": "K8s::Kubeconfig[/etc/kubernetes/opensearch-apifeatureusage-test-deploy-dse-k8s-eqiad.config]", "parameters": "--- K8s::Kubeconfig[/etc/kubernetes/opensearch-apifeatureusage-test-deploy-dse-k8s-eqiad.config].orig\n+++ K8s::Kubeconfig[/etc/kubernetes/opensearch-apifeatureusage-test-deploy-dse-k8s-eqiad.config]\n\n+    ensure      => present\n+    owner       => mwdeploy\n+    auth_cert   => {'cert': '/etc/kubernetes/pki/dse__opensearch-apifeatureusage-test-deploy.pem', 'key': '/etc/kubernetes/pki/dse__opensearch-apifeatureusage-test-deploy-key.pem', 'chain': '/etc/kubernetes/pki/dse__opensearch-apifeatureusage-test-deploy.chain.pem', 'chained': '/etc/kubernetes/pki/dse__opensearch-apifeatureusage-test-deploy.chained.pem'}\n+    group       => deployment\n+    mode        => 0640\n+    master_host => dse-k8s-ctrl.svc.eqiad.wmnet\n+    username    => opensearch-apifeatureusage-test-deploy\n+    namespace   => opensearch-apifeatureusage-test\n+    require     => ['Class[K8s::Base_dirs]']\n"}, {"resource": "Exec[Generate cert dse__opensearch-ttmserver]", "parameters": "--- Exec[Generate cert dse__opensearch-ttmserver].orig\n+++ Exec[Generate cert dse__opensearch-ttmserver]\n\n+    environment => ['GODEBUG=x509ignoreCN=0']\n+    command     => /usr/bin/cfssl gencert -config /etc/cfssl/client-cfssl.conf -tls-remote-ca /etc/ssl/certs/wmf-ca-certificates.crt -mutual-tls-client-cert /etc/cfssl/mutual_tls_client_cert.pem -mutual-tls-client-key /var/lib/puppet/ssl/private_keys/deploy1003.eqiad.wmnet.pem -label dse  /etc/cfssl/csr/dse__opensearch-ttmserver.csr | /usr/bin/cfssljson -bare /etc/kubernetes/pki/dse__opensearch-ttmserver\n\n+    unless      => /usr/bin/test \"$(/usr/bin/openssl x509 -in /etc/kubernetes/pki/dse__opensearch-ttmserver.pem -noout -pubkey 2>&1)\" == \"$(/usr/bin/openssl pkey -pubout -in /etc/kubernetes/pki/dse__opensearch-ttmserver-key.pem 2>&1)\"\n\n+    require     => Cfssl::Csr[/etc/cfssl/csr/dse__opensearch-ttmserver.csr]\n"}, {"resource": "Exec[renew certificate - dse__opensearch-toolhub-deploy]", "parameters": "--- Exec[renew certificate - dse__opensearch-toolhub-deploy].orig\n+++ Exec[renew certificate - dse__opensearch-toolhub-deploy]\n\n+    environment => ['GODEBUG=x509ignoreCN=0']\n+    command     => /usr/bin/cfssl sign -config /etc/cfssl/client-cfssl.conf -tls-remote-ca /etc/ssl/certs/wmf-ca-certificates.crt -mutual-tls-client-cert /etc/cfssl/mutual_tls_client_cert.pem -mutual-tls-client-key /var/lib/puppet/ssl/private_keys/deploy1003.eqiad.wmnet.pem -label dse  /etc/kubernetes/pki/dse__opensearch-toolhub-deploy.csr | /usr/bin/cfssljson -bare /etc/kubernetes/pki/dse__opensearch-toolhub-deploy\n\n+    unless      => /usr/bin/openssl x509 -in /etc/kubernetes/pki/dse__opensearch-toolhub-deploy.pem -checkend 952200\n+    require     => Exec[Generate cert dse__opensearch-toolhub-deploy]\n"}, {"resource": "Exec[Generate cert dse__opensearch-apifeatureusage-deploy refresh]", "parameters": "--- Exec[Generate cert dse__opensearch-apifeatureusage-deploy refresh].orig\n+++ Exec[Generate cert dse__opensearch-apifeatureusage-deploy refresh]\n\n+    environment => ['GODEBUG=x509ignoreCN=0']\n+    command     => /usr/bin/cfssl gencert -config /etc/cfssl/client-cfssl.conf -tls-remote-ca /etc/ssl/certs/wmf-ca-certificates.crt -mutual-tls-client-cert /etc/cfssl/mutual_tls_client_cert.pem -mutual-tls-client-key /var/lib/puppet/ssl/private_keys/deploy1003.eqiad.wmnet.pem -label dse  /etc/cfssl/csr/dse__opensearch-apifeatureusage-deploy.csr | /usr/bin/cfssljson -bare /etc/kubernetes/pki/dse__opensearch-apifeatureusage-deploy\n\n+    refreshonly => True\n+    subscribe   => File[/etc/cfssl/csr/dse__opensearch-apifeatureusage-deploy.csr]\n"}, {"resource": "Cfssl::Csr[/etc/cfssl/csr/dse__opensearch-ttmserver-test.csr]", "parameters": "--- Cfssl::Csr[/etc/cfssl/csr/dse__opensearch-ttmserver-test.csr].orig\n+++ Cfssl::Csr[/etc/cfssl/csr/dse__opensearch-ttmserver-test.csr]\n\n+    key         => {'algo': 'ecdsa', 'size': 256}\n+    common_name => opensearch-ttmserver-test\n+    names       => [{'organisation': 'view'}]\n+    ensure      => present\n+    hosts       => []\n"}, {"resource": "File[/etc/kubernetes/pki/dse__opensearch-toolhub-deploy.chain.pem]", "parameters": "--- File[/etc/kubernetes/pki/dse__opensearch-toolhub-deploy.chain.pem].orig\n+++ File[/etc/kubernetes/pki/dse__opensearch-toolhub-deploy.chain.pem]\n\n+    mode   => 0440\n+    ensure => file\n+    owner  => mwdeploy\n+    source => puppet:///modules/profile/pki/intermediates/dse-cert.pem\n+    group  => deployment\n"}, {"resource": "File[/etc/kubernetes/pki/dse__opensearch-ttmserver-test.chain.pem]", "parameters": "--- File[/etc/kubernetes/pki/dse__opensearch-ttmserver-test.chain.pem].orig\n+++ File[/etc/kubernetes/pki/dse__opensearch-ttmserver-test.chain.pem]\n\n+    mode   => 0440\n+    ensure => file\n+    owner  => mwdeploy\n+    source => puppet:///modules/profile/pki/intermediates/dse-cert.pem\n+    group  => deployment\n"}, {"resource": "File[/etc/kubernetes/pki/dse__opensearch-apifeatureusage.pem]", "parameters": "--- File[/etc/kubernetes/pki/dse__opensearch-apifeatureusage.pem].orig\n+++ File[/etc/kubernetes/pki/dse__opensearch-apifeatureusage.pem]\n\n+    mode   => 0440\n+    owner  => mwdeploy\n+    ensure => file\n+    group  => deployment\n"}, {"resource": "Exec[Generate cert dse__opensearch-apifeatureusage-deploy]", "parameters": "--- Exec[Generate cert dse__opensearch-apifeatureusage-deploy].orig\n+++ Exec[Generate cert dse__opensearch-apifeatureusage-deploy]\n\n+    environment => ['GODEBUG=x509ignoreCN=0']\n+    command     => /usr/bin/cfssl gencert -config /etc/cfssl/client-cfssl.conf -tls-remote-ca /etc/ssl/certs/wmf-ca-certificates.crt -mutual-tls-client-cert /etc/cfssl/mutual_tls_client_cert.pem -mutual-tls-client-key /var/lib/puppet/ssl/private_keys/deploy1003.eqiad.wmnet.pem -label dse  /etc/cfssl/csr/dse__opensearch-apifeatureusage-deploy.csr | /usr/bin/cfssljson -bare /etc/kubernetes/pki/dse__opensearch-apifeatureusage-deploy\n\n+    unless      => /usr/bin/test \"$(/usr/bin/openssl x509 -in /etc/kubernetes/pki/dse__opensearch-apifeatureusage-deploy.pem -noout -pubkey 2>&1)\" == \"$(/usr/bin/openssl pkey -pubout -in /etc/kubernetes/pki/dse__opensearch-apifeatureusage-deploy-key.pem 2>&1)\"\n\n+    require     => Cfssl::Csr[/etc/cfssl/csr/dse__opensearch-apifeatureusage-deploy.csr]\n"}, {"resource": "Exec[create chained cert /etc/kubernetes/pki/dse__opensearch-apifeatureusage-test-deploy.chain.pem]", "parameters": "--- Exec[create chained cert /etc/kubernetes/pki/dse__opensearch-apifeatureusage-test-deploy.chain.pem].orig\n+++ Exec[create chained cert /etc/kubernetes/pki/dse__opensearch-apifeatureusage-test-deploy.chain.pem]\n\n+    unless    => /usr/bin/test \"$(/bin/cat /etc/kubernetes/pki/dse__opensearch-apifeatureusage-test-deploy.pem /etc/kubernetes/pki/dse__opensearch-apifeatureusage-test-deploy.chain.pem | sha512sum)\" == \"$(/bin/cat /etc/kubernetes/pki/dse__opensearch-apifeatureusage-test-deploy.chained.pem | sha512sum)\"\n\n+    command   => /bin/cat /etc/kubernetes/pki/dse__opensearch-apifeatureusage-test-deploy.pem /etc/kubernetes/pki/dse__opensearch-apifeatureusage-test-deploy.chain.pem > /etc/kubernetes/pki/dse__opensearch-apifeatureusage-test-deploy.chained.pem\n+    require   => Exec[Generate cert dse__opensearch-apifeatureusage-test-deploy refresh on intermediate ca change]\n+    subscribe => ['Exec[renew certificate - dse__opensearch-apifeatureusage-test-deploy]', 'File[/etc/kubernetes/pki/dse__opensearch-apifeatureusage-test-deploy.chain.pem]', 'File[/etc/kubernetes/pki/dse__opensearch-apifeatureusage-test-deploy.pem]']\n"}, {"resource": "Cfssl::Cert[dse__opensearch-apifeatureusage-deploy]", "parameters": "--- Cfssl::Cert[dse__opensearch-apifeatureusage-deploy].orig\n+++ Cfssl::Cert[dse__opensearch-apifeatureusage-deploy]\n\n+    key             => {'algo': 'ecdsa', 'size': 256}\n+    ensure          => present\n+    owner           => mwdeploy\n+    renew_seconds   => 952200\n+    group           => deployment\n+    common_name     => opensearch-apifeatureusage-deploy\n+    mode            => 0740\n+    notify_services => []\n+    label           => dse\n+    environment     => ['GODEBUG=x509ignoreCN=0']\n+    auto_renew      => True\n+    outdir          => /etc/kubernetes/pki\n+    hosts           => []\n+    before_services => []\n+    names           => [{'organisation': 'view'}, {'organisation': 'deploy'}]\n+    provide_chain   => True\n"}, {"resource": "File[/etc/kubernetes/pki/dse__opensearch-ttmserver.csr]", "parameters": "--- File[/etc/kubernetes/pki/dse__opensearch-ttmserver.csr].orig\n+++ File[/etc/kubernetes/pki/dse__opensearch-ttmserver.csr]\n\n+    mode   => 0440\n+    owner  => mwdeploy\n+    ensure => file\n+    group  => deployment\n"}, {"resource": "File[/etc/kubernetes/opensearch-ttmserver-test-deploy-dse-k8s-eqiad.config]", "content": "--- /etc/kubernetes/opensearch-ttmserver-test-deploy-dse-k8s-eqiad.config.orig\n+++ /etc/kubernetes/opensearch-ttmserver-test-deploy-dse-k8s-eqiad.config\n@@ -0,0 +1,19 @@\n+apiVersion: v1\n+kind: Config\n+preferences: {}\n+current-context: default-system\n+contexts:\n+- name: default-system\n+  context:\n+    cluster: default-cluster\n+    user: opensearch-ttmserver-test-deploy\n+    namespace: opensearch-ttmserver-test\n+clusters:\n+- name: default-cluster\n+  cluster:\n+    server: https://dse-k8s-ctrl.svc.eqiad.wmnet:6443\n+users:\n+- name: opensearch-ttmserver-test-deploy\n+  user:\n+    client-certificate: /etc/kubernetes/pki/dse__opensearch-ttmserver-test-deploy.pem\n+    client-key: /etc/kubernetes/pki/dse__opensearch-ttmserver-test-deploy-key.pem", "parameters": "--- File[/etc/kubernetes/opensearch-ttmserver-test-deploy-dse-k8s-eqiad.config].orig\n+++ File[/etc/kubernetes/opensearch-ttmserver-test-deploy-dse-k8s-eqiad.config]\n\n+    mode   => 0640\n+    owner  => mwdeploy\n+    ensure => present\n+    group  => deployment\n"}, {"resource": "Exec[create chained cert /etc/kubernetes/pki/dse__opensearch-toolhub-test-deploy.chain.pem]", "parameters": "--- Exec[create chained cert /etc/kubernetes/pki/dse__opensearch-toolhub-test-deploy.chain.pem].orig\n+++ Exec[create chained cert /etc/kubernetes/pki/dse__opensearch-toolhub-test-deploy.chain.pem]\n\n+    unless    => /usr/bin/test \"$(/bin/cat /etc/kubernetes/pki/dse__opensearch-toolhub-test-deploy.pem /etc/kubernetes/pki/dse__opensearch-toolhub-test-deploy.chain.pem | sha512sum)\" == \"$(/bin/cat /etc/kubernetes/pki/dse__opensearch-toolhub-test-deploy.chained.pem | sha512sum)\"\n\n+    command   => /bin/cat /etc/kubernetes/pki/dse__opensearch-toolhub-test-deploy.pem /etc/kubernetes/pki/dse__opensearch-toolhub-test-deploy.chain.pem > /etc/kubernetes/pki/dse__opensearch-toolhub-test-deploy.chained.pem\n+    require   => Exec[Generate cert dse__opensearch-toolhub-test-deploy refresh on intermediate ca change]\n+    subscribe => ['Exec[renew certificate - dse__opensearch-toolhub-test-deploy]', 'File[/etc/kubernetes/pki/dse__opensearch-toolhub-test-deploy.chain.pem]', 'File[/etc/kubernetes/pki/dse__opensearch-toolhub-test-deploy.pem]']\n"}, {"resource": "K8s::Kubeconfig[/etc/kubernetes/opensearch-toolhub-deploy-dse-k8s-codfw.config]", "parameters": "--- K8s::Kubeconfig[/etc/kubernetes/opensearch-toolhub-deploy-dse-k8s-codfw.config].orig\n+++ K8s::Kubeconfig[/etc/kubernetes/opensearch-toolhub-deploy-dse-k8s-codfw.config]\n\n+    ensure      => present\n+    owner       => mwdeploy\n+    auth_cert   => {'cert': '/etc/kubernetes/pki/dse__opensearch-toolhub-deploy.pem', 'key': '/etc/kubernetes/pki/dse__opensearch-toolhub-deploy-key.pem', 'chain': '/etc/kubernetes/pki/dse__opensearch-toolhub-deploy.chain.pem', 'chained': '/etc/kubernetes/pki/dse__opensearch-toolhub-deploy.chained.pem'}\n+    group       => deployment\n+    mode        => 0640\n+    master_host => dse-k8s-ctrl.svc.codfw.wmnet\n+    username    => opensearch-toolhub-deploy\n+    namespace   => opensearch-toolhub\n+    require     => ['Class[K8s::Base_dirs]']\n"}, {"resource": "Cfssl::Cert[dse__opensearch-ttmserver-test]", "parameters": "--- Cfssl::Cert[dse__opensearch-ttmserver-test].orig\n+++ Cfssl::Cert[dse__opensearch-ttmserver-test]\n\n+    key             => {'algo': 'ecdsa', 'size': 256}\n+    ensure          => present\n+    owner           => mwdeploy\n+    renew_seconds   => 952200\n+    group           => deployment\n+    common_name     => opensearch-ttmserver-test\n+    mode            => 0740\n+    notify_services => []\n+    label           => dse\n+    environment     => ['GODEBUG=x509ignoreCN=0']\n+    auto_renew      => True\n+    outdir          => /etc/kubernetes/pki\n+    hosts           => []\n+    before_services => []\n+    names           => [{'organisation': 'view'}]\n+    provide_chain   => True\n"}, {"resource": "K8s::Kubeconfig[/etc/kubernetes/opensearch-toolhub-test-deploy-dse-k8s-eqiad.config]", "parameters": "--- K8s::Kubeconfig[/etc/kubernetes/opensearch-toolhub-test-deploy-dse-k8s-eqiad.config].orig\n+++ K8s::Kubeconfig[/etc/kubernetes/opensearch-toolhub-test-deploy-dse-k8s-eqiad.config]\n\n+    ensure      => present\n+    owner       => mwdeploy\n+    auth_cert   => {'cert': '/etc/kubernetes/pki/dse__opensearch-toolhub-test-deploy.pem', 'key': '/etc/kubernetes/pki/dse__opensearch-toolhub-test-deploy-key.pem', 'chain': '/etc/kubernetes/pki/dse__opensearch-toolhub-test-deploy.chain.pem', 'chained': '/etc/kubernetes/pki/dse__opensearch-toolhub-test-deploy.chained.pem'}\n+    group       => deployment\n+    mode        => 0640\n+    master_host => dse-k8s-ctrl.svc.eqiad.wmnet\n+    username    => opensearch-toolhub-test-deploy\n+    namespace   => opensearch-toolhub-test\n+    require     => ['Class[K8s::Base_dirs]']\n"}, {"resource": "Exec[Generate cert dse__opensearch-apifeatureusage-test refresh on intermediate ca change]", "parameters": "--- Exec[Generate cert dse__opensearch-apifeatureusage-test refresh on intermediate ca change].orig\n+++ Exec[Generate cert dse__opensearch-apifeatureusage-test refresh on intermediate ca change]\n\n+    environment => ['GODEBUG=x509ignoreCN=0']\n+    require     => Cfssl::Csr[/etc/cfssl/csr/dse__opensearch-apifeatureusage-test.csr]\n+    command     => /usr/bin/cfssl gencert -config /etc/cfssl/client-cfssl.conf -tls-remote-ca /etc/ssl/certs/wmf-ca-certificates.crt -mutual-tls-client-cert /etc/cfssl/mutual_tls_client_cert.pem -mutual-tls-client-key /var/lib/puppet/ssl/private_keys/deploy1003.eqiad.wmnet.pem -label dse  /etc/cfssl/csr/dse__opensearch-apifeatureusage-test.csr | /usr/bin/cfssljson -bare /etc/kubernetes/pki/dse__opensearch-apifeatureusage-test\n\n+    refreshonly => True\n+    subscribe   => File[/etc/kubernetes/pki/dse__opensearch-apifeatureusage-test.chain.pem]\n"}, {"resource": "Cfssl::Cert[dse__opensearch-toolhub]", "parameters": "--- Cfssl::Cert[dse__opensearch-toolhub].orig\n+++ Cfssl::Cert[dse__opensearch-toolhub]\n\n+    key             => {'algo': 'ecdsa', 'size': 256}\n+    ensure          => present\n+    owner           => mwdeploy\n+    renew_seconds   => 952200\n+    group           => deployment\n+    common_name     => opensearch-toolhub\n+    mode            => 0740\n+    notify_services => []\n+    label           => dse\n+    environment     => ['GODEBUG=x509ignoreCN=0']\n+    auto_renew      => True\n+    outdir          => /etc/kubernetes/pki\n+    hosts           => []\n+    before_services => []\n+    names           => [{'organisation': 'view'}]\n+    provide_chain   => True\n"}, {"resource": "Exec[Generate cert dse__opensearch-ttmserver-deploy refresh on intermediate ca change]", "parameters": "--- Exec[Generate cert dse__opensearch-ttmserver-deploy refresh on intermediate ca change].orig\n+++ Exec[Generate cert dse__opensearch-ttmserver-deploy refresh on intermediate ca change]\n\n+    environment => ['GODEBUG=x509ignoreCN=0']\n+    require     => Cfssl::Csr[/etc/cfssl/csr/dse__opensearch-ttmserver-deploy.csr]\n+    command     => /usr/bin/cfssl gencert -config /etc/cfssl/client-cfssl.conf -tls-remote-ca /etc/ssl/certs/wmf-ca-certificates.crt -mutual-tls-client-cert /etc/cfssl/mutual_tls_client_cert.pem -mutual-tls-client-key /var/lib/puppet/ssl/private_keys/deploy1003.eqiad.wmnet.pem -label dse  /etc/cfssl/csr/dse__opensearch-ttmserver-deploy.csr | /usr/bin/cfssljson -bare /etc/kubernetes/pki/dse__opensearch-ttmserver-deploy\n\n+    refreshonly => True\n+    subscribe   => File[/etc/kubernetes/pki/dse__opensearch-ttmserver-deploy.chain.pem]\n"}, {"resource": "File[/etc/cfssl/csr/dse__opensearch-toolhub.csr]", "content": "--- /etc/cfssl/csr/dse__opensearch-toolhub.csr.orig\n+++ /etc/cfssl/csr/dse__opensearch-toolhub.csr\n@@ -0,0 +1,19 @@\n+{\n+  \"CN\": \"opensearch-toolhub\",\n+  \"hosts\": [\n+    \"opensearch-toolhub\"\n+  ],\n+  \"key\": {\n+    \"algo\": \"ecdsa\",\n+    \"size\": 256\n+  },\n+  \"names\": [\n+    {\n+      \"C\": null,\n+      \"L\": null,\n+      \"O\": \"view\",\n+      \"OU\": null,\n+      \"S\": null\n+    }\n+  ]\n+}", "parameters": "--- File[/etc/cfssl/csr/dse__opensearch-toolhub.csr].orig\n+++ File[/etc/cfssl/csr/dse__opensearch-toolhub.csr]\n\n+    mode   => 0400\n+    owner  => root\n+    ensure => file\n+    group  => root\n"}, {"resource": "File[/etc/kubernetes/pki/dse__opensearch-ttmserver-test-key.pem]", "parameters": "--- File[/etc/kubernetes/pki/dse__opensearch-ttmserver-test-key.pem].orig\n+++ File[/etc/kubernetes/pki/dse__opensearch-ttmserver-test-key.pem]\n\n+    mode      => 0440\n+    ensure    => file\n+    show_diff => False\n+    owner     => mwdeploy\n+    backup    => False\n+    group     => deployment\n"}, {"resource": "File[/etc/kubernetes/opensearch-ttmserver-test-dse-k8s-codfw.config]", "content": "--- /etc/kubernetes/opensearch-ttmserver-test-dse-k8s-codfw.config.orig\n+++ /etc/kubernetes/opensearch-ttmserver-test-dse-k8s-codfw.config\n@@ -0,0 +1,19 @@\n+apiVersion: v1\n+kind: Config\n+preferences: {}\n+current-context: default-system\n+contexts:\n+- name: default-system\n+  context:\n+    cluster: default-cluster\n+    user: opensearch-ttmserver-test\n+    namespace: opensearch-ttmserver-test\n+clusters:\n+- name: default-cluster\n+  cluster:\n+    server: https://dse-k8s-ctrl.svc.codfw.wmnet:6443\n+users:\n+- name: opensearch-ttmserver-test\n+  user:\n+    client-certificate: /etc/kubernetes/pki/dse__opensearch-ttmserver-test.pem\n+    client-key: /etc/kubernetes/pki/dse__opensearch-ttmserver-test-key.pem", "parameters": "--- File[/etc/kubernetes/opensearch-ttmserver-test-dse-k8s-codfw.config].orig\n+++ File[/etc/kubernetes/opensearch-ttmserver-test-dse-k8s-codfw.config]\n\n+    mode   => 0640\n+    owner  => mwdeploy\n+    ensure => present\n+    group  => deployment\n"}, {"resource": "File[/etc/cfssl/csr/dse__opensearch-toolhub-test-deploy.csr]", "content": "--- /etc/cfssl/csr/dse__opensearch-toolhub-test-deploy.csr.orig\n+++ /etc/cfssl/csr/dse__opensearch-toolhub-test-deploy.csr\n@@ -0,0 +1,26 @@\n+{\n+  \"CN\": \"opensearch-toolhub-test-deploy\",\n+  \"hosts\": [\n+    \"opensearch-toolhub-test-deploy\"\n+  ],\n+  \"key\": {\n+    \"algo\": \"ecdsa\",\n+    \"size\": 256\n+  },\n+  \"names\": [\n+    {\n+      \"C\": null,\n+      \"L\": null,\n+      \"O\": \"view\",\n+      \"OU\": null,\n+      \"S\": null\n+    },\n+    {\n+      \"C\": null,\n+      \"L\": null,\n+      \"O\": \"deploy\",\n+      \"OU\": null,\n+      \"S\": null\n+    }\n+  ]\n+}", "parameters": "--- File[/etc/cfssl/csr/dse__opensearch-toolhub-test-deploy.csr].orig\n+++ File[/etc/cfssl/csr/dse__opensearch-toolhub-test-deploy.csr]\n\n+    mode   => 0400\n+    owner  => root\n+    ensure => file\n+    group  => root\n"}, {"resource": "K8s::Kubeconfig[/etc/kubernetes/opensearch-toolhub-deploy-dse-k8s-eqiad.config]", "parameters": "--- K8s::Kubeconfig[/etc/kubernetes/opensearch-toolhub-deploy-dse-k8s-eqiad.config].orig\n+++ K8s::Kubeconfig[/etc/kubernetes/opensearch-toolhub-deploy-dse-k8s-eqiad.config]\n\n+    ensure      => present\n+    owner       => mwdeploy\n+    auth_cert   => {'cert': '/etc/kubernetes/pki/dse__opensearch-toolhub-deploy.pem', 'key': '/etc/kubernetes/pki/dse__opensearch-toolhub-deploy-key.pem', 'chain': '/etc/kubernetes/pki/dse__opensearch-toolhub-deploy.chain.pem', 'chained': '/etc/kubernetes/pki/dse__opensearch-toolhub-deploy.chained.pem'}\n+    group       => deployment\n+    mode        => 0640\n+    master_host => dse-k8s-ctrl.svc.eqiad.wmnet\n+    username    => opensearch-toolhub-deploy\n+    namespace   => opensearch-toolhub\n+    require     => ['Class[K8s::Base_dirs]']\n"}, {"resource": "Exec[create chained cert /etc/kubernetes/pki/dse__opensearch-toolhub-deploy.chain.pem]", "parameters": "--- Exec[create chained cert /etc/kubernetes/pki/dse__opensearch-toolhub-deploy.chain.pem].orig\n+++ Exec[create chained cert /etc/kubernetes/pki/dse__opensearch-toolhub-deploy.chain.pem]\n\n+    unless    => /usr/bin/test \"$(/bin/cat /etc/kubernetes/pki/dse__opensearch-toolhub-deploy.pem /etc/kubernetes/pki/dse__opensearch-toolhub-deploy.chain.pem | sha512sum)\" == \"$(/bin/cat /etc/kubernetes/pki/dse__opensearch-toolhub-deploy.chained.pem | sha512sum)\"\n\n+    command   => /bin/cat /etc/kubernetes/pki/dse__opensearch-toolhub-deploy.pem /etc/kubernetes/pki/dse__opensearch-toolhub-deploy.chain.pem > /etc/kubernetes/pki/dse__opensearch-toolhub-deploy.chained.pem\n+    require   => Exec[Generate cert dse__opensearch-toolhub-deploy refresh on intermediate ca change]\n+    subscribe => ['Exec[renew certificate - dse__opensearch-toolhub-deploy]', 'File[/etc/kubernetes/pki/dse__opensearch-toolhub-deploy.chain.pem]', 'File[/etc/kubernetes/pki/dse__opensearch-toolhub-deploy.pem]']\n"}, {"resource": "File[/etc/kubernetes/pki/dse__opensearch-apifeatureusage.csr]", "parameters": "--- File[/etc/kubernetes/pki/dse__opensearch-apifeatureusage.csr].orig\n+++ File[/etc/kubernetes/pki/dse__opensearch-apifeatureusage.csr]\n\n+    mode   => 0440\n+    owner  => mwdeploy\n+    ensure => file\n+    group  => deployment\n"}, {"resource": "Cfssl::Cert[dse__opensearch-apifeatureusage-test]", "parameters": "--- Cfssl::Cert[dse__opensearch-apifeatureusage-test].orig\n+++ Cfssl::Cert[dse__opensearch-apifeatureusage-test]\n\n+    key             => {'algo': 'ecdsa', 'size': 256}\n+    ensure          => present\n+    owner           => mwdeploy\n+    renew_seconds   => 952200\n+    group           => deployment\n+    common_name     => opensearch-apifeatureusage-test\n+    mode            => 0740\n+    notify_services => []\n+    label           => dse\n+    environment     => ['GODEBUG=x509ignoreCN=0']\n+    auto_renew      => True\n+    outdir          => /etc/kubernetes/pki\n+    hosts           => []\n+    before_services => []\n+    names           => [{'organisation': 'view'}]\n+    provide_chain   => True\n"}, {"resource": "File[/etc/kubernetes/opensearch-apifeatureusage-test-dse-k8s-codfw.config]", "content": "--- /etc/kubernetes/opensearch-apifeatureusage-test-dse-k8s-codfw.config.orig\n+++ /etc/kubernetes/opensearch-apifeatureusage-test-dse-k8s-codfw.config\n@@ -0,0 +1,19 @@\n+apiVersion: v1\n+kind: Config\n+preferences: {}\n+current-context: default-system\n+contexts:\n+- name: default-system\n+  context:\n+    cluster: default-cluster\n+    user: opensearch-apifeatureusage-test\n+    namespace: opensearch-apifeatureusage-test\n+clusters:\n+- name: default-cluster\n+  cluster:\n+    server: https://dse-k8s-ctrl.svc.codfw.wmnet:6443\n+users:\n+- name: opensearch-apifeatureusage-test\n+  user:\n+    client-certificate: /etc/kubernetes/pki/dse__opensearch-apifeatureusage-test.pem\n+    client-key: /etc/kubernetes/pki/dse__opensearch-apifeatureusage-test-key.pem", "parameters": "--- File[/etc/kubernetes/opensearch-apifeatureusage-test-dse-k8s-codfw.config].orig\n+++ File[/etc/kubernetes/opensearch-apifeatureusage-test-dse-k8s-codfw.config]\n\n+    mode   => 0640\n+    owner  => mwdeploy\n+    ensure => present\n+    group  => deployment\n"}, {"resource": "Exec[create chained cert /etc/kubernetes/pki/dse__opensearch-ttmserver-deploy.chain.pem]", "parameters": "--- Exec[create chained cert /etc/kubernetes/pki/dse__opensearch-ttmserver-deploy.chain.pem].orig\n+++ Exec[create chained cert /etc/kubernetes/pki/dse__opensearch-ttmserver-deploy.chain.pem]\n\n+    unless    => /usr/bin/test \"$(/bin/cat /etc/kubernetes/pki/dse__opensearch-ttmserver-deploy.pem /etc/kubernetes/pki/dse__opensearch-ttmserver-deploy.chain.pem | sha512sum)\" == \"$(/bin/cat /etc/kubernetes/pki/dse__opensearch-ttmserver-deploy.chained.pem | sha512sum)\"\n\n+    command   => /bin/cat /etc/kubernetes/pki/dse__opensearch-ttmserver-deploy.pem /etc/kubernetes/pki/dse__opensearch-ttmserver-deploy.chain.pem > /etc/kubernetes/pki/dse__opensearch-ttmserver-deploy.chained.pem\n+    require   => Exec[Generate cert dse__opensearch-ttmserver-deploy refresh on intermediate ca change]\n+    subscribe => ['Exec[renew certificate - dse__opensearch-ttmserver-deploy]', 'File[/etc/kubernetes/pki/dse__opensearch-ttmserver-deploy.chain.pem]', 'File[/etc/kubernetes/pki/dse__opensearch-ttmserver-deploy.pem]']\n"}, {"resource": "K8s::Kubeconfig[/etc/kubernetes/opensearch-ttmserver-dse-k8s-eqiad.config]", "parameters": "--- K8s::Kubeconfig[/etc/kubernetes/opensearch-ttmserver-dse-k8s-eqiad.config].orig\n+++ K8s::Kubeconfig[/etc/kubernetes/opensearch-ttmserver-dse-k8s-eqiad.config]\n\n+    ensure      => present\n+    owner       => mwdeploy\n+    auth_cert   => {'cert': '/etc/kubernetes/pki/dse__opensearch-ttmserver.pem', 'key': '/etc/kubernetes/pki/dse__opensearch-ttmserver-key.pem', 'chain': '/etc/kubernetes/pki/dse__opensearch-ttmserver.chain.pem', 'chained': '/etc/kubernetes/pki/dse__opensearch-ttmserver.chained.pem'}\n+    group       => deployment\n+    mode        => 0640\n+    master_host => dse-k8s-ctrl.svc.eqiad.wmnet\n+    username    => opensearch-ttmserver\n+    namespace   => opensearch-ttmserver\n+    require     => ['Class[K8s::Base_dirs]']\n"}, {"resource": "Exec[create chained cert /etc/kubernetes/pki/dse__opensearch-toolhub-test.chain.pem]", "parameters": "--- Exec[create chained cert /etc/kubernetes/pki/dse__opensearch-toolhub-test.chain.pem].orig\n+++ Exec[create chained cert /etc/kubernetes/pki/dse__opensearch-toolhub-test.chain.pem]\n\n+    unless    => /usr/bin/test \"$(/bin/cat /etc/kubernetes/pki/dse__opensearch-toolhub-test.pem /etc/kubernetes/pki/dse__opensearch-toolhub-test.chain.pem | sha512sum)\" == \"$(/bin/cat /etc/kubernetes/pki/dse__opensearch-toolhub-test.chained.pem | sha512sum)\"\n\n+    command   => /bin/cat /etc/kubernetes/pki/dse__opensearch-toolhub-test.pem /etc/kubernetes/pki/dse__opensearch-toolhub-test.chain.pem > /etc/kubernetes/pki/dse__opensearch-toolhub-test.chained.pem\n+    require   => Exec[Generate cert dse__opensearch-toolhub-test refresh on intermediate ca change]\n+    subscribe => ['Exec[renew certificate - dse__opensearch-toolhub-test]', 'File[/etc/kubernetes/pki/dse__opensearch-toolhub-test.chain.pem]', 'File[/etc/kubernetes/pki/dse__opensearch-toolhub-test.pem]']\n"}, {"resource": "Exec[Generate cert dse__opensearch-ttmserver-test refresh]", "parameters": "--- Exec[Generate cert dse__opensearch-ttmserver-test refresh].orig\n+++ Exec[Generate cert dse__opensearch-ttmserver-test refresh]\n\n+    environment => ['GODEBUG=x509ignoreCN=0']\n+    command     => /usr/bin/cfssl gencert -config /etc/cfssl/client-cfssl.conf -tls-remote-ca /etc/ssl/certs/wmf-ca-certificates.crt -mutual-tls-client-cert /etc/cfssl/mutual_tls_client_cert.pem -mutual-tls-client-key /var/lib/puppet/ssl/private_keys/deploy1003.eqiad.wmnet.pem -label dse  /etc/cfssl/csr/dse__opensearch-ttmserver-test.csr | /usr/bin/cfssljson -bare /etc/kubernetes/pki/dse__opensearch-ttmserver-test\n\n+    refreshonly => True\n+    subscribe   => File[/etc/cfssl/csr/dse__opensearch-ttmserver-test.csr]\n"}, {"resource": "Exec[Generate cert dse__opensearch-ttmserver-deploy refresh]", "parameters": "--- Exec[Generate cert dse__opensearch-ttmserver-deploy refresh].orig\n+++ Exec[Generate cert dse__opensearch-ttmserver-deploy refresh]\n\n+    environment => ['GODEBUG=x509ignoreCN=0']\n+    command     => /usr/bin/cfssl gencert -config /etc/cfssl/client-cfssl.conf -tls-remote-ca /etc/ssl/certs/wmf-ca-certificates.crt -mutual-tls-client-cert /etc/cfssl/mutual_tls_client_cert.pem -mutual-tls-client-key /var/lib/puppet/ssl/private_keys/deploy1003.eqiad.wmnet.pem -label dse  /etc/cfssl/csr/dse__opensearch-ttmserver-deploy.csr | /usr/bin/cfssljson -bare /etc/kubernetes/pki/dse__opensearch-ttmserver-deploy\n\n+    refreshonly => True\n+    subscribe   => File[/etc/cfssl/csr/dse__opensearch-ttmserver-deploy.csr]\n"}, {"resource": "File[/etc/kubernetes/pki/dse__opensearch-toolhub-test-deploy.chain.pem]", "parameters": "--- File[/etc/kubernetes/pki/dse__opensearch-toolhub-test-deploy.chain.pem].orig\n+++ File[/etc/kubernetes/pki/dse__opensearch-toolhub-test-deploy.chain.pem]\n\n+    mode   => 0440\n+    ensure => file\n+    owner  => mwdeploy\n+    source => puppet:///modules/profile/pki/intermediates/dse-cert.pem\n+    group  => deployment\n"}, {"resource": "Exec[Generate cert dse__opensearch-apifeatureusage-test]", "parameters": "--- Exec[Generate cert dse__opensearch-apifeatureusage-test].orig\n+++ Exec[Generate cert dse__opensearch-apifeatureusage-test]\n\n+    environment => ['GODEBUG=x509ignoreCN=0']\n+    command     => /usr/bin/cfssl gencert -config /etc/cfssl/client-cfssl.conf -tls-remote-ca /etc/ssl/certs/wmf-ca-certificates.crt -mutual-tls-client-cert /etc/cfssl/mutual_tls_client_cert.pem -mutual-tls-client-key /var/lib/puppet/ssl/private_keys/deploy1003.eqiad.wmnet.pem -label dse  /etc/cfssl/csr/dse__opensearch-apifeatureusage-test.csr | /usr/bin/cfssljson -bare /etc/kubernetes/pki/dse__opensearch-apifeatureusage-test\n\n+    unless      => /usr/bin/test \"$(/usr/bin/openssl x509 -in /etc/kubernetes/pki/dse__opensearch-apifeatureusage-test.pem -noout -pubkey 2>&1)\" == \"$(/usr/bin/openssl pkey -pubout -in /etc/kubernetes/pki/dse__opensearch-apifeatureusage-test-key.pem 2>&1)\"\n\n+    require     => Cfssl::Csr[/etc/cfssl/csr/dse__opensearch-apifeatureusage-test.csr]\n"}, {"resource": "Exec[Generate cert dse__opensearch-apifeatureusage-test-deploy refresh on intermediate ca change]", "parameters": "--- Exec[Generate cert dse__opensearch-apifeatureusage-test-deploy refresh on intermediate ca change].orig\n+++ Exec[Generate cert dse__opensearch-apifeatureusage-test-deploy refresh on intermediate ca change]\n\n+    environment => ['GODEBUG=x509ignoreCN=0']\n+    require     => Cfssl::Csr[/etc/cfssl/csr/dse__opensearch-apifeatureusage-test-deploy.csr]\n+    command     => /usr/bin/cfssl gencert -config /etc/cfssl/client-cfssl.conf -tls-remote-ca /etc/ssl/certs/wmf-ca-certificates.crt -mutual-tls-client-cert /etc/cfssl/mutual_tls_client_cert.pem -mutual-tls-client-key /var/lib/puppet/ssl/private_keys/deploy1003.eqiad.wmnet.pem -label dse  /etc/cfssl/csr/dse__opensearch-apifeatureusage-test-deploy.csr | /usr/bin/cfssljson -bare /etc/kubernetes/pki/dse__opensearch-apifeatureusage-test-deploy\n\n+    refreshonly => True\n+    subscribe   => File[/etc/kubernetes/pki/dse__opensearch-apifeatureusage-test-deploy.chain.pem]\n"}, {"resource": "File[/etc/kubernetes/pki/dse__opensearch-apifeatureusage-test-deploy.pem]", "parameters": "--- File[/etc/kubernetes/pki/dse__opensearch-apifeatureusage-test-deploy.pem].orig\n+++ File[/etc/kubernetes/pki/dse__opensearch-apifeatureusage-test-deploy.pem]\n\n+    mode   => 0440\n+    owner  => mwdeploy\n+    ensure => file\n+    group  => deployment\n"}, {"resource": "File[/etc/cfssl/csr/dse__opensearch-ttmserver-test-deploy.csr]", "content": "--- /etc/cfssl/csr/dse__opensearch-ttmserver-test-deploy.csr.orig\n+++ /etc/cfssl/csr/dse__opensearch-ttmserver-test-deploy.csr\n@@ -0,0 +1,26 @@\n+{\n+  \"CN\": \"opensearch-ttmserver-test-deploy\",\n+  \"hosts\": [\n+    \"opensearch-ttmserver-test-deploy\"\n+  ],\n+  \"key\": {\n+    \"algo\": \"ecdsa\",\n+    \"size\": 256\n+  },\n+  \"names\": [\n+    {\n+      \"C\": null,\n+      \"L\": null,\n+      \"O\": \"view\",\n+      \"OU\": null,\n+      \"S\": null\n+    },\n+    {\n+      \"C\": null,\n+      \"L\": null,\n+      \"O\": \"deploy\",\n+      \"OU\": null,\n+      \"S\": null\n+    }\n+  ]\n+}", "parameters": "--- File[/etc/cfssl/csr/dse__opensearch-ttmserver-test-deploy.csr].orig\n+++ File[/etc/cfssl/csr/dse__opensearch-ttmserver-test-deploy.csr]\n\n+    mode   => 0400\n+    owner  => root\n+    ensure => file\n+    group  => root\n"}, {"resource": "Class[Profile::Kubernetes::Deployment_server]", "parameters": "--- Class[Profile::Kubernetes::Deployment_server].orig\n+++ Class[Profile::Kubernetes::Deployment_server]\n\n@@\n-    services => {'main': {'apertium': {'usernames': [{'name': 'apertium'}, {'name': 'apertium-deploy'}]}, 'api-gateway': {'usernames': [{'name': 'api-gateway'}, {'name': 'api-gateway-deploy'}]}, 'benthos-cache-invalidator': {'usernames': [{'name': 'benthos-cache-invalidator'}, {'name': 'benthos-cache-invalidator-deploy'}]}, 'changeprop': {'usernames': [{'name': 'changeprop'}, {'name': 'changeprop-deploy'}]}, 'changeprop-jobqueue': {'usernames': [{'name': 'changeprop-jobqueue'}, {'name': 'changeprop-jobqueue-deploy'}]}, 'chart-renderer': {'usernames': [{'name': 'chart-renderer'}, {'name': 'chart-renderer-deploy'}]}, 'cirrus-streaming-updater': {'usernames': [{'name': 'cirrus-streaming-updater'}, {'name': 'cirrus-streaming-updater-deploy'}]}, 'citoid': {'usernames': [{'name': 'citoid'}, {'name': 'citoid-deploy'}]}, 'commons-impact-analytics': {'usernames': [{'name': 'commons-impact-analytics'}, {'name': 'commons-impact-analytics-deploy'}]}, 'cxserver': {'usernames': [{'name': 'cxserver'}, {'name': 'cxserver-deploy'}]}, 'data-gateway': {'usernames': [{'name': 'data-gateway'}, {'name': 'data-gateway-deploy'}]}, 'developer-portal': {'usernames': [{'name': 'developer-portal'}, {'name': 'developer-portal-deploy'}]}, 'device-analytics': {'usernames': [{'name': 'device-analytics'}, {'name': 'device-analytics-deploy'}]}, 'echostore': {'usernames': [{'name': 'echostore'}, {'name': 'echostore-deploy'}]}, 'edit-analytics': {'usernames': [{'name': 'edit-analytics'}, {'name': 'edit-analytics-deploy'}]}, 'editor-analytics': {'usernames': [{'name': 'editor-analytics'}, {'name': 'editor-analytics-deploy'}]}, 'eventgate-analytics': {'usernames': [{'name': 'eventgate-analytics'}, {'name': 'eventgate-analytics-deploy'}]}, 'eventgate-analytics-external': {'usernames': [{'name': 'eventgate-analytics-external'}, {'name': 'eventgate-analytics-external-deploy'}]}, 'eventgate-logging-external': {'usernames': [{'name': 'eventgate-logging-external'}, {'name': 'eventgate-logging-external-deploy'}]}, 'eventgate-main': {'usernames': [{'name': 'eventgate-main'}, {'name': 'eventgate-main-deploy'}]}, 'eventstreams': {'usernames': [{'name': 'eventstreams'}, {'name': 'eventstreams-deploy'}]}, 'eventstreams-internal': {'usernames': [{'name': 'eventstreams-internal'}, {'name': 'eventstreams-internal-deploy'}]}, 'failoid-ng': {'usernames': [{'name': 'failoid-ng'}, {'name': 'failoid-ng-deploy'}]}, 'geo-analytics': {'usernames': [{'name': 'geo-analytics'}, {'name': 'geo-analytics-deploy'}]}, 'ipoid': {'usernames': [{'name': 'ipoid'}, {'name': 'ipoid-deploy'}]}, 'kartotherian': {'usernames': [{'name': 'kartotherian'}, {'name': 'kartotherian-deploy'}]}, 'linked-artifacts': {'usernames': [{'name': 'linked-artifacts'}, {'name': 'linked-artifacts-deploy'}]}, 'linkrecommendation': {'usernames': [{'name': 'linkrecommendation'}, {'name': 'linkrecommendation-deploy'}]}, 'machinetranslation': {'usernames': [{'name': 'machinetranslation'}, {'name': 'machinetranslation-deploy'}]}, 'mathoid': {'usernames': [{'name': 'mathoid'}, {'name': 'mathoid-deploy'}]}, 'media-analytics': {'usernames': [{'name': 'media-analytics'}, {'name': 'media-analytics-deploy'}]}, 'miscweb': {'usernames': [{'name': 'miscweb'}, {'name': 'miscweb-deploy'}]}, 'mobileapps': {'usernames': [{'name': 'mobileapps'}, {'name': 'mobileapps-deploy'}]}, 'mw-api-ext': {'usernames': [{'name': 'mw-api-ext'}, {'name': 'mw-api-ext-deploy'}]}, 'mw-api-int': {'usernames': [{'name': 'mw-api-int'}, {'name': 'mw-api-int-deploy'}]}, 'mw-cron': {'usernames': [{'name': 'mw-cron'}, {'name': 'mw-cron-deploy'}, {'group': 'restricted', 'name': 'mw-cron-restricted'}, {'group': 'restricted', 'name': 'mw-cron-restricted-deploy'}]}, 'mw-debug': {'usernames': [{'name': 'mw-debug'}, {'name': 'mw-debug-deploy'}]}, 'mw-experimental': {'usernames': [{'name': 'mw-experimental'}, {'name': 'mw-experimental-deploy'}]}, 'mw-jobrunner': {'usernames': [{'name': 'mw-jobrunner'}, {'name': 'mw-jobrunner-deploy'}]}, 'mw-mcrouter': {'usernames': [{'name': 'mw-mcrouter'}, {'name': 'mw-mcrouter-deploy'}]}, 'mw-misc': {'usernames': [{'name': 'mw-misc'}, {'name': 'mw-misc-deploy'}]}, 'mw-page-content-change-enrich': {'usernames': [{'name': 'mw-page-content-change-enrich'}, {'name': 'mw-page-content-change-enrich-deploy'}]}, 'mw-parsoid': {'usernames': [{'name': 'mw-parsoid'}, {'name': 'mw-parsoid-deploy'}]}, 'mw-script': {'usernames': [{'name': 'mw-script'}, {'name': 'mw-script-deploy'}, {'group': 'restricted', 'name': 'mw-script-restricted'}, {'group': 'restricted', 'name': 'mw-script-restricted-deploy'}]}, 'mw-videoscaler': {'usernames': [{'name': 'mw-videoscaler'}, {'name': 'mw-videoscaler-deploy'}]}, 'mw-web': {'usernames': [{'name': 'mw-web'}, {'name': 'mw-web-deploy'}]}, 'mw-wikifunctions': {'usernames': [{'name': 'mw-wikifunctions'}, {'name': 'mw-wikifunctions-deploy'}]}, 'opentelemetry-collector': {'usernames': [{'name': 'opentelemetry-collector'}, {'name': 'opentelemetry-collector-deploy'}]}, 'page-analytics': {'usernames': [{'name': 'page-analytics'}, {'name': 'page-analytics-deploy'}]}, 'proton': {'usernames': [{'name': 'proton'}, {'name': 'proton-deploy'}]}, 'push-notifications': {'usernames': [{'name': 'push-notifications'}, {'name': 'push-notifications-deploy'}]}, 'ratelimit': {'usernames': [{'name': 'ratelimit'}, {'name': 'ratelimit-deploy'}]}, 'ratelimit-media': {'usernames': [{'name': 'ratelimit-media'}, {'name': 'ratelimit-media-deploy'}]}, 'rdf-streaming-updater': {'usernames': [{'name': 'rdf-streaming-updater'}, {'name': 'rdf-streaming-updater-deploy'}]}, 'recommendation-api': {'usernames': [{'name': 'recommendation-api'}, {'name': 'recommendation-api-deploy'}]}, 'rest-gateway': {'usernames': [{'name': 'rest-gateway'}, {'name': 'rest-gateway-deploy'}]}, 'sessionstore': {'usernames': [{'name': 'sessionstore'}, {'name': 'sessionstore-deploy'}]}, 'shellbox': {'usernames': [{'name': 'shellbox'}, {'name': 'shellbox-deploy'}]}, 'shellbox-constraints': {'usernames': [{'name': 'shellbox-constraints'}, {'name': 'shellbox-constraints-deploy'}]}, 'shellbox-media': {'usernames': [{'name': 'shellbox-media'}, {'name': 'shellbox-media-deploy'}]}, 'shellbox-syntaxhighlight': {'usernames': [{'name': 'shellbox-syntaxhighlight'}, {'name': 'shellbox-syntaxhighlight-deploy'}]}, 'shellbox-timeline': {'usernames': [{'name': 'shellbox-timeline'}, {'name': 'shellbox-timeline-deploy'}]}, 'shellbox-video': {'usernames': [{'name': 'shellbox-video'}, {'name': 'shellbox-video-deploy'}]}, 'tegola-vector-tiles': {'usernames': [{'name': 'tegola-vector-tiles'}, {'name': 'tegola-vector-tiles-deploy'}]}, 'termbox': {'usernames': [{'name': 'termbox'}, {'name': 'termbox-deploy'}]}, 'thumbor': {'usernames': [{'name': 'thumbor'}, {'name': 'thumbor-deploy'}]}, 'toolhub': {'usernames': [{'name': 'toolhub'}, {'name': 'toolhub-deploy'}]}, 'wikidata-query-gui': {'usernames': [{'name': 'wikidata-query-gui'}, {'name': 'wikidata-query-gui-deploy'}]}, 'wikifeeds': {'usernames': [{'name': 'wikifeeds'}, {'name': 'wikifeeds-deploy'}]}, 'wikifunctions': {'usernames': [{'name': 'wikifunctions'}, {'name': 'wikifunctions-deploy'}]}, 'zotero': {'usernames': [{'name': 'zotero'}, {'name': 'zotero-deploy'}]}}, 'ml-serve': {'article-descriptions': {'usernames': [{'group': 'deploy-ml-service', 'name': 'article-descriptions', 'owner': 'root'}, {'group': 'deploy-ml-service', 'name': 'article-descriptions-deploy', 'owner': 'root'}]}, 'article-models': {'usernames': [{'group': 'deploy-ml-service', 'name': 'article-models', 'owner': 'root'}, {'group': 'deploy-ml-service', 'name': 'article-models-deploy', 'owner': 'root'}]}, 'articletopic-outlink': {'usernames': [{'group': 'deploy-ml-service', 'name': 'articletopic-outlink', 'owner': 'root'}, {'group': 'deploy-ml-service', 'name': 'articletopic-outlink-deploy', 'owner': 'root'}]}, 'edit-check': {'usernames': [{'group': 'deploy-ml-service', 'name': 'edit-check', 'owner': 'root'}, {'group': 'deploy-ml-service', 'name': 'edit-check-deploy', 'owner': 'root'}]}, 'experimental': {'usernames': [{'group': 'deploy-ml-service', 'name': 'experimental', 'owner': 'root'}, {'group': 'deploy-ml-service', 'name': 'experimental-deploy', 'owner': 'root'}, {'group': 'deploy-ml-service', 'name': 'experimental-debug', 'owner': 'root'}]}, 'llm': {'usernames': [{'group': 'deploy-ml-service', 'name': 'llm', 'owner': 'root'}, {'group': 'deploy-ml-service', 'name': 'llm-deploy', 'owner': 'root'}]}, 'logo-detection': {'usernames': [{'group': 'deploy-ml-service', 'name': 'logo-detection', 'owner': 'root'}, {'group': 'deploy-ml-service', 'name': 'logo-detection-deploy', 'owner': 'root'}]}, 'ores-legacy': {'usernames': [{'group': 'deploy-ml-service', 'name': 'ores-legacy', 'owner': 'root'}, {'group': 'deploy-ml-service', 'name': 'ores-legacy-deploy', 'owner': 'root'}]}, 'readability': {'usernames': [{'group': 'deploy-ml-service', 'name': 'readability', 'owner': 'root'}, {'group': 'deploy-ml-service', 'name': 'readability-deploy', 'owner': 'root'}]}, 'recommendation-api-ng': {'usernames': [{'group': 'deploy-ml-service', 'name': 'recommendation-api-ng', 'owner': 'root'}, {'group': 'deploy-ml-service', 'name': 'recommendation-api-ng-deploy', 'owner': 'root'}]}, 'revertrisk': {'usernames': [{'group': 'deploy-ml-service', 'name': 'revertrisk', 'owner': 'root'}, {'group': 'deploy-ml-service', 'name': 'revertrisk-deploy', 'owner': 'root'}]}, 'revise-tone-task-generator': {'usernames': [{'group': 'deploy-ml-service', 'name': 'revise-tone-task-generator', 'owner': 'root'}, {'group': 'deploy-ml-service', 'name': 'revise-tone-task-generator-deploy', 'owner': 'root'}]}, 'revision-models': {'usernames': [{'group': 'deploy-ml-service', 'name': 'revision-models', 'owner': 'root'}, {'group': 'deploy-ml-service', 'name': 'revision-models-deploy', 'owner': 'root'}]}, 'revscoring-articlequality': {'usernames': [{'group': 'deploy-ml-service', 'name': 'revscoring-articlequality', 'owner': 'root'}, {'group': 'deploy-ml-service', 'name': 'revscoring-articlequality-deploy', 'owner': 'root'}]}, 'revscoring-articletopic': {'usernames': [{'group': 'deploy-ml-service', 'name': 'revscoring-articletopic', 'owner': 'root'}, {'group': 'deploy-ml-service', 'name': 'revscoring-articletopic-deploy', 'owner': 'root'}]}, 'revscoring-draftquality': {'usernames': [{'group': 'deploy-ml-service', 'name': 'revscoring-draftquality', 'owner': 'root'}, {'group': 'deploy-ml-service', 'name': 'revscoring-draftquality-deploy', 'owner': 'root'}]}, 'revscoring-drafttopic': {'usernames': [{'group': 'deploy-ml-service', 'name': 'revscoring-drafttopic', 'owner': 'root'}, {'group': 'deploy-ml-service', 'name': 'revscoring-drafttopic-deploy', 'owner': 'root'}]}, 'revscoring-editquality-damaging': {'usernames': [{'group': 'deploy-ml-service', 'name': 'revscoring-editquality-damaging', 'owner': 'root'}, {'group': 'deploy-ml-service', 'name': 'revscoring-editquality-damaging-deploy', 'owner': 'root'}]}, 'revscoring-editquality-goodfaith': {'usernames': [{'group': 'deploy-ml-service', 'name': 'revscoring-editquality-goodfaith', 'owner': 'root'}, {'group': 'deploy-ml-service', 'name': 'revscoring-editquality-goodfaith-deploy', 'owner': 'root'}]}, 'revscoring-editquality-reverted': {'usernames': [{'group': 'deploy-ml-service', 'name': 'revscoring-editquality-reverted', 'owner': 'root'}, {'group': 'deploy-ml-service', 'name': 'revscoring-editquality-reverted-deploy', 'owner': 'root'}]}}, 'dse-k8s': {'analytics': {'usernames': [{'group': 'analytics-deployers', 'name': 'analytics', 'owner': 'root'}, {'group': 'analytics-deployers', 'name': 'analytics-deploy', 'owner': 'root'}]}, 'analytics-test': {'usernames': [{'group': 'analytics-deployers', 'name': 'analytics-test', 'owner': 'root'}, {'group': 'analytics-deployers', 'name': 'analytics-test-deploy', 'owner': 'root'}]}, 'kafka-mirrormaker': {'usernames': [{'name': 'kafka-mirrormaker'}, {'name': 'kafka-mirrormaker-deploy'}]}, 'opensearch-ipoid': {'usernames': [{'name': 'opensearch-ipoid'}, {'name': 'opensearch-ipoid-deploy'}]}, 'opensearch-ipoid-test': {'usernames': [{'name': 'opensearch-ipoid-test'}, {'name': 'opensearch-ipoid-test-deploy'}]}, 'opensearch-operator': {'usernames': [{'name': 'opensearch-operator'}, {'name': 'opensearch-operator-deploy'}]}, 'opensearch-operator-3': {'usernames': [{'name': 'opensearch-operator-3'}, {'name': 'opensearch-operator-3-deploy'}]}, 'opensearch-semantic-search': {'usernames': [{'name': 'opensearch-semantic-search'}, {'name': 'opensearch-semantic-search-deploy'}]}, 'opensearch-semantic-search-test': {'usernames': [{'name': 'opensearch-semantic-search-test'}, {'name': 'opensearch-semantic-search-test-deploy'}]}, 'opensearch-test': {'usernames': [{'name': 'opensearch-test'}, {'name': 'opensearch-test-deploy'}]}}, 'dse-k8s-codfw': {'echoserver': {'usernames': [{'name': 'echoserver'}, {'name': 'echoserver-deploy'}]}}, 'dse-k8s-eqiad': {'airflow-analytics-product': {'private_files': {'group': 'airflow-deployers', 'mode': '0640', 'owner': 'root'}, 'usernames': [{'group': 'root', 'name': 'postgresql-airflow-analytics-product', 'owner': 'root'}, {'group': 'root', 'name': 'postgresql-airflow-analytics-product-deploy', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-analytics-product', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-analytics-product-deploy', 'owner': 'root'}]}, 'airflow-analytics-test': {'private_files': {'group': 'airflow-deployers', 'mode': '0640', 'owner': 'root'}, 'usernames': [{'group': 'root', 'name': 'postgresql-airflow-analytics-test', 'owner': 'root'}, {'group': 'root', 'name': 'postgresql-airflow-analytics-test-deploy', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-analytics-test', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-analytics-test-deploy', 'owner': 'root'}]}, 'airflow-dev': {'private_files': {'group': 'airflow-deployers', 'mode': '0640', 'owner': 'root'}, 'usernames': [{'group': 'root', 'name': 'postgresql-airflow-dev', 'owner': 'root'}, {'group': 'root', 'name': 'postgresql-airflow-dev-deploy', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-dev', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-dev-deploy', 'owner': 'root'}]}, 'airflow-fr-tech': {'private_files': {'group': 'airflow-deployers', 'mode': '0640', 'owner': 'root'}, 'usernames': [{'group': 'root', 'name': 'postgresql-airflow-fr-tech', 'owner': 'root'}, {'group': 'root', 'name': 'postgresql-airflow-fr-tech-deploy', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-fr-tech', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-fr-tech-deploy', 'owner': 'root'}]}, 'airflow-main': {'private_files': {'group': 'airflow-deployers', 'mode': '0640', 'owner': 'root'}, 'usernames': [{'group': 'root', 'name': 'postgresql-airflow-main', 'owner': 'root'}, {'group': 'root', 'name': 'postgresql-airflow-main-deploy', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-main', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-main-deploy', 'owner': 'root'}]}, 'airflow-ml': {'private_files': {'group': 'airflow-deployers', 'mode': '0640', 'owner': 'root'}, 'usernames': [{'group': 'root', 'name': 'postgresql-airflow-ml', 'owner': 'root'}, {'group': 'root', 'name': 'postgresql-airflow-ml-deploy', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-ml', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-ml-deploy', 'owner': 'root'}]}, 'airflow-platform-eng': {'private_files': {'group': 'airflow-deployers', 'mode': '0640', 'owner': 'root'}, 'usernames': [{'group': 'root', 'name': 'postgresql-airflow-platform-eng', 'owner': 'root'}, {'group': 'root', 'name': 'postgresql-airflow-platform-eng-deploy', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-platform-eng', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-platform-eng-deploy', 'owner': 'root'}]}, 'airflow-research': {'private_files': {'group': 'airflow-deployers', 'mode': '0640', 'owner': 'root'}, 'usernames': [{'group': 'root', 'name': 'postgresql-airflow-research', 'owner': 'root'}, {'group': 'root', 'name': 'postgresql-airflow-research-deploy', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-research', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-research-deploy', 'owner': 'root'}]}, 'airflow-search': {'private_files': {'group': 'airflow-deployers', 'mode': '0640', 'owner': 'root'}, 'usernames': [{'group': 'root', 'name': 'postgresql-airflow-search', 'owner': 'root'}, {'group': 'root', 'name': 'postgresql-airflow-search-deploy', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-search', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-search-deploy', 'owner': 'root'}]}, 'airflow-sre': {'private_files': {'group': 'ops', 'mode': '0640', 'owner': 'root'}, 'usernames': [{'group': 'root', 'name': 'postgresql-airflow-sre', 'owner': 'root'}, {'group': 'root', 'name': 'postgresql-airflow-sre-deploy', 'owner': 'root'}, {'group': 'ops', 'name': 'airflow-sre', 'owner': 'root'}, {'group': 'ops', 'name': 'airflow-sre-deploy', 'owner': 'root'}]}, 'airflow-test-k8s': {'private_files': {'group': 'airflow-deployers', 'mode': '0640', 'owner': 'root'}, 'usernames': [{'group': 'root', 'name': 'postgresql-airflow-test-k8s', 'owner': 'root'}, {'group': 'root', 'name': 'postgresql-airflow-test-k8s-deploy', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-test-k8s', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-test-k8s-deploy', 'owner': 'root'}]}, 'airflow-wikidata': {'private_files': {'group': 'airflow-deployers', 'mode': '0640', 'owner': 'root'}, 'usernames': [{'group': 'root', 'name': 'postgresql-airflow-wikidata', 'owner': 'root'}, {'group': 'root', 'name': 'postgresql-airflow-wikidata-deploy', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-wikidata', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-wikidata-deploy', 'owner': 'root'}]}, 'airflow-wmde': {'private_files': {'group': 'airflow-deployers', 'mode': '0640', 'owner': 'root'}, 'usernames': [{'group': 'root', 'name': 'postgresql-airflow-wmde', 'owner': 'root'}, {'group': 'root', 'name': 'postgresql-airflow-wmde-deploy', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-wmde', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-wmde-deploy', 'owner': 'root'}]}, 'blunderbuss': {'usernames': [{'name': 'blunderbuss'}, {'name': 'blunderbuss-deploy'}]}, 'datahub': {'usernames': [{'name': 'datahub'}, {'name': 'datahub-deploy'}]}, 'datahub-next': {'usernames': [{'name': 'datahub-next'}, {'name': 'datahub-next-deploy'}]}, 'datasets-config': {'usernames': [{'name': 'datasets-config'}, {'name': 'datasets-config-deploy'}]}, 'datasets-config-next': {'usernames': [{'name': 'datasets-config-next'}, {'name': 'datasets-config-next-deploy'}]}, 'growthbook': {'usernames': [{'group': 'root', 'name': 'postgresql-growthbook', 'owner': 'root'}, {'group': 'root', 'name': 'postgresql-growthbook-deploy', 'owner': 'root'}, {'name': 'growthbook'}, {'name': 'growthbook-deploy'}]}, 'growthbook-next': {'usernames': [{'group': 'root', 'name': 'postgresql-growthbook-next', 'owner': 'root'}, {'group': 'root', 'name': 'postgresql-growthbook-next-deploy', 'owner': 'root'}, {'name': 'growthbook-next'}, {'name': 'growthbook-next-deploy'}]}, 'llm-inference': {'usernames': [{'group': 'research-deployers', 'name': 'llm-inference', 'owner': 'root'}, {'group': 'research-deployers', 'name': 'llm-inference-deploy', 'owner': 'root'}]}, 'mediawiki-dumps-legacy': {'usernames': [{'name': 'mediawiki-dumps-legacy'}, {'name': 'mediawiki-dumps-legacy-deploy'}]}, 'mw-content-history-reconcile-enrich': {'usernames': [{'name': 'mw-content-history-reconcile-enrich'}, {'name': 'mw-content-history-reconcile-enrich-deploy'}]}, 'mw-content-history-reconcile-enrich-next': {'usernames': [{'name': 'mw-content-history-reconcile-enrich-next'}, {'name': 'mw-content-history-reconcile-enrich-next-deploy'}]}, 'mw-dump-rev-content-reconcile-enrich': {'usernames': [{'name': 'mw-dump-rev-content-reconcile-enrich'}, {'name': 'mw-dump-rev-content-reconcile-enrich-deploy'}]}, 'mw-dump-rev-content-reconcile-enrich-next': {'usernames': [{'name': 'mw-dump-rev-content-reconcile-enrich-next'}, {'name': 'mw-dump-rev-content-reconcile-enrich-next-deploy'}]}, 'mw-page-html-content-change-enrich': {'usernames': [{'name': 'mw-page-html-content-change-enrich'}, {'name': 'mw-page-html-content-change-enrich-deploy'}]}, 'mw-page-html-content-change-enrich-next': {'usernames': [{'name': 'mw-page-html-content-change-enrich-next'}, {'name': 'mw-page-html-content-change-enrich-next-deploy'}]}, 'mw-page-html-feature-counts-change-enrich': {'usernames': [{'name': 'mw-page-html-feature-counts-change-enrich'}, {'name': 'mw-page-html-feature-counts-change-enrich-deploy'}]}, 'mw-page-html-feature-counts-change-enrich-next': {'usernames': [{'name': 'mw-page-html-feature-counts-change-enrich-next'}, {'name': 'mw-page-html-feature-counts-change-enrich-next-deploy'}]}, 'rdf-streaming-updater': {'usernames': [{'name': 'rdf-streaming-updater'}, {'name': 'rdf-streaming-updater-deploy'}]}, 'spark': {'usernames': [{'name': 'spark'}, {'name': 'spark-deploy'}]}, 'spark-history': {'usernames': [{'group': 'analytics-deployers', 'name': 'spark-history', 'owner': 'root'}, {'group': 'analytics-deployers', 'name': 'spark-history-deploy', 'owner': 'root'}]}, 'spark-history-test': {'usernames': [{'group': 'analytics-deployers', 'name': 'spark-history-test', 'owner': 'root'}, {'group': 'analytics-deployers', 'name': 'spark-history-test-deploy', 'owner': 'root'}]}, 'superset': {'usernames': [{'group': 'analytics-deployers', 'name': 'superset', 'owner': 'root'}, {'group': 'analytics-deployers', 'name': 'superset-deploy', 'owner': 'root'}]}, 'superset-next': {'usernames': [{'group': 'analytics-deployers', 'name': 'superset-next', 'owner': 'root'}, {'group': 'analytics-deployers', 'name': 'superset-next-deploy', 'owner': 'root'}]}, 'test-kitchen': {'usernames': [{'name': 'test-kitchen'}, {'name': 'test-kitchen-deploy'}]}, 'test-kitchen-next': {'usernames': [{'name': 'test-kitchen-next'}, {'name': 'test-kitchen-next-deploy'}]}, 'turnilo': {'usernames': [{'name': 'turnilo'}, {'name': 'turnilo-deploy'}]}, 'turnilo-next': {'usernames': [{'name': 'turnilo-next'}, {'name': 'turnilo-next-deploy'}]}, 'wdqs-queryhammer': {'usernames': [{'name': 'wdqs-queryhammer'}, {'name': 'wdqs-queryhammer-deploy'}]}}, 'aux-k8s': {'codesearch': {'usernames': [{'name': 'codesearch'}, {'name': 'codesearch-deploy'}]}, 'jaeger': {'usernames': [{'name': 'jaeger'}, {'name': 'jaeger-deploy'}]}, 'kafka-mirrormaker': {'usernames': [{'name': 'kafka-mirrormaker'}, {'name': 'kafka-mirrormaker-deploy'}]}, 'miscweb': {'usernames': [{'name': 'miscweb'}, {'name': 'miscweb-deploy'}]}, 'redioscope': {'usernames': [{'name': 'redioscope'}, {'name': 'redioscope-deploy'}]}, 'sophroid': {'usernames': [{'name': 'sophroid'}, {'name': 'sophroid-deploy'}]}, 'zarcillo': {'usernames': [{'name': 'zarcillo'}, {'name': 'zarcillo-deploy'}]}}}\n+    services => {'main': {'apertium': {'usernames': [{'name': 'apertium'}, {'name': 'apertium-deploy'}]}, 'api-gateway': {'usernames': [{'name': 'api-gateway'}, {'name': 'api-gateway-deploy'}]}, 'benthos-cache-invalidator': {'usernames': [{'name': 'benthos-cache-invalidator'}, {'name': 'benthos-cache-invalidator-deploy'}]}, 'changeprop': {'usernames': [{'name': 'changeprop'}, {'name': 'changeprop-deploy'}]}, 'changeprop-jobqueue': {'usernames': [{'name': 'changeprop-jobqueue'}, {'name': 'changeprop-jobqueue-deploy'}]}, 'chart-renderer': {'usernames': [{'name': 'chart-renderer'}, {'name': 'chart-renderer-deploy'}]}, 'cirrus-streaming-updater': {'usernames': [{'name': 'cirrus-streaming-updater'}, {'name': 'cirrus-streaming-updater-deploy'}]}, 'citoid': {'usernames': [{'name': 'citoid'}, {'name': 'citoid-deploy'}]}, 'commons-impact-analytics': {'usernames': [{'name': 'commons-impact-analytics'}, {'name': 'commons-impact-analytics-deploy'}]}, 'cxserver': {'usernames': [{'name': 'cxserver'}, {'name': 'cxserver-deploy'}]}, 'data-gateway': {'usernames': [{'name': 'data-gateway'}, {'name': 'data-gateway-deploy'}]}, 'developer-portal': {'usernames': [{'name': 'developer-portal'}, {'name': 'developer-portal-deploy'}]}, 'device-analytics': {'usernames': [{'name': 'device-analytics'}, {'name': 'device-analytics-deploy'}]}, 'echostore': {'usernames': [{'name': 'echostore'}, {'name': 'echostore-deploy'}]}, 'edit-analytics': {'usernames': [{'name': 'edit-analytics'}, {'name': 'edit-analytics-deploy'}]}, 'editor-analytics': {'usernames': [{'name': 'editor-analytics'}, {'name': 'editor-analytics-deploy'}]}, 'eventgate-analytics': {'usernames': [{'name': 'eventgate-analytics'}, {'name': 'eventgate-analytics-deploy'}]}, 'eventgate-analytics-external': {'usernames': [{'name': 'eventgate-analytics-external'}, {'name': 'eventgate-analytics-external-deploy'}]}, 'eventgate-logging-external': {'usernames': [{'name': 'eventgate-logging-external'}, {'name': 'eventgate-logging-external-deploy'}]}, 'eventgate-main': {'usernames': [{'name': 'eventgate-main'}, {'name': 'eventgate-main-deploy'}]}, 'eventstreams': {'usernames': [{'name': 'eventstreams'}, {'name': 'eventstreams-deploy'}]}, 'eventstreams-internal': {'usernames': [{'name': 'eventstreams-internal'}, {'name': 'eventstreams-internal-deploy'}]}, 'failoid-ng': {'usernames': [{'name': 'failoid-ng'}, {'name': 'failoid-ng-deploy'}]}, 'geo-analytics': {'usernames': [{'name': 'geo-analytics'}, {'name': 'geo-analytics-deploy'}]}, 'ipoid': {'usernames': [{'name': 'ipoid'}, {'name': 'ipoid-deploy'}]}, 'kartotherian': {'usernames': [{'name': 'kartotherian'}, {'name': 'kartotherian-deploy'}]}, 'linked-artifacts': {'usernames': [{'name': 'linked-artifacts'}, {'name': 'linked-artifacts-deploy'}]}, 'linkrecommendation': {'usernames': [{'name': 'linkrecommendation'}, {'name': 'linkrecommendation-deploy'}]}, 'machinetranslation': {'usernames': [{'name': 'machinetranslation'}, {'name': 'machinetranslation-deploy'}]}, 'mathoid': {'usernames': [{'name': 'mathoid'}, {'name': 'mathoid-deploy'}]}, 'media-analytics': {'usernames': [{'name': 'media-analytics'}, {'name': 'media-analytics-deploy'}]}, 'miscweb': {'usernames': [{'name': 'miscweb'}, {'name': 'miscweb-deploy'}]}, 'mobileapps': {'usernames': [{'name': 'mobileapps'}, {'name': 'mobileapps-deploy'}]}, 'mw-api-ext': {'usernames': [{'name': 'mw-api-ext'}, {'name': 'mw-api-ext-deploy'}]}, 'mw-api-int': {'usernames': [{'name': 'mw-api-int'}, {'name': 'mw-api-int-deploy'}]}, 'mw-cron': {'usernames': [{'name': 'mw-cron'}, {'name': 'mw-cron-deploy'}, {'group': 'restricted', 'name': 'mw-cron-restricted'}, {'group': 'restricted', 'name': 'mw-cron-restricted-deploy'}]}, 'mw-debug': {'usernames': [{'name': 'mw-debug'}, {'name': 'mw-debug-deploy'}]}, 'mw-experimental': {'usernames': [{'name': 'mw-experimental'}, {'name': 'mw-experimental-deploy'}]}, 'mw-jobrunner': {'usernames': [{'name': 'mw-jobrunner'}, {'name': 'mw-jobrunner-deploy'}]}, 'mw-mcrouter': {'usernames': [{'name': 'mw-mcrouter'}, {'name': 'mw-mcrouter-deploy'}]}, 'mw-misc': {'usernames': [{'name': 'mw-misc'}, {'name': 'mw-misc-deploy'}]}, 'mw-page-content-change-enrich': {'usernames': [{'name': 'mw-page-content-change-enrich'}, {'name': 'mw-page-content-change-enrich-deploy'}]}, 'mw-parsoid': {'usernames': [{'name': 'mw-parsoid'}, {'name': 'mw-parsoid-deploy'}]}, 'mw-script': {'usernames': [{'name': 'mw-script'}, {'name': 'mw-script-deploy'}, {'group': 'restricted', 'name': 'mw-script-restricted'}, {'group': 'restricted', 'name': 'mw-script-restricted-deploy'}]}, 'mw-videoscaler': {'usernames': [{'name': 'mw-videoscaler'}, {'name': 'mw-videoscaler-deploy'}]}, 'mw-web': {'usernames': [{'name': 'mw-web'}, {'name': 'mw-web-deploy'}]}, 'mw-wikifunctions': {'usernames': [{'name': 'mw-wikifunctions'}, {'name': 'mw-wikifunctions-deploy'}]}, 'opentelemetry-collector': {'usernames': [{'name': 'opentelemetry-collector'}, {'name': 'opentelemetry-collector-deploy'}]}, 'page-analytics': {'usernames': [{'name': 'page-analytics'}, {'name': 'page-analytics-deploy'}]}, 'proton': {'usernames': [{'name': 'proton'}, {'name': 'proton-deploy'}]}, 'push-notifications': {'usernames': [{'name': 'push-notifications'}, {'name': 'push-notifications-deploy'}]}, 'ratelimit': {'usernames': [{'name': 'ratelimit'}, {'name': 'ratelimit-deploy'}]}, 'ratelimit-media': {'usernames': [{'name': 'ratelimit-media'}, {'name': 'ratelimit-media-deploy'}]}, 'rdf-streaming-updater': {'usernames': [{'name': 'rdf-streaming-updater'}, {'name': 'rdf-streaming-updater-deploy'}]}, 'recommendation-api': {'usernames': [{'name': 'recommendation-api'}, {'name': 'recommendation-api-deploy'}]}, 'rest-gateway': {'usernames': [{'name': 'rest-gateway'}, {'name': 'rest-gateway-deploy'}]}, 'sessionstore': {'usernames': [{'name': 'sessionstore'}, {'name': 'sessionstore-deploy'}]}, 'shellbox': {'usernames': [{'name': 'shellbox'}, {'name': 'shellbox-deploy'}]}, 'shellbox-constraints': {'usernames': [{'name': 'shellbox-constraints'}, {'name': 'shellbox-constraints-deploy'}]}, 'shellbox-media': {'usernames': [{'name': 'shellbox-media'}, {'name': 'shellbox-media-deploy'}]}, 'shellbox-syntaxhighlight': {'usernames': [{'name': 'shellbox-syntaxhighlight'}, {'name': 'shellbox-syntaxhighlight-deploy'}]}, 'shellbox-timeline': {'usernames': [{'name': 'shellbox-timeline'}, {'name': 'shellbox-timeline-deploy'}]}, 'shellbox-video': {'usernames': [{'name': 'shellbox-video'}, {'name': 'shellbox-video-deploy'}]}, 'tegola-vector-tiles': {'usernames': [{'name': 'tegola-vector-tiles'}, {'name': 'tegola-vector-tiles-deploy'}]}, 'termbox': {'usernames': [{'name': 'termbox'}, {'name': 'termbox-deploy'}]}, 'thumbor': {'usernames': [{'name': 'thumbor'}, {'name': 'thumbor-deploy'}]}, 'toolhub': {'usernames': [{'name': 'toolhub'}, {'name': 'toolhub-deploy'}]}, 'wikidata-query-gui': {'usernames': [{'name': 'wikidata-query-gui'}, {'name': 'wikidata-query-gui-deploy'}]}, 'wikifeeds': {'usernames': [{'name': 'wikifeeds'}, {'name': 'wikifeeds-deploy'}]}, 'wikifunctions': {'usernames': [{'name': 'wikifunctions'}, {'name': 'wikifunctions-deploy'}]}, 'zotero': {'usernames': [{'name': 'zotero'}, {'name': 'zotero-deploy'}]}}, 'ml-serve': {'article-descriptions': {'usernames': [{'group': 'deploy-ml-service', 'name': 'article-descriptions', 'owner': 'root'}, {'group': 'deploy-ml-service', 'name': 'article-descriptions-deploy', 'owner': 'root'}]}, 'article-models': {'usernames': [{'group': 'deploy-ml-service', 'name': 'article-models', 'owner': 'root'}, {'group': 'deploy-ml-service', 'name': 'article-models-deploy', 'owner': 'root'}]}, 'articletopic-outlink': {'usernames': [{'group': 'deploy-ml-service', 'name': 'articletopic-outlink', 'owner': 'root'}, {'group': 'deploy-ml-service', 'name': 'articletopic-outlink-deploy', 'owner': 'root'}]}, 'edit-check': {'usernames': [{'group': 'deploy-ml-service', 'name': 'edit-check', 'owner': 'root'}, {'group': 'deploy-ml-service', 'name': 'edit-check-deploy', 'owner': 'root'}]}, 'experimental': {'usernames': [{'group': 'deploy-ml-service', 'name': 'experimental', 'owner': 'root'}, {'group': 'deploy-ml-service', 'name': 'experimental-deploy', 'owner': 'root'}, {'group': 'deploy-ml-service', 'name': 'experimental-debug', 'owner': 'root'}]}, 'llm': {'usernames': [{'group': 'deploy-ml-service', 'name': 'llm', 'owner': 'root'}, {'group': 'deploy-ml-service', 'name': 'llm-deploy', 'owner': 'root'}]}, 'logo-detection': {'usernames': [{'group': 'deploy-ml-service', 'name': 'logo-detection', 'owner': 'root'}, {'group': 'deploy-ml-service', 'name': 'logo-detection-deploy', 'owner': 'root'}]}, 'ores-legacy': {'usernames': [{'group': 'deploy-ml-service', 'name': 'ores-legacy', 'owner': 'root'}, {'group': 'deploy-ml-service', 'name': 'ores-legacy-deploy', 'owner': 'root'}]}, 'readability': {'usernames': [{'group': 'deploy-ml-service', 'name': 'readability', 'owner': 'root'}, {'group': 'deploy-ml-service', 'name': 'readability-deploy', 'owner': 'root'}]}, 'recommendation-api-ng': {'usernames': [{'group': 'deploy-ml-service', 'name': 'recommendation-api-ng', 'owner': 'root'}, {'group': 'deploy-ml-service', 'name': 'recommendation-api-ng-deploy', 'owner': 'root'}]}, 'revertrisk': {'usernames': [{'group': 'deploy-ml-service', 'name': 'revertrisk', 'owner': 'root'}, {'group': 'deploy-ml-service', 'name': 'revertrisk-deploy', 'owner': 'root'}]}, 'revise-tone-task-generator': {'usernames': [{'group': 'deploy-ml-service', 'name': 'revise-tone-task-generator', 'owner': 'root'}, {'group': 'deploy-ml-service', 'name': 'revise-tone-task-generator-deploy', 'owner': 'root'}]}, 'revision-models': {'usernames': [{'group': 'deploy-ml-service', 'name': 'revision-models', 'owner': 'root'}, {'group': 'deploy-ml-service', 'name': 'revision-models-deploy', 'owner': 'root'}]}, 'revscoring-articlequality': {'usernames': [{'group': 'deploy-ml-service', 'name': 'revscoring-articlequality', 'owner': 'root'}, {'group': 'deploy-ml-service', 'name': 'revscoring-articlequality-deploy', 'owner': 'root'}]}, 'revscoring-articletopic': {'usernames': [{'group': 'deploy-ml-service', 'name': 'revscoring-articletopic', 'owner': 'root'}, {'group': 'deploy-ml-service', 'name': 'revscoring-articletopic-deploy', 'owner': 'root'}]}, 'revscoring-draftquality': {'usernames': [{'group': 'deploy-ml-service', 'name': 'revscoring-draftquality', 'owner': 'root'}, {'group': 'deploy-ml-service', 'name': 'revscoring-draftquality-deploy', 'owner': 'root'}]}, 'revscoring-drafttopic': {'usernames': [{'group': 'deploy-ml-service', 'name': 'revscoring-drafttopic', 'owner': 'root'}, {'group': 'deploy-ml-service', 'name': 'revscoring-drafttopic-deploy', 'owner': 'root'}]}, 'revscoring-editquality-damaging': {'usernames': [{'group': 'deploy-ml-service', 'name': 'revscoring-editquality-damaging', 'owner': 'root'}, {'group': 'deploy-ml-service', 'name': 'revscoring-editquality-damaging-deploy', 'owner': 'root'}]}, 'revscoring-editquality-goodfaith': {'usernames': [{'group': 'deploy-ml-service', 'name': 'revscoring-editquality-goodfaith', 'owner': 'root'}, {'group': 'deploy-ml-service', 'name': 'revscoring-editquality-goodfaith-deploy', 'owner': 'root'}]}, 'revscoring-editquality-reverted': {'usernames': [{'group': 'deploy-ml-service', 'name': 'revscoring-editquality-reverted', 'owner': 'root'}, {'group': 'deploy-ml-service', 'name': 'revscoring-editquality-reverted-deploy', 'owner': 'root'}]}}, 'dse-k8s': {'analytics': {'usernames': [{'group': 'analytics-deployers', 'name': 'analytics', 'owner': 'root'}, {'group': 'analytics-deployers', 'name': 'analytics-deploy', 'owner': 'root'}]}, 'analytics-test': {'usernames': [{'group': 'analytics-deployers', 'name': 'analytics-test', 'owner': 'root'}, {'group': 'analytics-deployers', 'name': 'analytics-test-deploy', 'owner': 'root'}]}, 'kafka-mirrormaker': {'usernames': [{'name': 'kafka-mirrormaker'}, {'name': 'kafka-mirrormaker-deploy'}]}, 'opensearch-ipoid': {'usernames': [{'name': 'opensearch-ipoid'}, {'name': 'opensearch-ipoid-deploy'}]}, 'opensearch-ipoid-test': {'usernames': [{'name': 'opensearch-ipoid-test'}, {'name': 'opensearch-ipoid-test-deploy'}]}, 'opensearch-operator': {'usernames': [{'name': 'opensearch-operator'}, {'name': 'opensearch-operator-deploy'}]}, 'opensearch-operator-3': {'usernames': [{'name': 'opensearch-operator-3'}, {'name': 'opensearch-operator-3-deploy'}]}, 'opensearch-semantic-search': {'usernames': [{'name': 'opensearch-semantic-search'}, {'name': 'opensearch-semantic-search-deploy'}]}, 'opensearch-semantic-search-test': {'usernames': [{'name': 'opensearch-semantic-search-test'}, {'name': 'opensearch-semantic-search-test-deploy'}]}, 'opensearch-test': {'usernames': [{'name': 'opensearch-test'}, {'name': 'opensearch-test-deploy'}]}, 'opensearch-toolhub': {'usernames': [{'name': 'opensearch-toolhub'}, {'name': 'opensearch-toolhub-deploy'}]}, 'opensearch-toolhub-test': {'usernames': [{'name': 'opensearch-toolhub-test'}, {'name': 'opensearch-toolhub-test-deploy'}]}, 'opensearch-apifeatureusage': {'usernames': [{'name': 'opensearch-apifeatureusage'}, {'name': 'opensearch-apifeatureusage-deploy'}]}, 'opensearch-apifeatureusage-test': {'usernames': [{'name': 'opensearch-apifeatureusage-test'}, {'name': 'opensearch-apifeatureusage-test-deploy'}]}, 'opensearch-ttmserver': {'usernames': [{'name': 'opensearch-ttmserver'}, {'name': 'opensearch-ttmserver-deploy'}]}, 'opensearch-ttmserver-test': {'usernames': [{'name': 'opensearch-ttmserver-test'}, {'name': 'opensearch-ttmserver-test-deploy'}]}}, 'dse-k8s-codfw': {'echoserver': {'usernames': [{'name': 'echoserver'}, {'name': 'echoserver-deploy'}]}}, 'dse-k8s-eqiad': {'airflow-analytics-product': {'private_files': {'group': 'airflow-deployers', 'mode': '0640', 'owner': 'root'}, 'usernames': [{'group': 'root', 'name': 'postgresql-airflow-analytics-product', 'owner': 'root'}, {'group': 'root', 'name': 'postgresql-airflow-analytics-product-deploy', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-analytics-product', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-analytics-product-deploy', 'owner': 'root'}]}, 'airflow-analytics-test': {'private_files': {'group': 'airflow-deployers', 'mode': '0640', 'owner': 'root'}, 'usernames': [{'group': 'root', 'name': 'postgresql-airflow-analytics-test', 'owner': 'root'}, {'group': 'root', 'name': 'postgresql-airflow-analytics-test-deploy', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-analytics-test', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-analytics-test-deploy', 'owner': 'root'}]}, 'airflow-dev': {'private_files': {'group': 'airflow-deployers', 'mode': '0640', 'owner': 'root'}, 'usernames': [{'group': 'root', 'name': 'postgresql-airflow-dev', 'owner': 'root'}, {'group': 'root', 'name': 'postgresql-airflow-dev-deploy', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-dev', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-dev-deploy', 'owner': 'root'}]}, 'airflow-fr-tech': {'private_files': {'group': 'airflow-deployers', 'mode': '0640', 'owner': 'root'}, 'usernames': [{'group': 'root', 'name': 'postgresql-airflow-fr-tech', 'owner': 'root'}, {'group': 'root', 'name': 'postgresql-airflow-fr-tech-deploy', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-fr-tech', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-fr-tech-deploy', 'owner': 'root'}]}, 'airflow-main': {'private_files': {'group': 'airflow-deployers', 'mode': '0640', 'owner': 'root'}, 'usernames': [{'group': 'root', 'name': 'postgresql-airflow-main', 'owner': 'root'}, {'group': 'root', 'name': 'postgresql-airflow-main-deploy', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-main', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-main-deploy', 'owner': 'root'}]}, 'airflow-ml': {'private_files': {'group': 'airflow-deployers', 'mode': '0640', 'owner': 'root'}, 'usernames': [{'group': 'root', 'name': 'postgresql-airflow-ml', 'owner': 'root'}, {'group': 'root', 'name': 'postgresql-airflow-ml-deploy', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-ml', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-ml-deploy', 'owner': 'root'}]}, 'airflow-platform-eng': {'private_files': {'group': 'airflow-deployers', 'mode': '0640', 'owner': 'root'}, 'usernames': [{'group': 'root', 'name': 'postgresql-airflow-platform-eng', 'owner': 'root'}, {'group': 'root', 'name': 'postgresql-airflow-platform-eng-deploy', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-platform-eng', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-platform-eng-deploy', 'owner': 'root'}]}, 'airflow-research': {'private_files': {'group': 'airflow-deployers', 'mode': '0640', 'owner': 'root'}, 'usernames': [{'group': 'root', 'name': 'postgresql-airflow-research', 'owner': 'root'}, {'group': 'root', 'name': 'postgresql-airflow-research-deploy', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-research', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-research-deploy', 'owner': 'root'}]}, 'airflow-search': {'private_files': {'group': 'airflow-deployers', 'mode': '0640', 'owner': 'root'}, 'usernames': [{'group': 'root', 'name': 'postgresql-airflow-search', 'owner': 'root'}, {'group': 'root', 'name': 'postgresql-airflow-search-deploy', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-search', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-search-deploy', 'owner': 'root'}]}, 'airflow-sre': {'private_files': {'group': 'ops', 'mode': '0640', 'owner': 'root'}, 'usernames': [{'group': 'root', 'name': 'postgresql-airflow-sre', 'owner': 'root'}, {'group': 'root', 'name': 'postgresql-airflow-sre-deploy', 'owner': 'root'}, {'group': 'ops', 'name': 'airflow-sre', 'owner': 'root'}, {'group': 'ops', 'name': 'airflow-sre-deploy', 'owner': 'root'}]}, 'airflow-test-k8s': {'private_files': {'group': 'airflow-deployers', 'mode': '0640', 'owner': 'root'}, 'usernames': [{'group': 'root', 'name': 'postgresql-airflow-test-k8s', 'owner': 'root'}, {'group': 'root', 'name': 'postgresql-airflow-test-k8s-deploy', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-test-k8s', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-test-k8s-deploy', 'owner': 'root'}]}, 'airflow-wikidata': {'private_files': {'group': 'airflow-deployers', 'mode': '0640', 'owner': 'root'}, 'usernames': [{'group': 'root', 'name': 'postgresql-airflow-wikidata', 'owner': 'root'}, {'group': 'root', 'name': 'postgresql-airflow-wikidata-deploy', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-wikidata', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-wikidata-deploy', 'owner': 'root'}]}, 'airflow-wmde': {'private_files': {'group': 'airflow-deployers', 'mode': '0640', 'owner': 'root'}, 'usernames': [{'group': 'root', 'name': 'postgresql-airflow-wmde', 'owner': 'root'}, {'group': 'root', 'name': 'postgresql-airflow-wmde-deploy', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-wmde', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-wmde-deploy', 'owner': 'root'}]}, 'blunderbuss': {'usernames': [{'name': 'blunderbuss'}, {'name': 'blunderbuss-deploy'}]}, 'datahub': {'usernames': [{'name': 'datahub'}, {'name': 'datahub-deploy'}]}, 'datahub-next': {'usernames': [{'name': 'datahub-next'}, {'name': 'datahub-next-deploy'}]}, 'datasets-config': {'usernames': [{'name': 'datasets-config'}, {'name': 'datasets-config-deploy'}]}, 'datasets-config-next': {'usernames': [{'name': 'datasets-config-next'}, {'name': 'datasets-config-next-deploy'}]}, 'growthbook': {'usernames': [{'group': 'root', 'name': 'postgresql-growthbook', 'owner': 'root'}, {'group': 'root', 'name': 'postgresql-growthbook-deploy', 'owner': 'root'}, {'name': 'growthbook'}, {'name': 'growthbook-deploy'}]}, 'growthbook-next': {'usernames': [{'group': 'root', 'name': 'postgresql-growthbook-next', 'owner': 'root'}, {'group': 'root', 'name': 'postgresql-growthbook-next-deploy', 'owner': 'root'}, {'name': 'growthbook-next'}, {'name': 'growthbook-next-deploy'}]}, 'llm-inference': {'usernames': [{'group': 'research-deployers', 'name': 'llm-inference', 'owner': 'root'}, {'group': 'research-deployers', 'name': 'llm-inference-deploy', 'owner': 'root'}]}, 'mediawiki-dumps-legacy': {'usernames': [{'name': 'mediawiki-dumps-legacy'}, {'name': 'mediawiki-dumps-legacy-deploy'}]}, 'mw-content-history-reconcile-enrich': {'usernames': [{'name': 'mw-content-history-reconcile-enrich'}, {'name': 'mw-content-history-reconcile-enrich-deploy'}]}, 'mw-content-history-reconcile-enrich-next': {'usernames': [{'name': 'mw-content-history-reconcile-enrich-next'}, {'name': 'mw-content-history-reconcile-enrich-next-deploy'}]}, 'mw-dump-rev-content-reconcile-enrich': {'usernames': [{'name': 'mw-dump-rev-content-reconcile-enrich'}, {'name': 'mw-dump-rev-content-reconcile-enrich-deploy'}]}, 'mw-dump-rev-content-reconcile-enrich-next': {'usernames': [{'name': 'mw-dump-rev-content-reconcile-enrich-next'}, {'name': 'mw-dump-rev-content-reconcile-enrich-next-deploy'}]}, 'mw-page-html-content-change-enrich': {'usernames': [{'name': 'mw-page-html-content-change-enrich'}, {'name': 'mw-page-html-content-change-enrich-deploy'}]}, 'mw-page-html-content-change-enrich-next': {'usernames': [{'name': 'mw-page-html-content-change-enrich-next'}, {'name': 'mw-page-html-content-change-enrich-next-deploy'}]}, 'mw-page-html-feature-counts-change-enrich': {'usernames': [{'name': 'mw-page-html-feature-counts-change-enrich'}, {'name': 'mw-page-html-feature-counts-change-enrich-deploy'}]}, 'mw-page-html-feature-counts-change-enrich-next': {'usernames': [{'name': 'mw-page-html-feature-counts-change-enrich-next'}, {'name': 'mw-page-html-feature-counts-change-enrich-next-deploy'}]}, 'rdf-streaming-updater': {'usernames': [{'name': 'rdf-streaming-updater'}, {'name': 'rdf-streaming-updater-deploy'}]}, 'spark': {'usernames': [{'name': 'spark'}, {'name': 'spark-deploy'}]}, 'spark-history': {'usernames': [{'group': 'analytics-deployers', 'name': 'spark-history', 'owner': 'root'}, {'group': 'analytics-deployers', 'name': 'spark-history-deploy', 'owner': 'root'}]}, 'spark-history-test': {'usernames': [{'group': 'analytics-deployers', 'name': 'spark-history-test', 'owner': 'root'}, {'group': 'analytics-deployers', 'name': 'spark-history-test-deploy', 'owner': 'root'}]}, 'superset': {'usernames': [{'group': 'analytics-deployers', 'name': 'superset', 'owner': 'root'}, {'group': 'analytics-deployers', 'name': 'superset-deploy', 'owner': 'root'}]}, 'superset-next': {'usernames': [{'group': 'analytics-deployers', 'name': 'superset-next', 'owner': 'root'}, {'group': 'analytics-deployers', 'name': 'superset-next-deploy', 'owner': 'root'}]}, 'test-kitchen': {'usernames': [{'name': 'test-kitchen'}, {'name': 'test-kitchen-deploy'}]}, 'test-kitchen-next': {'usernames': [{'name': 'test-kitchen-next'}, {'name': 'test-kitchen-next-deploy'}]}, 'turnilo': {'usernames': [{'name': 'turnilo'}, {'name': 'turnilo-deploy'}]}, 'turnilo-next': {'usernames': [{'name': 'turnilo-next'}, {'name': 'turnilo-next-deploy'}]}, 'wdqs-queryhammer': {'usernames': [{'name': 'wdqs-queryhammer'}, {'name': 'wdqs-queryhammer-deploy'}]}}, 'aux-k8s': {'codesearch': {'usernames': [{'name': 'codesearch'}, {'name': 'codesearch-deploy'}]}, 'jaeger': {'usernames': [{'name': 'jaeger'}, {'name': 'jaeger-deploy'}]}, 'kafka-mirrormaker': {'usernames': [{'name': 'kafka-mirrormaker'}, {'name': 'kafka-mirrormaker-deploy'}]}, 'miscweb': {'usernames': [{'name': 'miscweb'}, {'name': 'miscweb-deploy'}]}, 'redioscope': {'usernames': [{'name': 'redioscope'}, {'name': 'redioscope-deploy'}]}, 'sophroid': {'usernames': [{'name': 'sophroid'}, {'name': 'sophroid-deploy'}]}, 'zarcillo': {'usernames': [{'name': 'zarcillo'}, {'name': 'zarcillo-deploy'}]}}}\n"}, {"resource": "File[/etc/kubernetes/opensearch-toolhub-test-deploy-dse-k8s-eqiad.config]", "content": "--- /etc/kubernetes/opensearch-toolhub-test-deploy-dse-k8s-eqiad.config.orig\n+++ /etc/kubernetes/opensearch-toolhub-test-deploy-dse-k8s-eqiad.config\n@@ -0,0 +1,19 @@\n+apiVersion: v1\n+kind: Config\n+preferences: {}\n+current-context: default-system\n+contexts:\n+- name: default-system\n+  context:\n+    cluster: default-cluster\n+    user: opensearch-toolhub-test-deploy\n+    namespace: opensearch-toolhub-test\n+clusters:\n+- name: default-cluster\n+  cluster:\n+    server: https://dse-k8s-ctrl.svc.eqiad.wmnet:6443\n+users:\n+- name: opensearch-toolhub-test-deploy\n+  user:\n+    client-certificate: /etc/kubernetes/pki/dse__opensearch-toolhub-test-deploy.pem\n+    client-key: /etc/kubernetes/pki/dse__opensearch-toolhub-test-deploy-key.pem", "parameters": "--- File[/etc/kubernetes/opensearch-toolhub-test-deploy-dse-k8s-eqiad.config].orig\n+++ File[/etc/kubernetes/opensearch-toolhub-test-deploy-dse-k8s-eqiad.config]\n\n+    mode   => 0640\n+    owner  => mwdeploy\n+    ensure => present\n+    group  => deployment\n"}, {"resource": "Exec[renew certificate - dse__opensearch-toolhub-test]", "parameters": "--- Exec[renew certificate - dse__opensearch-toolhub-test].orig\n+++ Exec[renew certificate - dse__opensearch-toolhub-test]\n\n+    environment => ['GODEBUG=x509ignoreCN=0']\n+    command     => /usr/bin/cfssl sign -config /etc/cfssl/client-cfssl.conf -tls-remote-ca /etc/ssl/certs/wmf-ca-certificates.crt -mutual-tls-client-cert /etc/cfssl/mutual_tls_client_cert.pem -mutual-tls-client-key /var/lib/puppet/ssl/private_keys/deploy1003.eqiad.wmnet.pem -label dse  /etc/kubernetes/pki/dse__opensearch-toolhub-test.csr | /usr/bin/cfssljson -bare /etc/kubernetes/pki/dse__opensearch-toolhub-test\n\n+    unless      => /usr/bin/openssl x509 -in /etc/kubernetes/pki/dse__opensearch-toolhub-test.pem -checkend 952200\n+    require     => Exec[Generate cert dse__opensearch-toolhub-test]\n"}, {"resource": "Cfssl::Cert[dse__opensearch-toolhub-deploy]", "parameters": "--- Cfssl::Cert[dse__opensearch-toolhub-deploy].orig\n+++ Cfssl::Cert[dse__opensearch-toolhub-deploy]\n\n+    key             => {'algo': 'ecdsa', 'size': 256}\n+    ensure          => present\n+    owner           => mwdeploy\n+    renew_seconds   => 952200\n+    group           => deployment\n+    common_name     => opensearch-toolhub-deploy\n+    mode            => 0740\n+    notify_services => []\n+    label           => dse\n+    environment     => ['GODEBUG=x509ignoreCN=0']\n+    auto_renew      => True\n+    outdir          => /etc/kubernetes/pki\n+    hosts           => []\n+    before_services => []\n+    names           => [{'organisation': 'view'}, {'organisation': 'deploy'}]\n+    provide_chain   => True\n"}, {"resource": "File[/etc/kubernetes/opensearch-apifeatureusage-dse-k8s-codfw.config]", "content": "--- /etc/kubernetes/opensearch-apifeatureusage-dse-k8s-codfw.config.orig\n+++ /etc/kubernetes/opensearch-apifeatureusage-dse-k8s-codfw.config\n@@ -0,0 +1,19 @@\n+apiVersion: v1\n+kind: Config\n+preferences: {}\n+current-context: default-system\n+contexts:\n+- name: default-system\n+  context:\n+    cluster: default-cluster\n+    user: opensearch-apifeatureusage\n+    namespace: opensearch-apifeatureusage\n+clusters:\n+- name: default-cluster\n+  cluster:\n+    server: https://dse-k8s-ctrl.svc.codfw.wmnet:6443\n+users:\n+- name: opensearch-apifeatureusage\n+  user:\n+    client-certificate: /etc/kubernetes/pki/dse__opensearch-apifeatureusage.pem\n+    client-key: /etc/kubernetes/pki/dse__opensearch-apifeatureusage-key.pem", "parameters": "--- File[/etc/kubernetes/opensearch-apifeatureusage-dse-k8s-codfw.config].orig\n+++ File[/etc/kubernetes/opensearch-apifeatureusage-dse-k8s-codfw.config]\n\n+    mode   => 0640\n+    owner  => mwdeploy\n+    ensure => present\n+    group  => deployment\n"}, {"resource": "File[/etc/kubernetes/opensearch-ttmserver-dse-k8s-codfw.config]", "content": "--- /etc/kubernetes/opensearch-ttmserver-dse-k8s-codfw.config.orig\n+++ /etc/kubernetes/opensearch-ttmserver-dse-k8s-codfw.config\n@@ -0,0 +1,19 @@\n+apiVersion: v1\n+kind: Config\n+preferences: {}\n+current-context: default-system\n+contexts:\n+- name: default-system\n+  context:\n+    cluster: default-cluster\n+    user: opensearch-ttmserver\n+    namespace: opensearch-ttmserver\n+clusters:\n+- name: default-cluster\n+  cluster:\n+    server: https://dse-k8s-ctrl.svc.codfw.wmnet:6443\n+users:\n+- name: opensearch-ttmserver\n+  user:\n+    client-certificate: /etc/kubernetes/pki/dse__opensearch-ttmserver.pem\n+    client-key: /etc/kubernetes/pki/dse__opensearch-ttmserver-key.pem", "parameters": "--- File[/etc/kubernetes/opensearch-ttmserver-dse-k8s-codfw.config].orig\n+++ File[/etc/kubernetes/opensearch-ttmserver-dse-k8s-codfw.config]\n\n+    mode   => 0640\n+    owner  => mwdeploy\n+    ensure => present\n+    group  => deployment\n"}, {"resource": "Cfssl::Csr[/etc/cfssl/csr/dse__opensearch-toolhub.csr]", "parameters": "--- Cfssl::Csr[/etc/cfssl/csr/dse__opensearch-toolhub.csr].orig\n+++ Cfssl::Csr[/etc/cfssl/csr/dse__opensearch-toolhub.csr]\n\n+    key         => {'algo': 'ecdsa', 'size': 256}\n+    common_name => opensearch-toolhub\n+    names       => [{'organisation': 'view'}]\n+    ensure      => present\n+    hosts       => []\n"}, {"resource": "File[/etc/kubernetes/pki/dse__opensearch-ttmserver.pem]", "parameters": "--- File[/etc/kubernetes/pki/dse__opensearch-ttmserver.pem].orig\n+++ File[/etc/kubernetes/pki/dse__opensearch-ttmserver.pem]\n\n+    mode   => 0440\n+    owner  => mwdeploy\n+    ensure => file\n+    group  => deployment\n"}, {"resource": "Exec[renew certificate - dse__opensearch-ttmserver]", "parameters": "--- Exec[renew certificate - dse__opensearch-ttmserver].orig\n+++ Exec[renew certificate - dse__opensearch-ttmserver]\n\n+    environment => ['GODEBUG=x509ignoreCN=0']\n+    command     => /usr/bin/cfssl sign -config /etc/cfssl/client-cfssl.conf -tls-remote-ca /etc/ssl/certs/wmf-ca-certificates.crt -mutual-tls-client-cert /etc/cfssl/mutual_tls_client_cert.pem -mutual-tls-client-key /var/lib/puppet/ssl/private_keys/deploy1003.eqiad.wmnet.pem -label dse  /etc/kubernetes/pki/dse__opensearch-ttmserver.csr | /usr/bin/cfssljson -bare /etc/kubernetes/pki/dse__opensearch-ttmserver\n\n+    unless      => /usr/bin/openssl x509 -in /etc/kubernetes/pki/dse__opensearch-ttmserver.pem -checkend 952200\n+    require     => Exec[Generate cert dse__opensearch-ttmserver]\n"}, {"resource": "File[/etc/kubernetes/pki/dse__opensearch-ttmserver.chained.pem]", "parameters": "--- File[/etc/kubernetes/pki/dse__opensearch-ttmserver.chained.pem].orig\n+++ File[/etc/kubernetes/pki/dse__opensearch-ttmserver.chained.pem]\n\n+    require => Exec[create chained cert /etc/kubernetes/pki/dse__opensearch-ttmserver.chain.pem]\n+    owner   => mwdeploy\n+    ensure  => file\n+    group   => deployment\n"}, {"resource": "Cfssl::Csr[/etc/cfssl/csr/dse__opensearch-apifeatureusage.csr]", "parameters": "--- Cfssl::Csr[/etc/cfssl/csr/dse__opensearch-apifeatureusage.csr].orig\n+++ Cfssl::Csr[/etc/cfssl/csr/dse__opensearch-apifeatureusage.csr]\n\n+    key         => {'algo': 'ecdsa', 'size': 256}\n+    common_name => opensearch-apifeatureusage\n+    names       => [{'organisation': 'view'}]\n+    ensure      => present\n+    hosts       => []\n"}, {"resource": "K8s::Kubeconfig[/etc/kubernetes/opensearch-apifeatureusage-test-deploy-dse-k8s-codfw.config]", "parameters": "--- K8s::Kubeconfig[/etc/kubernetes/opensearch-apifeatureusage-test-deploy-dse-k8s-codfw.config].orig\n+++ K8s::Kubeconfig[/etc/kubernetes/opensearch-apifeatureusage-test-deploy-dse-k8s-codfw.config]\n\n+    ensure      => present\n+    owner       => mwdeploy\n+    auth_cert   => {'cert': '/etc/kubernetes/pki/dse__opensearch-apifeatureusage-test-deploy.pem', 'key': '/etc/kubernetes/pki/dse__opensearch-apifeatureusage-test-deploy-key.pem', 'chain': '/etc/kubernetes/pki/dse__opensearch-apifeatureusage-test-deploy.chain.pem', 'chained': '/etc/kubernetes/pki/dse__opensearch-apifeatureusage-test-deploy.chained.pem'}\n+    group       => deployment\n+    mode        => 0640\n+    master_host => dse-k8s-ctrl.svc.codfw.wmnet\n+    username    => opensearch-apifeatureusage-test-deploy\n+    namespace   => opensearch-apifeatureusage-test\n+    require     => ['Class[K8s::Base_dirs]']\n"}, {"resource": "File[/etc/kubernetes/opensearch-apifeatureusage-dse-k8s-eqiad.config]", "content": "--- /etc/kubernetes/opensearch-apifeatureusage-dse-k8s-eqiad.config.orig\n+++ /etc/kubernetes/opensearch-apifeatureusage-dse-k8s-eqiad.config\n@@ -0,0 +1,19 @@\n+apiVersion: v1\n+kind: Config\n+preferences: {}\n+current-context: default-system\n+contexts:\n+- name: default-system\n+  context:\n+    cluster: default-cluster\n+    user: opensearch-apifeatureusage\n+    namespace: opensearch-apifeatureusage\n+clusters:\n+- name: default-cluster\n+  cluster:\n+    server: https://dse-k8s-ctrl.svc.eqiad.wmnet:6443\n+users:\n+- name: opensearch-apifeatureusage\n+  user:\n+    client-certificate: /etc/kubernetes/pki/dse__opensearch-apifeatureusage.pem\n+    client-key: /etc/kubernetes/pki/dse__opensearch-apifeatureusage-key.pem", "parameters": "--- File[/etc/kubernetes/opensearch-apifeatureusage-dse-k8s-eqiad.config].orig\n+++ File[/etc/kubernetes/opensearch-apifeatureusage-dse-k8s-eqiad.config]\n\n+    mode   => 0640\n+    owner  => mwdeploy\n+    ensure => present\n+    group  => deployment\n"}, {"resource": "File[/etc/kubernetes/pki/dse__opensearch-toolhub-test.chained.pem]", "parameters": "--- File[/etc/kubernetes/pki/dse__opensearch-toolhub-test.chained.pem].orig\n+++ File[/etc/kubernetes/pki/dse__opensearch-toolhub-test.chained.pem]\n\n+    require => Exec[create chained cert /etc/kubernetes/pki/dse__opensearch-toolhub-test.chain.pem]\n+    owner   => mwdeploy\n+    ensure  => file\n+    group   => deployment\n"}, {"resource": "Exec[Generate cert dse__opensearch-toolhub-deploy refresh]", "parameters": "--- Exec[Generate cert dse__opensearch-toolhub-deploy refresh].orig\n+++ Exec[Generate cert dse__opensearch-toolhub-deploy refresh]\n\n+    environment => ['GODEBUG=x509ignoreCN=0']\n+    command     => /usr/bin/cfssl gencert -config /etc/cfssl/client-cfssl.conf -tls-remote-ca /etc/ssl/certs/wmf-ca-certificates.crt -mutual-tls-client-cert /etc/cfssl/mutual_tls_client_cert.pem -mutual-tls-client-key /var/lib/puppet/ssl/private_keys/deploy1003.eqiad.wmnet.pem -label dse  /etc/cfssl/csr/dse__opensearch-toolhub-deploy.csr | /usr/bin/cfssljson -bare /etc/kubernetes/pki/dse__opensearch-toolhub-deploy\n\n+    refreshonly => True\n+    subscribe   => File[/etc/cfssl/csr/dse__opensearch-toolhub-deploy.csr]\n"}, {"resource": "File[/etc/kubernetes/pki/dse__opensearch-ttmserver-deploy.csr]", "parameters": "--- File[/etc/kubernetes/pki/dse__opensearch-ttmserver-deploy.csr].orig\n+++ File[/etc/kubernetes/pki/dse__opensearch-ttmserver-deploy.csr]\n\n+    mode   => 0440\n+    owner  => mwdeploy\n+    ensure => file\n+    group  => deployment\n"}, {"resource": "File[/etc/kubernetes/pki/dse__opensearch-ttmserver-test-deploy.pem]", "parameters": "--- File[/etc/kubernetes/pki/dse__opensearch-ttmserver-test-deploy.pem].orig\n+++ File[/etc/kubernetes/pki/dse__opensearch-ttmserver-test-deploy.pem]\n\n+    mode   => 0440\n+    owner  => mwdeploy\n+    ensure => file\n+    group  => deployment\n"}, {"resource": "File[/etc/kubernetes/pki/dse__opensearch-apifeatureusage-test.csr]", "parameters": "--- File[/etc/kubernetes/pki/dse__opensearch-apifeatureusage-test.csr].orig\n+++ File[/etc/kubernetes/pki/dse__opensearch-apifeatureusage-test.csr]\n\n+    mode   => 0440\n+    owner  => mwdeploy\n+    ensure => file\n+    group  => deployment\n"}, {"resource": "File[/etc/kubernetes/pki/dse__opensearch-toolhub-test-key.pem]", "parameters": "--- File[/etc/kubernetes/pki/dse__opensearch-toolhub-test-key.pem].orig\n+++ File[/etc/kubernetes/pki/dse__opensearch-toolhub-test-key.pem]\n\n+    mode      => 0440\n+    ensure    => file\n+    show_diff => False\n+    owner     => mwdeploy\n+    backup    => False\n+    group     => deployment\n"}, {"resource": "Exec[Generate cert dse__opensearch-ttmserver-test]", "parameters": "--- Exec[Generate cert dse__opensearch-ttmserver-test].orig\n+++ Exec[Generate cert dse__opensearch-ttmserver-test]\n\n+    environment => ['GODEBUG=x509ignoreCN=0']\n+    command     => /usr/bin/cfssl gencert -config /etc/cfssl/client-cfssl.conf -tls-remote-ca /etc/ssl/certs/wmf-ca-certificates.crt -mutual-tls-client-cert /etc/cfssl/mutual_tls_client_cert.pem -mutual-tls-client-key /var/lib/puppet/ssl/private_keys/deploy1003.eqiad.wmnet.pem -label dse  /etc/cfssl/csr/dse__opensearch-ttmserver-test.csr | /usr/bin/cfssljson -bare /etc/kubernetes/pki/dse__opensearch-ttmserver-test\n\n+    unless      => /usr/bin/test \"$(/usr/bin/openssl x509 -in /etc/kubernetes/pki/dse__opensearch-ttmserver-test.pem -noout -pubkey 2>&1)\" == \"$(/usr/bin/openssl pkey -pubout -in /etc/kubernetes/pki/dse__opensearch-ttmserver-test-key.pem 2>&1)\"\n\n+    require     => Cfssl::Csr[/etc/cfssl/csr/dse__opensearch-ttmserver-test.csr]\n"}, {"resource": "Exec[renew certificate - dse__opensearch-ttmserver-test]", "parameters": "--- Exec[renew certificate - dse__opensearch-ttmserver-test].orig\n+++ Exec[renew certificate - dse__opensearch-ttmserver-test]\n\n+    environment => ['GODEBUG=x509ignoreCN=0']\n+    command     => /usr/bin/cfssl sign -config /etc/cfssl/client-cfssl.conf -tls-remote-ca /etc/ssl/certs/wmf-ca-certificates.crt -mutual-tls-client-cert /etc/cfssl/mutual_tls_client_cert.pem -mutual-tls-client-key /var/lib/puppet/ssl/private_keys/deploy1003.eqiad.wmnet.pem -label dse  /etc/kubernetes/pki/dse__opensearch-ttmserver-test.csr | /usr/bin/cfssljson -bare /etc/kubernetes/pki/dse__opensearch-ttmserver-test\n\n+    unless      => /usr/bin/openssl x509 -in /etc/kubernetes/pki/dse__opensearch-ttmserver-test.pem -checkend 952200\n+    require     => Exec[Generate cert dse__opensearch-ttmserver-test]\n"}, {"resource": "Cfssl::Csr[/etc/cfssl/csr/dse__opensearch-ttmserver-deploy.csr]", "parameters": "--- Cfssl::Csr[/etc/cfssl/csr/dse__opensearch-ttmserver-deploy.csr].orig\n+++ Cfssl::Csr[/etc/cfssl/csr/dse__opensearch-ttmserver-deploy.csr]\n\n+    key         => {'algo': 'ecdsa', 'size': 256}\n+    common_name => opensearch-ttmserver-deploy\n+    names       => [{'organisation': 'view'}, {'organisation': 'deploy'}]\n+    ensure      => present\n+    hosts       => []\n"}, {"resource": "K8s::Kubeconfig[/etc/kubernetes/opensearch-apifeatureusage-deploy-dse-k8s-codfw.config]", "parameters": "--- K8s::Kubeconfig[/etc/kubernetes/opensearch-apifeatureusage-deploy-dse-k8s-codfw.config].orig\n+++ K8s::Kubeconfig[/etc/kubernetes/opensearch-apifeatureusage-deploy-dse-k8s-codfw.config]\n\n+    ensure      => present\n+    owner       => mwdeploy\n+    auth_cert   => {'cert': '/etc/kubernetes/pki/dse__opensearch-apifeatureusage-deploy.pem', 'key': '/etc/kubernetes/pki/dse__opensearch-apifeatureusage-deploy-key.pem', 'chain': '/etc/kubernetes/pki/dse__opensearch-apifeatureusage-deploy.chain.pem', 'chained': '/etc/kubernetes/pki/dse__opensearch-apifeatureusage-deploy.chained.pem'}\n+    group       => deployment\n+    mode        => 0640\n+    master_host => dse-k8s-ctrl.svc.codfw.wmnet\n+    username    => opensearch-apifeatureusage-deploy\n+    namespace   => opensearch-apifeatureusage\n+    require     => ['Class[K8s::Base_dirs]']\n"}, {"resource": "File[/etc/kubernetes/pki/dse__opensearch-toolhub.pem]", "parameters": "--- File[/etc/kubernetes/pki/dse__opensearch-toolhub.pem].orig\n+++ File[/etc/kubernetes/pki/dse__opensearch-toolhub.pem]\n\n+    mode   => 0440\n+    owner  => mwdeploy\n+    ensure => file\n+    group  => deployment\n"}, {"resource": "File[/etc/kubernetes/pki/dse__opensearch-apifeatureusage-test-deploy.chain.pem]", "parameters": "--- File[/etc/kubernetes/pki/dse__opensearch-apifeatureusage-test-deploy.chain.pem].orig\n+++ File[/etc/kubernetes/pki/dse__opensearch-apifeatureusage-test-deploy.chain.pem]\n\n+    mode   => 0440\n+    ensure => file\n+    owner  => mwdeploy\n+    source => puppet:///modules/profile/pki/intermediates/dse-cert.pem\n+    group  => deployment\n"}, {"resource": "K8s::Kubeconfig[/etc/kubernetes/opensearch-toolhub-test-dse-k8s-eqiad.config]", "parameters": "--- K8s::Kubeconfig[/etc/kubernetes/opensearch-toolhub-test-dse-k8s-eqiad.config].orig\n+++ K8s::Kubeconfig[/etc/kubernetes/opensearch-toolhub-test-dse-k8s-eqiad.config]\n\n+    ensure      => present\n+    owner       => mwdeploy\n+    auth_cert   => {'cert': '/etc/kubernetes/pki/dse__opensearch-toolhub-test.pem', 'key': '/etc/kubernetes/pki/dse__opensearch-toolhub-test-key.pem', 'chain': '/etc/kubernetes/pki/dse__opensearch-toolhub-test.chain.pem', 'chained': '/etc/kubernetes/pki/dse__opensearch-toolhub-test.chained.pem'}\n+    group       => deployment\n+    mode        => 0640\n+    master_host => dse-k8s-ctrl.svc.eqiad.wmnet\n+    username    => opensearch-toolhub-test\n+    namespace   => opensearch-toolhub-test\n+    require     => ['Class[K8s::Base_dirs]']\n"}, {"resource": "Exec[create chained cert /etc/kubernetes/pki/dse__opensearch-apifeatureusage-test.chain.pem]", "parameters": "--- Exec[create chained cert /etc/kubernetes/pki/dse__opensearch-apifeatureusage-test.chain.pem].orig\n+++ Exec[create chained cert /etc/kubernetes/pki/dse__opensearch-apifeatureusage-test.chain.pem]\n\n+    unless    => /usr/bin/test \"$(/bin/cat /etc/kubernetes/pki/dse__opensearch-apifeatureusage-test.pem /etc/kubernetes/pki/dse__opensearch-apifeatureusage-test.chain.pem | sha512sum)\" == \"$(/bin/cat /etc/kubernetes/pki/dse__opensearch-apifeatureusage-test.chained.pem | sha512sum)\"\n\n+    command   => /bin/cat /etc/kubernetes/pki/dse__opensearch-apifeatureusage-test.pem /etc/kubernetes/pki/dse__opensearch-apifeatureusage-test.chain.pem > /etc/kubernetes/pki/dse__opensearch-apifeatureusage-test.chained.pem\n+    require   => Exec[Generate cert dse__opensearch-apifeatureusage-test refresh on intermediate ca change]\n+    subscribe => ['Exec[renew certificate - dse__opensearch-apifeatureusage-test]', 'File[/etc/kubernetes/pki/dse__opensearch-apifeatureusage-test.chain.pem]', 'File[/etc/kubernetes/pki/dse__opensearch-apifeatureusage-test.pem]']\n"}, {"resource": "File[/etc/kubernetes/pki/dse__opensearch-apifeatureusage.chain.pem]", "parameters": "--- File[/etc/kubernetes/pki/dse__opensearch-apifeatureusage.chain.pem].orig\n+++ File[/etc/kubernetes/pki/dse__opensearch-apifeatureusage.chain.pem]\n\n+    mode   => 0440\n+    ensure => file\n+    owner  => mwdeploy\n+    source => puppet:///modules/profile/pki/intermediates/dse-cert.pem\n+    group  => deployment\n"}, {"resource": "File[/etc/helmfile-defaults/private/dse-k8s_services/opensearch-apifeatureusage]", "parameters": "--- File[/etc/helmfile-defaults/private/dse-k8s_services/opensearch-apifeatureusage].orig\n+++ File[/etc/helmfile-defaults/private/dse-k8s_services/opensearch-apifeatureusage]\n\n+    group   => deployment\n+    mode    => 0751\n+    ensure  => directory\n+    recurse => True\n+    owner   => mwdeploy\n+    force   => True\n"}, {"resource": "File[/etc/cfssl/csr/dse__opensearch-toolhub-test.csr]", "content": "--- /etc/cfssl/csr/dse__opensearch-toolhub-test.csr.orig\n+++ /etc/cfssl/csr/dse__opensearch-toolhub-test.csr\n@@ -0,0 +1,19 @@\n+{\n+  \"CN\": \"opensearch-toolhub-test\",\n+  \"hosts\": [\n+    \"opensearch-toolhub-test\"\n+  ],\n+  \"key\": {\n+    \"algo\": \"ecdsa\",\n+    \"size\": 256\n+  },\n+  \"names\": [\n+    {\n+      \"C\": null,\n+      \"L\": null,\n+      \"O\": \"view\",\n+      \"OU\": null,\n+      \"S\": null\n+    }\n+  ]\n+}", "parameters": "--- File[/etc/cfssl/csr/dse__opensearch-toolhub-test.csr].orig\n+++ File[/etc/cfssl/csr/dse__opensearch-toolhub-test.csr]\n\n+    mode   => 0400\n+    owner  => root\n+    ensure => file\n+    group  => root\n"}, {"resource": "Exec[Generate cert dse__opensearch-apifeatureusage-test-deploy refresh]", "parameters": "--- Exec[Generate cert dse__opensearch-apifeatureusage-test-deploy refresh].orig\n+++ Exec[Generate cert dse__opensearch-apifeatureusage-test-deploy refresh]\n\n+    environment => ['GODEBUG=x509ignoreCN=0']\n+    command     => /usr/bin/cfssl gencert -config /etc/cfssl/client-cfssl.conf -tls-remote-ca /etc/ssl/certs/wmf-ca-certificates.crt -mutual-tls-client-cert /etc/cfssl/mutual_tls_client_cert.pem -mutual-tls-client-key /var/lib/puppet/ssl/private_keys/deploy1003.eqiad.wmnet.pem -label dse  /etc/cfssl/csr/dse__opensearch-apifeatureusage-test-deploy.csr | /usr/bin/cfssljson -bare /etc/kubernetes/pki/dse__opensearch-apifeatureusage-test-deploy\n\n+    refreshonly => True\n+    subscribe   => File[/etc/cfssl/csr/dse__opensearch-apifeatureusage-test-deploy.csr]\n"}, {"resource": "K8s::Kubeconfig[/etc/kubernetes/opensearch-toolhub-test-deploy-dse-k8s-codfw.config]", "parameters": "--- K8s::Kubeconfig[/etc/kubernetes/opensearch-toolhub-test-deploy-dse-k8s-codfw.config].orig\n+++ K8s::Kubeconfig[/etc/kubernetes/opensearch-toolhub-test-deploy-dse-k8s-codfw.config]\n\n+    ensure      => present\n+    owner       => mwdeploy\n+    auth_cert   => {'cert': '/etc/kubernetes/pki/dse__opensearch-toolhub-test-deploy.pem', 'key': '/etc/kubernetes/pki/dse__opensearch-toolhub-test-deploy-key.pem', 'chain': '/etc/kubernetes/pki/dse__opensearch-toolhub-test-deploy.chain.pem', 'chained': '/etc/kubernetes/pki/dse__opensearch-toolhub-test-deploy.chained.pem'}\n+    group       => deployment\n+    mode        => 0640\n+    master_host => dse-k8s-ctrl.svc.codfw.wmnet\n+    username    => opensearch-toolhub-test-deploy\n+    namespace   => opensearch-toolhub-test\n+    require     => ['Class[K8s::Base_dirs]']\n"}, {"resource": "File[/etc/kubernetes/opensearch-apifeatureusage-test-dse-k8s-eqiad.config]", "content": "--- /etc/kubernetes/opensearch-apifeatureusage-test-dse-k8s-eqiad.config.orig\n+++ /etc/kubernetes/opensearch-apifeatureusage-test-dse-k8s-eqiad.config\n@@ -0,0 +1,19 @@\n+apiVersion: v1\n+kind: Config\n+preferences: {}\n+current-context: default-system\n+contexts:\n+- name: default-system\n+  context:\n+    cluster: default-cluster\n+    user: opensearch-apifeatureusage-test\n+    namespace: opensearch-apifeatureusage-test\n+clusters:\n+- name: default-cluster\n+  cluster:\n+    server: https://dse-k8s-ctrl.svc.eqiad.wmnet:6443\n+users:\n+- name: opensearch-apifeatureusage-test\n+  user:\n+    client-certificate: /etc/kubernetes/pki/dse__opensearch-apifeatureusage-test.pem\n+    client-key: /etc/kubernetes/pki/dse__opensearch-apifeatureusage-test-key.pem", "parameters": "--- File[/etc/kubernetes/opensearch-apifeatureusage-test-dse-k8s-eqiad.config].orig\n+++ File[/etc/kubernetes/opensearch-apifeatureusage-test-dse-k8s-eqiad.config]\n\n+    mode   => 0640\n+    owner  => mwdeploy\n+    ensure => present\n+    group  => deployment\n"}, {"resource": "K8s::Kubeconfig[/etc/kubernetes/opensearch-toolhub-dse-k8s-eqiad.config]", "parameters": "--- K8s::Kubeconfig[/etc/kubernetes/opensearch-toolhub-dse-k8s-eqiad.config].orig\n+++ K8s::Kubeconfig[/etc/kubernetes/opensearch-toolhub-dse-k8s-eqiad.config]\n\n+    ensure      => present\n+    owner       => mwdeploy\n+    auth_cert   => {'cert': '/etc/kubernetes/pki/dse__opensearch-toolhub.pem', 'key': '/etc/kubernetes/pki/dse__opensearch-toolhub-key.pem', 'chain': '/etc/kubernetes/pki/dse__opensearch-toolhub.chain.pem', 'chained': '/etc/kubernetes/pki/dse__opensearch-toolhub.chained.pem'}\n+    group       => deployment\n+    mode        => 0640\n+    master_host => dse-k8s-ctrl.svc.eqiad.wmnet\n+    username    => opensearch-toolhub\n+    namespace   => opensearch-toolhub\n+    require     => ['Class[K8s::Base_dirs]']\n"}, {"resource": "File[/etc/kubernetes/opensearch-toolhub-dse-k8s-codfw.config]", "content": "--- /etc/kubernetes/opensearch-toolhub-dse-k8s-codfw.config.orig\n+++ /etc/kubernetes/opensearch-toolhub-dse-k8s-codfw.config\n@@ -0,0 +1,19 @@\n+apiVersion: v1\n+kind: Config\n+preferences: {}\n+current-context: default-system\n+contexts:\n+- name: default-system\n+  context:\n+    cluster: default-cluster\n+    user: opensearch-toolhub\n+    namespace: opensearch-toolhub\n+clusters:\n+- name: default-cluster\n+  cluster:\n+    server: https://dse-k8s-ctrl.svc.codfw.wmnet:6443\n+users:\n+- name: opensearch-toolhub\n+  user:\n+    client-certificate: /etc/kubernetes/pki/dse__opensearch-toolhub.pem\n+    client-key: /etc/kubernetes/pki/dse__opensearch-toolhub-key.pem", "parameters": "--- File[/etc/kubernetes/opensearch-toolhub-dse-k8s-codfw.config].orig\n+++ File[/etc/kubernetes/opensearch-toolhub-dse-k8s-codfw.config]\n\n+    mode   => 0640\n+    owner  => mwdeploy\n+    ensure => present\n+    group  => deployment\n"}, {"resource": "File[/etc/kubernetes/pki/dse__opensearch-ttmserver-test.pem]", "parameters": "--- File[/etc/kubernetes/pki/dse__opensearch-ttmserver-test.pem].orig\n+++ File[/etc/kubernetes/pki/dse__opensearch-ttmserver-test.pem]\n\n+    mode   => 0440\n+    owner  => mwdeploy\n+    ensure => file\n+    group  => deployment\n"}, {"resource": "File[/etc/kubernetes/opensearch-toolhub-deploy-dse-k8s-codfw.config]", "content": "--- /etc/kubernetes/opensearch-toolhub-deploy-dse-k8s-codfw.config.orig\n+++ /etc/kubernetes/opensearch-toolhub-deploy-dse-k8s-codfw.config\n@@ -0,0 +1,19 @@\n+apiVersion: v1\n+kind: Config\n+preferences: {}\n+current-context: default-system\n+contexts:\n+- name: default-system\n+  context:\n+    cluster: default-cluster\n+    user: opensearch-toolhub-deploy\n+    namespace: opensearch-toolhub\n+clusters:\n+- name: default-cluster\n+  cluster:\n+    server: https://dse-k8s-ctrl.svc.codfw.wmnet:6443\n+users:\n+- name: opensearch-toolhub-deploy\n+  user:\n+    client-certificate: /etc/kubernetes/pki/dse__opensearch-toolhub-deploy.pem\n+    client-key: /etc/kubernetes/pki/dse__opensearch-toolhub-deploy-key.pem", "parameters": "--- File[/etc/kubernetes/opensearch-toolhub-deploy-dse-k8s-codfw.config].orig\n+++ File[/etc/kubernetes/opensearch-toolhub-deploy-dse-k8s-codfw.config]\n\n+    mode   => 0640\n+    owner  => mwdeploy\n+    ensure => present\n+    group  => deployment\n"}, {"resource": "File[/etc/kubernetes/pki/dse__opensearch-toolhub-test-deploy.csr]", "parameters": "--- File[/etc/kubernetes/pki/dse__opensearch-toolhub-test-deploy.csr].orig\n+++ File[/etc/kubernetes/pki/dse__opensearch-toolhub-test-deploy.csr]\n\n+    mode   => 0440\n+    owner  => mwdeploy\n+    ensure => file\n+    group  => deployment\n"}, {"resource": "File[/etc/kubernetes/pki/dse__opensearch-ttmserver-test-deploy.chained.pem]", "parameters": "--- File[/etc/kubernetes/pki/dse__opensearch-ttmserver-test-deploy.chained.pem].orig\n+++ File[/etc/kubernetes/pki/dse__opensearch-ttmserver-test-deploy.chained.pem]\n\n+    require => Exec[create chained cert /etc/kubernetes/pki/dse__opensearch-ttmserver-test-deploy.chain.pem]\n+    owner   => mwdeploy\n+    ensure  => file\n+    group   => deployment\n"}, {"resource": "File[/etc/kubernetes/pki/dse__opensearch-ttmserver-test-deploy.chain.pem]", "parameters": "--- File[/etc/kubernetes/pki/dse__opensearch-ttmserver-test-deploy.chain.pem].orig\n+++ File[/etc/kubernetes/pki/dse__opensearch-ttmserver-test-deploy.chain.pem]\n\n+    mode   => 0440\n+    ensure => file\n+    owner  => mwdeploy\n+    source => puppet:///modules/profile/pki/intermediates/dse-cert.pem\n+    group  => deployment\n"}, {"resource": "File[/etc/kubernetes/pki/dse__opensearch-apifeatureusage-test.chain.pem]", "parameters": "--- File[/etc/kubernetes/pki/dse__opensearch-apifeatureusage-test.chain.pem].orig\n+++ File[/etc/kubernetes/pki/dse__opensearch-apifeatureusage-test.chain.pem]\n\n+    mode   => 0440\n+    ensure => file\n+    owner  => mwdeploy\n+    source => puppet:///modules/profile/pki/intermediates/dse-cert.pem\n+    group  => deployment\n"}, {"resource": "File[/etc/kubernetes/pki/dse__opensearch-apifeatureusage-test-deploy.chained.pem]", "parameters": "--- File[/etc/kubernetes/pki/dse__opensearch-apifeatureusage-test-deploy.chained.pem].orig\n+++ File[/etc/kubernetes/pki/dse__opensearch-apifeatureusage-test-deploy.chained.pem]\n\n+    require => Exec[create chained cert /etc/kubernetes/pki/dse__opensearch-apifeatureusage-test-deploy.chain.pem]\n+    owner   => mwdeploy\n+    ensure  => file\n+    group   => deployment\n"}, {"resource": "File[/etc/kubernetes/pki/dse__opensearch-ttmserver-test.csr]", "parameters": "--- File[/etc/kubernetes/pki/dse__opensearch-ttmserver-test.csr].orig\n+++ File[/etc/kubernetes/pki/dse__opensearch-ttmserver-test.csr]\n\n+    mode   => 0440\n+    owner  => mwdeploy\n+    ensure => file\n+    group  => deployment\n"}, {"resource": "File[/etc/kubernetes/pki/dse__opensearch-apifeatureusage-deploy.chained.pem]", "parameters": "--- File[/etc/kubernetes/pki/dse__opensearch-apifeatureusage-deploy.chained.pem].orig\n+++ File[/etc/kubernetes/pki/dse__opensearch-apifeatureusage-deploy.chained.pem]\n\n+    require => Exec[create chained cert /etc/kubernetes/pki/dse__opensearch-apifeatureusage-deploy.chain.pem]\n+    owner   => mwdeploy\n+    ensure  => file\n+    group   => deployment\n"}, {"resource": "Exec[Generate cert dse__opensearch-toolhub-deploy refresh on intermediate ca change]", "parameters": "--- Exec[Generate cert dse__opensearch-toolhub-deploy refresh on intermediate ca change].orig\n+++ Exec[Generate cert dse__opensearch-toolhub-deploy refresh on intermediate ca change]\n\n+    environment => ['GODEBUG=x509ignoreCN=0']\n+    require     => Cfssl::Csr[/etc/cfssl/csr/dse__opensearch-toolhub-deploy.csr]\n+    command     => /usr/bin/cfssl gencert -config /etc/cfssl/client-cfssl.conf -tls-remote-ca /etc/ssl/certs/wmf-ca-certificates.crt -mutual-tls-client-cert /etc/cfssl/mutual_tls_client_cert.pem -mutual-tls-client-key /var/lib/puppet/ssl/private_keys/deploy1003.eqiad.wmnet.pem -label dse  /etc/cfssl/csr/dse__opensearch-toolhub-deploy.csr | /usr/bin/cfssljson -bare /etc/kubernetes/pki/dse__opensearch-toolhub-deploy\n\n+    refreshonly => True\n+    subscribe   => File[/etc/kubernetes/pki/dse__opensearch-toolhub-deploy.chain.pem]\n"}, {"resource": "Exec[renew certificate - dse__opensearch-apifeatureusage-test-deploy]", "parameters": "--- Exec[renew certificate - dse__opensearch-apifeatureusage-test-deploy].orig\n+++ Exec[renew certificate - dse__opensearch-apifeatureusage-test-deploy]\n\n+    environment => ['GODEBUG=x509ignoreCN=0']\n+    command     => /usr/bin/cfssl sign -config /etc/cfssl/client-cfssl.conf -tls-remote-ca /etc/ssl/certs/wmf-ca-certificates.crt -mutual-tls-client-cert /etc/cfssl/mutual_tls_client_cert.pem -mutual-tls-client-key /var/lib/puppet/ssl/private_keys/deploy1003.eqiad.wmnet.pem -label dse  /etc/kubernetes/pki/dse__opensearch-apifeatureusage-test-deploy.csr | /usr/bin/cfssljson -bare /etc/kubernetes/pki/dse__opensearch-apifeatureusage-test-deploy\n\n+    unless      => /usr/bin/openssl x509 -in /etc/kubernetes/pki/dse__opensearch-apifeatureusage-test-deploy.pem -checkend 952200\n+    require     => Exec[Generate cert dse__opensearch-apifeatureusage-test-deploy]\n"}, {"resource": "Exec[Generate cert dse__opensearch-ttmserver-deploy]", "parameters": "--- Exec[Generate cert dse__opensearch-ttmserver-deploy].orig\n+++ Exec[Generate cert dse__opensearch-ttmserver-deploy]\n\n+    environment => ['GODEBUG=x509ignoreCN=0']\n+    command     => /usr/bin/cfssl gencert -config /etc/cfssl/client-cfssl.conf -tls-remote-ca /etc/ssl/certs/wmf-ca-certificates.crt -mutual-tls-client-cert /etc/cfssl/mutual_tls_client_cert.pem -mutual-tls-client-key /var/lib/puppet/ssl/private_keys/deploy1003.eqiad.wmnet.pem -label dse  /etc/cfssl/csr/dse__opensearch-ttmserver-deploy.csr | /usr/bin/cfssljson -bare /etc/kubernetes/pki/dse__opensearch-ttmserver-deploy\n\n+    unless      => /usr/bin/test \"$(/usr/bin/openssl x509 -in /etc/kubernetes/pki/dse__opensearch-ttmserver-deploy.pem -noout -pubkey 2>&1)\" == \"$(/usr/bin/openssl pkey -pubout -in /etc/kubernetes/pki/dse__opensearch-ttmserver-deploy-key.pem 2>&1)\"\n\n+    require     => Cfssl::Csr[/etc/cfssl/csr/dse__opensearch-ttmserver-deploy.csr]\n"}, {"resource": "File[/etc/kubernetes/pki/dse__opensearch-toolhub-test.csr]", "parameters": "--- File[/etc/kubernetes/pki/dse__opensearch-toolhub-test.csr].orig\n+++ File[/etc/kubernetes/pki/dse__opensearch-toolhub-test.csr]\n\n+    mode   => 0440\n+    owner  => mwdeploy\n+    ensure => file\n+    group  => deployment\n"}, {"resource": "Cfssl::Csr[/etc/cfssl/csr/dse__opensearch-apifeatureusage-deploy.csr]", "parameters": "--- Cfssl::Csr[/etc/cfssl/csr/dse__opensearch-apifeatureusage-deploy.csr].orig\n+++ Cfssl::Csr[/etc/cfssl/csr/dse__opensearch-apifeatureusage-deploy.csr]\n\n+    key         => {'algo': 'ecdsa', 'size': 256}\n+    common_name => opensearch-apifeatureusage-deploy\n+    names       => [{'organisation': 'view'}, {'organisation': 'deploy'}]\n+    ensure      => present\n+    hosts       => []\n"}, {"resource": "File[/etc/kubernetes/pki/dse__opensearch-toolhub.csr]", "parameters": "--- File[/etc/kubernetes/pki/dse__opensearch-toolhub.csr].orig\n+++ File[/etc/kubernetes/pki/dse__opensearch-toolhub.csr]\n\n+    mode   => 0440\n+    owner  => mwdeploy\n+    ensure => file\n+    group  => deployment\n"}, {"resource": "Cfssl::Cert[dse__opensearch-toolhub-test]", "parameters": "--- Cfssl::Cert[dse__opensearch-toolhub-test].orig\n+++ Cfssl::Cert[dse__opensearch-toolhub-test]\n\n+    key             => {'algo': 'ecdsa', 'size': 256}\n+    ensure          => present\n+    owner           => mwdeploy\n+    renew_seconds   => 952200\n+    group           => deployment\n+    common_name     => opensearch-toolhub-test\n+    mode            => 0740\n+    notify_services => []\n+    label           => dse\n+    environment     => ['GODEBUG=x509ignoreCN=0']\n+    auto_renew      => True\n+    outdir          => /etc/kubernetes/pki\n+    hosts           => []\n+    before_services => []\n+    names           => [{'organisation': 'view'}]\n+    provide_chain   => True\n"}, {"resource": "Exec[create chained cert /etc/kubernetes/pki/dse__opensearch-toolhub.chain.pem]", "parameters": "--- Exec[create chained cert /etc/kubernetes/pki/dse__opensearch-toolhub.chain.pem].orig\n+++ Exec[create chained cert /etc/kubernetes/pki/dse__opensearch-toolhub.chain.pem]\n\n+    unless    => /usr/bin/test \"$(/bin/cat /etc/kubernetes/pki/dse__opensearch-toolhub.pem /etc/kubernetes/pki/dse__opensearch-toolhub.chain.pem | sha512sum)\" == \"$(/bin/cat /etc/kubernetes/pki/dse__opensearch-toolhub.chained.pem | sha512sum)\"\n\n+    command   => /bin/cat /etc/kubernetes/pki/dse__opensearch-toolhub.pem /etc/kubernetes/pki/dse__opensearch-toolhub.chain.pem > /etc/kubernetes/pki/dse__opensearch-toolhub.chained.pem\n+    require   => Exec[Generate cert dse__opensearch-toolhub refresh on intermediate ca change]\n+    subscribe => ['Exec[renew certificate - dse__opensearch-toolhub]', 'File[/etc/kubernetes/pki/dse__opensearch-toolhub.chain.pem]', 'File[/etc/kubernetes/pki/dse__opensearch-toolhub.pem]']\n"}, {"resource": "File[/etc/kubernetes/opensearch-toolhub-test-dse-k8s-codfw.config]", "content": "--- /etc/kubernetes/opensearch-toolhub-test-dse-k8s-codfw.config.orig\n+++ /etc/kubernetes/opensearch-toolhub-test-dse-k8s-codfw.config\n@@ -0,0 +1,19 @@\n+apiVersion: v1\n+kind: Config\n+preferences: {}\n+current-context: default-system\n+contexts:\n+- name: default-system\n+  context:\n+    cluster: default-cluster\n+    user: opensearch-toolhub-test\n+    namespace: opensearch-toolhub-test\n+clusters:\n+- name: default-cluster\n+  cluster:\n+    server: https://dse-k8s-ctrl.svc.codfw.wmnet:6443\n+users:\n+- name: opensearch-toolhub-test\n+  user:\n+    client-certificate: /etc/kubernetes/pki/dse__opensearch-toolhub-test.pem\n+    client-key: /etc/kubernetes/pki/dse__opensearch-toolhub-test-key.pem", "parameters": "--- File[/etc/kubernetes/opensearch-toolhub-test-dse-k8s-codfw.config].orig\n+++ File[/etc/kubernetes/opensearch-toolhub-test-dse-k8s-codfw.config]\n\n+    mode   => 0640\n+    owner  => mwdeploy\n+    ensure => present\n+    group  => deployment\n"}, {"resource": "File[/etc/kubernetes/opensearch-toolhub-test-dse-k8s-eqiad.config]", "content": "--- /etc/kubernetes/opensearch-toolhub-test-dse-k8s-eqiad.config.orig\n+++ /etc/kubernetes/opensearch-toolhub-test-dse-k8s-eqiad.config\n@@ -0,0 +1,19 @@\n+apiVersion: v1\n+kind: Config\n+preferences: {}\n+current-context: default-system\n+contexts:\n+- name: default-system\n+  context:\n+    cluster: default-cluster\n+    user: opensearch-toolhub-test\n+    namespace: opensearch-toolhub-test\n+clusters:\n+- name: default-cluster\n+  cluster:\n+    server: https://dse-k8s-ctrl.svc.eqiad.wmnet:6443\n+users:\n+- name: opensearch-toolhub-test\n+  user:\n+    client-certificate: /etc/kubernetes/pki/dse__opensearch-toolhub-test.pem\n+    client-key: /etc/kubernetes/pki/dse__opensearch-toolhub-test-key.pem", "parameters": "--- File[/etc/kubernetes/opensearch-toolhub-test-dse-k8s-eqiad.config].orig\n+++ File[/etc/kubernetes/opensearch-toolhub-test-dse-k8s-eqiad.config]\n\n+    mode   => 0640\n+    owner  => mwdeploy\n+    ensure => present\n+    group  => deployment\n"}, {"resource": "Exec[Generate cert dse__opensearch-toolhub]", "parameters": "--- Exec[Generate cert dse__opensearch-toolhub].orig\n+++ Exec[Generate cert dse__opensearch-toolhub]\n\n+    environment => ['GODEBUG=x509ignoreCN=0']\n+    command     => /usr/bin/cfssl gencert -config /etc/cfssl/client-cfssl.conf -tls-remote-ca /etc/ssl/certs/wmf-ca-certificates.crt -mutual-tls-client-cert /etc/cfssl/mutual_tls_client_cert.pem -mutual-tls-client-key /var/lib/puppet/ssl/private_keys/deploy1003.eqiad.wmnet.pem -label dse  /etc/cfssl/csr/dse__opensearch-toolhub.csr | /usr/bin/cfssljson -bare /etc/kubernetes/pki/dse__opensearch-toolhub\n\n+    unless      => /usr/bin/test \"$(/usr/bin/openssl x509 -in /etc/kubernetes/pki/dse__opensearch-toolhub.pem -noout -pubkey 2>&1)\" == \"$(/usr/bin/openssl pkey -pubout -in /etc/kubernetes/pki/dse__opensearch-toolhub-key.pem 2>&1)\"\n\n+    require     => Cfssl::Csr[/etc/cfssl/csr/dse__opensearch-toolhub.csr]\n"}, {"resource": "File[/etc/kubernetes/pki/dse__opensearch-apifeatureusage-deploy.pem]", "parameters": "--- File[/etc/kubernetes/pki/dse__opensearch-apifeatureusage-deploy.pem].orig\n+++ File[/etc/kubernetes/pki/dse__opensearch-apifeatureusage-deploy.pem]\n\n+    mode   => 0440\n+    owner  => mwdeploy\n+    ensure => file\n+    group  => deployment\n"}, {"resource": "File[/etc/kubernetes/opensearch-apifeatureusage-deploy-dse-k8s-eqiad.config]", "content": "--- /etc/kubernetes/opensearch-apifeatureusage-deploy-dse-k8s-eqiad.config.orig\n+++ /etc/kubernetes/opensearch-apifeatureusage-deploy-dse-k8s-eqiad.config\n@@ -0,0 +1,19 @@\n+apiVersion: v1\n+kind: Config\n+preferences: {}\n+current-context: default-system\n+contexts:\n+- name: default-system\n+  context:\n+    cluster: default-cluster\n+    user: opensearch-apifeatureusage-deploy\n+    namespace: opensearch-apifeatureusage\n+clusters:\n+- name: default-cluster\n+  cluster:\n+    server: https://dse-k8s-ctrl.svc.eqiad.wmnet:6443\n+users:\n+- name: opensearch-apifeatureusage-deploy\n+  user:\n+    client-certificate: /etc/kubernetes/pki/dse__opensearch-apifeatureusage-deploy.pem\n+    client-key: /etc/kubernetes/pki/dse__opensearch-apifeatureusage-deploy-key.pem", "parameters": "--- File[/etc/kubernetes/opensearch-apifeatureusage-deploy-dse-k8s-eqiad.config].orig\n+++ File[/etc/kubernetes/opensearch-apifeatureusage-deploy-dse-k8s-eqiad.config]\n\n+    mode   => 0640\n+    owner  => mwdeploy\n+    ensure => present\n+    group  => deployment\n"}, {"resource": "File[/etc/kubernetes/pki/dse__opensearch-ttmserver-test-deploy.csr]", "parameters": "--- File[/etc/kubernetes/pki/dse__opensearch-ttmserver-test-deploy.csr].orig\n+++ File[/etc/kubernetes/pki/dse__opensearch-ttmserver-test-deploy.csr]\n\n+    mode   => 0440\n+    owner  => mwdeploy\n+    ensure => file\n+    group  => deployment\n"}, {"resource": "Exec[renew certificate - dse__opensearch-ttmserver-deploy]", "parameters": "--- Exec[renew certificate - dse__opensearch-ttmserver-deploy].orig\n+++ Exec[renew certificate - dse__opensearch-ttmserver-deploy]\n\n+    environment => ['GODEBUG=x509ignoreCN=0']\n+    command     => /usr/bin/cfssl sign -config /etc/cfssl/client-cfssl.conf -tls-remote-ca /etc/ssl/certs/wmf-ca-certificates.crt -mutual-tls-client-cert /etc/cfssl/mutual_tls_client_cert.pem -mutual-tls-client-key /var/lib/puppet/ssl/private_keys/deploy1003.eqiad.wmnet.pem -label dse  /etc/kubernetes/pki/dse__opensearch-ttmserver-deploy.csr | /usr/bin/cfssljson -bare /etc/kubernetes/pki/dse__opensearch-ttmserver-deploy\n\n+    unless      => /usr/bin/openssl x509 -in /etc/kubernetes/pki/dse__opensearch-ttmserver-deploy.pem -checkend 952200\n+    require     => Exec[Generate cert dse__opensearch-ttmserver-deploy]\n"}, {"resource": "File[/etc/cfssl/csr/dse__opensearch-toolhub-deploy.csr]", "content": "--- /etc/cfssl/csr/dse__opensearch-toolhub-deploy.csr.orig\n+++ /etc/cfssl/csr/dse__opensearch-toolhub-deploy.csr\n@@ -0,0 +1,26 @@\n+{\n+  \"CN\": \"opensearch-toolhub-deploy\",\n+  \"hosts\": [\n+    \"opensearch-toolhub-deploy\"\n+  ],\n+  \"key\": {\n+    \"algo\": \"ecdsa\",\n+    \"size\": 256\n+  },\n+  \"names\": [\n+    {\n+      \"C\": null,\n+      \"L\": null,\n+      \"O\": \"view\",\n+      \"OU\": null,\n+      \"S\": null\n+    },\n+    {\n+      \"C\": null,\n+      \"L\": null,\n+      \"O\": \"deploy\",\n+      \"OU\": null,\n+      \"S\": null\n+    }\n+  ]\n+}", "parameters": "--- File[/etc/cfssl/csr/dse__opensearch-toolhub-deploy.csr].orig\n+++ File[/etc/cfssl/csr/dse__opensearch-toolhub-deploy.csr]\n\n+    mode   => 0400\n+    owner  => root\n+    ensure => file\n+    group  => root\n"}, {"resource": "File[/etc/helmfile-defaults/private/dse-k8s_services/opensearch-toolhub-test]", "parameters": "--- File[/etc/helmfile-defaults/private/dse-k8s_services/opensearch-toolhub-test].orig\n+++ File[/etc/helmfile-defaults/private/dse-k8s_services/opensearch-toolhub-test]\n\n+    group   => deployment\n+    mode    => 0751\n+    ensure  => directory\n+    recurse => True\n+    owner   => mwdeploy\n+    force   => True\n"}, {"resource": "K8s::Kubeconfig[/etc/kubernetes/opensearch-ttmserver-test-dse-k8s-eqiad.config]", "parameters": "--- K8s::Kubeconfig[/etc/kubernetes/opensearch-ttmserver-test-dse-k8s-eqiad.config].orig\n+++ K8s::Kubeconfig[/etc/kubernetes/opensearch-ttmserver-test-dse-k8s-eqiad.config]\n\n+    ensure      => present\n+    owner       => mwdeploy\n+    auth_cert   => {'cert': '/etc/kubernetes/pki/dse__opensearch-ttmserver-test.pem', 'key': '/etc/kubernetes/pki/dse__opensearch-ttmserver-test-key.pem', 'chain': '/etc/kubernetes/pki/dse__opensearch-ttmserver-test.chain.pem', 'chained': '/etc/kubernetes/pki/dse__opensearch-ttmserver-test.chained.pem'}\n+    group       => deployment\n+    mode        => 0640\n+    master_host => dse-k8s-ctrl.svc.eqiad.wmnet\n+    username    => opensearch-ttmserver-test\n+    namespace   => opensearch-ttmserver-test\n+    require     => ['Class[K8s::Base_dirs]']\n"}, {"resource": "Exec[renew certificate - dse__opensearch-ttmserver-test-deploy]", "parameters": "--- Exec[renew certificate - dse__opensearch-ttmserver-test-deploy].orig\n+++ Exec[renew certificate - dse__opensearch-ttmserver-test-deploy]\n\n+    environment => ['GODEBUG=x509ignoreCN=0']\n+    command     => /usr/bin/cfssl sign -config /etc/cfssl/client-cfssl.conf -tls-remote-ca /etc/ssl/certs/wmf-ca-certificates.crt -mutual-tls-client-cert /etc/cfssl/mutual_tls_client_cert.pem -mutual-tls-client-key /var/lib/puppet/ssl/private_keys/deploy1003.eqiad.wmnet.pem -label dse  /etc/kubernetes/pki/dse__opensearch-ttmserver-test-deploy.csr | /usr/bin/cfssljson -bare /etc/kubernetes/pki/dse__opensearch-ttmserver-test-deploy\n\n+    unless      => /usr/bin/openssl x509 -in /etc/kubernetes/pki/dse__opensearch-ttmserver-test-deploy.pem -checkend 952200\n+    require     => Exec[Generate cert dse__opensearch-ttmserver-test-deploy]\n"}, {"resource": "Class[Profile::Kubernetes::Deployment_server::Helmfile]", "parameters": "--- Class[Profile::Kubernetes::Deployment_server::Helmfile].orig\n+++ Class[Profile::Kubernetes::Deployment_server::Helmfile]\n\n@@\n-    services => {'main': {'apertium': {'usernames': [{'name': 'apertium'}, {'name': 'apertium-deploy'}]}, 'api-gateway': {'usernames': [{'name': 'api-gateway'}, {'name': 'api-gateway-deploy'}]}, 'benthos-cache-invalidator': {'usernames': [{'name': 'benthos-cache-invalidator'}, {'name': 'benthos-cache-invalidator-deploy'}]}, 'changeprop': {'usernames': [{'name': 'changeprop'}, {'name': 'changeprop-deploy'}]}, 'changeprop-jobqueue': {'usernames': [{'name': 'changeprop-jobqueue'}, {'name': 'changeprop-jobqueue-deploy'}]}, 'chart-renderer': {'usernames': [{'name': 'chart-renderer'}, {'name': 'chart-renderer-deploy'}]}, 'cirrus-streaming-updater': {'usernames': [{'name': 'cirrus-streaming-updater'}, {'name': 'cirrus-streaming-updater-deploy'}]}, 'citoid': {'usernames': [{'name': 'citoid'}, {'name': 'citoid-deploy'}]}, 'commons-impact-analytics': {'usernames': [{'name': 'commons-impact-analytics'}, {'name': 'commons-impact-analytics-deploy'}]}, 'cxserver': {'usernames': [{'name': 'cxserver'}, {'name': 'cxserver-deploy'}]}, 'data-gateway': {'usernames': [{'name': 'data-gateway'}, {'name': 'data-gateway-deploy'}]}, 'developer-portal': {'usernames': [{'name': 'developer-portal'}, {'name': 'developer-portal-deploy'}]}, 'device-analytics': {'usernames': [{'name': 'device-analytics'}, {'name': 'device-analytics-deploy'}]}, 'echostore': {'usernames': [{'name': 'echostore'}, {'name': 'echostore-deploy'}]}, 'edit-analytics': {'usernames': [{'name': 'edit-analytics'}, {'name': 'edit-analytics-deploy'}]}, 'editor-analytics': {'usernames': [{'name': 'editor-analytics'}, {'name': 'editor-analytics-deploy'}]}, 'eventgate-analytics': {'usernames': [{'name': 'eventgate-analytics'}, {'name': 'eventgate-analytics-deploy'}]}, 'eventgate-analytics-external': {'usernames': [{'name': 'eventgate-analytics-external'}, {'name': 'eventgate-analytics-external-deploy'}]}, 'eventgate-logging-external': {'usernames': [{'name': 'eventgate-logging-external'}, {'name': 'eventgate-logging-external-deploy'}]}, 'eventgate-main': {'usernames': [{'name': 'eventgate-main'}, {'name': 'eventgate-main-deploy'}]}, 'eventstreams': {'usernames': [{'name': 'eventstreams'}, {'name': 'eventstreams-deploy'}]}, 'eventstreams-internal': {'usernames': [{'name': 'eventstreams-internal'}, {'name': 'eventstreams-internal-deploy'}]}, 'failoid-ng': {'usernames': [{'name': 'failoid-ng'}, {'name': 'failoid-ng-deploy'}]}, 'geo-analytics': {'usernames': [{'name': 'geo-analytics'}, {'name': 'geo-analytics-deploy'}]}, 'ipoid': {'usernames': [{'name': 'ipoid'}, {'name': 'ipoid-deploy'}]}, 'kartotherian': {'usernames': [{'name': 'kartotherian'}, {'name': 'kartotherian-deploy'}]}, 'linked-artifacts': {'usernames': [{'name': 'linked-artifacts'}, {'name': 'linked-artifacts-deploy'}]}, 'linkrecommendation': {'usernames': [{'name': 'linkrecommendation'}, {'name': 'linkrecommendation-deploy'}]}, 'machinetranslation': {'usernames': [{'name': 'machinetranslation'}, {'name': 'machinetranslation-deploy'}]}, 'mathoid': {'usernames': [{'name': 'mathoid'}, {'name': 'mathoid-deploy'}]}, 'media-analytics': {'usernames': [{'name': 'media-analytics'}, {'name': 'media-analytics-deploy'}]}, 'miscweb': {'usernames': [{'name': 'miscweb'}, {'name': 'miscweb-deploy'}]}, 'mobileapps': {'usernames': [{'name': 'mobileapps'}, {'name': 'mobileapps-deploy'}]}, 'mw-api-ext': {'usernames': [{'name': 'mw-api-ext'}, {'name': 'mw-api-ext-deploy'}]}, 'mw-api-int': {'usernames': [{'name': 'mw-api-int'}, {'name': 'mw-api-int-deploy'}]}, 'mw-cron': {'usernames': [{'name': 'mw-cron'}, {'name': 'mw-cron-deploy'}, {'group': 'restricted', 'name': 'mw-cron-restricted'}, {'group': 'restricted', 'name': 'mw-cron-restricted-deploy'}]}, 'mw-debug': {'usernames': [{'name': 'mw-debug'}, {'name': 'mw-debug-deploy'}]}, 'mw-experimental': {'usernames': [{'name': 'mw-experimental'}, {'name': 'mw-experimental-deploy'}]}, 'mw-jobrunner': {'usernames': [{'name': 'mw-jobrunner'}, {'name': 'mw-jobrunner-deploy'}]}, 'mw-mcrouter': {'usernames': [{'name': 'mw-mcrouter'}, {'name': 'mw-mcrouter-deploy'}]}, 'mw-misc': {'usernames': [{'name': 'mw-misc'}, {'name': 'mw-misc-deploy'}]}, 'mw-page-content-change-enrich': {'usernames': [{'name': 'mw-page-content-change-enrich'}, {'name': 'mw-page-content-change-enrich-deploy'}]}, 'mw-parsoid': {'usernames': [{'name': 'mw-parsoid'}, {'name': 'mw-parsoid-deploy'}]}, 'mw-script': {'usernames': [{'name': 'mw-script'}, {'name': 'mw-script-deploy'}, {'group': 'restricted', 'name': 'mw-script-restricted'}, {'group': 'restricted', 'name': 'mw-script-restricted-deploy'}]}, 'mw-videoscaler': {'usernames': [{'name': 'mw-videoscaler'}, {'name': 'mw-videoscaler-deploy'}]}, 'mw-web': {'usernames': [{'name': 'mw-web'}, {'name': 'mw-web-deploy'}]}, 'mw-wikifunctions': {'usernames': [{'name': 'mw-wikifunctions'}, {'name': 'mw-wikifunctions-deploy'}]}, 'opentelemetry-collector': {'usernames': [{'name': 'opentelemetry-collector'}, {'name': 'opentelemetry-collector-deploy'}]}, 'page-analytics': {'usernames': [{'name': 'page-analytics'}, {'name': 'page-analytics-deploy'}]}, 'proton': {'usernames': [{'name': 'proton'}, {'name': 'proton-deploy'}]}, 'push-notifications': {'usernames': [{'name': 'push-notifications'}, {'name': 'push-notifications-deploy'}]}, 'ratelimit': {'usernames': [{'name': 'ratelimit'}, {'name': 'ratelimit-deploy'}]}, 'ratelimit-media': {'usernames': [{'name': 'ratelimit-media'}, {'name': 'ratelimit-media-deploy'}]}, 'rdf-streaming-updater': {'usernames': [{'name': 'rdf-streaming-updater'}, {'name': 'rdf-streaming-updater-deploy'}]}, 'recommendation-api': {'usernames': [{'name': 'recommendation-api'}, {'name': 'recommendation-api-deploy'}]}, 'rest-gateway': {'usernames': [{'name': 'rest-gateway'}, {'name': 'rest-gateway-deploy'}]}, 'sessionstore': {'usernames': [{'name': 'sessionstore'}, {'name': 'sessionstore-deploy'}]}, 'shellbox': {'usernames': [{'name': 'shellbox'}, {'name': 'shellbox-deploy'}]}, 'shellbox-constraints': {'usernames': [{'name': 'shellbox-constraints'}, {'name': 'shellbox-constraints-deploy'}]}, 'shellbox-media': {'usernames': [{'name': 'shellbox-media'}, {'name': 'shellbox-media-deploy'}]}, 'shellbox-syntaxhighlight': {'usernames': [{'name': 'shellbox-syntaxhighlight'}, {'name': 'shellbox-syntaxhighlight-deploy'}]}, 'shellbox-timeline': {'usernames': [{'name': 'shellbox-timeline'}, {'name': 'shellbox-timeline-deploy'}]}, 'shellbox-video': {'usernames': [{'name': 'shellbox-video'}, {'name': 'shellbox-video-deploy'}]}, 'tegola-vector-tiles': {'usernames': [{'name': 'tegola-vector-tiles'}, {'name': 'tegola-vector-tiles-deploy'}]}, 'termbox': {'usernames': [{'name': 'termbox'}, {'name': 'termbox-deploy'}]}, 'thumbor': {'usernames': [{'name': 'thumbor'}, {'name': 'thumbor-deploy'}]}, 'toolhub': {'usernames': [{'name': 'toolhub'}, {'name': 'toolhub-deploy'}]}, 'wikidata-query-gui': {'usernames': [{'name': 'wikidata-query-gui'}, {'name': 'wikidata-query-gui-deploy'}]}, 'wikifeeds': {'usernames': [{'name': 'wikifeeds'}, {'name': 'wikifeeds-deploy'}]}, 'wikifunctions': {'usernames': [{'name': 'wikifunctions'}, {'name': 'wikifunctions-deploy'}]}, 'zotero': {'usernames': [{'name': 'zotero'}, {'name': 'zotero-deploy'}]}}, 'ml-serve': {'article-descriptions': {'usernames': [{'group': 'deploy-ml-service', 'name': 'article-descriptions', 'owner': 'root'}, {'group': 'deploy-ml-service', 'name': 'article-descriptions-deploy', 'owner': 'root'}]}, 'article-models': {'usernames': [{'group': 'deploy-ml-service', 'name': 'article-models', 'owner': 'root'}, {'group': 'deploy-ml-service', 'name': 'article-models-deploy', 'owner': 'root'}]}, 'articletopic-outlink': {'usernames': [{'group': 'deploy-ml-service', 'name': 'articletopic-outlink', 'owner': 'root'}, {'group': 'deploy-ml-service', 'name': 'articletopic-outlink-deploy', 'owner': 'root'}]}, 'edit-check': {'usernames': [{'group': 'deploy-ml-service', 'name': 'edit-check', 'owner': 'root'}, {'group': 'deploy-ml-service', 'name': 'edit-check-deploy', 'owner': 'root'}]}, 'experimental': {'usernames': [{'group': 'deploy-ml-service', 'name': 'experimental', 'owner': 'root'}, {'group': 'deploy-ml-service', 'name': 'experimental-deploy', 'owner': 'root'}, {'group': 'deploy-ml-service', 'name': 'experimental-debug', 'owner': 'root'}]}, 'llm': {'usernames': [{'group': 'deploy-ml-service', 'name': 'llm', 'owner': 'root'}, {'group': 'deploy-ml-service', 'name': 'llm-deploy', 'owner': 'root'}]}, 'logo-detection': {'usernames': [{'group': 'deploy-ml-service', 'name': 'logo-detection', 'owner': 'root'}, {'group': 'deploy-ml-service', 'name': 'logo-detection-deploy', 'owner': 'root'}]}, 'ores-legacy': {'usernames': [{'group': 'deploy-ml-service', 'name': 'ores-legacy', 'owner': 'root'}, {'group': 'deploy-ml-service', 'name': 'ores-legacy-deploy', 'owner': 'root'}]}, 'readability': {'usernames': [{'group': 'deploy-ml-service', 'name': 'readability', 'owner': 'root'}, {'group': 'deploy-ml-service', 'name': 'readability-deploy', 'owner': 'root'}]}, 'recommendation-api-ng': {'usernames': [{'group': 'deploy-ml-service', 'name': 'recommendation-api-ng', 'owner': 'root'}, {'group': 'deploy-ml-service', 'name': 'recommendation-api-ng-deploy', 'owner': 'root'}]}, 'revertrisk': {'usernames': [{'group': 'deploy-ml-service', 'name': 'revertrisk', 'owner': 'root'}, {'group': 'deploy-ml-service', 'name': 'revertrisk-deploy', 'owner': 'root'}]}, 'revise-tone-task-generator': {'usernames': [{'group': 'deploy-ml-service', 'name': 'revise-tone-task-generator', 'owner': 'root'}, {'group': 'deploy-ml-service', 'name': 'revise-tone-task-generator-deploy', 'owner': 'root'}]}, 'revision-models': {'usernames': [{'group': 'deploy-ml-service', 'name': 'revision-models', 'owner': 'root'}, {'group': 'deploy-ml-service', 'name': 'revision-models-deploy', 'owner': 'root'}]}, 'revscoring-articlequality': {'usernames': [{'group': 'deploy-ml-service', 'name': 'revscoring-articlequality', 'owner': 'root'}, {'group': 'deploy-ml-service', 'name': 'revscoring-articlequality-deploy', 'owner': 'root'}]}, 'revscoring-articletopic': {'usernames': [{'group': 'deploy-ml-service', 'name': 'revscoring-articletopic', 'owner': 'root'}, {'group': 'deploy-ml-service', 'name': 'revscoring-articletopic-deploy', 'owner': 'root'}]}, 'revscoring-draftquality': {'usernames': [{'group': 'deploy-ml-service', 'name': 'revscoring-draftquality', 'owner': 'root'}, {'group': 'deploy-ml-service', 'name': 'revscoring-draftquality-deploy', 'owner': 'root'}]}, 'revscoring-drafttopic': {'usernames': [{'group': 'deploy-ml-service', 'name': 'revscoring-drafttopic', 'owner': 'root'}, {'group': 'deploy-ml-service', 'name': 'revscoring-drafttopic-deploy', 'owner': 'root'}]}, 'revscoring-editquality-damaging': {'usernames': [{'group': 'deploy-ml-service', 'name': 'revscoring-editquality-damaging', 'owner': 'root'}, {'group': 'deploy-ml-service', 'name': 'revscoring-editquality-damaging-deploy', 'owner': 'root'}]}, 'revscoring-editquality-goodfaith': {'usernames': [{'group': 'deploy-ml-service', 'name': 'revscoring-editquality-goodfaith', 'owner': 'root'}, {'group': 'deploy-ml-service', 'name': 'revscoring-editquality-goodfaith-deploy', 'owner': 'root'}]}, 'revscoring-editquality-reverted': {'usernames': [{'group': 'deploy-ml-service', 'name': 'revscoring-editquality-reverted', 'owner': 'root'}, {'group': 'deploy-ml-service', 'name': 'revscoring-editquality-reverted-deploy', 'owner': 'root'}]}}, 'dse-k8s': {'analytics': {'usernames': [{'group': 'analytics-deployers', 'name': 'analytics', 'owner': 'root'}, {'group': 'analytics-deployers', 'name': 'analytics-deploy', 'owner': 'root'}]}, 'analytics-test': {'usernames': [{'group': 'analytics-deployers', 'name': 'analytics-test', 'owner': 'root'}, {'group': 'analytics-deployers', 'name': 'analytics-test-deploy', 'owner': 'root'}]}, 'kafka-mirrormaker': {'usernames': [{'name': 'kafka-mirrormaker'}, {'name': 'kafka-mirrormaker-deploy'}]}, 'opensearch-ipoid': {'usernames': [{'name': 'opensearch-ipoid'}, {'name': 'opensearch-ipoid-deploy'}]}, 'opensearch-ipoid-test': {'usernames': [{'name': 'opensearch-ipoid-test'}, {'name': 'opensearch-ipoid-test-deploy'}]}, 'opensearch-operator': {'usernames': [{'name': 'opensearch-operator'}, {'name': 'opensearch-operator-deploy'}]}, 'opensearch-operator-3': {'usernames': [{'name': 'opensearch-operator-3'}, {'name': 'opensearch-operator-3-deploy'}]}, 'opensearch-semantic-search': {'usernames': [{'name': 'opensearch-semantic-search'}, {'name': 'opensearch-semantic-search-deploy'}]}, 'opensearch-semantic-search-test': {'usernames': [{'name': 'opensearch-semantic-search-test'}, {'name': 'opensearch-semantic-search-test-deploy'}]}, 'opensearch-test': {'usernames': [{'name': 'opensearch-test'}, {'name': 'opensearch-test-deploy'}]}}, 'dse-k8s-codfw': {'echoserver': {'usernames': [{'name': 'echoserver'}, {'name': 'echoserver-deploy'}]}}, 'dse-k8s-eqiad': {'airflow-analytics-product': {'private_files': {'group': 'airflow-deployers', 'mode': '0640', 'owner': 'root'}, 'usernames': [{'group': 'root', 'name': 'postgresql-airflow-analytics-product', 'owner': 'root'}, {'group': 'root', 'name': 'postgresql-airflow-analytics-product-deploy', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-analytics-product', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-analytics-product-deploy', 'owner': 'root'}]}, 'airflow-analytics-test': {'private_files': {'group': 'airflow-deployers', 'mode': '0640', 'owner': 'root'}, 'usernames': [{'group': 'root', 'name': 'postgresql-airflow-analytics-test', 'owner': 'root'}, {'group': 'root', 'name': 'postgresql-airflow-analytics-test-deploy', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-analytics-test', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-analytics-test-deploy', 'owner': 'root'}]}, 'airflow-dev': {'private_files': {'group': 'airflow-deployers', 'mode': '0640', 'owner': 'root'}, 'usernames': [{'group': 'root', 'name': 'postgresql-airflow-dev', 'owner': 'root'}, {'group': 'root', 'name': 'postgresql-airflow-dev-deploy', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-dev', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-dev-deploy', 'owner': 'root'}]}, 'airflow-fr-tech': {'private_files': {'group': 'airflow-deployers', 'mode': '0640', 'owner': 'root'}, 'usernames': [{'group': 'root', 'name': 'postgresql-airflow-fr-tech', 'owner': 'root'}, {'group': 'root', 'name': 'postgresql-airflow-fr-tech-deploy', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-fr-tech', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-fr-tech-deploy', 'owner': 'root'}]}, 'airflow-main': {'private_files': {'group': 'airflow-deployers', 'mode': '0640', 'owner': 'root'}, 'usernames': [{'group': 'root', 'name': 'postgresql-airflow-main', 'owner': 'root'}, {'group': 'root', 'name': 'postgresql-airflow-main-deploy', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-main', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-main-deploy', 'owner': 'root'}]}, 'airflow-ml': {'private_files': {'group': 'airflow-deployers', 'mode': '0640', 'owner': 'root'}, 'usernames': [{'group': 'root', 'name': 'postgresql-airflow-ml', 'owner': 'root'}, {'group': 'root', 'name': 'postgresql-airflow-ml-deploy', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-ml', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-ml-deploy', 'owner': 'root'}]}, 'airflow-platform-eng': {'private_files': {'group': 'airflow-deployers', 'mode': '0640', 'owner': 'root'}, 'usernames': [{'group': 'root', 'name': 'postgresql-airflow-platform-eng', 'owner': 'root'}, {'group': 'root', 'name': 'postgresql-airflow-platform-eng-deploy', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-platform-eng', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-platform-eng-deploy', 'owner': 'root'}]}, 'airflow-research': {'private_files': {'group': 'airflow-deployers', 'mode': '0640', 'owner': 'root'}, 'usernames': [{'group': 'root', 'name': 'postgresql-airflow-research', 'owner': 'root'}, {'group': 'root', 'name': 'postgresql-airflow-research-deploy', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-research', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-research-deploy', 'owner': 'root'}]}, 'airflow-search': {'private_files': {'group': 'airflow-deployers', 'mode': '0640', 'owner': 'root'}, 'usernames': [{'group': 'root', 'name': 'postgresql-airflow-search', 'owner': 'root'}, {'group': 'root', 'name': 'postgresql-airflow-search-deploy', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-search', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-search-deploy', 'owner': 'root'}]}, 'airflow-sre': {'private_files': {'group': 'ops', 'mode': '0640', 'owner': 'root'}, 'usernames': [{'group': 'root', 'name': 'postgresql-airflow-sre', 'owner': 'root'}, {'group': 'root', 'name': 'postgresql-airflow-sre-deploy', 'owner': 'root'}, {'group': 'ops', 'name': 'airflow-sre', 'owner': 'root'}, {'group': 'ops', 'name': 'airflow-sre-deploy', 'owner': 'root'}]}, 'airflow-test-k8s': {'private_files': {'group': 'airflow-deployers', 'mode': '0640', 'owner': 'root'}, 'usernames': [{'group': 'root', 'name': 'postgresql-airflow-test-k8s', 'owner': 'root'}, {'group': 'root', 'name': 'postgresql-airflow-test-k8s-deploy', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-test-k8s', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-test-k8s-deploy', 'owner': 'root'}]}, 'airflow-wikidata': {'private_files': {'group': 'airflow-deployers', 'mode': '0640', 'owner': 'root'}, 'usernames': [{'group': 'root', 'name': 'postgresql-airflow-wikidata', 'owner': 'root'}, {'group': 'root', 'name': 'postgresql-airflow-wikidata-deploy', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-wikidata', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-wikidata-deploy', 'owner': 'root'}]}, 'airflow-wmde': {'private_files': {'group': 'airflow-deployers', 'mode': '0640', 'owner': 'root'}, 'usernames': [{'group': 'root', 'name': 'postgresql-airflow-wmde', 'owner': 'root'}, {'group': 'root', 'name': 'postgresql-airflow-wmde-deploy', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-wmde', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-wmde-deploy', 'owner': 'root'}]}, 'blunderbuss': {'usernames': [{'name': 'blunderbuss'}, {'name': 'blunderbuss-deploy'}]}, 'datahub': {'usernames': [{'name': 'datahub'}, {'name': 'datahub-deploy'}]}, 'datahub-next': {'usernames': [{'name': 'datahub-next'}, {'name': 'datahub-next-deploy'}]}, 'datasets-config': {'usernames': [{'name': 'datasets-config'}, {'name': 'datasets-config-deploy'}]}, 'datasets-config-next': {'usernames': [{'name': 'datasets-config-next'}, {'name': 'datasets-config-next-deploy'}]}, 'growthbook': {'usernames': [{'group': 'root', 'name': 'postgresql-growthbook', 'owner': 'root'}, {'group': 'root', 'name': 'postgresql-growthbook-deploy', 'owner': 'root'}, {'name': 'growthbook'}, {'name': 'growthbook-deploy'}]}, 'growthbook-next': {'usernames': [{'group': 'root', 'name': 'postgresql-growthbook-next', 'owner': 'root'}, {'group': 'root', 'name': 'postgresql-growthbook-next-deploy', 'owner': 'root'}, {'name': 'growthbook-next'}, {'name': 'growthbook-next-deploy'}]}, 'llm-inference': {'usernames': [{'group': 'research-deployers', 'name': 'llm-inference', 'owner': 'root'}, {'group': 'research-deployers', 'name': 'llm-inference-deploy', 'owner': 'root'}]}, 'mediawiki-dumps-legacy': {'usernames': [{'name': 'mediawiki-dumps-legacy'}, {'name': 'mediawiki-dumps-legacy-deploy'}]}, 'mw-content-history-reconcile-enrich': {'usernames': [{'name': 'mw-content-history-reconcile-enrich'}, {'name': 'mw-content-history-reconcile-enrich-deploy'}]}, 'mw-content-history-reconcile-enrich-next': {'usernames': [{'name': 'mw-content-history-reconcile-enrich-next'}, {'name': 'mw-content-history-reconcile-enrich-next-deploy'}]}, 'mw-dump-rev-content-reconcile-enrich': {'usernames': [{'name': 'mw-dump-rev-content-reconcile-enrich'}, {'name': 'mw-dump-rev-content-reconcile-enrich-deploy'}]}, 'mw-dump-rev-content-reconcile-enrich-next': {'usernames': [{'name': 'mw-dump-rev-content-reconcile-enrich-next'}, {'name': 'mw-dump-rev-content-reconcile-enrich-next-deploy'}]}, 'mw-page-html-content-change-enrich': {'usernames': [{'name': 'mw-page-html-content-change-enrich'}, {'name': 'mw-page-html-content-change-enrich-deploy'}]}, 'mw-page-html-content-change-enrich-next': {'usernames': [{'name': 'mw-page-html-content-change-enrich-next'}, {'name': 'mw-page-html-content-change-enrich-next-deploy'}]}, 'mw-page-html-feature-counts-change-enrich': {'usernames': [{'name': 'mw-page-html-feature-counts-change-enrich'}, {'name': 'mw-page-html-feature-counts-change-enrich-deploy'}]}, 'mw-page-html-feature-counts-change-enrich-next': {'usernames': [{'name': 'mw-page-html-feature-counts-change-enrich-next'}, {'name': 'mw-page-html-feature-counts-change-enrich-next-deploy'}]}, 'rdf-streaming-updater': {'usernames': [{'name': 'rdf-streaming-updater'}, {'name': 'rdf-streaming-updater-deploy'}]}, 'spark': {'usernames': [{'name': 'spark'}, {'name': 'spark-deploy'}]}, 'spark-history': {'usernames': [{'group': 'analytics-deployers', 'name': 'spark-history', 'owner': 'root'}, {'group': 'analytics-deployers', 'name': 'spark-history-deploy', 'owner': 'root'}]}, 'spark-history-test': {'usernames': [{'group': 'analytics-deployers', 'name': 'spark-history-test', 'owner': 'root'}, {'group': 'analytics-deployers', 'name': 'spark-history-test-deploy', 'owner': 'root'}]}, 'superset': {'usernames': [{'group': 'analytics-deployers', 'name': 'superset', 'owner': 'root'}, {'group': 'analytics-deployers', 'name': 'superset-deploy', 'owner': 'root'}]}, 'superset-next': {'usernames': [{'group': 'analytics-deployers', 'name': 'superset-next', 'owner': 'root'}, {'group': 'analytics-deployers', 'name': 'superset-next-deploy', 'owner': 'root'}]}, 'test-kitchen': {'usernames': [{'name': 'test-kitchen'}, {'name': 'test-kitchen-deploy'}]}, 'test-kitchen-next': {'usernames': [{'name': 'test-kitchen-next'}, {'name': 'test-kitchen-next-deploy'}]}, 'turnilo': {'usernames': [{'name': 'turnilo'}, {'name': 'turnilo-deploy'}]}, 'turnilo-next': {'usernames': [{'name': 'turnilo-next'}, {'name': 'turnilo-next-deploy'}]}, 'wdqs-queryhammer': {'usernames': [{'name': 'wdqs-queryhammer'}, {'name': 'wdqs-queryhammer-deploy'}]}}, 'aux-k8s': {'codesearch': {'usernames': [{'name': 'codesearch'}, {'name': 'codesearch-deploy'}]}, 'jaeger': {'usernames': [{'name': 'jaeger'}, {'name': 'jaeger-deploy'}]}, 'kafka-mirrormaker': {'usernames': [{'name': 'kafka-mirrormaker'}, {'name': 'kafka-mirrormaker-deploy'}]}, 'miscweb': {'usernames': [{'name': 'miscweb'}, {'name': 'miscweb-deploy'}]}, 'redioscope': {'usernames': [{'name': 'redioscope'}, {'name': 'redioscope-deploy'}]}, 'sophroid': {'usernames': [{'name': 'sophroid'}, {'name': 'sophroid-deploy'}]}, 'zarcillo': {'usernames': [{'name': 'zarcillo'}, {'name': 'zarcillo-deploy'}]}}}\n+    services => {'main': {'apertium': {'usernames': [{'name': 'apertium'}, {'name': 'apertium-deploy'}]}, 'api-gateway': {'usernames': [{'name': 'api-gateway'}, {'name': 'api-gateway-deploy'}]}, 'benthos-cache-invalidator': {'usernames': [{'name': 'benthos-cache-invalidator'}, {'name': 'benthos-cache-invalidator-deploy'}]}, 'changeprop': {'usernames': [{'name': 'changeprop'}, {'name': 'changeprop-deploy'}]}, 'changeprop-jobqueue': {'usernames': [{'name': 'changeprop-jobqueue'}, {'name': 'changeprop-jobqueue-deploy'}]}, 'chart-renderer': {'usernames': [{'name': 'chart-renderer'}, {'name': 'chart-renderer-deploy'}]}, 'cirrus-streaming-updater': {'usernames': [{'name': 'cirrus-streaming-updater'}, {'name': 'cirrus-streaming-updater-deploy'}]}, 'citoid': {'usernames': [{'name': 'citoid'}, {'name': 'citoid-deploy'}]}, 'commons-impact-analytics': {'usernames': [{'name': 'commons-impact-analytics'}, {'name': 'commons-impact-analytics-deploy'}]}, 'cxserver': {'usernames': [{'name': 'cxserver'}, {'name': 'cxserver-deploy'}]}, 'data-gateway': {'usernames': [{'name': 'data-gateway'}, {'name': 'data-gateway-deploy'}]}, 'developer-portal': {'usernames': [{'name': 'developer-portal'}, {'name': 'developer-portal-deploy'}]}, 'device-analytics': {'usernames': [{'name': 'device-analytics'}, {'name': 'device-analytics-deploy'}]}, 'echostore': {'usernames': [{'name': 'echostore'}, {'name': 'echostore-deploy'}]}, 'edit-analytics': {'usernames': [{'name': 'edit-analytics'}, {'name': 'edit-analytics-deploy'}]}, 'editor-analytics': {'usernames': [{'name': 'editor-analytics'}, {'name': 'editor-analytics-deploy'}]}, 'eventgate-analytics': {'usernames': [{'name': 'eventgate-analytics'}, {'name': 'eventgate-analytics-deploy'}]}, 'eventgate-analytics-external': {'usernames': [{'name': 'eventgate-analytics-external'}, {'name': 'eventgate-analytics-external-deploy'}]}, 'eventgate-logging-external': {'usernames': [{'name': 'eventgate-logging-external'}, {'name': 'eventgate-logging-external-deploy'}]}, 'eventgate-main': {'usernames': [{'name': 'eventgate-main'}, {'name': 'eventgate-main-deploy'}]}, 'eventstreams': {'usernames': [{'name': 'eventstreams'}, {'name': 'eventstreams-deploy'}]}, 'eventstreams-internal': {'usernames': [{'name': 'eventstreams-internal'}, {'name': 'eventstreams-internal-deploy'}]}, 'failoid-ng': {'usernames': [{'name': 'failoid-ng'}, {'name': 'failoid-ng-deploy'}]}, 'geo-analytics': {'usernames': [{'name': 'geo-analytics'}, {'name': 'geo-analytics-deploy'}]}, 'ipoid': {'usernames': [{'name': 'ipoid'}, {'name': 'ipoid-deploy'}]}, 'kartotherian': {'usernames': [{'name': 'kartotherian'}, {'name': 'kartotherian-deploy'}]}, 'linked-artifacts': {'usernames': [{'name': 'linked-artifacts'}, {'name': 'linked-artifacts-deploy'}]}, 'linkrecommendation': {'usernames': [{'name': 'linkrecommendation'}, {'name': 'linkrecommendation-deploy'}]}, 'machinetranslation': {'usernames': [{'name': 'machinetranslation'}, {'name': 'machinetranslation-deploy'}]}, 'mathoid': {'usernames': [{'name': 'mathoid'}, {'name': 'mathoid-deploy'}]}, 'media-analytics': {'usernames': [{'name': 'media-analytics'}, {'name': 'media-analytics-deploy'}]}, 'miscweb': {'usernames': [{'name': 'miscweb'}, {'name': 'miscweb-deploy'}]}, 'mobileapps': {'usernames': [{'name': 'mobileapps'}, {'name': 'mobileapps-deploy'}]}, 'mw-api-ext': {'usernames': [{'name': 'mw-api-ext'}, {'name': 'mw-api-ext-deploy'}]}, 'mw-api-int': {'usernames': [{'name': 'mw-api-int'}, {'name': 'mw-api-int-deploy'}]}, 'mw-cron': {'usernames': [{'name': 'mw-cron'}, {'name': 'mw-cron-deploy'}, {'group': 'restricted', 'name': 'mw-cron-restricted'}, {'group': 'restricted', 'name': 'mw-cron-restricted-deploy'}]}, 'mw-debug': {'usernames': [{'name': 'mw-debug'}, {'name': 'mw-debug-deploy'}]}, 'mw-experimental': {'usernames': [{'name': 'mw-experimental'}, {'name': 'mw-experimental-deploy'}]}, 'mw-jobrunner': {'usernames': [{'name': 'mw-jobrunner'}, {'name': 'mw-jobrunner-deploy'}]}, 'mw-mcrouter': {'usernames': [{'name': 'mw-mcrouter'}, {'name': 'mw-mcrouter-deploy'}]}, 'mw-misc': {'usernames': [{'name': 'mw-misc'}, {'name': 'mw-misc-deploy'}]}, 'mw-page-content-change-enrich': {'usernames': [{'name': 'mw-page-content-change-enrich'}, {'name': 'mw-page-content-change-enrich-deploy'}]}, 'mw-parsoid': {'usernames': [{'name': 'mw-parsoid'}, {'name': 'mw-parsoid-deploy'}]}, 'mw-script': {'usernames': [{'name': 'mw-script'}, {'name': 'mw-script-deploy'}, {'group': 'restricted', 'name': 'mw-script-restricted'}, {'group': 'restricted', 'name': 'mw-script-restricted-deploy'}]}, 'mw-videoscaler': {'usernames': [{'name': 'mw-videoscaler'}, {'name': 'mw-videoscaler-deploy'}]}, 'mw-web': {'usernames': [{'name': 'mw-web'}, {'name': 'mw-web-deploy'}]}, 'mw-wikifunctions': {'usernames': [{'name': 'mw-wikifunctions'}, {'name': 'mw-wikifunctions-deploy'}]}, 'opentelemetry-collector': {'usernames': [{'name': 'opentelemetry-collector'}, {'name': 'opentelemetry-collector-deploy'}]}, 'page-analytics': {'usernames': [{'name': 'page-analytics'}, {'name': 'page-analytics-deploy'}]}, 'proton': {'usernames': [{'name': 'proton'}, {'name': 'proton-deploy'}]}, 'push-notifications': {'usernames': [{'name': 'push-notifications'}, {'name': 'push-notifications-deploy'}]}, 'ratelimit': {'usernames': [{'name': 'ratelimit'}, {'name': 'ratelimit-deploy'}]}, 'ratelimit-media': {'usernames': [{'name': 'ratelimit-media'}, {'name': 'ratelimit-media-deploy'}]}, 'rdf-streaming-updater': {'usernames': [{'name': 'rdf-streaming-updater'}, {'name': 'rdf-streaming-updater-deploy'}]}, 'recommendation-api': {'usernames': [{'name': 'recommendation-api'}, {'name': 'recommendation-api-deploy'}]}, 'rest-gateway': {'usernames': [{'name': 'rest-gateway'}, {'name': 'rest-gateway-deploy'}]}, 'sessionstore': {'usernames': [{'name': 'sessionstore'}, {'name': 'sessionstore-deploy'}]}, 'shellbox': {'usernames': [{'name': 'shellbox'}, {'name': 'shellbox-deploy'}]}, 'shellbox-constraints': {'usernames': [{'name': 'shellbox-constraints'}, {'name': 'shellbox-constraints-deploy'}]}, 'shellbox-media': {'usernames': [{'name': 'shellbox-media'}, {'name': 'shellbox-media-deploy'}]}, 'shellbox-syntaxhighlight': {'usernames': [{'name': 'shellbox-syntaxhighlight'}, {'name': 'shellbox-syntaxhighlight-deploy'}]}, 'shellbox-timeline': {'usernames': [{'name': 'shellbox-timeline'}, {'name': 'shellbox-timeline-deploy'}]}, 'shellbox-video': {'usernames': [{'name': 'shellbox-video'}, {'name': 'shellbox-video-deploy'}]}, 'tegola-vector-tiles': {'usernames': [{'name': 'tegola-vector-tiles'}, {'name': 'tegola-vector-tiles-deploy'}]}, 'termbox': {'usernames': [{'name': 'termbox'}, {'name': 'termbox-deploy'}]}, 'thumbor': {'usernames': [{'name': 'thumbor'}, {'name': 'thumbor-deploy'}]}, 'toolhub': {'usernames': [{'name': 'toolhub'}, {'name': 'toolhub-deploy'}]}, 'wikidata-query-gui': {'usernames': [{'name': 'wikidata-query-gui'}, {'name': 'wikidata-query-gui-deploy'}]}, 'wikifeeds': {'usernames': [{'name': 'wikifeeds'}, {'name': 'wikifeeds-deploy'}]}, 'wikifunctions': {'usernames': [{'name': 'wikifunctions'}, {'name': 'wikifunctions-deploy'}]}, 'zotero': {'usernames': [{'name': 'zotero'}, {'name': 'zotero-deploy'}]}}, 'ml-serve': {'article-descriptions': {'usernames': [{'group': 'deploy-ml-service', 'name': 'article-descriptions', 'owner': 'root'}, {'group': 'deploy-ml-service', 'name': 'article-descriptions-deploy', 'owner': 'root'}]}, 'article-models': {'usernames': [{'group': 'deploy-ml-service', 'name': 'article-models', 'owner': 'root'}, {'group': 'deploy-ml-service', 'name': 'article-models-deploy', 'owner': 'root'}]}, 'articletopic-outlink': {'usernames': [{'group': 'deploy-ml-service', 'name': 'articletopic-outlink', 'owner': 'root'}, {'group': 'deploy-ml-service', 'name': 'articletopic-outlink-deploy', 'owner': 'root'}]}, 'edit-check': {'usernames': [{'group': 'deploy-ml-service', 'name': 'edit-check', 'owner': 'root'}, {'group': 'deploy-ml-service', 'name': 'edit-check-deploy', 'owner': 'root'}]}, 'experimental': {'usernames': [{'group': 'deploy-ml-service', 'name': 'experimental', 'owner': 'root'}, {'group': 'deploy-ml-service', 'name': 'experimental-deploy', 'owner': 'root'}, {'group': 'deploy-ml-service', 'name': 'experimental-debug', 'owner': 'root'}]}, 'llm': {'usernames': [{'group': 'deploy-ml-service', 'name': 'llm', 'owner': 'root'}, {'group': 'deploy-ml-service', 'name': 'llm-deploy', 'owner': 'root'}]}, 'logo-detection': {'usernames': [{'group': 'deploy-ml-service', 'name': 'logo-detection', 'owner': 'root'}, {'group': 'deploy-ml-service', 'name': 'logo-detection-deploy', 'owner': 'root'}]}, 'ores-legacy': {'usernames': [{'group': 'deploy-ml-service', 'name': 'ores-legacy', 'owner': 'root'}, {'group': 'deploy-ml-service', 'name': 'ores-legacy-deploy', 'owner': 'root'}]}, 'readability': {'usernames': [{'group': 'deploy-ml-service', 'name': 'readability', 'owner': 'root'}, {'group': 'deploy-ml-service', 'name': 'readability-deploy', 'owner': 'root'}]}, 'recommendation-api-ng': {'usernames': [{'group': 'deploy-ml-service', 'name': 'recommendation-api-ng', 'owner': 'root'}, {'group': 'deploy-ml-service', 'name': 'recommendation-api-ng-deploy', 'owner': 'root'}]}, 'revertrisk': {'usernames': [{'group': 'deploy-ml-service', 'name': 'revertrisk', 'owner': 'root'}, {'group': 'deploy-ml-service', 'name': 'revertrisk-deploy', 'owner': 'root'}]}, 'revise-tone-task-generator': {'usernames': [{'group': 'deploy-ml-service', 'name': 'revise-tone-task-generator', 'owner': 'root'}, {'group': 'deploy-ml-service', 'name': 'revise-tone-task-generator-deploy', 'owner': 'root'}]}, 'revision-models': {'usernames': [{'group': 'deploy-ml-service', 'name': 'revision-models', 'owner': 'root'}, {'group': 'deploy-ml-service', 'name': 'revision-models-deploy', 'owner': 'root'}]}, 'revscoring-articlequality': {'usernames': [{'group': 'deploy-ml-service', 'name': 'revscoring-articlequality', 'owner': 'root'}, {'group': 'deploy-ml-service', 'name': 'revscoring-articlequality-deploy', 'owner': 'root'}]}, 'revscoring-articletopic': {'usernames': [{'group': 'deploy-ml-service', 'name': 'revscoring-articletopic', 'owner': 'root'}, {'group': 'deploy-ml-service', 'name': 'revscoring-articletopic-deploy', 'owner': 'root'}]}, 'revscoring-draftquality': {'usernames': [{'group': 'deploy-ml-service', 'name': 'revscoring-draftquality', 'owner': 'root'}, {'group': 'deploy-ml-service', 'name': 'revscoring-draftquality-deploy', 'owner': 'root'}]}, 'revscoring-drafttopic': {'usernames': [{'group': 'deploy-ml-service', 'name': 'revscoring-drafttopic', 'owner': 'root'}, {'group': 'deploy-ml-service', 'name': 'revscoring-drafttopic-deploy', 'owner': 'root'}]}, 'revscoring-editquality-damaging': {'usernames': [{'group': 'deploy-ml-service', 'name': 'revscoring-editquality-damaging', 'owner': 'root'}, {'group': 'deploy-ml-service', 'name': 'revscoring-editquality-damaging-deploy', 'owner': 'root'}]}, 'revscoring-editquality-goodfaith': {'usernames': [{'group': 'deploy-ml-service', 'name': 'revscoring-editquality-goodfaith', 'owner': 'root'}, {'group': 'deploy-ml-service', 'name': 'revscoring-editquality-goodfaith-deploy', 'owner': 'root'}]}, 'revscoring-editquality-reverted': {'usernames': [{'group': 'deploy-ml-service', 'name': 'revscoring-editquality-reverted', 'owner': 'root'}, {'group': 'deploy-ml-service', 'name': 'revscoring-editquality-reverted-deploy', 'owner': 'root'}]}}, 'dse-k8s': {'analytics': {'usernames': [{'group': 'analytics-deployers', 'name': 'analytics', 'owner': 'root'}, {'group': 'analytics-deployers', 'name': 'analytics-deploy', 'owner': 'root'}]}, 'analytics-test': {'usernames': [{'group': 'analytics-deployers', 'name': 'analytics-test', 'owner': 'root'}, {'group': 'analytics-deployers', 'name': 'analytics-test-deploy', 'owner': 'root'}]}, 'kafka-mirrormaker': {'usernames': [{'name': 'kafka-mirrormaker'}, {'name': 'kafka-mirrormaker-deploy'}]}, 'opensearch-ipoid': {'usernames': [{'name': 'opensearch-ipoid'}, {'name': 'opensearch-ipoid-deploy'}]}, 'opensearch-ipoid-test': {'usernames': [{'name': 'opensearch-ipoid-test'}, {'name': 'opensearch-ipoid-test-deploy'}]}, 'opensearch-operator': {'usernames': [{'name': 'opensearch-operator'}, {'name': 'opensearch-operator-deploy'}]}, 'opensearch-operator-3': {'usernames': [{'name': 'opensearch-operator-3'}, {'name': 'opensearch-operator-3-deploy'}]}, 'opensearch-semantic-search': {'usernames': [{'name': 'opensearch-semantic-search'}, {'name': 'opensearch-semantic-search-deploy'}]}, 'opensearch-semantic-search-test': {'usernames': [{'name': 'opensearch-semantic-search-test'}, {'name': 'opensearch-semantic-search-test-deploy'}]}, 'opensearch-test': {'usernames': [{'name': 'opensearch-test'}, {'name': 'opensearch-test-deploy'}]}, 'opensearch-toolhub': {'usernames': [{'name': 'opensearch-toolhub'}, {'name': 'opensearch-toolhub-deploy'}]}, 'opensearch-toolhub-test': {'usernames': [{'name': 'opensearch-toolhub-test'}, {'name': 'opensearch-toolhub-test-deploy'}]}, 'opensearch-apifeatureusage': {'usernames': [{'name': 'opensearch-apifeatureusage'}, {'name': 'opensearch-apifeatureusage-deploy'}]}, 'opensearch-apifeatureusage-test': {'usernames': [{'name': 'opensearch-apifeatureusage-test'}, {'name': 'opensearch-apifeatureusage-test-deploy'}]}, 'opensearch-ttmserver': {'usernames': [{'name': 'opensearch-ttmserver'}, {'name': 'opensearch-ttmserver-deploy'}]}, 'opensearch-ttmserver-test': {'usernames': [{'name': 'opensearch-ttmserver-test'}, {'name': 'opensearch-ttmserver-test-deploy'}]}}, 'dse-k8s-codfw': {'echoserver': {'usernames': [{'name': 'echoserver'}, {'name': 'echoserver-deploy'}]}}, 'dse-k8s-eqiad': {'airflow-analytics-product': {'private_files': {'group': 'airflow-deployers', 'mode': '0640', 'owner': 'root'}, 'usernames': [{'group': 'root', 'name': 'postgresql-airflow-analytics-product', 'owner': 'root'}, {'group': 'root', 'name': 'postgresql-airflow-analytics-product-deploy', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-analytics-product', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-analytics-product-deploy', 'owner': 'root'}]}, 'airflow-analytics-test': {'private_files': {'group': 'airflow-deployers', 'mode': '0640', 'owner': 'root'}, 'usernames': [{'group': 'root', 'name': 'postgresql-airflow-analytics-test', 'owner': 'root'}, {'group': 'root', 'name': 'postgresql-airflow-analytics-test-deploy', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-analytics-test', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-analytics-test-deploy', 'owner': 'root'}]}, 'airflow-dev': {'private_files': {'group': 'airflow-deployers', 'mode': '0640', 'owner': 'root'}, 'usernames': [{'group': 'root', 'name': 'postgresql-airflow-dev', 'owner': 'root'}, {'group': 'root', 'name': 'postgresql-airflow-dev-deploy', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-dev', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-dev-deploy', 'owner': 'root'}]}, 'airflow-fr-tech': {'private_files': {'group': 'airflow-deployers', 'mode': '0640', 'owner': 'root'}, 'usernames': [{'group': 'root', 'name': 'postgresql-airflow-fr-tech', 'owner': 'root'}, {'group': 'root', 'name': 'postgresql-airflow-fr-tech-deploy', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-fr-tech', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-fr-tech-deploy', 'owner': 'root'}]}, 'airflow-main': {'private_files': {'group': 'airflow-deployers', 'mode': '0640', 'owner': 'root'}, 'usernames': [{'group': 'root', 'name': 'postgresql-airflow-main', 'owner': 'root'}, {'group': 'root', 'name': 'postgresql-airflow-main-deploy', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-main', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-main-deploy', 'owner': 'root'}]}, 'airflow-ml': {'private_files': {'group': 'airflow-deployers', 'mode': '0640', 'owner': 'root'}, 'usernames': [{'group': 'root', 'name': 'postgresql-airflow-ml', 'owner': 'root'}, {'group': 'root', 'name': 'postgresql-airflow-ml-deploy', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-ml', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-ml-deploy', 'owner': 'root'}]}, 'airflow-platform-eng': {'private_files': {'group': 'airflow-deployers', 'mode': '0640', 'owner': 'root'}, 'usernames': [{'group': 'root', 'name': 'postgresql-airflow-platform-eng', 'owner': 'root'}, {'group': 'root', 'name': 'postgresql-airflow-platform-eng-deploy', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-platform-eng', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-platform-eng-deploy', 'owner': 'root'}]}, 'airflow-research': {'private_files': {'group': 'airflow-deployers', 'mode': '0640', 'owner': 'root'}, 'usernames': [{'group': 'root', 'name': 'postgresql-airflow-research', 'owner': 'root'}, {'group': 'root', 'name': 'postgresql-airflow-research-deploy', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-research', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-research-deploy', 'owner': 'root'}]}, 'airflow-search': {'private_files': {'group': 'airflow-deployers', 'mode': '0640', 'owner': 'root'}, 'usernames': [{'group': 'root', 'name': 'postgresql-airflow-search', 'owner': 'root'}, {'group': 'root', 'name': 'postgresql-airflow-search-deploy', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-search', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-search-deploy', 'owner': 'root'}]}, 'airflow-sre': {'private_files': {'group': 'ops', 'mode': '0640', 'owner': 'root'}, 'usernames': [{'group': 'root', 'name': 'postgresql-airflow-sre', 'owner': 'root'}, {'group': 'root', 'name': 'postgresql-airflow-sre-deploy', 'owner': 'root'}, {'group': 'ops', 'name': 'airflow-sre', 'owner': 'root'}, {'group': 'ops', 'name': 'airflow-sre-deploy', 'owner': 'root'}]}, 'airflow-test-k8s': {'private_files': {'group': 'airflow-deployers', 'mode': '0640', 'owner': 'root'}, 'usernames': [{'group': 'root', 'name': 'postgresql-airflow-test-k8s', 'owner': 'root'}, {'group': 'root', 'name': 'postgresql-airflow-test-k8s-deploy', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-test-k8s', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-test-k8s-deploy', 'owner': 'root'}]}, 'airflow-wikidata': {'private_files': {'group': 'airflow-deployers', 'mode': '0640', 'owner': 'root'}, 'usernames': [{'group': 'root', 'name': 'postgresql-airflow-wikidata', 'owner': 'root'}, {'group': 'root', 'name': 'postgresql-airflow-wikidata-deploy', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-wikidata', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-wikidata-deploy', 'owner': 'root'}]}, 'airflow-wmde': {'private_files': {'group': 'airflow-deployers', 'mode': '0640', 'owner': 'root'}, 'usernames': [{'group': 'root', 'name': 'postgresql-airflow-wmde', 'owner': 'root'}, {'group': 'root', 'name': 'postgresql-airflow-wmde-deploy', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-wmde', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-wmde-deploy', 'owner': 'root'}]}, 'blunderbuss': {'usernames': [{'name': 'blunderbuss'}, {'name': 'blunderbuss-deploy'}]}, 'datahub': {'usernames': [{'name': 'datahub'}, {'name': 'datahub-deploy'}]}, 'datahub-next': {'usernames': [{'name': 'datahub-next'}, {'name': 'datahub-next-deploy'}]}, 'datasets-config': {'usernames': [{'name': 'datasets-config'}, {'name': 'datasets-config-deploy'}]}, 'datasets-config-next': {'usernames': [{'name': 'datasets-config-next'}, {'name': 'datasets-config-next-deploy'}]}, 'growthbook': {'usernames': [{'group': 'root', 'name': 'postgresql-growthbook', 'owner': 'root'}, {'group': 'root', 'name': 'postgresql-growthbook-deploy', 'owner': 'root'}, {'name': 'growthbook'}, {'name': 'growthbook-deploy'}]}, 'growthbook-next': {'usernames': [{'group': 'root', 'name': 'postgresql-growthbook-next', 'owner': 'root'}, {'group': 'root', 'name': 'postgresql-growthbook-next-deploy', 'owner': 'root'}, {'name': 'growthbook-next'}, {'name': 'growthbook-next-deploy'}]}, 'llm-inference': {'usernames': [{'group': 'research-deployers', 'name': 'llm-inference', 'owner': 'root'}, {'group': 'research-deployers', 'name': 'llm-inference-deploy', 'owner': 'root'}]}, 'mediawiki-dumps-legacy': {'usernames': [{'name': 'mediawiki-dumps-legacy'}, {'name': 'mediawiki-dumps-legacy-deploy'}]}, 'mw-content-history-reconcile-enrich': {'usernames': [{'name': 'mw-content-history-reconcile-enrich'}, {'name': 'mw-content-history-reconcile-enrich-deploy'}]}, 'mw-content-history-reconcile-enrich-next': {'usernames': [{'name': 'mw-content-history-reconcile-enrich-next'}, {'name': 'mw-content-history-reconcile-enrich-next-deploy'}]}, 'mw-dump-rev-content-reconcile-enrich': {'usernames': [{'name': 'mw-dump-rev-content-reconcile-enrich'}, {'name': 'mw-dump-rev-content-reconcile-enrich-deploy'}]}, 'mw-dump-rev-content-reconcile-enrich-next': {'usernames': [{'name': 'mw-dump-rev-content-reconcile-enrich-next'}, {'name': 'mw-dump-rev-content-reconcile-enrich-next-deploy'}]}, 'mw-page-html-content-change-enrich': {'usernames': [{'name': 'mw-page-html-content-change-enrich'}, {'name': 'mw-page-html-content-change-enrich-deploy'}]}, 'mw-page-html-content-change-enrich-next': {'usernames': [{'name': 'mw-page-html-content-change-enrich-next'}, {'name': 'mw-page-html-content-change-enrich-next-deploy'}]}, 'mw-page-html-feature-counts-change-enrich': {'usernames': [{'name': 'mw-page-html-feature-counts-change-enrich'}, {'name': 'mw-page-html-feature-counts-change-enrich-deploy'}]}, 'mw-page-html-feature-counts-change-enrich-next': {'usernames': [{'name': 'mw-page-html-feature-counts-change-enrich-next'}, {'name': 'mw-page-html-feature-counts-change-enrich-next-deploy'}]}, 'rdf-streaming-updater': {'usernames': [{'name': 'rdf-streaming-updater'}, {'name': 'rdf-streaming-updater-deploy'}]}, 'spark': {'usernames': [{'name': 'spark'}, {'name': 'spark-deploy'}]}, 'spark-history': {'usernames': [{'group': 'analytics-deployers', 'name': 'spark-history', 'owner': 'root'}, {'group': 'analytics-deployers', 'name': 'spark-history-deploy', 'owner': 'root'}]}, 'spark-history-test': {'usernames': [{'group': 'analytics-deployers', 'name': 'spark-history-test', 'owner': 'root'}, {'group': 'analytics-deployers', 'name': 'spark-history-test-deploy', 'owner': 'root'}]}, 'superset': {'usernames': [{'group': 'analytics-deployers', 'name': 'superset', 'owner': 'root'}, {'group': 'analytics-deployers', 'name': 'superset-deploy', 'owner': 'root'}]}, 'superset-next': {'usernames': [{'group': 'analytics-deployers', 'name': 'superset-next', 'owner': 'root'}, {'group': 'analytics-deployers', 'name': 'superset-next-deploy', 'owner': 'root'}]}, 'test-kitchen': {'usernames': [{'name': 'test-kitchen'}, {'name': 'test-kitchen-deploy'}]}, 'test-kitchen-next': {'usernames': [{'name': 'test-kitchen-next'}, {'name': 'test-kitchen-next-deploy'}]}, 'turnilo': {'usernames': [{'name': 'turnilo'}, {'name': 'turnilo-deploy'}]}, 'turnilo-next': {'usernames': [{'name': 'turnilo-next'}, {'name': 'turnilo-next-deploy'}]}, 'wdqs-queryhammer': {'usernames': [{'name': 'wdqs-queryhammer'}, {'name': 'wdqs-queryhammer-deploy'}]}}, 'aux-k8s': {'codesearch': {'usernames': [{'name': 'codesearch'}, {'name': 'codesearch-deploy'}]}, 'jaeger': {'usernames': [{'name': 'jaeger'}, {'name': 'jaeger-deploy'}]}, 'kafka-mirrormaker': {'usernames': [{'name': 'kafka-mirrormaker'}, {'name': 'kafka-mirrormaker-deploy'}]}, 'miscweb': {'usernames': [{'name': 'miscweb'}, {'name': 'miscweb-deploy'}]}, 'redioscope': {'usernames': [{'name': 'redioscope'}, {'name': 'redioscope-deploy'}]}, 'sophroid': {'usernames': [{'name': 'sophroid'}, {'name': 'sophroid-deploy'}]}, 'zarcillo': {'usernames': [{'name': 'zarcillo'}, {'name': 'zarcillo-deploy'}]}}}\n"}, {"resource": "K8s::Kubeconfig[/etc/kubernetes/opensearch-ttmserver-dse-k8s-codfw.config]", "parameters": "--- K8s::Kubeconfig[/etc/kubernetes/opensearch-ttmserver-dse-k8s-codfw.config].orig\n+++ K8s::Kubeconfig[/etc/kubernetes/opensearch-ttmserver-dse-k8s-codfw.config]\n\n+    ensure      => present\n+    owner       => mwdeploy\n+    auth_cert   => {'cert': '/etc/kubernetes/pki/dse__opensearch-ttmserver.pem', 'key': '/etc/kubernetes/pki/dse__opensearch-ttmserver-key.pem', 'chain': '/etc/kubernetes/pki/dse__opensearch-ttmserver.chain.pem', 'chained': '/etc/kubernetes/pki/dse__opensearch-ttmserver.chained.pem'}\n+    group       => deployment\n+    mode        => 0640\n+    master_host => dse-k8s-ctrl.svc.codfw.wmnet\n+    username    => opensearch-ttmserver\n+    namespace   => opensearch-ttmserver\n+    require     => ['Class[K8s::Base_dirs]']\n"}, {"resource": "Exec[Generate cert dse__opensearch-ttmserver-test-deploy refresh on intermediate ca change]", "parameters": "--- Exec[Generate cert dse__opensearch-ttmserver-test-deploy refresh on intermediate ca change].orig\n+++ Exec[Generate cert dse__opensearch-ttmserver-test-deploy refresh on intermediate ca change]\n\n+    environment => ['GODEBUG=x509ignoreCN=0']\n+    require     => Cfssl::Csr[/etc/cfssl/csr/dse__opensearch-ttmserver-test-deploy.csr]\n+    command     => /usr/bin/cfssl gencert -config /etc/cfssl/client-cfssl.conf -tls-remote-ca /etc/ssl/certs/wmf-ca-certificates.crt -mutual-tls-client-cert /etc/cfssl/mutual_tls_client_cert.pem -mutual-tls-client-key /var/lib/puppet/ssl/private_keys/deploy1003.eqiad.wmnet.pem -label dse  /etc/cfssl/csr/dse__opensearch-ttmserver-test-deploy.csr | /usr/bin/cfssljson -bare /etc/kubernetes/pki/dse__opensearch-ttmserver-test-deploy\n\n+    refreshonly => True\n+    subscribe   => File[/etc/kubernetes/pki/dse__opensearch-ttmserver-test-deploy.chain.pem]\n"}, {"resource": "File[/etc/cfssl/csr/dse__opensearch-ttmserver-test.csr]", "content": "--- /etc/cfssl/csr/dse__opensearch-ttmserver-test.csr.orig\n+++ /etc/cfssl/csr/dse__opensearch-ttmserver-test.csr\n@@ -0,0 +1,19 @@\n+{\n+  \"CN\": \"opensearch-ttmserver-test\",\n+  \"hosts\": [\n+    \"opensearch-ttmserver-test\"\n+  ],\n+  \"key\": {\n+    \"algo\": \"ecdsa\",\n+    \"size\": 256\n+  },\n+  \"names\": [\n+    {\n+      \"C\": null,\n+      \"L\": null,\n+      \"O\": \"view\",\n+      \"OU\": null,\n+      \"S\": null\n+    }\n+  ]\n+}", "parameters": "--- File[/etc/cfssl/csr/dse__opensearch-ttmserver-test.csr].orig\n+++ File[/etc/cfssl/csr/dse__opensearch-ttmserver-test.csr]\n\n+    mode   => 0400\n+    owner  => root\n+    ensure => file\n+    group  => root\n"}, {"resource": "Cfssl::Cert[dse__opensearch-ttmserver]", "parameters": "--- Cfssl::Cert[dse__opensearch-ttmserver].orig\n+++ Cfssl::Cert[dse__opensearch-ttmserver]\n\n+    key             => {'algo': 'ecdsa', 'size': 256}\n+    ensure          => present\n+    owner           => mwdeploy\n+    renew_seconds   => 952200\n+    group           => deployment\n+    common_name     => opensearch-ttmserver\n+    mode            => 0740\n+    notify_services => []\n+    label           => dse\n+    environment     => ['GODEBUG=x509ignoreCN=0']\n+    auto_renew      => True\n+    outdir          => /etc/kubernetes/pki\n+    hosts           => []\n+    before_services => []\n+    names           => [{'organisation': 'view'}]\n+    provide_chain   => True\n"}, {"resource": "Exec[Generate cert dse__opensearch-apifeatureusage-deploy refresh on intermediate ca change]", "parameters": "--- Exec[Generate cert dse__opensearch-apifeatureusage-deploy refresh on intermediate ca change].orig\n+++ Exec[Generate cert dse__opensearch-apifeatureusage-deploy refresh on intermediate ca change]\n\n+    environment => ['GODEBUG=x509ignoreCN=0']\n+    require     => Cfssl::Csr[/etc/cfssl/csr/dse__opensearch-apifeatureusage-deploy.csr]\n+    command     => /usr/bin/cfssl gencert -config /etc/cfssl/client-cfssl.conf -tls-remote-ca /etc/ssl/certs/wmf-ca-certificates.crt -mutual-tls-client-cert /etc/cfssl/mutual_tls_client_cert.pem -mutual-tls-client-key /var/lib/puppet/ssl/private_keys/deploy1003.eqiad.wmnet.pem -label dse  /etc/cfssl/csr/dse__opensearch-apifeatureusage-deploy.csr | /usr/bin/cfssljson -bare /etc/kubernetes/pki/dse__opensearch-apifeatureusage-deploy\n\n+    refreshonly => True\n+    subscribe   => File[/etc/kubernetes/pki/dse__opensearch-apifeatureusage-deploy.chain.pem]\n"}, {"resource": "File[/etc/kubernetes/pki/dse__opensearch-ttmserver-test.chained.pem]", "parameters": "--- File[/etc/kubernetes/pki/dse__opensearch-ttmserver-test.chained.pem].orig\n+++ File[/etc/kubernetes/pki/dse__opensearch-ttmserver-test.chained.pem]\n\n+    require => Exec[create chained cert /etc/kubernetes/pki/dse__opensearch-ttmserver-test.chain.pem]\n+    owner   => mwdeploy\n+    ensure  => file\n+    group   => deployment\n"}, {"resource": "File[/etc/kubernetes/pki/dse__opensearch-toolhub-test.pem]", "parameters": "--- File[/etc/kubernetes/pki/dse__opensearch-toolhub-test.pem].orig\n+++ File[/etc/kubernetes/pki/dse__opensearch-toolhub-test.pem]\n\n+    mode   => 0440\n+    owner  => mwdeploy\n+    ensure => file\n+    group  => deployment\n"}, {"resource": "Exec[renew certificate - dse__opensearch-apifeatureusage]", "parameters": "--- Exec[renew certificate - dse__opensearch-apifeatureusage].orig\n+++ Exec[renew certificate - dse__opensearch-apifeatureusage]\n\n+    environment => ['GODEBUG=x509ignoreCN=0']\n+    command     => /usr/bin/cfssl sign -config /etc/cfssl/client-cfssl.conf -tls-remote-ca /etc/ssl/certs/wmf-ca-certificates.crt -mutual-tls-client-cert /etc/cfssl/mutual_tls_client_cert.pem -mutual-tls-client-key /var/lib/puppet/ssl/private_keys/deploy1003.eqiad.wmnet.pem -label dse  /etc/kubernetes/pki/dse__opensearch-apifeatureusage.csr | /usr/bin/cfssljson -bare /etc/kubernetes/pki/dse__opensearch-apifeatureusage\n\n+    unless      => /usr/bin/openssl x509 -in /etc/kubernetes/pki/dse__opensearch-apifeatureusage.pem -checkend 952200\n+    require     => Exec[Generate cert dse__opensearch-apifeatureusage]\n"}, {"resource": "Cfssl::Csr[/etc/cfssl/csr/dse__opensearch-apifeatureusage-test-deploy.csr]", "parameters": "--- Cfssl::Csr[/etc/cfssl/csr/dse__opensearch-apifeatureusage-test-deploy.csr].orig\n+++ Cfssl::Csr[/etc/cfssl/csr/dse__opensearch-apifeatureusage-test-deploy.csr]\n\n+    key         => {'algo': 'ecdsa', 'size': 256}\n+    common_name => opensearch-apifeatureusage-test-deploy\n+    names       => [{'organisation': 'view'}, {'organisation': 'deploy'}]\n+    ensure      => present\n+    hosts       => []\n"}, {"resource": "File[/etc/kubernetes/pki/dse__opensearch-toolhub-deploy-key.pem]", "parameters": "--- File[/etc/kubernetes/pki/dse__opensearch-toolhub-deploy-key.pem].orig\n+++ File[/etc/kubernetes/pki/dse__opensearch-toolhub-deploy-key.pem]\n\n+    mode      => 0440\n+    ensure    => file\n+    show_diff => False\n+    owner     => mwdeploy\n+    backup    => False\n+    group     => deployment\n"}, {"resource": "Exec[create chained cert /etc/kubernetes/pki/dse__opensearch-apifeatureusage.chain.pem]", "parameters": "--- Exec[create chained cert /etc/kubernetes/pki/dse__opensearch-apifeatureusage.chain.pem].orig\n+++ Exec[create chained cert /etc/kubernetes/pki/dse__opensearch-apifeatureusage.chain.pem]\n\n+    unless    => /usr/bin/test \"$(/bin/cat /etc/kubernetes/pki/dse__opensearch-apifeatureusage.pem /etc/kubernetes/pki/dse__opensearch-apifeatureusage.chain.pem | sha512sum)\" == \"$(/bin/cat /etc/kubernetes/pki/dse__opensearch-apifeatureusage.chained.pem | sha512sum)\"\n\n+    command   => /bin/cat /etc/kubernetes/pki/dse__opensearch-apifeatureusage.pem /etc/kubernetes/pki/dse__opensearch-apifeatureusage.chain.pem > /etc/kubernetes/pki/dse__opensearch-apifeatureusage.chained.pem\n+    require   => Exec[Generate cert dse__opensearch-apifeatureusage refresh on intermediate ca change]\n+    subscribe => ['Exec[renew certificate - dse__opensearch-apifeatureusage]', 'File[/etc/kubernetes/pki/dse__opensearch-apifeatureusage.chain.pem]', 'File[/etc/kubernetes/pki/dse__opensearch-apifeatureusage.pem]']\n"}, {"resource": "File[/etc/helmfile-defaults/private/dse-k8s_services/opensearch-apifeatureusage-test]", "parameters": "--- File[/etc/helmfile-defaults/private/dse-k8s_services/opensearch-apifeatureusage-test].orig\n+++ File[/etc/helmfile-defaults/private/dse-k8s_services/opensearch-apifeatureusage-test]\n\n+    group   => deployment\n+    mode    => 0751\n+    ensure  => directory\n+    recurse => True\n+    owner   => mwdeploy\n+    force   => True\n"}, {"resource": "File[/etc/kubernetes/opensearch-toolhub-test-deploy-dse-k8s-codfw.config]", "content": "--- /etc/kubernetes/opensearch-toolhub-test-deploy-dse-k8s-codfw.config.orig\n+++ /etc/kubernetes/opensearch-toolhub-test-deploy-dse-k8s-codfw.config\n@@ -0,0 +1,19 @@\n+apiVersion: v1\n+kind: Config\n+preferences: {}\n+current-context: default-system\n+contexts:\n+- name: default-system\n+  context:\n+    cluster: default-cluster\n+    user: opensearch-toolhub-test-deploy\n+    namespace: opensearch-toolhub-test\n+clusters:\n+- name: default-cluster\n+  cluster:\n+    server: https://dse-k8s-ctrl.svc.codfw.wmnet:6443\n+users:\n+- name: opensearch-toolhub-test-deploy\n+  user:\n+    client-certificate: /etc/kubernetes/pki/dse__opensearch-toolhub-test-deploy.pem\n+    client-key: /etc/kubernetes/pki/dse__opensearch-toolhub-test-deploy-key.pem", "parameters": "--- File[/etc/kubernetes/opensearch-toolhub-test-deploy-dse-k8s-codfw.config].orig\n+++ File[/etc/kubernetes/opensearch-toolhub-test-deploy-dse-k8s-codfw.config]\n\n+    mode   => 0640\n+    owner  => mwdeploy\n+    ensure => present\n+    group  => deployment\n"}, {"resource": "File[/etc/kubernetes/pki/dse__opensearch-toolhub-deploy.chained.pem]", "parameters": "--- File[/etc/kubernetes/pki/dse__opensearch-toolhub-deploy.chained.pem].orig\n+++ File[/etc/kubernetes/pki/dse__opensearch-toolhub-deploy.chained.pem]\n\n+    require => Exec[create chained cert /etc/kubernetes/pki/dse__opensearch-toolhub-deploy.chain.pem]\n+    owner   => mwdeploy\n+    ensure  => file\n+    group   => deployment\n"}, {"resource": "Exec[Generate cert dse__opensearch-toolhub-test-deploy]", "parameters": "--- Exec[Generate cert dse__opensearch-toolhub-test-deploy].orig\n+++ Exec[Generate cert dse__opensearch-toolhub-test-deploy]\n\n+    environment => ['GODEBUG=x509ignoreCN=0']\n+    command     => /usr/bin/cfssl gencert -config /etc/cfssl/client-cfssl.conf -tls-remote-ca /etc/ssl/certs/wmf-ca-certificates.crt -mutual-tls-client-cert /etc/cfssl/mutual_tls_client_cert.pem -mutual-tls-client-key /var/lib/puppet/ssl/private_keys/deploy1003.eqiad.wmnet.pem -label dse  /etc/cfssl/csr/dse__opensearch-toolhub-test-deploy.csr | /usr/bin/cfssljson -bare /etc/kubernetes/pki/dse__opensearch-toolhub-test-deploy\n\n+    unless      => /usr/bin/test \"$(/usr/bin/openssl x509 -in /etc/kubernetes/pki/dse__opensearch-toolhub-test-deploy.pem -noout -pubkey 2>&1)\" == \"$(/usr/bin/openssl pkey -pubout -in /etc/kubernetes/pki/dse__opensearch-toolhub-test-deploy-key.pem 2>&1)\"\n\n+    require     => Cfssl::Csr[/etc/cfssl/csr/dse__opensearch-toolhub-test-deploy.csr]\n"}], "perc_changed": "2.50%"}, "core": {"total": 17015, "only_in_self": [], "only_in_other": ["Exec[Generate cert dse__opensearch-apifeatureusage refresh on intermediate ca change]", "Exec[Generate cert dse__opensearch-apifeatureusage refresh]", "Exec[Generate cert dse__opensearch-apifeatureusage-deploy refresh on intermediate ca change]", "Exec[Generate cert dse__opensearch-apifeatureusage-deploy refresh]", "Exec[Generate cert dse__opensearch-apifeatureusage-deploy]", "Exec[Generate cert dse__opensearch-apifeatureusage-test refresh on intermediate ca change]", "Exec[Generate cert dse__opensearch-apifeatureusage-test refresh]", "Exec[Generate cert dse__opensearch-apifeatureusage-test-deploy refresh on intermediate ca change]", "Exec[Generate cert dse__opensearch-apifeatureusage-test-deploy refresh]", "Exec[Generate cert dse__opensearch-apifeatureusage-test-deploy]", "Exec[Generate cert dse__opensearch-apifeatureusage-test]", "Exec[Generate cert dse__opensearch-apifeatureusage]", "Exec[Generate cert dse__opensearch-toolhub refresh on intermediate ca change]", "Exec[Generate cert dse__opensearch-toolhub refresh]", "Exec[Generate cert dse__opensearch-toolhub-deploy refresh on intermediate ca change]", "Exec[Generate cert dse__opensearch-toolhub-deploy refresh]", "Exec[Generate cert dse__opensearch-toolhub-deploy]", "Exec[Generate cert dse__opensearch-toolhub-test refresh on intermediate ca change]", "Exec[Generate cert dse__opensearch-toolhub-test refresh]", "Exec[Generate cert dse__opensearch-toolhub-test-deploy refresh on intermediate ca change]", "Exec[Generate cert dse__opensearch-toolhub-test-deploy refresh]", "Exec[Generate cert dse__opensearch-toolhub-test-deploy]", "Exec[Generate cert dse__opensearch-toolhub-test]", "Exec[Generate cert dse__opensearch-toolhub]", "Exec[Generate cert dse__opensearch-ttmserver refresh on intermediate ca change]", "Exec[Generate cert dse__opensearch-ttmserver refresh]", "Exec[Generate cert dse__opensearch-ttmserver-deploy refresh on intermediate ca change]", "Exec[Generate cert dse__opensearch-ttmserver-deploy refresh]", "Exec[Generate cert dse__opensearch-ttmserver-deploy]", "Exec[Generate cert dse__opensearch-ttmserver-test refresh on intermediate ca change]", "Exec[Generate cert dse__opensearch-ttmserver-test refresh]", "Exec[Generate cert dse__opensearch-ttmserver-test-deploy refresh on intermediate ca change]", "Exec[Generate cert dse__opensearch-ttmserver-test-deploy refresh]", "Exec[Generate cert dse__opensearch-ttmserver-test-deploy]", "Exec[Generate cert dse__opensearch-ttmserver-test]", "Exec[Generate cert dse__opensearch-ttmserver]", "Exec[create chained cert /etc/kubernetes/pki/dse__opensearch-apifeatureusage-deploy.chain.pem]", "Exec[create chained cert /etc/kubernetes/pki/dse__opensearch-apifeatureusage-test-deploy.chain.pem]", "Exec[create chained cert /etc/kubernetes/pki/dse__opensearch-apifeatureusage-test.chain.pem]", "Exec[create chained cert /etc/kubernetes/pki/dse__opensearch-apifeatureusage.chain.pem]", "Exec[create chained cert /etc/kubernetes/pki/dse__opensearch-toolhub-deploy.chain.pem]", "Exec[create chained cert /etc/kubernetes/pki/dse__opensearch-toolhub-test-deploy.chain.pem]", "Exec[create chained cert /etc/kubernetes/pki/dse__opensearch-toolhub-test.chain.pem]", "Exec[create chained cert /etc/kubernetes/pki/dse__opensearch-toolhub.chain.pem]", "Exec[create chained cert /etc/kubernetes/pki/dse__opensearch-ttmserver-deploy.chain.pem]", "Exec[create chained cert /etc/kubernetes/pki/dse__opensearch-ttmserver-test-deploy.chain.pem]", "Exec[create chained cert /etc/kubernetes/pki/dse__opensearch-ttmserver-test.chain.pem]", "Exec[create chained cert /etc/kubernetes/pki/dse__opensearch-ttmserver.chain.pem]", "Exec[renew certificate - dse__opensearch-apifeatureusage-deploy]", "Exec[renew certificate - dse__opensearch-apifeatureusage-test-deploy]", "Exec[renew certificate - dse__opensearch-apifeatureusage-test]", "Exec[renew certificate - dse__opensearch-apifeatureusage]", "Exec[renew certificate - dse__opensearch-toolhub-deploy]", "Exec[renew certificate - dse__opensearch-toolhub-test-deploy]", "Exec[renew certificate - dse__opensearch-toolhub-test]", "Exec[renew certificate - dse__opensearch-toolhub]", "Exec[renew certificate - dse__opensearch-ttmserver-deploy]", "Exec[renew certificate - dse__opensearch-ttmserver-test-deploy]", "Exec[renew certificate - dse__opensearch-ttmserver-test]", "Exec[renew certificate - dse__opensearch-ttmserver]", "File[/etc/cfssl/csr/dse__opensearch-apifeatureusage-deploy.csr]", "File[/etc/cfssl/csr/dse__opensearch-apifeatureusage-test-deploy.csr]", "File[/etc/cfssl/csr/dse__opensearch-apifeatureusage-test.csr]", "File[/etc/cfssl/csr/dse__opensearch-apifeatureusage.csr]", "File[/etc/cfssl/csr/dse__opensearch-toolhub-deploy.csr]", "File[/etc/cfssl/csr/dse__opensearch-toolhub-test-deploy.csr]", "File[/etc/cfssl/csr/dse__opensearch-toolhub-test.csr]", "File[/etc/cfssl/csr/dse__opensearch-toolhub.csr]", "File[/etc/cfssl/csr/dse__opensearch-ttmserver-deploy.csr]", "File[/etc/cfssl/csr/dse__opensearch-ttmserver-test-deploy.csr]", "File[/etc/cfssl/csr/dse__opensearch-ttmserver-test.csr]", "File[/etc/cfssl/csr/dse__opensearch-ttmserver.csr]", "File[/etc/helmfile-defaults/private/dse-k8s_services/opensearch-apifeatureusage-test]", "File[/etc/helmfile-defaults/private/dse-k8s_services/opensearch-apifeatureusage]", "File[/etc/helmfile-defaults/private/dse-k8s_services/opensearch-toolhub-test]", "File[/etc/helmfile-defaults/private/dse-k8s_services/opensearch-toolhub]", "File[/etc/helmfile-defaults/private/dse-k8s_services/opensearch-ttmserver-test]", "File[/etc/helmfile-defaults/private/dse-k8s_services/opensearch-ttmserver]", "File[/etc/kubernetes/opensearch-apifeatureusage-deploy-dse-k8s-codfw.config]", "File[/etc/kubernetes/opensearch-apifeatureusage-deploy-dse-k8s-eqiad.config]", "File[/etc/kubernetes/opensearch-apifeatureusage-dse-k8s-codfw.config]", "File[/etc/kubernetes/opensearch-apifeatureusage-dse-k8s-eqiad.config]", "File[/etc/kubernetes/opensearch-apifeatureusage-test-deploy-dse-k8s-codfw.config]", "File[/etc/kubernetes/opensearch-apifeatureusage-test-deploy-dse-k8s-eqiad.config]", "File[/etc/kubernetes/opensearch-apifeatureusage-test-dse-k8s-codfw.config]", "File[/etc/kubernetes/opensearch-apifeatureusage-test-dse-k8s-eqiad.config]", "File[/etc/kubernetes/opensearch-toolhub-deploy-dse-k8s-codfw.config]", "File[/etc/kubernetes/opensearch-toolhub-deploy-dse-k8s-eqiad.config]", "File[/etc/kubernetes/opensearch-toolhub-dse-k8s-codfw.config]", "File[/etc/kubernetes/opensearch-toolhub-dse-k8s-eqiad.config]", "File[/etc/kubernetes/opensearch-toolhub-test-deploy-dse-k8s-codfw.config]", "File[/etc/kubernetes/opensearch-toolhub-test-deploy-dse-k8s-eqiad.config]", "File[/etc/kubernetes/opensearch-toolhub-test-dse-k8s-codfw.config]", "File[/etc/kubernetes/opensearch-toolhub-test-dse-k8s-eqiad.config]", "File[/etc/kubernetes/opensearch-ttmserver-deploy-dse-k8s-codfw.config]", "File[/etc/kubernetes/opensearch-ttmserver-deploy-dse-k8s-eqiad.config]", "File[/etc/kubernetes/opensearch-ttmserver-dse-k8s-codfw.config]", "File[/etc/kubernetes/opensearch-ttmserver-dse-k8s-eqiad.config]", "File[/etc/kubernetes/opensearch-ttmserver-test-deploy-dse-k8s-codfw.config]", "File[/etc/kubernetes/opensearch-ttmserver-test-deploy-dse-k8s-eqiad.config]", "File[/etc/kubernetes/opensearch-ttmserver-test-dse-k8s-codfw.config]", "File[/etc/kubernetes/opensearch-ttmserver-test-dse-k8s-eqiad.config]", "File[/etc/kubernetes/pki/dse__opensearch-apifeatureusage-deploy-key.pem]", "File[/etc/kubernetes/pki/dse__opensearch-apifeatureusage-deploy.chain.pem]", "File[/etc/kubernetes/pki/dse__opensearch-apifeatureusage-deploy.chained.pem]", "File[/etc/kubernetes/pki/dse__opensearch-apifeatureusage-deploy.csr]", "File[/etc/kubernetes/pki/dse__opensearch-apifeatureusage-deploy.pem]", "File[/etc/kubernetes/pki/dse__opensearch-apifeatureusage-key.pem]", "File[/etc/kubernetes/pki/dse__opensearch-apifeatureusage-test-deploy-key.pem]", "File[/etc/kubernetes/pki/dse__opensearch-apifeatureusage-test-deploy.chain.pem]", "File[/etc/kubernetes/pki/dse__opensearch-apifeatureusage-test-deploy.chained.pem]", "File[/etc/kubernetes/pki/dse__opensearch-apifeatureusage-test-deploy.csr]", "File[/etc/kubernetes/pki/dse__opensearch-apifeatureusage-test-deploy.pem]", "File[/etc/kubernetes/pki/dse__opensearch-apifeatureusage-test-key.pem]", "File[/etc/kubernetes/pki/dse__opensearch-apifeatureusage-test.chain.pem]", "File[/etc/kubernetes/pki/dse__opensearch-apifeatureusage-test.chained.pem]", "File[/etc/kubernetes/pki/dse__opensearch-apifeatureusage-test.csr]", "File[/etc/kubernetes/pki/dse__opensearch-apifeatureusage-test.pem]", "File[/etc/kubernetes/pki/dse__opensearch-apifeatureusage.chain.pem]", "File[/etc/kubernetes/pki/dse__opensearch-apifeatureusage.chained.pem]", "File[/etc/kubernetes/pki/dse__opensearch-apifeatureusage.csr]", "File[/etc/kubernetes/pki/dse__opensearch-apifeatureusage.pem]", "File[/etc/kubernetes/pki/dse__opensearch-toolhub-deploy-key.pem]", "File[/etc/kubernetes/pki/dse__opensearch-toolhub-deploy.chain.pem]", "File[/etc/kubernetes/pki/dse__opensearch-toolhub-deploy.chained.pem]", "File[/etc/kubernetes/pki/dse__opensearch-toolhub-deploy.csr]", "File[/etc/kubernetes/pki/dse__opensearch-toolhub-deploy.pem]", "File[/etc/kubernetes/pki/dse__opensearch-toolhub-key.pem]", "File[/etc/kubernetes/pki/dse__opensearch-toolhub-test-deploy-key.pem]", "File[/etc/kubernetes/pki/dse__opensearch-toolhub-test-deploy.chain.pem]", "File[/etc/kubernetes/pki/dse__opensearch-toolhub-test-deploy.chained.pem]", "File[/etc/kubernetes/pki/dse__opensearch-toolhub-test-deploy.csr]", "File[/etc/kubernetes/pki/dse__opensearch-toolhub-test-deploy.pem]", "File[/etc/kubernetes/pki/dse__opensearch-toolhub-test-key.pem]", "File[/etc/kubernetes/pki/dse__opensearch-toolhub-test.chain.pem]", "File[/etc/kubernetes/pki/dse__opensearch-toolhub-test.chained.pem]", "File[/etc/kubernetes/pki/dse__opensearch-toolhub-test.csr]", "File[/etc/kubernetes/pki/dse__opensearch-toolhub-test.pem]", "File[/etc/kubernetes/pki/dse__opensearch-toolhub.chain.pem]", "File[/etc/kubernetes/pki/dse__opensearch-toolhub.chained.pem]", "File[/etc/kubernetes/pki/dse__opensearch-toolhub.csr]", "File[/etc/kubernetes/pki/dse__opensearch-toolhub.pem]", "File[/etc/kubernetes/pki/dse__opensearch-ttmserver-deploy-key.pem]", "File[/etc/kubernetes/pki/dse__opensearch-ttmserver-deploy.chain.pem]", "File[/etc/kubernetes/pki/dse__opensearch-ttmserver-deploy.chained.pem]", "File[/etc/kubernetes/pki/dse__opensearch-ttmserver-deploy.csr]", "File[/etc/kubernetes/pki/dse__opensearch-ttmserver-deploy.pem]", "File[/etc/kubernetes/pki/dse__opensearch-ttmserver-key.pem]", "File[/etc/kubernetes/pki/dse__opensearch-ttmserver-test-deploy-key.pem]", "File[/etc/kubernetes/pki/dse__opensearch-ttmserver-test-deploy.chain.pem]", "File[/etc/kubernetes/pki/dse__opensearch-ttmserver-test-deploy.chained.pem]", "File[/etc/kubernetes/pki/dse__opensearch-ttmserver-test-deploy.csr]", "File[/etc/kubernetes/pki/dse__opensearch-ttmserver-test-deploy.pem]", "File[/etc/kubernetes/pki/dse__opensearch-ttmserver-test-key.pem]", "File[/etc/kubernetes/pki/dse__opensearch-ttmserver-test.chain.pem]", "File[/etc/kubernetes/pki/dse__opensearch-ttmserver-test.chained.pem]", "File[/etc/kubernetes/pki/dse__opensearch-ttmserver-test.csr]", "File[/etc/kubernetes/pki/dse__opensearch-ttmserver-test.pem]", "File[/etc/kubernetes/pki/dse__opensearch-ttmserver.chain.pem]", "File[/etc/kubernetes/pki/dse__opensearch-ttmserver.chained.pem]", "File[/etc/kubernetes/pki/dse__opensearch-ttmserver.csr]", "File[/etc/kubernetes/pki/dse__opensearch-ttmserver.pem]"], "resource_diffs": [{"resource": "File[/etc/profile.d/kube-conf.sh]", "content": "--- /etc/profile.d/kube-conf.sh.orig\n+++ /etc/profile.d/kube-conf.sh\n@@ -3,7 +3,7 @@\n \n # kube environments\n export KUBE_ENV_ENVIRONMENTS=\"eqiad codfw staging staging-eqiad staging-codfw ml-serve-eqiad ml-serve-codfw ml-staging-codfw dse-k8s-eqiad dse-k8s-codfw aux-k8s-eqiad aux-k8s-codfw\"\n-export KUBE_ENV_SERVICES=\"admin apertium api-gateway benthos-cache-invalidator changeprop changeprop-jobqueue chart-renderer cirrus-streaming-updater citoid commons-impact-analytics cxserver data-gateway developer-portal device-analytics echostore edit-analytics editor-analytics eventgate-analytics eventgate-analytics-external eventgate-logging-external eventgate-main eventstreams eventstreams-internal failoid-ng geo-analytics ipoid kartotherian linked-artifacts linkrecommendation machinetranslation mathoid media-analytics miscweb mobileapps mw-api-ext mw-api-int mw-cron mw-debug mw-experimental mw-jobrunner mw-mcrouter mw-misc mw-page-content-change-enrich mw-parsoid mw-script mw-videoscaler mw-web mw-wikifunctions opentelemetry-collector page-analytics proton push-notifications ratelimit ratelimit-media rdf-streaming-updater recommendation-api rest-gateway sessionstore shellbox shellbox-constraints shellbox-media shellbox-syntaxhighlight shellbox-timeline shellbox-video tegola-vector-tiles termbox thumbor toolhub wikidata-query-gui wikifeeds wikifunctions zotero article-descriptions article-models articletopic-outlink edit-check experimental llm logo-detection ores-legacy readability recommendation-api-ng revertrisk revise-tone-task-generator revision-models revscoring-articlequality revscoring-articletopic revscoring-draftquality revscoring-drafttopic revscoring-editquality-damaging revscoring-editquality-goodfaith revscoring-editquality-reverted analytics analytics-test kafka-mirrormaker opensearch-ipoid opensearch-ipoid-test opensearch-operator opensearch-operator-3 opensearch-semantic-search opensearch-semantic-search-test opensearch-test echoserver airflow-analytics-product airflow-analytics-test airflow-dev airflow-fr-tech airflow-main airflow-ml airflow-platform-eng airflow-research airflow-search airflow-sre airflow-test-k8s airflow-wikidata airflow-wmde blunderbuss datahub datahub-next datasets-config datasets-config-next growthbook growthbook-next llm-inference mediawiki-dumps-legacy mw-content-history-reconcile-enrich mw-content-history-reconcile-enrich-next mw-dump-rev-content-reconcile-enrich mw-dump-rev-content-reconcile-enrich-next mw-page-html-content-change-enrich mw-page-html-content-change-enrich-next mw-page-html-feature-counts-change-enrich mw-page-html-feature-counts-change-enrich-next spark spark-history spark-history-test superset superset-next test-kitchen test-kitchen-next turnilo turnilo-next wdqs-queryhammer codesearch jaeger redioscope sophroid zarcillo\"\n+export KUBE_ENV_SERVICES=\"admin apertium api-gateway benthos-cache-invalidator changeprop changeprop-jobqueue chart-renderer cirrus-streaming-updater citoid commons-impact-analytics cxserver data-gateway developer-portal device-analytics echostore edit-analytics editor-analytics eventgate-analytics eventgate-analytics-external eventgate-logging-external eventgate-main eventstreams eventstreams-internal failoid-ng geo-analytics ipoid kartotherian linked-artifacts linkrecommendation machinetranslation mathoid media-analytics miscweb mobileapps mw-api-ext mw-api-int mw-cron mw-debug mw-experimental mw-jobrunner mw-mcrouter mw-misc mw-page-content-change-enrich mw-parsoid mw-script mw-videoscaler mw-web mw-wikifunctions opentelemetry-collector page-analytics proton push-notifications ratelimit ratelimit-media rdf-streaming-updater recommendation-api rest-gateway sessionstore shellbox shellbox-constraints shellbox-media shellbox-syntaxhighlight shellbox-timeline shellbox-video tegola-vector-tiles termbox thumbor toolhub wikidata-query-gui wikifeeds wikifunctions zotero article-descriptions article-models articletopic-outlink edit-check experimental llm logo-detection ores-legacy readability recommendation-api-ng revertrisk revise-tone-task-generator revision-models revscoring-articlequality revscoring-articletopic revscoring-draftquality revscoring-drafttopic revscoring-editquality-damaging revscoring-editquality-goodfaith revscoring-editquality-reverted analytics analytics-test kafka-mirrormaker opensearch-ipoid opensearch-ipoid-test opensearch-operator opensearch-operator-3 opensearch-semantic-search opensearch-semantic-search-test opensearch-test opensearch-toolhub opensearch-toolhub-test opensearch-apifeatureusage opensearch-apifeatureusage-test opensearch-ttmserver opensearch-ttmserver-test echoserver airflow-analytics-product airflow-analytics-test airflow-dev airflow-fr-tech airflow-main airflow-ml airflow-platform-eng airflow-research airflow-search airflow-sre airflow-test-k8s airflow-wikidata airflow-wmde blunderbuss datahub datahub-next datasets-config datasets-config-next growthbook growthbook-next llm-inference mediawiki-dumps-legacy mw-content-history-reconcile-enrich mw-content-history-reconcile-enrich-next mw-dump-rev-content-reconcile-enrich mw-dump-rev-content-reconcile-enrich-next mw-page-html-content-change-enrich mw-page-html-content-change-enrich-next mw-page-html-feature-counts-change-enrich mw-page-html-feature-counts-change-enrich-next spark spark-history spark-history-test superset superset-next test-kitchen test-kitchen-next turnilo turnilo-next wdqs-queryhammer codesearch jaeger redioscope sophroid zarcillo\"\n \n # Array that maps kubernetes environments to their respective versions\n # This duplicated information from KUBE_ENV_ENVIRONMENTS, but I did not want to break existing scripts"}, {"resource": "File[/etc/helmfile-defaults/services-dse-k8s-eqiad.yaml]", "content": "--- /etc/helmfile-defaults/services-dse-k8s-eqiad.yaml.orig\n+++ /etc/helmfile-defaults/services-dse-k8s-eqiad.yaml\n@@ -48,6 +48,30 @@\n     usernames:\n     - name: opensearch-test\n     - name: opensearch-test-deploy\n+  opensearch-toolhub:\n+    usernames:\n+    - name: opensearch-toolhub\n+    - name: opensearch-toolhub-deploy\n+  opensearch-toolhub-test:\n+    usernames:\n+    - name: opensearch-toolhub-test\n+    - name: opensearch-toolhub-test-deploy\n+  opensearch-apifeatureusage:\n+    usernames:\n+    - name: opensearch-apifeatureusage\n+    - name: opensearch-apifeatureusage-deploy\n+  opensearch-apifeatureusage-test:\n+    usernames:\n+    - name: opensearch-apifeatureusage-test\n+    - name: opensearch-apifeatureusage-test-deploy\n+  opensearch-ttmserver:\n+    usernames:\n+    - name: opensearch-ttmserver\n+    - name: opensearch-ttmserver-deploy\n+  opensearch-ttmserver-test:\n+    usernames:\n+    - name: opensearch-ttmserver-test\n+    - name: opensearch-ttmserver-test-deploy\n   airflow-analytics-product:\n     private_files:\n       group: airflow-deployers"}, {"resource": "File[/etc/helmfile-defaults/services-dse-k8s-codfw.yaml]", "content": "--- /etc/helmfile-defaults/services-dse-k8s-codfw.yaml.orig\n+++ /etc/helmfile-defaults/services-dse-k8s-codfw.yaml\n@@ -48,6 +48,30 @@\n     usernames:\n     - name: opensearch-test\n     - name: opensearch-test-deploy\n+  opensearch-toolhub:\n+    usernames:\n+    - name: opensearch-toolhub\n+    - name: opensearch-toolhub-deploy\n+  opensearch-toolhub-test:\n+    usernames:\n+    - name: opensearch-toolhub-test\n+    - name: opensearch-toolhub-test-deploy\n+  opensearch-apifeatureusage:\n+    usernames:\n+    - name: opensearch-apifeatureusage\n+    - name: opensearch-apifeatureusage-deploy\n+  opensearch-apifeatureusage-test:\n+    usernames:\n+    - name: opensearch-apifeatureusage-test\n+    - name: opensearch-apifeatureusage-test-deploy\n+  opensearch-ttmserver:\n+    usernames:\n+    - name: opensearch-ttmserver\n+    - name: opensearch-ttmserver-deploy\n+  opensearch-ttmserver-test:\n+    usernames:\n+    - name: opensearch-ttmserver-test\n+    - name: opensearch-ttmserver-test-deploy\n   echoserver:\n     usernames:\n     - name: echoserver"}], "perc_changed": "0.97%"}, "main": {"total": 17015, "only_in_self": [], "only_in_other": ["Cfssl::Cert[dse__opensearch-apifeatureusage-deploy]", "Cfssl::Cert[dse__opensearch-apifeatureusage-test-deploy]", "Cfssl::Cert[dse__opensearch-apifeatureusage-test]", "Cfssl::Cert[dse__opensearch-apifeatureusage]", "Cfssl::Cert[dse__opensearch-toolhub-deploy]", "Cfssl::Cert[dse__opensearch-toolhub-test-deploy]", "Cfssl::Cert[dse__opensearch-toolhub-test]", "Cfssl::Cert[dse__opensearch-toolhub]", "Cfssl::Cert[dse__opensearch-ttmserver-deploy]", "Cfssl::Cert[dse__opensearch-ttmserver-test-deploy]", "Cfssl::Cert[dse__opensearch-ttmserver-test]", "Cfssl::Cert[dse__opensearch-ttmserver]", "Cfssl::Csr[/etc/cfssl/csr/dse__opensearch-apifeatureusage-deploy.csr]", "Cfssl::Csr[/etc/cfssl/csr/dse__opensearch-apifeatureusage-test-deploy.csr]", "Cfssl::Csr[/etc/cfssl/csr/dse__opensearch-apifeatureusage-test.csr]", "Cfssl::Csr[/etc/cfssl/csr/dse__opensearch-apifeatureusage.csr]", "Cfssl::Csr[/etc/cfssl/csr/dse__opensearch-toolhub-deploy.csr]", "Cfssl::Csr[/etc/cfssl/csr/dse__opensearch-toolhub-test-deploy.csr]", "Cfssl::Csr[/etc/cfssl/csr/dse__opensearch-toolhub-test.csr]", "Cfssl::Csr[/etc/cfssl/csr/dse__opensearch-toolhub.csr]", "Cfssl::Csr[/etc/cfssl/csr/dse__opensearch-ttmserver-deploy.csr]", "Cfssl::Csr[/etc/cfssl/csr/dse__opensearch-ttmserver-test-deploy.csr]", "Cfssl::Csr[/etc/cfssl/csr/dse__opensearch-ttmserver-test.csr]", "Cfssl::Csr[/etc/cfssl/csr/dse__opensearch-ttmserver.csr]", "Exec[Generate cert dse__opensearch-apifeatureusage refresh on intermediate ca change]", "Exec[Generate cert dse__opensearch-apifeatureusage refresh]", "Exec[Generate cert dse__opensearch-apifeatureusage-deploy refresh on intermediate ca change]", "Exec[Generate cert dse__opensearch-apifeatureusage-deploy refresh]", "Exec[Generate cert dse__opensearch-apifeatureusage-deploy]", "Exec[Generate cert dse__opensearch-apifeatureusage-test refresh on intermediate ca change]", "Exec[Generate cert dse__opensearch-apifeatureusage-test refresh]", "Exec[Generate cert dse__opensearch-apifeatureusage-test-deploy refresh on intermediate ca change]", "Exec[Generate cert dse__opensearch-apifeatureusage-test-deploy refresh]", "Exec[Generate cert dse__opensearch-apifeatureusage-test-deploy]", "Exec[Generate cert dse__opensearch-apifeatureusage-test]", "Exec[Generate cert dse__opensearch-apifeatureusage]", "Exec[Generate cert dse__opensearch-toolhub refresh on intermediate ca change]", "Exec[Generate cert dse__opensearch-toolhub refresh]", "Exec[Generate cert dse__opensearch-toolhub-deploy refresh on intermediate ca change]", "Exec[Generate cert dse__opensearch-toolhub-deploy refresh]", "Exec[Generate cert dse__opensearch-toolhub-deploy]", "Exec[Generate cert dse__opensearch-toolhub-test refresh on intermediate ca change]", "Exec[Generate cert dse__opensearch-toolhub-test refresh]", "Exec[Generate cert dse__opensearch-toolhub-test-deploy refresh on intermediate ca change]", "Exec[Generate cert dse__opensearch-toolhub-test-deploy refresh]", "Exec[Generate cert dse__opensearch-toolhub-test-deploy]", "Exec[Generate cert dse__opensearch-toolhub-test]", "Exec[Generate cert dse__opensearch-toolhub]", "Exec[Generate cert dse__opensearch-ttmserver refresh on intermediate ca change]", "Exec[Generate cert dse__opensearch-ttmserver refresh]", "Exec[Generate cert dse__opensearch-ttmserver-deploy refresh on intermediate ca change]", "Exec[Generate cert dse__opensearch-ttmserver-deploy refresh]", "Exec[Generate cert dse__opensearch-ttmserver-deploy]", "Exec[Generate cert dse__opensearch-ttmserver-test refresh on intermediate ca change]", "Exec[Generate cert dse__opensearch-ttmserver-test refresh]", "Exec[Generate cert dse__opensearch-ttmserver-test-deploy refresh on intermediate ca change]", "Exec[Generate cert dse__opensearch-ttmserver-test-deploy refresh]", "Exec[Generate cert dse__opensearch-ttmserver-test-deploy]", "Exec[Generate cert dse__opensearch-ttmserver-test]", "Exec[Generate cert dse__opensearch-ttmserver]", "Exec[create chained cert /etc/kubernetes/pki/dse__opensearch-apifeatureusage-deploy.chain.pem]", "Exec[create chained cert /etc/kubernetes/pki/dse__opensearch-apifeatureusage-test-deploy.chain.pem]", "Exec[create chained cert /etc/kubernetes/pki/dse__opensearch-apifeatureusage-test.chain.pem]", "Exec[create chained cert /etc/kubernetes/pki/dse__opensearch-apifeatureusage.chain.pem]", "Exec[create chained cert /etc/kubernetes/pki/dse__opensearch-toolhub-deploy.chain.pem]", "Exec[create chained cert /etc/kubernetes/pki/dse__opensearch-toolhub-test-deploy.chain.pem]", "Exec[create chained cert /etc/kubernetes/pki/dse__opensearch-toolhub-test.chain.pem]", "Exec[create chained cert /etc/kubernetes/pki/dse__opensearch-toolhub.chain.pem]", "Exec[create chained cert /etc/kubernetes/pki/dse__opensearch-ttmserver-deploy.chain.pem]", "Exec[create chained cert /etc/kubernetes/pki/dse__opensearch-ttmserver-test-deploy.chain.pem]", "Exec[create chained cert /etc/kubernetes/pki/dse__opensearch-ttmserver-test.chain.pem]", "Exec[create chained cert /etc/kubernetes/pki/dse__opensearch-ttmserver.chain.pem]", "Exec[renew certificate - dse__opensearch-apifeatureusage-deploy]", "Exec[renew certificate - dse__opensearch-apifeatureusage-test-deploy]", "Exec[renew certificate - dse__opensearch-apifeatureusage-test]", "Exec[renew certificate - dse__opensearch-apifeatureusage]", "Exec[renew certificate - dse__opensearch-toolhub-deploy]", "Exec[renew certificate - dse__opensearch-toolhub-test-deploy]", "Exec[renew certificate - dse__opensearch-toolhub-test]", "Exec[renew certificate - dse__opensearch-toolhub]", "Exec[renew certificate - dse__opensearch-ttmserver-deploy]", "Exec[renew certificate - dse__opensearch-ttmserver-test-deploy]", "Exec[renew certificate - dse__opensearch-ttmserver-test]", "Exec[renew certificate - dse__opensearch-ttmserver]", "File[/etc/cfssl/csr/dse__opensearch-apifeatureusage-deploy.csr]", "File[/etc/cfssl/csr/dse__opensearch-apifeatureusage-test-deploy.csr]", "File[/etc/cfssl/csr/dse__opensearch-apifeatureusage-test.csr]", "File[/etc/cfssl/csr/dse__opensearch-apifeatureusage.csr]", "File[/etc/cfssl/csr/dse__opensearch-toolhub-deploy.csr]", "File[/etc/cfssl/csr/dse__opensearch-toolhub-test-deploy.csr]", "File[/etc/cfssl/csr/dse__opensearch-toolhub-test.csr]", "File[/etc/cfssl/csr/dse__opensearch-toolhub.csr]", "File[/etc/cfssl/csr/dse__opensearch-ttmserver-deploy.csr]", "File[/etc/cfssl/csr/dse__opensearch-ttmserver-test-deploy.csr]", "File[/etc/cfssl/csr/dse__opensearch-ttmserver-test.csr]", "File[/etc/cfssl/csr/dse__opensearch-ttmserver.csr]", "File[/etc/helmfile-defaults/private/dse-k8s_services/opensearch-apifeatureusage-test]", "File[/etc/helmfile-defaults/private/dse-k8s_services/opensearch-apifeatureusage]", "File[/etc/helmfile-defaults/private/dse-k8s_services/opensearch-toolhub-test]", "File[/etc/helmfile-defaults/private/dse-k8s_services/opensearch-toolhub]", "File[/etc/helmfile-defaults/private/dse-k8s_services/opensearch-ttmserver-test]", "File[/etc/helmfile-defaults/private/dse-k8s_services/opensearch-ttmserver]", "File[/etc/kubernetes/opensearch-apifeatureusage-deploy-dse-k8s-codfw.config]", "File[/etc/kubernetes/opensearch-apifeatureusage-deploy-dse-k8s-eqiad.config]", "File[/etc/kubernetes/opensearch-apifeatureusage-dse-k8s-codfw.config]", "File[/etc/kubernetes/opensearch-apifeatureusage-dse-k8s-eqiad.config]", "File[/etc/kubernetes/opensearch-apifeatureusage-test-deploy-dse-k8s-codfw.config]", "File[/etc/kubernetes/opensearch-apifeatureusage-test-deploy-dse-k8s-eqiad.config]", "File[/etc/kubernetes/opensearch-apifeatureusage-test-dse-k8s-codfw.config]", "File[/etc/kubernetes/opensearch-apifeatureusage-test-dse-k8s-eqiad.config]", "File[/etc/kubernetes/opensearch-toolhub-deploy-dse-k8s-codfw.config]", "File[/etc/kubernetes/opensearch-toolhub-deploy-dse-k8s-eqiad.config]", "File[/etc/kubernetes/opensearch-toolhub-dse-k8s-codfw.config]", "File[/etc/kubernetes/opensearch-toolhub-dse-k8s-eqiad.config]", "File[/etc/kubernetes/opensearch-toolhub-test-deploy-dse-k8s-codfw.config]", "File[/etc/kubernetes/opensearch-toolhub-test-deploy-dse-k8s-eqiad.config]", "File[/etc/kubernetes/opensearch-toolhub-test-dse-k8s-codfw.config]", "File[/etc/kubernetes/opensearch-toolhub-test-dse-k8s-eqiad.config]", "File[/etc/kubernetes/opensearch-ttmserver-deploy-dse-k8s-codfw.config]", "File[/etc/kubernetes/opensearch-ttmserver-deploy-dse-k8s-eqiad.config]", "File[/etc/kubernetes/opensearch-ttmserver-dse-k8s-codfw.config]", "File[/etc/kubernetes/opensearch-ttmserver-dse-k8s-eqiad.config]", "File[/etc/kubernetes/opensearch-ttmserver-test-deploy-dse-k8s-codfw.config]", "File[/etc/kubernetes/opensearch-ttmserver-test-deploy-dse-k8s-eqiad.config]", "File[/etc/kubernetes/opensearch-ttmserver-test-dse-k8s-codfw.config]", "File[/etc/kubernetes/opensearch-ttmserver-test-dse-k8s-eqiad.config]", "File[/etc/kubernetes/pki/dse__opensearch-apifeatureusage-deploy-key.pem]", "File[/etc/kubernetes/pki/dse__opensearch-apifeatureusage-deploy.chain.pem]", "File[/etc/kubernetes/pki/dse__opensearch-apifeatureusage-deploy.chained.pem]", "File[/etc/kubernetes/pki/dse__opensearch-apifeatureusage-deploy.csr]", "File[/etc/kubernetes/pki/dse__opensearch-apifeatureusage-deploy.pem]", "File[/etc/kubernetes/pki/dse__opensearch-apifeatureusage-key.pem]", "File[/etc/kubernetes/pki/dse__opensearch-apifeatureusage-test-deploy-key.pem]", "File[/etc/kubernetes/pki/dse__opensearch-apifeatureusage-test-deploy.chain.pem]", "File[/etc/kubernetes/pki/dse__opensearch-apifeatureusage-test-deploy.chained.pem]", "File[/etc/kubernetes/pki/dse__opensearch-apifeatureusage-test-deploy.csr]", "File[/etc/kubernetes/pki/dse__opensearch-apifeatureusage-test-deploy.pem]", "File[/etc/kubernetes/pki/dse__opensearch-apifeatureusage-test-key.pem]", "File[/etc/kubernetes/pki/dse__opensearch-apifeatureusage-test.chain.pem]", "File[/etc/kubernetes/pki/dse__opensearch-apifeatureusage-test.chained.pem]", "File[/etc/kubernetes/pki/dse__opensearch-apifeatureusage-test.csr]", "File[/etc/kubernetes/pki/dse__opensearch-apifeatureusage-test.pem]", "File[/etc/kubernetes/pki/dse__opensearch-apifeatureusage.chain.pem]", "File[/etc/kubernetes/pki/dse__opensearch-apifeatureusage.chained.pem]", "File[/etc/kubernetes/pki/dse__opensearch-apifeatureusage.csr]", "File[/etc/kubernetes/pki/dse__opensearch-apifeatureusage.pem]", "File[/etc/kubernetes/pki/dse__opensearch-toolhub-deploy-key.pem]", "File[/etc/kubernetes/pki/dse__opensearch-toolhub-deploy.chain.pem]", "File[/etc/kubernetes/pki/dse__opensearch-toolhub-deploy.chained.pem]", "File[/etc/kubernetes/pki/dse__opensearch-toolhub-deploy.csr]", "File[/etc/kubernetes/pki/dse__opensearch-toolhub-deploy.pem]", "File[/etc/kubernetes/pki/dse__opensearch-toolhub-key.pem]", "File[/etc/kubernetes/pki/dse__opensearch-toolhub-test-deploy-key.pem]", "File[/etc/kubernetes/pki/dse__opensearch-toolhub-test-deploy.chain.pem]", "File[/etc/kubernetes/pki/dse__opensearch-toolhub-test-deploy.chained.pem]", "File[/etc/kubernetes/pki/dse__opensearch-toolhub-test-deploy.csr]", "File[/etc/kubernetes/pki/dse__opensearch-toolhub-test-deploy.pem]", "File[/etc/kubernetes/pki/dse__opensearch-toolhub-test-key.pem]", "File[/etc/kubernetes/pki/dse__opensearch-toolhub-test.chain.pem]", "File[/etc/kubernetes/pki/dse__opensearch-toolhub-test.chained.pem]", "File[/etc/kubernetes/pki/dse__opensearch-toolhub-test.csr]", "File[/etc/kubernetes/pki/dse__opensearch-toolhub-test.pem]", "File[/etc/kubernetes/pki/dse__opensearch-toolhub.chain.pem]", "File[/etc/kubernetes/pki/dse__opensearch-toolhub.chained.pem]", "File[/etc/kubernetes/pki/dse__opensearch-toolhub.csr]", "File[/etc/kubernetes/pki/dse__opensearch-toolhub.pem]", "File[/etc/kubernetes/pki/dse__opensearch-ttmserver-deploy-key.pem]", "File[/etc/kubernetes/pki/dse__opensearch-ttmserver-deploy.chain.pem]", "File[/etc/kubernetes/pki/dse__opensearch-ttmserver-deploy.chained.pem]", "File[/etc/kubernetes/pki/dse__opensearch-ttmserver-deploy.csr]", "File[/etc/kubernetes/pki/dse__opensearch-ttmserver-deploy.pem]", "File[/etc/kubernetes/pki/dse__opensearch-ttmserver-key.pem]", "File[/etc/kubernetes/pki/dse__opensearch-ttmserver-test-deploy-key.pem]", "File[/etc/kubernetes/pki/dse__opensearch-ttmserver-test-deploy.chain.pem]", "File[/etc/kubernetes/pki/dse__opensearch-ttmserver-test-deploy.chained.pem]", "File[/etc/kubernetes/pki/dse__opensearch-ttmserver-test-deploy.csr]", "File[/etc/kubernetes/pki/dse__opensearch-ttmserver-test-deploy.pem]", "File[/etc/kubernetes/pki/dse__opensearch-ttmserver-test-key.pem]", "File[/etc/kubernetes/pki/dse__opensearch-ttmserver-test.chain.pem]", "File[/etc/kubernetes/pki/dse__opensearch-ttmserver-test.chained.pem]", "File[/etc/kubernetes/pki/dse__opensearch-ttmserver-test.csr]", "File[/etc/kubernetes/pki/dse__opensearch-ttmserver-test.pem]", "File[/etc/kubernetes/pki/dse__opensearch-ttmserver.chain.pem]", "File[/etc/kubernetes/pki/dse__opensearch-ttmserver.chained.pem]", "File[/etc/kubernetes/pki/dse__opensearch-ttmserver.csr]", "File[/etc/kubernetes/pki/dse__opensearch-ttmserver.pem]", "K8s::Kubeconfig[/etc/kubernetes/opensearch-apifeatureusage-deploy-dse-k8s-codfw.config]", "K8s::Kubeconfig[/etc/kubernetes/opensearch-apifeatureusage-deploy-dse-k8s-eqiad.config]", "K8s::Kubeconfig[/etc/kubernetes/opensearch-apifeatureusage-dse-k8s-codfw.config]", "K8s::Kubeconfig[/etc/kubernetes/opensearch-apifeatureusage-dse-k8s-eqiad.config]", "K8s::Kubeconfig[/etc/kubernetes/opensearch-apifeatureusage-test-deploy-dse-k8s-codfw.config]", "K8s::Kubeconfig[/etc/kubernetes/opensearch-apifeatureusage-test-deploy-dse-k8s-eqiad.config]", "K8s::Kubeconfig[/etc/kubernetes/opensearch-apifeatureusage-test-dse-k8s-codfw.config]", "K8s::Kubeconfig[/etc/kubernetes/opensearch-apifeatureusage-test-dse-k8s-eqiad.config]", "K8s::Kubeconfig[/etc/kubernetes/opensearch-toolhub-deploy-dse-k8s-codfw.config]", "K8s::Kubeconfig[/etc/kubernetes/opensearch-toolhub-deploy-dse-k8s-eqiad.config]", "K8s::Kubeconfig[/etc/kubernetes/opensearch-toolhub-dse-k8s-codfw.config]", "K8s::Kubeconfig[/etc/kubernetes/opensearch-toolhub-dse-k8s-eqiad.config]", "K8s::Kubeconfig[/etc/kubernetes/opensearch-toolhub-test-deploy-dse-k8s-codfw.config]", "K8s::Kubeconfig[/etc/kubernetes/opensearch-toolhub-test-deploy-dse-k8s-eqiad.config]", "K8s::Kubeconfig[/etc/kubernetes/opensearch-toolhub-test-dse-k8s-codfw.config]", "K8s::Kubeconfig[/etc/kubernetes/opensearch-toolhub-test-dse-k8s-eqiad.config]", "K8s::Kubeconfig[/etc/kubernetes/opensearch-ttmserver-deploy-dse-k8s-codfw.config]", "K8s::Kubeconfig[/etc/kubernetes/opensearch-ttmserver-deploy-dse-k8s-eqiad.config]", "K8s::Kubeconfig[/etc/kubernetes/opensearch-ttmserver-dse-k8s-codfw.config]", "K8s::Kubeconfig[/etc/kubernetes/opensearch-ttmserver-dse-k8s-eqiad.config]", "K8s::Kubeconfig[/etc/kubernetes/opensearch-ttmserver-test-deploy-dse-k8s-codfw.config]", "K8s::Kubeconfig[/etc/kubernetes/opensearch-ttmserver-test-deploy-dse-k8s-eqiad.config]", "K8s::Kubeconfig[/etc/kubernetes/opensearch-ttmserver-test-dse-k8s-codfw.config]", "K8s::Kubeconfig[/etc/kubernetes/opensearch-ttmserver-test-dse-k8s-eqiad.config]"], "resource_diffs": [{"resource": "File[/etc/profile.d/kube-conf.sh]", "content": "--- /etc/profile.d/kube-conf.sh.orig\n+++ /etc/profile.d/kube-conf.sh\n@@ -3,7 +3,7 @@\n \n # kube environments\n export KUBE_ENV_ENVIRONMENTS=\"eqiad codfw staging staging-eqiad staging-codfw ml-serve-eqiad ml-serve-codfw ml-staging-codfw dse-k8s-eqiad dse-k8s-codfw aux-k8s-eqiad aux-k8s-codfw\"\n-export KUBE_ENV_SERVICES=\"admin apertium api-gateway benthos-cache-invalidator changeprop changeprop-jobqueue chart-renderer cirrus-streaming-updater citoid commons-impact-analytics cxserver data-gateway developer-portal device-analytics echostore edit-analytics editor-analytics eventgate-analytics eventgate-analytics-external eventgate-logging-external eventgate-main eventstreams eventstreams-internal failoid-ng geo-analytics ipoid kartotherian linked-artifacts linkrecommendation machinetranslation mathoid media-analytics miscweb mobileapps mw-api-ext mw-api-int mw-cron mw-debug mw-experimental mw-jobrunner mw-mcrouter mw-misc mw-page-content-change-enrich mw-parsoid mw-script mw-videoscaler mw-web mw-wikifunctions opentelemetry-collector page-analytics proton push-notifications ratelimit ratelimit-media rdf-streaming-updater recommendation-api rest-gateway sessionstore shellbox shellbox-constraints shellbox-media shellbox-syntaxhighlight shellbox-timeline shellbox-video tegola-vector-tiles termbox thumbor toolhub wikidata-query-gui wikifeeds wikifunctions zotero article-descriptions article-models articletopic-outlink edit-check experimental llm logo-detection ores-legacy readability recommendation-api-ng revertrisk revise-tone-task-generator revision-models revscoring-articlequality revscoring-articletopic revscoring-draftquality revscoring-drafttopic revscoring-editquality-damaging revscoring-editquality-goodfaith revscoring-editquality-reverted analytics analytics-test kafka-mirrormaker opensearch-ipoid opensearch-ipoid-test opensearch-operator opensearch-operator-3 opensearch-semantic-search opensearch-semantic-search-test opensearch-test echoserver airflow-analytics-product airflow-analytics-test airflow-dev airflow-fr-tech airflow-main airflow-ml airflow-platform-eng airflow-research airflow-search airflow-sre airflow-test-k8s airflow-wikidata airflow-wmde blunderbuss datahub datahub-next datasets-config datasets-config-next growthbook growthbook-next llm-inference mediawiki-dumps-legacy mw-content-history-reconcile-enrich mw-content-history-reconcile-enrich-next mw-dump-rev-content-reconcile-enrich mw-dump-rev-content-reconcile-enrich-next mw-page-html-content-change-enrich mw-page-html-content-change-enrich-next mw-page-html-feature-counts-change-enrich mw-page-html-feature-counts-change-enrich-next spark spark-history spark-history-test superset superset-next test-kitchen test-kitchen-next turnilo turnilo-next wdqs-queryhammer codesearch jaeger redioscope sophroid zarcillo\"\n+export KUBE_ENV_SERVICES=\"admin apertium api-gateway benthos-cache-invalidator changeprop changeprop-jobqueue chart-renderer cirrus-streaming-updater citoid commons-impact-analytics cxserver data-gateway developer-portal device-analytics echostore edit-analytics editor-analytics eventgate-analytics eventgate-analytics-external eventgate-logging-external eventgate-main eventstreams eventstreams-internal failoid-ng geo-analytics ipoid kartotherian linked-artifacts linkrecommendation machinetranslation mathoid media-analytics miscweb mobileapps mw-api-ext mw-api-int mw-cron mw-debug mw-experimental mw-jobrunner mw-mcrouter mw-misc mw-page-content-change-enrich mw-parsoid mw-script mw-videoscaler mw-web mw-wikifunctions opentelemetry-collector page-analytics proton push-notifications ratelimit ratelimit-media rdf-streaming-updater recommendation-api rest-gateway sessionstore shellbox shellbox-constraints shellbox-media shellbox-syntaxhighlight shellbox-timeline shellbox-video tegola-vector-tiles termbox thumbor toolhub wikidata-query-gui wikifeeds wikifunctions zotero article-descriptions article-models articletopic-outlink edit-check experimental llm logo-detection ores-legacy readability recommendation-api-ng revertrisk revise-tone-task-generator revision-models revscoring-articlequality revscoring-articletopic revscoring-draftquality revscoring-drafttopic revscoring-editquality-damaging revscoring-editquality-goodfaith revscoring-editquality-reverted analytics analytics-test kafka-mirrormaker opensearch-ipoid opensearch-ipoid-test opensearch-operator opensearch-operator-3 opensearch-semantic-search opensearch-semantic-search-test opensearch-test opensearch-toolhub opensearch-toolhub-test opensearch-apifeatureusage opensearch-apifeatureusage-test opensearch-ttmserver opensearch-ttmserver-test echoserver airflow-analytics-product airflow-analytics-test airflow-dev airflow-fr-tech airflow-main airflow-ml airflow-platform-eng airflow-research airflow-search airflow-sre airflow-test-k8s airflow-wikidata airflow-wmde blunderbuss datahub datahub-next datasets-config datasets-config-next growthbook growthbook-next llm-inference mediawiki-dumps-legacy mw-content-history-reconcile-enrich mw-content-history-reconcile-enrich-next mw-dump-rev-content-reconcile-enrich mw-dump-rev-content-reconcile-enrich-next mw-page-html-content-change-enrich mw-page-html-content-change-enrich-next mw-page-html-feature-counts-change-enrich mw-page-html-feature-counts-change-enrich-next spark spark-history spark-history-test superset superset-next test-kitchen test-kitchen-next turnilo turnilo-next wdqs-queryhammer codesearch jaeger redioscope sophroid zarcillo\"\n \n # Array that maps kubernetes environments to their respective versions\n # This duplicated information from KUBE_ENV_ENVIRONMENTS, but I did not want to break existing scripts"}, {"resource": "Class[Profile::Kubernetes::Deployment_server]", "parameters": "--- Class[Profile::Kubernetes::Deployment_server].orig\n+++ Class[Profile::Kubernetes::Deployment_server]\n\n@@\n-    services => {'main': {'apertium': {'usernames': [{'name': 'apertium'}, {'name': 'apertium-deploy'}]}, 'api-gateway': {'usernames': [{'name': 'api-gateway'}, {'name': 'api-gateway-deploy'}]}, 'benthos-cache-invalidator': {'usernames': [{'name': 'benthos-cache-invalidator'}, {'name': 'benthos-cache-invalidator-deploy'}]}, 'changeprop': {'usernames': [{'name': 'changeprop'}, {'name': 'changeprop-deploy'}]}, 'changeprop-jobqueue': {'usernames': [{'name': 'changeprop-jobqueue'}, {'name': 'changeprop-jobqueue-deploy'}]}, 'chart-renderer': {'usernames': [{'name': 'chart-renderer'}, {'name': 'chart-renderer-deploy'}]}, 'cirrus-streaming-updater': {'usernames': [{'name': 'cirrus-streaming-updater'}, {'name': 'cirrus-streaming-updater-deploy'}]}, 'citoid': {'usernames': [{'name': 'citoid'}, {'name': 'citoid-deploy'}]}, 'commons-impact-analytics': {'usernames': [{'name': 'commons-impact-analytics'}, {'name': 'commons-impact-analytics-deploy'}]}, 'cxserver': {'usernames': [{'name': 'cxserver'}, {'name': 'cxserver-deploy'}]}, 'data-gateway': {'usernames': [{'name': 'data-gateway'}, {'name': 'data-gateway-deploy'}]}, 'developer-portal': {'usernames': [{'name': 'developer-portal'}, {'name': 'developer-portal-deploy'}]}, 'device-analytics': {'usernames': [{'name': 'device-analytics'}, {'name': 'device-analytics-deploy'}]}, 'echostore': {'usernames': [{'name': 'echostore'}, {'name': 'echostore-deploy'}]}, 'edit-analytics': {'usernames': [{'name': 'edit-analytics'}, {'name': 'edit-analytics-deploy'}]}, 'editor-analytics': {'usernames': [{'name': 'editor-analytics'}, {'name': 'editor-analytics-deploy'}]}, 'eventgate-analytics': {'usernames': [{'name': 'eventgate-analytics'}, {'name': 'eventgate-analytics-deploy'}]}, 'eventgate-analytics-external': {'usernames': [{'name': 'eventgate-analytics-external'}, {'name': 'eventgate-analytics-external-deploy'}]}, 'eventgate-logging-external': {'usernames': [{'name': 'eventgate-logging-external'}, {'name': 'eventgate-logging-external-deploy'}]}, 'eventgate-main': {'usernames': [{'name': 'eventgate-main'}, {'name': 'eventgate-main-deploy'}]}, 'eventstreams': {'usernames': [{'name': 'eventstreams'}, {'name': 'eventstreams-deploy'}]}, 'eventstreams-internal': {'usernames': [{'name': 'eventstreams-internal'}, {'name': 'eventstreams-internal-deploy'}]}, 'failoid-ng': {'usernames': [{'name': 'failoid-ng'}, {'name': 'failoid-ng-deploy'}]}, 'geo-analytics': {'usernames': [{'name': 'geo-analytics'}, {'name': 'geo-analytics-deploy'}]}, 'ipoid': {'usernames': [{'name': 'ipoid'}, {'name': 'ipoid-deploy'}]}, 'kartotherian': {'usernames': [{'name': 'kartotherian'}, {'name': 'kartotherian-deploy'}]}, 'linked-artifacts': {'usernames': [{'name': 'linked-artifacts'}, {'name': 'linked-artifacts-deploy'}]}, 'linkrecommendation': {'usernames': [{'name': 'linkrecommendation'}, {'name': 'linkrecommendation-deploy'}]}, 'machinetranslation': {'usernames': [{'name': 'machinetranslation'}, {'name': 'machinetranslation-deploy'}]}, 'mathoid': {'usernames': [{'name': 'mathoid'}, {'name': 'mathoid-deploy'}]}, 'media-analytics': {'usernames': [{'name': 'media-analytics'}, {'name': 'media-analytics-deploy'}]}, 'miscweb': {'usernames': [{'name': 'miscweb'}, {'name': 'miscweb-deploy'}]}, 'mobileapps': {'usernames': [{'name': 'mobileapps'}, {'name': 'mobileapps-deploy'}]}, 'mw-api-ext': {'usernames': [{'name': 'mw-api-ext'}, {'name': 'mw-api-ext-deploy'}]}, 'mw-api-int': {'usernames': [{'name': 'mw-api-int'}, {'name': 'mw-api-int-deploy'}]}, 'mw-cron': {'usernames': [{'name': 'mw-cron'}, {'name': 'mw-cron-deploy'}, {'group': 'restricted', 'name': 'mw-cron-restricted'}, {'group': 'restricted', 'name': 'mw-cron-restricted-deploy'}]}, 'mw-debug': {'usernames': [{'name': 'mw-debug'}, {'name': 'mw-debug-deploy'}]}, 'mw-experimental': {'usernames': [{'name': 'mw-experimental'}, {'name': 'mw-experimental-deploy'}]}, 'mw-jobrunner': {'usernames': [{'name': 'mw-jobrunner'}, {'name': 'mw-jobrunner-deploy'}]}, 'mw-mcrouter': {'usernames': [{'name': 'mw-mcrouter'}, {'name': 'mw-mcrouter-deploy'}]}, 'mw-misc': {'usernames': [{'name': 'mw-misc'}, {'name': 'mw-misc-deploy'}]}, 'mw-page-content-change-enrich': {'usernames': [{'name': 'mw-page-content-change-enrich'}, {'name': 'mw-page-content-change-enrich-deploy'}]}, 'mw-parsoid': {'usernames': [{'name': 'mw-parsoid'}, {'name': 'mw-parsoid-deploy'}]}, 'mw-script': {'usernames': [{'name': 'mw-script'}, {'name': 'mw-script-deploy'}, {'group': 'restricted', 'name': 'mw-script-restricted'}, {'group': 'restricted', 'name': 'mw-script-restricted-deploy'}]}, 'mw-videoscaler': {'usernames': [{'name': 'mw-videoscaler'}, {'name': 'mw-videoscaler-deploy'}]}, 'mw-web': {'usernames': [{'name': 'mw-web'}, {'name': 'mw-web-deploy'}]}, 'mw-wikifunctions': {'usernames': [{'name': 'mw-wikifunctions'}, {'name': 'mw-wikifunctions-deploy'}]}, 'opentelemetry-collector': {'usernames': [{'name': 'opentelemetry-collector'}, {'name': 'opentelemetry-collector-deploy'}]}, 'page-analytics': {'usernames': [{'name': 'page-analytics'}, {'name': 'page-analytics-deploy'}]}, 'proton': {'usernames': [{'name': 'proton'}, {'name': 'proton-deploy'}]}, 'push-notifications': {'usernames': [{'name': 'push-notifications'}, {'name': 'push-notifications-deploy'}]}, 'ratelimit': {'usernames': [{'name': 'ratelimit'}, {'name': 'ratelimit-deploy'}]}, 'ratelimit-media': {'usernames': [{'name': 'ratelimit-media'}, {'name': 'ratelimit-media-deploy'}]}, 'rdf-streaming-updater': {'usernames': [{'name': 'rdf-streaming-updater'}, {'name': 'rdf-streaming-updater-deploy'}]}, 'recommendation-api': {'usernames': [{'name': 'recommendation-api'}, {'name': 'recommendation-api-deploy'}]}, 'rest-gateway': {'usernames': [{'name': 'rest-gateway'}, {'name': 'rest-gateway-deploy'}]}, 'sessionstore': {'usernames': [{'name': 'sessionstore'}, {'name': 'sessionstore-deploy'}]}, 'shellbox': {'usernames': [{'name': 'shellbox'}, {'name': 'shellbox-deploy'}]}, 'shellbox-constraints': {'usernames': [{'name': 'shellbox-constraints'}, {'name': 'shellbox-constraints-deploy'}]}, 'shellbox-media': {'usernames': [{'name': 'shellbox-media'}, {'name': 'shellbox-media-deploy'}]}, 'shellbox-syntaxhighlight': {'usernames': [{'name': 'shellbox-syntaxhighlight'}, {'name': 'shellbox-syntaxhighlight-deploy'}]}, 'shellbox-timeline': {'usernames': [{'name': 'shellbox-timeline'}, {'name': 'shellbox-timeline-deploy'}]}, 'shellbox-video': {'usernames': [{'name': 'shellbox-video'}, {'name': 'shellbox-video-deploy'}]}, 'tegola-vector-tiles': {'usernames': [{'name': 'tegola-vector-tiles'}, {'name': 'tegola-vector-tiles-deploy'}]}, 'termbox': {'usernames': [{'name': 'termbox'}, {'name': 'termbox-deploy'}]}, 'thumbor': {'usernames': [{'name': 'thumbor'}, {'name': 'thumbor-deploy'}]}, 'toolhub': {'usernames': [{'name': 'toolhub'}, {'name': 'toolhub-deploy'}]}, 'wikidata-query-gui': {'usernames': [{'name': 'wikidata-query-gui'}, {'name': 'wikidata-query-gui-deploy'}]}, 'wikifeeds': {'usernames': [{'name': 'wikifeeds'}, {'name': 'wikifeeds-deploy'}]}, 'wikifunctions': {'usernames': [{'name': 'wikifunctions'}, {'name': 'wikifunctions-deploy'}]}, 'zotero': {'usernames': [{'name': 'zotero'}, {'name': 'zotero-deploy'}]}}, 'ml-serve': {'article-descriptions': {'usernames': [{'group': 'deploy-ml-service', 'name': 'article-descriptions', 'owner': 'root'}, {'group': 'deploy-ml-service', 'name': 'article-descriptions-deploy', 'owner': 'root'}]}, 'article-models': {'usernames': [{'group': 'deploy-ml-service', 'name': 'article-models', 'owner': 'root'}, {'group': 'deploy-ml-service', 'name': 'article-models-deploy', 'owner': 'root'}]}, 'articletopic-outlink': {'usernames': [{'group': 'deploy-ml-service', 'name': 'articletopic-outlink', 'owner': 'root'}, {'group': 'deploy-ml-service', 'name': 'articletopic-outlink-deploy', 'owner': 'root'}]}, 'edit-check': {'usernames': [{'group': 'deploy-ml-service', 'name': 'edit-check', 'owner': 'root'}, {'group': 'deploy-ml-service', 'name': 'edit-check-deploy', 'owner': 'root'}]}, 'experimental': {'usernames': [{'group': 'deploy-ml-service', 'name': 'experimental', 'owner': 'root'}, {'group': 'deploy-ml-service', 'name': 'experimental-deploy', 'owner': 'root'}, {'group': 'deploy-ml-service', 'name': 'experimental-debug', 'owner': 'root'}]}, 'llm': {'usernames': [{'group': 'deploy-ml-service', 'name': 'llm', 'owner': 'root'}, {'group': 'deploy-ml-service', 'name': 'llm-deploy', 'owner': 'root'}]}, 'logo-detection': {'usernames': [{'group': 'deploy-ml-service', 'name': 'logo-detection', 'owner': 'root'}, {'group': 'deploy-ml-service', 'name': 'logo-detection-deploy', 'owner': 'root'}]}, 'ores-legacy': {'usernames': [{'group': 'deploy-ml-service', 'name': 'ores-legacy', 'owner': 'root'}, {'group': 'deploy-ml-service', 'name': 'ores-legacy-deploy', 'owner': 'root'}]}, 'readability': {'usernames': [{'group': 'deploy-ml-service', 'name': 'readability', 'owner': 'root'}, {'group': 'deploy-ml-service', 'name': 'readability-deploy', 'owner': 'root'}]}, 'recommendation-api-ng': {'usernames': [{'group': 'deploy-ml-service', 'name': 'recommendation-api-ng', 'owner': 'root'}, {'group': 'deploy-ml-service', 'name': 'recommendation-api-ng-deploy', 'owner': 'root'}]}, 'revertrisk': {'usernames': [{'group': 'deploy-ml-service', 'name': 'revertrisk', 'owner': 'root'}, {'group': 'deploy-ml-service', 'name': 'revertrisk-deploy', 'owner': 'root'}]}, 'revise-tone-task-generator': {'usernames': [{'group': 'deploy-ml-service', 'name': 'revise-tone-task-generator', 'owner': 'root'}, {'group': 'deploy-ml-service', 'name': 'revise-tone-task-generator-deploy', 'owner': 'root'}]}, 'revision-models': {'usernames': [{'group': 'deploy-ml-service', 'name': 'revision-models', 'owner': 'root'}, {'group': 'deploy-ml-service', 'name': 'revision-models-deploy', 'owner': 'root'}]}, 'revscoring-articlequality': {'usernames': [{'group': 'deploy-ml-service', 'name': 'revscoring-articlequality', 'owner': 'root'}, {'group': 'deploy-ml-service', 'name': 'revscoring-articlequality-deploy', 'owner': 'root'}]}, 'revscoring-articletopic': {'usernames': [{'group': 'deploy-ml-service', 'name': 'revscoring-articletopic', 'owner': 'root'}, {'group': 'deploy-ml-service', 'name': 'revscoring-articletopic-deploy', 'owner': 'root'}]}, 'revscoring-draftquality': {'usernames': [{'group': 'deploy-ml-service', 'name': 'revscoring-draftquality', 'owner': 'root'}, {'group': 'deploy-ml-service', 'name': 'revscoring-draftquality-deploy', 'owner': 'root'}]}, 'revscoring-drafttopic': {'usernames': [{'group': 'deploy-ml-service', 'name': 'revscoring-drafttopic', 'owner': 'root'}, {'group': 'deploy-ml-service', 'name': 'revscoring-drafttopic-deploy', 'owner': 'root'}]}, 'revscoring-editquality-damaging': {'usernames': [{'group': 'deploy-ml-service', 'name': 'revscoring-editquality-damaging', 'owner': 'root'}, {'group': 'deploy-ml-service', 'name': 'revscoring-editquality-damaging-deploy', 'owner': 'root'}]}, 'revscoring-editquality-goodfaith': {'usernames': [{'group': 'deploy-ml-service', 'name': 'revscoring-editquality-goodfaith', 'owner': 'root'}, {'group': 'deploy-ml-service', 'name': 'revscoring-editquality-goodfaith-deploy', 'owner': 'root'}]}, 'revscoring-editquality-reverted': {'usernames': [{'group': 'deploy-ml-service', 'name': 'revscoring-editquality-reverted', 'owner': 'root'}, {'group': 'deploy-ml-service', 'name': 'revscoring-editquality-reverted-deploy', 'owner': 'root'}]}}, 'dse-k8s': {'analytics': {'usernames': [{'group': 'analytics-deployers', 'name': 'analytics', 'owner': 'root'}, {'group': 'analytics-deployers', 'name': 'analytics-deploy', 'owner': 'root'}]}, 'analytics-test': {'usernames': [{'group': 'analytics-deployers', 'name': 'analytics-test', 'owner': 'root'}, {'group': 'analytics-deployers', 'name': 'analytics-test-deploy', 'owner': 'root'}]}, 'kafka-mirrormaker': {'usernames': [{'name': 'kafka-mirrormaker'}, {'name': 'kafka-mirrormaker-deploy'}]}, 'opensearch-ipoid': {'usernames': [{'name': 'opensearch-ipoid'}, {'name': 'opensearch-ipoid-deploy'}]}, 'opensearch-ipoid-test': {'usernames': [{'name': 'opensearch-ipoid-test'}, {'name': 'opensearch-ipoid-test-deploy'}]}, 'opensearch-operator': {'usernames': [{'name': 'opensearch-operator'}, {'name': 'opensearch-operator-deploy'}]}, 'opensearch-operator-3': {'usernames': [{'name': 'opensearch-operator-3'}, {'name': 'opensearch-operator-3-deploy'}]}, 'opensearch-semantic-search': {'usernames': [{'name': 'opensearch-semantic-search'}, {'name': 'opensearch-semantic-search-deploy'}]}, 'opensearch-semantic-search-test': {'usernames': [{'name': 'opensearch-semantic-search-test'}, {'name': 'opensearch-semantic-search-test-deploy'}]}, 'opensearch-test': {'usernames': [{'name': 'opensearch-test'}, {'name': 'opensearch-test-deploy'}]}}, 'dse-k8s-codfw': {'echoserver': {'usernames': [{'name': 'echoserver'}, {'name': 'echoserver-deploy'}]}}, 'dse-k8s-eqiad': {'airflow-analytics-product': {'private_files': {'group': 'airflow-deployers', 'mode': '0640', 'owner': 'root'}, 'usernames': [{'group': 'root', 'name': 'postgresql-airflow-analytics-product', 'owner': 'root'}, {'group': 'root', 'name': 'postgresql-airflow-analytics-product-deploy', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-analytics-product', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-analytics-product-deploy', 'owner': 'root'}]}, 'airflow-analytics-test': {'private_files': {'group': 'airflow-deployers', 'mode': '0640', 'owner': 'root'}, 'usernames': [{'group': 'root', 'name': 'postgresql-airflow-analytics-test', 'owner': 'root'}, {'group': 'root', 'name': 'postgresql-airflow-analytics-test-deploy', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-analytics-test', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-analytics-test-deploy', 'owner': 'root'}]}, 'airflow-dev': {'private_files': {'group': 'airflow-deployers', 'mode': '0640', 'owner': 'root'}, 'usernames': [{'group': 'root', 'name': 'postgresql-airflow-dev', 'owner': 'root'}, {'group': 'root', 'name': 'postgresql-airflow-dev-deploy', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-dev', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-dev-deploy', 'owner': 'root'}]}, 'airflow-fr-tech': {'private_files': {'group': 'airflow-deployers', 'mode': '0640', 'owner': 'root'}, 'usernames': [{'group': 'root', 'name': 'postgresql-airflow-fr-tech', 'owner': 'root'}, {'group': 'root', 'name': 'postgresql-airflow-fr-tech-deploy', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-fr-tech', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-fr-tech-deploy', 'owner': 'root'}]}, 'airflow-main': {'private_files': {'group': 'airflow-deployers', 'mode': '0640', 'owner': 'root'}, 'usernames': [{'group': 'root', 'name': 'postgresql-airflow-main', 'owner': 'root'}, {'group': 'root', 'name': 'postgresql-airflow-main-deploy', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-main', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-main-deploy', 'owner': 'root'}]}, 'airflow-ml': {'private_files': {'group': 'airflow-deployers', 'mode': '0640', 'owner': 'root'}, 'usernames': [{'group': 'root', 'name': 'postgresql-airflow-ml', 'owner': 'root'}, {'group': 'root', 'name': 'postgresql-airflow-ml-deploy', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-ml', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-ml-deploy', 'owner': 'root'}]}, 'airflow-platform-eng': {'private_files': {'group': 'airflow-deployers', 'mode': '0640', 'owner': 'root'}, 'usernames': [{'group': 'root', 'name': 'postgresql-airflow-platform-eng', 'owner': 'root'}, {'group': 'root', 'name': 'postgresql-airflow-platform-eng-deploy', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-platform-eng', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-platform-eng-deploy', 'owner': 'root'}]}, 'airflow-research': {'private_files': {'group': 'airflow-deployers', 'mode': '0640', 'owner': 'root'}, 'usernames': [{'group': 'root', 'name': 'postgresql-airflow-research', 'owner': 'root'}, {'group': 'root', 'name': 'postgresql-airflow-research-deploy', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-research', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-research-deploy', 'owner': 'root'}]}, 'airflow-search': {'private_files': {'group': 'airflow-deployers', 'mode': '0640', 'owner': 'root'}, 'usernames': [{'group': 'root', 'name': 'postgresql-airflow-search', 'owner': 'root'}, {'group': 'root', 'name': 'postgresql-airflow-search-deploy', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-search', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-search-deploy', 'owner': 'root'}]}, 'airflow-sre': {'private_files': {'group': 'ops', 'mode': '0640', 'owner': 'root'}, 'usernames': [{'group': 'root', 'name': 'postgresql-airflow-sre', 'owner': 'root'}, {'group': 'root', 'name': 'postgresql-airflow-sre-deploy', 'owner': 'root'}, {'group': 'ops', 'name': 'airflow-sre', 'owner': 'root'}, {'group': 'ops', 'name': 'airflow-sre-deploy', 'owner': 'root'}]}, 'airflow-test-k8s': {'private_files': {'group': 'airflow-deployers', 'mode': '0640', 'owner': 'root'}, 'usernames': [{'group': 'root', 'name': 'postgresql-airflow-test-k8s', 'owner': 'root'}, {'group': 'root', 'name': 'postgresql-airflow-test-k8s-deploy', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-test-k8s', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-test-k8s-deploy', 'owner': 'root'}]}, 'airflow-wikidata': {'private_files': {'group': 'airflow-deployers', 'mode': '0640', 'owner': 'root'}, 'usernames': [{'group': 'root', 'name': 'postgresql-airflow-wikidata', 'owner': 'root'}, {'group': 'root', 'name': 'postgresql-airflow-wikidata-deploy', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-wikidata', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-wikidata-deploy', 'owner': 'root'}]}, 'airflow-wmde': {'private_files': {'group': 'airflow-deployers', 'mode': '0640', 'owner': 'root'}, 'usernames': [{'group': 'root', 'name': 'postgresql-airflow-wmde', 'owner': 'root'}, {'group': 'root', 'name': 'postgresql-airflow-wmde-deploy', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-wmde', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-wmde-deploy', 'owner': 'root'}]}, 'blunderbuss': {'usernames': [{'name': 'blunderbuss'}, {'name': 'blunderbuss-deploy'}]}, 'datahub': {'usernames': [{'name': 'datahub'}, {'name': 'datahub-deploy'}]}, 'datahub-next': {'usernames': [{'name': 'datahub-next'}, {'name': 'datahub-next-deploy'}]}, 'datasets-config': {'usernames': [{'name': 'datasets-config'}, {'name': 'datasets-config-deploy'}]}, 'datasets-config-next': {'usernames': [{'name': 'datasets-config-next'}, {'name': 'datasets-config-next-deploy'}]}, 'growthbook': {'usernames': [{'group': 'root', 'name': 'postgresql-growthbook', 'owner': 'root'}, {'group': 'root', 'name': 'postgresql-growthbook-deploy', 'owner': 'root'}, {'name': 'growthbook'}, {'name': 'growthbook-deploy'}]}, 'growthbook-next': {'usernames': [{'group': 'root', 'name': 'postgresql-growthbook-next', 'owner': 'root'}, {'group': 'root', 'name': 'postgresql-growthbook-next-deploy', 'owner': 'root'}, {'name': 'growthbook-next'}, {'name': 'growthbook-next-deploy'}]}, 'llm-inference': {'usernames': [{'group': 'research-deployers', 'name': 'llm-inference', 'owner': 'root'}, {'group': 'research-deployers', 'name': 'llm-inference-deploy', 'owner': 'root'}]}, 'mediawiki-dumps-legacy': {'usernames': [{'name': 'mediawiki-dumps-legacy'}, {'name': 'mediawiki-dumps-legacy-deploy'}]}, 'mw-content-history-reconcile-enrich': {'usernames': [{'name': 'mw-content-history-reconcile-enrich'}, {'name': 'mw-content-history-reconcile-enrich-deploy'}]}, 'mw-content-history-reconcile-enrich-next': {'usernames': [{'name': 'mw-content-history-reconcile-enrich-next'}, {'name': 'mw-content-history-reconcile-enrich-next-deploy'}]}, 'mw-dump-rev-content-reconcile-enrich': {'usernames': [{'name': 'mw-dump-rev-content-reconcile-enrich'}, {'name': 'mw-dump-rev-content-reconcile-enrich-deploy'}]}, 'mw-dump-rev-content-reconcile-enrich-next': {'usernames': [{'name': 'mw-dump-rev-content-reconcile-enrich-next'}, {'name': 'mw-dump-rev-content-reconcile-enrich-next-deploy'}]}, 'mw-page-html-content-change-enrich': {'usernames': [{'name': 'mw-page-html-content-change-enrich'}, {'name': 'mw-page-html-content-change-enrich-deploy'}]}, 'mw-page-html-content-change-enrich-next': {'usernames': [{'name': 'mw-page-html-content-change-enrich-next'}, {'name': 'mw-page-html-content-change-enrich-next-deploy'}]}, 'mw-page-html-feature-counts-change-enrich': {'usernames': [{'name': 'mw-page-html-feature-counts-change-enrich'}, {'name': 'mw-page-html-feature-counts-change-enrich-deploy'}]}, 'mw-page-html-feature-counts-change-enrich-next': {'usernames': [{'name': 'mw-page-html-feature-counts-change-enrich-next'}, {'name': 'mw-page-html-feature-counts-change-enrich-next-deploy'}]}, 'rdf-streaming-updater': {'usernames': [{'name': 'rdf-streaming-updater'}, {'name': 'rdf-streaming-updater-deploy'}]}, 'spark': {'usernames': [{'name': 'spark'}, {'name': 'spark-deploy'}]}, 'spark-history': {'usernames': [{'group': 'analytics-deployers', 'name': 'spark-history', 'owner': 'root'}, {'group': 'analytics-deployers', 'name': 'spark-history-deploy', 'owner': 'root'}]}, 'spark-history-test': {'usernames': [{'group': 'analytics-deployers', 'name': 'spark-history-test', 'owner': 'root'}, {'group': 'analytics-deployers', 'name': 'spark-history-test-deploy', 'owner': 'root'}]}, 'superset': {'usernames': [{'group': 'analytics-deployers', 'name': 'superset', 'owner': 'root'}, {'group': 'analytics-deployers', 'name': 'superset-deploy', 'owner': 'root'}]}, 'superset-next': {'usernames': [{'group': 'analytics-deployers', 'name': 'superset-next', 'owner': 'root'}, {'group': 'analytics-deployers', 'name': 'superset-next-deploy', 'owner': 'root'}]}, 'test-kitchen': {'usernames': [{'name': 'test-kitchen'}, {'name': 'test-kitchen-deploy'}]}, 'test-kitchen-next': {'usernames': [{'name': 'test-kitchen-next'}, {'name': 'test-kitchen-next-deploy'}]}, 'turnilo': {'usernames': [{'name': 'turnilo'}, {'name': 'turnilo-deploy'}]}, 'turnilo-next': {'usernames': [{'name': 'turnilo-next'}, {'name': 'turnilo-next-deploy'}]}, 'wdqs-queryhammer': {'usernames': [{'name': 'wdqs-queryhammer'}, {'name': 'wdqs-queryhammer-deploy'}]}}, 'aux-k8s': {'codesearch': {'usernames': [{'name': 'codesearch'}, {'name': 'codesearch-deploy'}]}, 'jaeger': {'usernames': [{'name': 'jaeger'}, {'name': 'jaeger-deploy'}]}, 'kafka-mirrormaker': {'usernames': [{'name': 'kafka-mirrormaker'}, {'name': 'kafka-mirrormaker-deploy'}]}, 'miscweb': {'usernames': [{'name': 'miscweb'}, {'name': 'miscweb-deploy'}]}, 'redioscope': {'usernames': [{'name': 'redioscope'}, {'name': 'redioscope-deploy'}]}, 'sophroid': {'usernames': [{'name': 'sophroid'}, {'name': 'sophroid-deploy'}]}, 'zarcillo': {'usernames': [{'name': 'zarcillo'}, {'name': 'zarcillo-deploy'}]}}}\n+    services => {'main': {'apertium': {'usernames': [{'name': 'apertium'}, {'name': 'apertium-deploy'}]}, 'api-gateway': {'usernames': [{'name': 'api-gateway'}, {'name': 'api-gateway-deploy'}]}, 'benthos-cache-invalidator': {'usernames': [{'name': 'benthos-cache-invalidator'}, {'name': 'benthos-cache-invalidator-deploy'}]}, 'changeprop': {'usernames': [{'name': 'changeprop'}, {'name': 'changeprop-deploy'}]}, 'changeprop-jobqueue': {'usernames': [{'name': 'changeprop-jobqueue'}, {'name': 'changeprop-jobqueue-deploy'}]}, 'chart-renderer': {'usernames': [{'name': 'chart-renderer'}, {'name': 'chart-renderer-deploy'}]}, 'cirrus-streaming-updater': {'usernames': [{'name': 'cirrus-streaming-updater'}, {'name': 'cirrus-streaming-updater-deploy'}]}, 'citoid': {'usernames': [{'name': 'citoid'}, {'name': 'citoid-deploy'}]}, 'commons-impact-analytics': {'usernames': [{'name': 'commons-impact-analytics'}, {'name': 'commons-impact-analytics-deploy'}]}, 'cxserver': {'usernames': [{'name': 'cxserver'}, {'name': 'cxserver-deploy'}]}, 'data-gateway': {'usernames': [{'name': 'data-gateway'}, {'name': 'data-gateway-deploy'}]}, 'developer-portal': {'usernames': [{'name': 'developer-portal'}, {'name': 'developer-portal-deploy'}]}, 'device-analytics': {'usernames': [{'name': 'device-analytics'}, {'name': 'device-analytics-deploy'}]}, 'echostore': {'usernames': [{'name': 'echostore'}, {'name': 'echostore-deploy'}]}, 'edit-analytics': {'usernames': [{'name': 'edit-analytics'}, {'name': 'edit-analytics-deploy'}]}, 'editor-analytics': {'usernames': [{'name': 'editor-analytics'}, {'name': 'editor-analytics-deploy'}]}, 'eventgate-analytics': {'usernames': [{'name': 'eventgate-analytics'}, {'name': 'eventgate-analytics-deploy'}]}, 'eventgate-analytics-external': {'usernames': [{'name': 'eventgate-analytics-external'}, {'name': 'eventgate-analytics-external-deploy'}]}, 'eventgate-logging-external': {'usernames': [{'name': 'eventgate-logging-external'}, {'name': 'eventgate-logging-external-deploy'}]}, 'eventgate-main': {'usernames': [{'name': 'eventgate-main'}, {'name': 'eventgate-main-deploy'}]}, 'eventstreams': {'usernames': [{'name': 'eventstreams'}, {'name': 'eventstreams-deploy'}]}, 'eventstreams-internal': {'usernames': [{'name': 'eventstreams-internal'}, {'name': 'eventstreams-internal-deploy'}]}, 'failoid-ng': {'usernames': [{'name': 'failoid-ng'}, {'name': 'failoid-ng-deploy'}]}, 'geo-analytics': {'usernames': [{'name': 'geo-analytics'}, {'name': 'geo-analytics-deploy'}]}, 'ipoid': {'usernames': [{'name': 'ipoid'}, {'name': 'ipoid-deploy'}]}, 'kartotherian': {'usernames': [{'name': 'kartotherian'}, {'name': 'kartotherian-deploy'}]}, 'linked-artifacts': {'usernames': [{'name': 'linked-artifacts'}, {'name': 'linked-artifacts-deploy'}]}, 'linkrecommendation': {'usernames': [{'name': 'linkrecommendation'}, {'name': 'linkrecommendation-deploy'}]}, 'machinetranslation': {'usernames': [{'name': 'machinetranslation'}, {'name': 'machinetranslation-deploy'}]}, 'mathoid': {'usernames': [{'name': 'mathoid'}, {'name': 'mathoid-deploy'}]}, 'media-analytics': {'usernames': [{'name': 'media-analytics'}, {'name': 'media-analytics-deploy'}]}, 'miscweb': {'usernames': [{'name': 'miscweb'}, {'name': 'miscweb-deploy'}]}, 'mobileapps': {'usernames': [{'name': 'mobileapps'}, {'name': 'mobileapps-deploy'}]}, 'mw-api-ext': {'usernames': [{'name': 'mw-api-ext'}, {'name': 'mw-api-ext-deploy'}]}, 'mw-api-int': {'usernames': [{'name': 'mw-api-int'}, {'name': 'mw-api-int-deploy'}]}, 'mw-cron': {'usernames': [{'name': 'mw-cron'}, {'name': 'mw-cron-deploy'}, {'group': 'restricted', 'name': 'mw-cron-restricted'}, {'group': 'restricted', 'name': 'mw-cron-restricted-deploy'}]}, 'mw-debug': {'usernames': [{'name': 'mw-debug'}, {'name': 'mw-debug-deploy'}]}, 'mw-experimental': {'usernames': [{'name': 'mw-experimental'}, {'name': 'mw-experimental-deploy'}]}, 'mw-jobrunner': {'usernames': [{'name': 'mw-jobrunner'}, {'name': 'mw-jobrunner-deploy'}]}, 'mw-mcrouter': {'usernames': [{'name': 'mw-mcrouter'}, {'name': 'mw-mcrouter-deploy'}]}, 'mw-misc': {'usernames': [{'name': 'mw-misc'}, {'name': 'mw-misc-deploy'}]}, 'mw-page-content-change-enrich': {'usernames': [{'name': 'mw-page-content-change-enrich'}, {'name': 'mw-page-content-change-enrich-deploy'}]}, 'mw-parsoid': {'usernames': [{'name': 'mw-parsoid'}, {'name': 'mw-parsoid-deploy'}]}, 'mw-script': {'usernames': [{'name': 'mw-script'}, {'name': 'mw-script-deploy'}, {'group': 'restricted', 'name': 'mw-script-restricted'}, {'group': 'restricted', 'name': 'mw-script-restricted-deploy'}]}, 'mw-videoscaler': {'usernames': [{'name': 'mw-videoscaler'}, {'name': 'mw-videoscaler-deploy'}]}, 'mw-web': {'usernames': [{'name': 'mw-web'}, {'name': 'mw-web-deploy'}]}, 'mw-wikifunctions': {'usernames': [{'name': 'mw-wikifunctions'}, {'name': 'mw-wikifunctions-deploy'}]}, 'opentelemetry-collector': {'usernames': [{'name': 'opentelemetry-collector'}, {'name': 'opentelemetry-collector-deploy'}]}, 'page-analytics': {'usernames': [{'name': 'page-analytics'}, {'name': 'page-analytics-deploy'}]}, 'proton': {'usernames': [{'name': 'proton'}, {'name': 'proton-deploy'}]}, 'push-notifications': {'usernames': [{'name': 'push-notifications'}, {'name': 'push-notifications-deploy'}]}, 'ratelimit': {'usernames': [{'name': 'ratelimit'}, {'name': 'ratelimit-deploy'}]}, 'ratelimit-media': {'usernames': [{'name': 'ratelimit-media'}, {'name': 'ratelimit-media-deploy'}]}, 'rdf-streaming-updater': {'usernames': [{'name': 'rdf-streaming-updater'}, {'name': 'rdf-streaming-updater-deploy'}]}, 'recommendation-api': {'usernames': [{'name': 'recommendation-api'}, {'name': 'recommendation-api-deploy'}]}, 'rest-gateway': {'usernames': [{'name': 'rest-gateway'}, {'name': 'rest-gateway-deploy'}]}, 'sessionstore': {'usernames': [{'name': 'sessionstore'}, {'name': 'sessionstore-deploy'}]}, 'shellbox': {'usernames': [{'name': 'shellbox'}, {'name': 'shellbox-deploy'}]}, 'shellbox-constraints': {'usernames': [{'name': 'shellbox-constraints'}, {'name': 'shellbox-constraints-deploy'}]}, 'shellbox-media': {'usernames': [{'name': 'shellbox-media'}, {'name': 'shellbox-media-deploy'}]}, 'shellbox-syntaxhighlight': {'usernames': [{'name': 'shellbox-syntaxhighlight'}, {'name': 'shellbox-syntaxhighlight-deploy'}]}, 'shellbox-timeline': {'usernames': [{'name': 'shellbox-timeline'}, {'name': 'shellbox-timeline-deploy'}]}, 'shellbox-video': {'usernames': [{'name': 'shellbox-video'}, {'name': 'shellbox-video-deploy'}]}, 'tegola-vector-tiles': {'usernames': [{'name': 'tegola-vector-tiles'}, {'name': 'tegola-vector-tiles-deploy'}]}, 'termbox': {'usernames': [{'name': 'termbox'}, {'name': 'termbox-deploy'}]}, 'thumbor': {'usernames': [{'name': 'thumbor'}, {'name': 'thumbor-deploy'}]}, 'toolhub': {'usernames': [{'name': 'toolhub'}, {'name': 'toolhub-deploy'}]}, 'wikidata-query-gui': {'usernames': [{'name': 'wikidata-query-gui'}, {'name': 'wikidata-query-gui-deploy'}]}, 'wikifeeds': {'usernames': [{'name': 'wikifeeds'}, {'name': 'wikifeeds-deploy'}]}, 'wikifunctions': {'usernames': [{'name': 'wikifunctions'}, {'name': 'wikifunctions-deploy'}]}, 'zotero': {'usernames': [{'name': 'zotero'}, {'name': 'zotero-deploy'}]}}, 'ml-serve': {'article-descriptions': {'usernames': [{'group': 'deploy-ml-service', 'name': 'article-descriptions', 'owner': 'root'}, {'group': 'deploy-ml-service', 'name': 'article-descriptions-deploy', 'owner': 'root'}]}, 'article-models': {'usernames': [{'group': 'deploy-ml-service', 'name': 'article-models', 'owner': 'root'}, {'group': 'deploy-ml-service', 'name': 'article-models-deploy', 'owner': 'root'}]}, 'articletopic-outlink': {'usernames': [{'group': 'deploy-ml-service', 'name': 'articletopic-outlink', 'owner': 'root'}, {'group': 'deploy-ml-service', 'name': 'articletopic-outlink-deploy', 'owner': 'root'}]}, 'edit-check': {'usernames': [{'group': 'deploy-ml-service', 'name': 'edit-check', 'owner': 'root'}, {'group': 'deploy-ml-service', 'name': 'edit-check-deploy', 'owner': 'root'}]}, 'experimental': {'usernames': [{'group': 'deploy-ml-service', 'name': 'experimental', 'owner': 'root'}, {'group': 'deploy-ml-service', 'name': 'experimental-deploy', 'owner': 'root'}, {'group': 'deploy-ml-service', 'name': 'experimental-debug', 'owner': 'root'}]}, 'llm': {'usernames': [{'group': 'deploy-ml-service', 'name': 'llm', 'owner': 'root'}, {'group': 'deploy-ml-service', 'name': 'llm-deploy', 'owner': 'root'}]}, 'logo-detection': {'usernames': [{'group': 'deploy-ml-service', 'name': 'logo-detection', 'owner': 'root'}, {'group': 'deploy-ml-service', 'name': 'logo-detection-deploy', 'owner': 'root'}]}, 'ores-legacy': {'usernames': [{'group': 'deploy-ml-service', 'name': 'ores-legacy', 'owner': 'root'}, {'group': 'deploy-ml-service', 'name': 'ores-legacy-deploy', 'owner': 'root'}]}, 'readability': {'usernames': [{'group': 'deploy-ml-service', 'name': 'readability', 'owner': 'root'}, {'group': 'deploy-ml-service', 'name': 'readability-deploy', 'owner': 'root'}]}, 'recommendation-api-ng': {'usernames': [{'group': 'deploy-ml-service', 'name': 'recommendation-api-ng', 'owner': 'root'}, {'group': 'deploy-ml-service', 'name': 'recommendation-api-ng-deploy', 'owner': 'root'}]}, 'revertrisk': {'usernames': [{'group': 'deploy-ml-service', 'name': 'revertrisk', 'owner': 'root'}, {'group': 'deploy-ml-service', 'name': 'revertrisk-deploy', 'owner': 'root'}]}, 'revise-tone-task-generator': {'usernames': [{'group': 'deploy-ml-service', 'name': 'revise-tone-task-generator', 'owner': 'root'}, {'group': 'deploy-ml-service', 'name': 'revise-tone-task-generator-deploy', 'owner': 'root'}]}, 'revision-models': {'usernames': [{'group': 'deploy-ml-service', 'name': 'revision-models', 'owner': 'root'}, {'group': 'deploy-ml-service', 'name': 'revision-models-deploy', 'owner': 'root'}]}, 'revscoring-articlequality': {'usernames': [{'group': 'deploy-ml-service', 'name': 'revscoring-articlequality', 'owner': 'root'}, {'group': 'deploy-ml-service', 'name': 'revscoring-articlequality-deploy', 'owner': 'root'}]}, 'revscoring-articletopic': {'usernames': [{'group': 'deploy-ml-service', 'name': 'revscoring-articletopic', 'owner': 'root'}, {'group': 'deploy-ml-service', 'name': 'revscoring-articletopic-deploy', 'owner': 'root'}]}, 'revscoring-draftquality': {'usernames': [{'group': 'deploy-ml-service', 'name': 'revscoring-draftquality', 'owner': 'root'}, {'group': 'deploy-ml-service', 'name': 'revscoring-draftquality-deploy', 'owner': 'root'}]}, 'revscoring-drafttopic': {'usernames': [{'group': 'deploy-ml-service', 'name': 'revscoring-drafttopic', 'owner': 'root'}, {'group': 'deploy-ml-service', 'name': 'revscoring-drafttopic-deploy', 'owner': 'root'}]}, 'revscoring-editquality-damaging': {'usernames': [{'group': 'deploy-ml-service', 'name': 'revscoring-editquality-damaging', 'owner': 'root'}, {'group': 'deploy-ml-service', 'name': 'revscoring-editquality-damaging-deploy', 'owner': 'root'}]}, 'revscoring-editquality-goodfaith': {'usernames': [{'group': 'deploy-ml-service', 'name': 'revscoring-editquality-goodfaith', 'owner': 'root'}, {'group': 'deploy-ml-service', 'name': 'revscoring-editquality-goodfaith-deploy', 'owner': 'root'}]}, 'revscoring-editquality-reverted': {'usernames': [{'group': 'deploy-ml-service', 'name': 'revscoring-editquality-reverted', 'owner': 'root'}, {'group': 'deploy-ml-service', 'name': 'revscoring-editquality-reverted-deploy', 'owner': 'root'}]}}, 'dse-k8s': {'analytics': {'usernames': [{'group': 'analytics-deployers', 'name': 'analytics', 'owner': 'root'}, {'group': 'analytics-deployers', 'name': 'analytics-deploy', 'owner': 'root'}]}, 'analytics-test': {'usernames': [{'group': 'analytics-deployers', 'name': 'analytics-test', 'owner': 'root'}, {'group': 'analytics-deployers', 'name': 'analytics-test-deploy', 'owner': 'root'}]}, 'kafka-mirrormaker': {'usernames': [{'name': 'kafka-mirrormaker'}, {'name': 'kafka-mirrormaker-deploy'}]}, 'opensearch-ipoid': {'usernames': [{'name': 'opensearch-ipoid'}, {'name': 'opensearch-ipoid-deploy'}]}, 'opensearch-ipoid-test': {'usernames': [{'name': 'opensearch-ipoid-test'}, {'name': 'opensearch-ipoid-test-deploy'}]}, 'opensearch-operator': {'usernames': [{'name': 'opensearch-operator'}, {'name': 'opensearch-operator-deploy'}]}, 'opensearch-operator-3': {'usernames': [{'name': 'opensearch-operator-3'}, {'name': 'opensearch-operator-3-deploy'}]}, 'opensearch-semantic-search': {'usernames': [{'name': 'opensearch-semantic-search'}, {'name': 'opensearch-semantic-search-deploy'}]}, 'opensearch-semantic-search-test': {'usernames': [{'name': 'opensearch-semantic-search-test'}, {'name': 'opensearch-semantic-search-test-deploy'}]}, 'opensearch-test': {'usernames': [{'name': 'opensearch-test'}, {'name': 'opensearch-test-deploy'}]}, 'opensearch-toolhub': {'usernames': [{'name': 'opensearch-toolhub'}, {'name': 'opensearch-toolhub-deploy'}]}, 'opensearch-toolhub-test': {'usernames': [{'name': 'opensearch-toolhub-test'}, {'name': 'opensearch-toolhub-test-deploy'}]}, 'opensearch-apifeatureusage': {'usernames': [{'name': 'opensearch-apifeatureusage'}, {'name': 'opensearch-apifeatureusage-deploy'}]}, 'opensearch-apifeatureusage-test': {'usernames': [{'name': 'opensearch-apifeatureusage-test'}, {'name': 'opensearch-apifeatureusage-test-deploy'}]}, 'opensearch-ttmserver': {'usernames': [{'name': 'opensearch-ttmserver'}, {'name': 'opensearch-ttmserver-deploy'}]}, 'opensearch-ttmserver-test': {'usernames': [{'name': 'opensearch-ttmserver-test'}, {'name': 'opensearch-ttmserver-test-deploy'}]}}, 'dse-k8s-codfw': {'echoserver': {'usernames': [{'name': 'echoserver'}, {'name': 'echoserver-deploy'}]}}, 'dse-k8s-eqiad': {'airflow-analytics-product': {'private_files': {'group': 'airflow-deployers', 'mode': '0640', 'owner': 'root'}, 'usernames': [{'group': 'root', 'name': 'postgresql-airflow-analytics-product', 'owner': 'root'}, {'group': 'root', 'name': 'postgresql-airflow-analytics-product-deploy', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-analytics-product', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-analytics-product-deploy', 'owner': 'root'}]}, 'airflow-analytics-test': {'private_files': {'group': 'airflow-deployers', 'mode': '0640', 'owner': 'root'}, 'usernames': [{'group': 'root', 'name': 'postgresql-airflow-analytics-test', 'owner': 'root'}, {'group': 'root', 'name': 'postgresql-airflow-analytics-test-deploy', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-analytics-test', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-analytics-test-deploy', 'owner': 'root'}]}, 'airflow-dev': {'private_files': {'group': 'airflow-deployers', 'mode': '0640', 'owner': 'root'}, 'usernames': [{'group': 'root', 'name': 'postgresql-airflow-dev', 'owner': 'root'}, {'group': 'root', 'name': 'postgresql-airflow-dev-deploy', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-dev', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-dev-deploy', 'owner': 'root'}]}, 'airflow-fr-tech': {'private_files': {'group': 'airflow-deployers', 'mode': '0640', 'owner': 'root'}, 'usernames': [{'group': 'root', 'name': 'postgresql-airflow-fr-tech', 'owner': 'root'}, {'group': 'root', 'name': 'postgresql-airflow-fr-tech-deploy', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-fr-tech', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-fr-tech-deploy', 'owner': 'root'}]}, 'airflow-main': {'private_files': {'group': 'airflow-deployers', 'mode': '0640', 'owner': 'root'}, 'usernames': [{'group': 'root', 'name': 'postgresql-airflow-main', 'owner': 'root'}, {'group': 'root', 'name': 'postgresql-airflow-main-deploy', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-main', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-main-deploy', 'owner': 'root'}]}, 'airflow-ml': {'private_files': {'group': 'airflow-deployers', 'mode': '0640', 'owner': 'root'}, 'usernames': [{'group': 'root', 'name': 'postgresql-airflow-ml', 'owner': 'root'}, {'group': 'root', 'name': 'postgresql-airflow-ml-deploy', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-ml', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-ml-deploy', 'owner': 'root'}]}, 'airflow-platform-eng': {'private_files': {'group': 'airflow-deployers', 'mode': '0640', 'owner': 'root'}, 'usernames': [{'group': 'root', 'name': 'postgresql-airflow-platform-eng', 'owner': 'root'}, {'group': 'root', 'name': 'postgresql-airflow-platform-eng-deploy', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-platform-eng', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-platform-eng-deploy', 'owner': 'root'}]}, 'airflow-research': {'private_files': {'group': 'airflow-deployers', 'mode': '0640', 'owner': 'root'}, 'usernames': [{'group': 'root', 'name': 'postgresql-airflow-research', 'owner': 'root'}, {'group': 'root', 'name': 'postgresql-airflow-research-deploy', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-research', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-research-deploy', 'owner': 'root'}]}, 'airflow-search': {'private_files': {'group': 'airflow-deployers', 'mode': '0640', 'owner': 'root'}, 'usernames': [{'group': 'root', 'name': 'postgresql-airflow-search', 'owner': 'root'}, {'group': 'root', 'name': 'postgresql-airflow-search-deploy', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-search', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-search-deploy', 'owner': 'root'}]}, 'airflow-sre': {'private_files': {'group': 'ops', 'mode': '0640', 'owner': 'root'}, 'usernames': [{'group': 'root', 'name': 'postgresql-airflow-sre', 'owner': 'root'}, {'group': 'root', 'name': 'postgresql-airflow-sre-deploy', 'owner': 'root'}, {'group': 'ops', 'name': 'airflow-sre', 'owner': 'root'}, {'group': 'ops', 'name': 'airflow-sre-deploy', 'owner': 'root'}]}, 'airflow-test-k8s': {'private_files': {'group': 'airflow-deployers', 'mode': '0640', 'owner': 'root'}, 'usernames': [{'group': 'root', 'name': 'postgresql-airflow-test-k8s', 'owner': 'root'}, {'group': 'root', 'name': 'postgresql-airflow-test-k8s-deploy', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-test-k8s', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-test-k8s-deploy', 'owner': 'root'}]}, 'airflow-wikidata': {'private_files': {'group': 'airflow-deployers', 'mode': '0640', 'owner': 'root'}, 'usernames': [{'group': 'root', 'name': 'postgresql-airflow-wikidata', 'owner': 'root'}, {'group': 'root', 'name': 'postgresql-airflow-wikidata-deploy', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-wikidata', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-wikidata-deploy', 'owner': 'root'}]}, 'airflow-wmde': {'private_files': {'group': 'airflow-deployers', 'mode': '0640', 'owner': 'root'}, 'usernames': [{'group': 'root', 'name': 'postgresql-airflow-wmde', 'owner': 'root'}, {'group': 'root', 'name': 'postgresql-airflow-wmde-deploy', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-wmde', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-wmde-deploy', 'owner': 'root'}]}, 'blunderbuss': {'usernames': [{'name': 'blunderbuss'}, {'name': 'blunderbuss-deploy'}]}, 'datahub': {'usernames': [{'name': 'datahub'}, {'name': 'datahub-deploy'}]}, 'datahub-next': {'usernames': [{'name': 'datahub-next'}, {'name': 'datahub-next-deploy'}]}, 'datasets-config': {'usernames': [{'name': 'datasets-config'}, {'name': 'datasets-config-deploy'}]}, 'datasets-config-next': {'usernames': [{'name': 'datasets-config-next'}, {'name': 'datasets-config-next-deploy'}]}, 'growthbook': {'usernames': [{'group': 'root', 'name': 'postgresql-growthbook', 'owner': 'root'}, {'group': 'root', 'name': 'postgresql-growthbook-deploy', 'owner': 'root'}, {'name': 'growthbook'}, {'name': 'growthbook-deploy'}]}, 'growthbook-next': {'usernames': [{'group': 'root', 'name': 'postgresql-growthbook-next', 'owner': 'root'}, {'group': 'root', 'name': 'postgresql-growthbook-next-deploy', 'owner': 'root'}, {'name': 'growthbook-next'}, {'name': 'growthbook-next-deploy'}]}, 'llm-inference': {'usernames': [{'group': 'research-deployers', 'name': 'llm-inference', 'owner': 'root'}, {'group': 'research-deployers', 'name': 'llm-inference-deploy', 'owner': 'root'}]}, 'mediawiki-dumps-legacy': {'usernames': [{'name': 'mediawiki-dumps-legacy'}, {'name': 'mediawiki-dumps-legacy-deploy'}]}, 'mw-content-history-reconcile-enrich': {'usernames': [{'name': 'mw-content-history-reconcile-enrich'}, {'name': 'mw-content-history-reconcile-enrich-deploy'}]}, 'mw-content-history-reconcile-enrich-next': {'usernames': [{'name': 'mw-content-history-reconcile-enrich-next'}, {'name': 'mw-content-history-reconcile-enrich-next-deploy'}]}, 'mw-dump-rev-content-reconcile-enrich': {'usernames': [{'name': 'mw-dump-rev-content-reconcile-enrich'}, {'name': 'mw-dump-rev-content-reconcile-enrich-deploy'}]}, 'mw-dump-rev-content-reconcile-enrich-next': {'usernames': [{'name': 'mw-dump-rev-content-reconcile-enrich-next'}, {'name': 'mw-dump-rev-content-reconcile-enrich-next-deploy'}]}, 'mw-page-html-content-change-enrich': {'usernames': [{'name': 'mw-page-html-content-change-enrich'}, {'name': 'mw-page-html-content-change-enrich-deploy'}]}, 'mw-page-html-content-change-enrich-next': {'usernames': [{'name': 'mw-page-html-content-change-enrich-next'}, {'name': 'mw-page-html-content-change-enrich-next-deploy'}]}, 'mw-page-html-feature-counts-change-enrich': {'usernames': [{'name': 'mw-page-html-feature-counts-change-enrich'}, {'name': 'mw-page-html-feature-counts-change-enrich-deploy'}]}, 'mw-page-html-feature-counts-change-enrich-next': {'usernames': [{'name': 'mw-page-html-feature-counts-change-enrich-next'}, {'name': 'mw-page-html-feature-counts-change-enrich-next-deploy'}]}, 'rdf-streaming-updater': {'usernames': [{'name': 'rdf-streaming-updater'}, {'name': 'rdf-streaming-updater-deploy'}]}, 'spark': {'usernames': [{'name': 'spark'}, {'name': 'spark-deploy'}]}, 'spark-history': {'usernames': [{'group': 'analytics-deployers', 'name': 'spark-history', 'owner': 'root'}, {'group': 'analytics-deployers', 'name': 'spark-history-deploy', 'owner': 'root'}]}, 'spark-history-test': {'usernames': [{'group': 'analytics-deployers', 'name': 'spark-history-test', 'owner': 'root'}, {'group': 'analytics-deployers', 'name': 'spark-history-test-deploy', 'owner': 'root'}]}, 'superset': {'usernames': [{'group': 'analytics-deployers', 'name': 'superset', 'owner': 'root'}, {'group': 'analytics-deployers', 'name': 'superset-deploy', 'owner': 'root'}]}, 'superset-next': {'usernames': [{'group': 'analytics-deployers', 'name': 'superset-next', 'owner': 'root'}, {'group': 'analytics-deployers', 'name': 'superset-next-deploy', 'owner': 'root'}]}, 'test-kitchen': {'usernames': [{'name': 'test-kitchen'}, {'name': 'test-kitchen-deploy'}]}, 'test-kitchen-next': {'usernames': [{'name': 'test-kitchen-next'}, {'name': 'test-kitchen-next-deploy'}]}, 'turnilo': {'usernames': [{'name': 'turnilo'}, {'name': 'turnilo-deploy'}]}, 'turnilo-next': {'usernames': [{'name': 'turnilo-next'}, {'name': 'turnilo-next-deploy'}]}, 'wdqs-queryhammer': {'usernames': [{'name': 'wdqs-queryhammer'}, {'name': 'wdqs-queryhammer-deploy'}]}}, 'aux-k8s': {'codesearch': {'usernames': [{'name': 'codesearch'}, {'name': 'codesearch-deploy'}]}, 'jaeger': {'usernames': [{'name': 'jaeger'}, {'name': 'jaeger-deploy'}]}, 'kafka-mirrormaker': {'usernames': [{'name': 'kafka-mirrormaker'}, {'name': 'kafka-mirrormaker-deploy'}]}, 'miscweb': {'usernames': [{'name': 'miscweb'}, {'name': 'miscweb-deploy'}]}, 'redioscope': {'usernames': [{'name': 'redioscope'}, {'name': 'redioscope-deploy'}]}, 'sophroid': {'usernames': [{'name': 'sophroid'}, {'name': 'sophroid-deploy'}]}, 'zarcillo': {'usernames': [{'name': 'zarcillo'}, {'name': 'zarcillo-deploy'}]}}}\n"}, {"resource": "File[/etc/helmfile-defaults/services-dse-k8s-eqiad.yaml]", "content": "--- /etc/helmfile-defaults/services-dse-k8s-eqiad.yaml.orig\n+++ /etc/helmfile-defaults/services-dse-k8s-eqiad.yaml\n@@ -48,6 +48,30 @@\n     usernames:\n     - name: opensearch-test\n     - name: opensearch-test-deploy\n+  opensearch-toolhub:\n+    usernames:\n+    - name: opensearch-toolhub\n+    - name: opensearch-toolhub-deploy\n+  opensearch-toolhub-test:\n+    usernames:\n+    - name: opensearch-toolhub-test\n+    - name: opensearch-toolhub-test-deploy\n+  opensearch-apifeatureusage:\n+    usernames:\n+    - name: opensearch-apifeatureusage\n+    - name: opensearch-apifeatureusage-deploy\n+  opensearch-apifeatureusage-test:\n+    usernames:\n+    - name: opensearch-apifeatureusage-test\n+    - name: opensearch-apifeatureusage-test-deploy\n+  opensearch-ttmserver:\n+    usernames:\n+    - name: opensearch-ttmserver\n+    - name: opensearch-ttmserver-deploy\n+  opensearch-ttmserver-test:\n+    usernames:\n+    - name: opensearch-ttmserver-test\n+    - name: opensearch-ttmserver-test-deploy\n   airflow-analytics-product:\n     private_files:\n       group: airflow-deployers"}, {"resource": "File[/etc/helmfile-defaults/services-dse-k8s-codfw.yaml]", "content": "--- /etc/helmfile-defaults/services-dse-k8s-codfw.yaml.orig\n+++ /etc/helmfile-defaults/services-dse-k8s-codfw.yaml\n@@ -48,6 +48,30 @@\n     usernames:\n     - name: opensearch-test\n     - name: opensearch-test-deploy\n+  opensearch-toolhub:\n+    usernames:\n+    - name: opensearch-toolhub\n+    - name: opensearch-toolhub-deploy\n+  opensearch-toolhub-test:\n+    usernames:\n+    - name: opensearch-toolhub-test\n+    - name: opensearch-toolhub-test-deploy\n+  opensearch-apifeatureusage:\n+    usernames:\n+    - name: opensearch-apifeatureusage\n+    - name: opensearch-apifeatureusage-deploy\n+  opensearch-apifeatureusage-test:\n+    usernames:\n+    - name: opensearch-apifeatureusage-test\n+    - name: opensearch-apifeatureusage-test-deploy\n+  opensearch-ttmserver:\n+    usernames:\n+    - name: opensearch-ttmserver\n+    - name: opensearch-ttmserver-deploy\n+  opensearch-ttmserver-test:\n+    usernames:\n+    - name: opensearch-ttmserver-test\n+    - name: opensearch-ttmserver-test-deploy\n   echoserver:\n     usernames:\n     - name: echoserver"}, {"resource": "Class[Profile::Kubernetes::Deployment_server::Helmfile]", "parameters": "--- Class[Profile::Kubernetes::Deployment_server::Helmfile].orig\n+++ Class[Profile::Kubernetes::Deployment_server::Helmfile]\n\n@@\n-    services => {'main': {'apertium': {'usernames': [{'name': 'apertium'}, {'name': 'apertium-deploy'}]}, 'api-gateway': {'usernames': [{'name': 'api-gateway'}, {'name': 'api-gateway-deploy'}]}, 'benthos-cache-invalidator': {'usernames': [{'name': 'benthos-cache-invalidator'}, {'name': 'benthos-cache-invalidator-deploy'}]}, 'changeprop': {'usernames': [{'name': 'changeprop'}, {'name': 'changeprop-deploy'}]}, 'changeprop-jobqueue': {'usernames': [{'name': 'changeprop-jobqueue'}, {'name': 'changeprop-jobqueue-deploy'}]}, 'chart-renderer': {'usernames': [{'name': 'chart-renderer'}, {'name': 'chart-renderer-deploy'}]}, 'cirrus-streaming-updater': {'usernames': [{'name': 'cirrus-streaming-updater'}, {'name': 'cirrus-streaming-updater-deploy'}]}, 'citoid': {'usernames': [{'name': 'citoid'}, {'name': 'citoid-deploy'}]}, 'commons-impact-analytics': {'usernames': [{'name': 'commons-impact-analytics'}, {'name': 'commons-impact-analytics-deploy'}]}, 'cxserver': {'usernames': [{'name': 'cxserver'}, {'name': 'cxserver-deploy'}]}, 'data-gateway': {'usernames': [{'name': 'data-gateway'}, {'name': 'data-gateway-deploy'}]}, 'developer-portal': {'usernames': [{'name': 'developer-portal'}, {'name': 'developer-portal-deploy'}]}, 'device-analytics': {'usernames': [{'name': 'device-analytics'}, {'name': 'device-analytics-deploy'}]}, 'echostore': {'usernames': [{'name': 'echostore'}, {'name': 'echostore-deploy'}]}, 'edit-analytics': {'usernames': [{'name': 'edit-analytics'}, {'name': 'edit-analytics-deploy'}]}, 'editor-analytics': {'usernames': [{'name': 'editor-analytics'}, {'name': 'editor-analytics-deploy'}]}, 'eventgate-analytics': {'usernames': [{'name': 'eventgate-analytics'}, {'name': 'eventgate-analytics-deploy'}]}, 'eventgate-analytics-external': {'usernames': [{'name': 'eventgate-analytics-external'}, {'name': 'eventgate-analytics-external-deploy'}]}, 'eventgate-logging-external': {'usernames': [{'name': 'eventgate-logging-external'}, {'name': 'eventgate-logging-external-deploy'}]}, 'eventgate-main': {'usernames': [{'name': 'eventgate-main'}, {'name': 'eventgate-main-deploy'}]}, 'eventstreams': {'usernames': [{'name': 'eventstreams'}, {'name': 'eventstreams-deploy'}]}, 'eventstreams-internal': {'usernames': [{'name': 'eventstreams-internal'}, {'name': 'eventstreams-internal-deploy'}]}, 'failoid-ng': {'usernames': [{'name': 'failoid-ng'}, {'name': 'failoid-ng-deploy'}]}, 'geo-analytics': {'usernames': [{'name': 'geo-analytics'}, {'name': 'geo-analytics-deploy'}]}, 'ipoid': {'usernames': [{'name': 'ipoid'}, {'name': 'ipoid-deploy'}]}, 'kartotherian': {'usernames': [{'name': 'kartotherian'}, {'name': 'kartotherian-deploy'}]}, 'linked-artifacts': {'usernames': [{'name': 'linked-artifacts'}, {'name': 'linked-artifacts-deploy'}]}, 'linkrecommendation': {'usernames': [{'name': 'linkrecommendation'}, {'name': 'linkrecommendation-deploy'}]}, 'machinetranslation': {'usernames': [{'name': 'machinetranslation'}, {'name': 'machinetranslation-deploy'}]}, 'mathoid': {'usernames': [{'name': 'mathoid'}, {'name': 'mathoid-deploy'}]}, 'media-analytics': {'usernames': [{'name': 'media-analytics'}, {'name': 'media-analytics-deploy'}]}, 'miscweb': {'usernames': [{'name': 'miscweb'}, {'name': 'miscweb-deploy'}]}, 'mobileapps': {'usernames': [{'name': 'mobileapps'}, {'name': 'mobileapps-deploy'}]}, 'mw-api-ext': {'usernames': [{'name': 'mw-api-ext'}, {'name': 'mw-api-ext-deploy'}]}, 'mw-api-int': {'usernames': [{'name': 'mw-api-int'}, {'name': 'mw-api-int-deploy'}]}, 'mw-cron': {'usernames': [{'name': 'mw-cron'}, {'name': 'mw-cron-deploy'}, {'group': 'restricted', 'name': 'mw-cron-restricted'}, {'group': 'restricted', 'name': 'mw-cron-restricted-deploy'}]}, 'mw-debug': {'usernames': [{'name': 'mw-debug'}, {'name': 'mw-debug-deploy'}]}, 'mw-experimental': {'usernames': [{'name': 'mw-experimental'}, {'name': 'mw-experimental-deploy'}]}, 'mw-jobrunner': {'usernames': [{'name': 'mw-jobrunner'}, {'name': 'mw-jobrunner-deploy'}]}, 'mw-mcrouter': {'usernames': [{'name': 'mw-mcrouter'}, {'name': 'mw-mcrouter-deploy'}]}, 'mw-misc': {'usernames': [{'name': 'mw-misc'}, {'name': 'mw-misc-deploy'}]}, 'mw-page-content-change-enrich': {'usernames': [{'name': 'mw-page-content-change-enrich'}, {'name': 'mw-page-content-change-enrich-deploy'}]}, 'mw-parsoid': {'usernames': [{'name': 'mw-parsoid'}, {'name': 'mw-parsoid-deploy'}]}, 'mw-script': {'usernames': [{'name': 'mw-script'}, {'name': 'mw-script-deploy'}, {'group': 'restricted', 'name': 'mw-script-restricted'}, {'group': 'restricted', 'name': 'mw-script-restricted-deploy'}]}, 'mw-videoscaler': {'usernames': [{'name': 'mw-videoscaler'}, {'name': 'mw-videoscaler-deploy'}]}, 'mw-web': {'usernames': [{'name': 'mw-web'}, {'name': 'mw-web-deploy'}]}, 'mw-wikifunctions': {'usernames': [{'name': 'mw-wikifunctions'}, {'name': 'mw-wikifunctions-deploy'}]}, 'opentelemetry-collector': {'usernames': [{'name': 'opentelemetry-collector'}, {'name': 'opentelemetry-collector-deploy'}]}, 'page-analytics': {'usernames': [{'name': 'page-analytics'}, {'name': 'page-analytics-deploy'}]}, 'proton': {'usernames': [{'name': 'proton'}, {'name': 'proton-deploy'}]}, 'push-notifications': {'usernames': [{'name': 'push-notifications'}, {'name': 'push-notifications-deploy'}]}, 'ratelimit': {'usernames': [{'name': 'ratelimit'}, {'name': 'ratelimit-deploy'}]}, 'ratelimit-media': {'usernames': [{'name': 'ratelimit-media'}, {'name': 'ratelimit-media-deploy'}]}, 'rdf-streaming-updater': {'usernames': [{'name': 'rdf-streaming-updater'}, {'name': 'rdf-streaming-updater-deploy'}]}, 'recommendation-api': {'usernames': [{'name': 'recommendation-api'}, {'name': 'recommendation-api-deploy'}]}, 'rest-gateway': {'usernames': [{'name': 'rest-gateway'}, {'name': 'rest-gateway-deploy'}]}, 'sessionstore': {'usernames': [{'name': 'sessionstore'}, {'name': 'sessionstore-deploy'}]}, 'shellbox': {'usernames': [{'name': 'shellbox'}, {'name': 'shellbox-deploy'}]}, 'shellbox-constraints': {'usernames': [{'name': 'shellbox-constraints'}, {'name': 'shellbox-constraints-deploy'}]}, 'shellbox-media': {'usernames': [{'name': 'shellbox-media'}, {'name': 'shellbox-media-deploy'}]}, 'shellbox-syntaxhighlight': {'usernames': [{'name': 'shellbox-syntaxhighlight'}, {'name': 'shellbox-syntaxhighlight-deploy'}]}, 'shellbox-timeline': {'usernames': [{'name': 'shellbox-timeline'}, {'name': 'shellbox-timeline-deploy'}]}, 'shellbox-video': {'usernames': [{'name': 'shellbox-video'}, {'name': 'shellbox-video-deploy'}]}, 'tegola-vector-tiles': {'usernames': [{'name': 'tegola-vector-tiles'}, {'name': 'tegola-vector-tiles-deploy'}]}, 'termbox': {'usernames': [{'name': 'termbox'}, {'name': 'termbox-deploy'}]}, 'thumbor': {'usernames': [{'name': 'thumbor'}, {'name': 'thumbor-deploy'}]}, 'toolhub': {'usernames': [{'name': 'toolhub'}, {'name': 'toolhub-deploy'}]}, 'wikidata-query-gui': {'usernames': [{'name': 'wikidata-query-gui'}, {'name': 'wikidata-query-gui-deploy'}]}, 'wikifeeds': {'usernames': [{'name': 'wikifeeds'}, {'name': 'wikifeeds-deploy'}]}, 'wikifunctions': {'usernames': [{'name': 'wikifunctions'}, {'name': 'wikifunctions-deploy'}]}, 'zotero': {'usernames': [{'name': 'zotero'}, {'name': 'zotero-deploy'}]}}, 'ml-serve': {'article-descriptions': {'usernames': [{'group': 'deploy-ml-service', 'name': 'article-descriptions', 'owner': 'root'}, {'group': 'deploy-ml-service', 'name': 'article-descriptions-deploy', 'owner': 'root'}]}, 'article-models': {'usernames': [{'group': 'deploy-ml-service', 'name': 'article-models', 'owner': 'root'}, {'group': 'deploy-ml-service', 'name': 'article-models-deploy', 'owner': 'root'}]}, 'articletopic-outlink': {'usernames': [{'group': 'deploy-ml-service', 'name': 'articletopic-outlink', 'owner': 'root'}, {'group': 'deploy-ml-service', 'name': 'articletopic-outlink-deploy', 'owner': 'root'}]}, 'edit-check': {'usernames': [{'group': 'deploy-ml-service', 'name': 'edit-check', 'owner': 'root'}, {'group': 'deploy-ml-service', 'name': 'edit-check-deploy', 'owner': 'root'}]}, 'experimental': {'usernames': [{'group': 'deploy-ml-service', 'name': 'experimental', 'owner': 'root'}, {'group': 'deploy-ml-service', 'name': 'experimental-deploy', 'owner': 'root'}, {'group': 'deploy-ml-service', 'name': 'experimental-debug', 'owner': 'root'}]}, 'llm': {'usernames': [{'group': 'deploy-ml-service', 'name': 'llm', 'owner': 'root'}, {'group': 'deploy-ml-service', 'name': 'llm-deploy', 'owner': 'root'}]}, 'logo-detection': {'usernames': [{'group': 'deploy-ml-service', 'name': 'logo-detection', 'owner': 'root'}, {'group': 'deploy-ml-service', 'name': 'logo-detection-deploy', 'owner': 'root'}]}, 'ores-legacy': {'usernames': [{'group': 'deploy-ml-service', 'name': 'ores-legacy', 'owner': 'root'}, {'group': 'deploy-ml-service', 'name': 'ores-legacy-deploy', 'owner': 'root'}]}, 'readability': {'usernames': [{'group': 'deploy-ml-service', 'name': 'readability', 'owner': 'root'}, {'group': 'deploy-ml-service', 'name': 'readability-deploy', 'owner': 'root'}]}, 'recommendation-api-ng': {'usernames': [{'group': 'deploy-ml-service', 'name': 'recommendation-api-ng', 'owner': 'root'}, {'group': 'deploy-ml-service', 'name': 'recommendation-api-ng-deploy', 'owner': 'root'}]}, 'revertrisk': {'usernames': [{'group': 'deploy-ml-service', 'name': 'revertrisk', 'owner': 'root'}, {'group': 'deploy-ml-service', 'name': 'revertrisk-deploy', 'owner': 'root'}]}, 'revise-tone-task-generator': {'usernames': [{'group': 'deploy-ml-service', 'name': 'revise-tone-task-generator', 'owner': 'root'}, {'group': 'deploy-ml-service', 'name': 'revise-tone-task-generator-deploy', 'owner': 'root'}]}, 'revision-models': {'usernames': [{'group': 'deploy-ml-service', 'name': 'revision-models', 'owner': 'root'}, {'group': 'deploy-ml-service', 'name': 'revision-models-deploy', 'owner': 'root'}]}, 'revscoring-articlequality': {'usernames': [{'group': 'deploy-ml-service', 'name': 'revscoring-articlequality', 'owner': 'root'}, {'group': 'deploy-ml-service', 'name': 'revscoring-articlequality-deploy', 'owner': 'root'}]}, 'revscoring-articletopic': {'usernames': [{'group': 'deploy-ml-service', 'name': 'revscoring-articletopic', 'owner': 'root'}, {'group': 'deploy-ml-service', 'name': 'revscoring-articletopic-deploy', 'owner': 'root'}]}, 'revscoring-draftquality': {'usernames': [{'group': 'deploy-ml-service', 'name': 'revscoring-draftquality', 'owner': 'root'}, {'group': 'deploy-ml-service', 'name': 'revscoring-draftquality-deploy', 'owner': 'root'}]}, 'revscoring-drafttopic': {'usernames': [{'group': 'deploy-ml-service', 'name': 'revscoring-drafttopic', 'owner': 'root'}, {'group': 'deploy-ml-service', 'name': 'revscoring-drafttopic-deploy', 'owner': 'root'}]}, 'revscoring-editquality-damaging': {'usernames': [{'group': 'deploy-ml-service', 'name': 'revscoring-editquality-damaging', 'owner': 'root'}, {'group': 'deploy-ml-service', 'name': 'revscoring-editquality-damaging-deploy', 'owner': 'root'}]}, 'revscoring-editquality-goodfaith': {'usernames': [{'group': 'deploy-ml-service', 'name': 'revscoring-editquality-goodfaith', 'owner': 'root'}, {'group': 'deploy-ml-service', 'name': 'revscoring-editquality-goodfaith-deploy', 'owner': 'root'}]}, 'revscoring-editquality-reverted': {'usernames': [{'group': 'deploy-ml-service', 'name': 'revscoring-editquality-reverted', 'owner': 'root'}, {'group': 'deploy-ml-service', 'name': 'revscoring-editquality-reverted-deploy', 'owner': 'root'}]}}, 'dse-k8s': {'analytics': {'usernames': [{'group': 'analytics-deployers', 'name': 'analytics', 'owner': 'root'}, {'group': 'analytics-deployers', 'name': 'analytics-deploy', 'owner': 'root'}]}, 'analytics-test': {'usernames': [{'group': 'analytics-deployers', 'name': 'analytics-test', 'owner': 'root'}, {'group': 'analytics-deployers', 'name': 'analytics-test-deploy', 'owner': 'root'}]}, 'kafka-mirrormaker': {'usernames': [{'name': 'kafka-mirrormaker'}, {'name': 'kafka-mirrormaker-deploy'}]}, 'opensearch-ipoid': {'usernames': [{'name': 'opensearch-ipoid'}, {'name': 'opensearch-ipoid-deploy'}]}, 'opensearch-ipoid-test': {'usernames': [{'name': 'opensearch-ipoid-test'}, {'name': 'opensearch-ipoid-test-deploy'}]}, 'opensearch-operator': {'usernames': [{'name': 'opensearch-operator'}, {'name': 'opensearch-operator-deploy'}]}, 'opensearch-operator-3': {'usernames': [{'name': 'opensearch-operator-3'}, {'name': 'opensearch-operator-3-deploy'}]}, 'opensearch-semantic-search': {'usernames': [{'name': 'opensearch-semantic-search'}, {'name': 'opensearch-semantic-search-deploy'}]}, 'opensearch-semantic-search-test': {'usernames': [{'name': 'opensearch-semantic-search-test'}, {'name': 'opensearch-semantic-search-test-deploy'}]}, 'opensearch-test': {'usernames': [{'name': 'opensearch-test'}, {'name': 'opensearch-test-deploy'}]}}, 'dse-k8s-codfw': {'echoserver': {'usernames': [{'name': 'echoserver'}, {'name': 'echoserver-deploy'}]}}, 'dse-k8s-eqiad': {'airflow-analytics-product': {'private_files': {'group': 'airflow-deployers', 'mode': '0640', 'owner': 'root'}, 'usernames': [{'group': 'root', 'name': 'postgresql-airflow-analytics-product', 'owner': 'root'}, {'group': 'root', 'name': 'postgresql-airflow-analytics-product-deploy', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-analytics-product', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-analytics-product-deploy', 'owner': 'root'}]}, 'airflow-analytics-test': {'private_files': {'group': 'airflow-deployers', 'mode': '0640', 'owner': 'root'}, 'usernames': [{'group': 'root', 'name': 'postgresql-airflow-analytics-test', 'owner': 'root'}, {'group': 'root', 'name': 'postgresql-airflow-analytics-test-deploy', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-analytics-test', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-analytics-test-deploy', 'owner': 'root'}]}, 'airflow-dev': {'private_files': {'group': 'airflow-deployers', 'mode': '0640', 'owner': 'root'}, 'usernames': [{'group': 'root', 'name': 'postgresql-airflow-dev', 'owner': 'root'}, {'group': 'root', 'name': 'postgresql-airflow-dev-deploy', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-dev', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-dev-deploy', 'owner': 'root'}]}, 'airflow-fr-tech': {'private_files': {'group': 'airflow-deployers', 'mode': '0640', 'owner': 'root'}, 'usernames': [{'group': 'root', 'name': 'postgresql-airflow-fr-tech', 'owner': 'root'}, {'group': 'root', 'name': 'postgresql-airflow-fr-tech-deploy', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-fr-tech', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-fr-tech-deploy', 'owner': 'root'}]}, 'airflow-main': {'private_files': {'group': 'airflow-deployers', 'mode': '0640', 'owner': 'root'}, 'usernames': [{'group': 'root', 'name': 'postgresql-airflow-main', 'owner': 'root'}, {'group': 'root', 'name': 'postgresql-airflow-main-deploy', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-main', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-main-deploy', 'owner': 'root'}]}, 'airflow-ml': {'private_files': {'group': 'airflow-deployers', 'mode': '0640', 'owner': 'root'}, 'usernames': [{'group': 'root', 'name': 'postgresql-airflow-ml', 'owner': 'root'}, {'group': 'root', 'name': 'postgresql-airflow-ml-deploy', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-ml', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-ml-deploy', 'owner': 'root'}]}, 'airflow-platform-eng': {'private_files': {'group': 'airflow-deployers', 'mode': '0640', 'owner': 'root'}, 'usernames': [{'group': 'root', 'name': 'postgresql-airflow-platform-eng', 'owner': 'root'}, {'group': 'root', 'name': 'postgresql-airflow-platform-eng-deploy', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-platform-eng', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-platform-eng-deploy', 'owner': 'root'}]}, 'airflow-research': {'private_files': {'group': 'airflow-deployers', 'mode': '0640', 'owner': 'root'}, 'usernames': [{'group': 'root', 'name': 'postgresql-airflow-research', 'owner': 'root'}, {'group': 'root', 'name': 'postgresql-airflow-research-deploy', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-research', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-research-deploy', 'owner': 'root'}]}, 'airflow-search': {'private_files': {'group': 'airflow-deployers', 'mode': '0640', 'owner': 'root'}, 'usernames': [{'group': 'root', 'name': 'postgresql-airflow-search', 'owner': 'root'}, {'group': 'root', 'name': 'postgresql-airflow-search-deploy', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-search', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-search-deploy', 'owner': 'root'}]}, 'airflow-sre': {'private_files': {'group': 'ops', 'mode': '0640', 'owner': 'root'}, 'usernames': [{'group': 'root', 'name': 'postgresql-airflow-sre', 'owner': 'root'}, {'group': 'root', 'name': 'postgresql-airflow-sre-deploy', 'owner': 'root'}, {'group': 'ops', 'name': 'airflow-sre', 'owner': 'root'}, {'group': 'ops', 'name': 'airflow-sre-deploy', 'owner': 'root'}]}, 'airflow-test-k8s': {'private_files': {'group': 'airflow-deployers', 'mode': '0640', 'owner': 'root'}, 'usernames': [{'group': 'root', 'name': 'postgresql-airflow-test-k8s', 'owner': 'root'}, {'group': 'root', 'name': 'postgresql-airflow-test-k8s-deploy', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-test-k8s', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-test-k8s-deploy', 'owner': 'root'}]}, 'airflow-wikidata': {'private_files': {'group': 'airflow-deployers', 'mode': '0640', 'owner': 'root'}, 'usernames': [{'group': 'root', 'name': 'postgresql-airflow-wikidata', 'owner': 'root'}, {'group': 'root', 'name': 'postgresql-airflow-wikidata-deploy', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-wikidata', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-wikidata-deploy', 'owner': 'root'}]}, 'airflow-wmde': {'private_files': {'group': 'airflow-deployers', 'mode': '0640', 'owner': 'root'}, 'usernames': [{'group': 'root', 'name': 'postgresql-airflow-wmde', 'owner': 'root'}, {'group': 'root', 'name': 'postgresql-airflow-wmde-deploy', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-wmde', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-wmde-deploy', 'owner': 'root'}]}, 'blunderbuss': {'usernames': [{'name': 'blunderbuss'}, {'name': 'blunderbuss-deploy'}]}, 'datahub': {'usernames': [{'name': 'datahub'}, {'name': 'datahub-deploy'}]}, 'datahub-next': {'usernames': [{'name': 'datahub-next'}, {'name': 'datahub-next-deploy'}]}, 'datasets-config': {'usernames': [{'name': 'datasets-config'}, {'name': 'datasets-config-deploy'}]}, 'datasets-config-next': {'usernames': [{'name': 'datasets-config-next'}, {'name': 'datasets-config-next-deploy'}]}, 'growthbook': {'usernames': [{'group': 'root', 'name': 'postgresql-growthbook', 'owner': 'root'}, {'group': 'root', 'name': 'postgresql-growthbook-deploy', 'owner': 'root'}, {'name': 'growthbook'}, {'name': 'growthbook-deploy'}]}, 'growthbook-next': {'usernames': [{'group': 'root', 'name': 'postgresql-growthbook-next', 'owner': 'root'}, {'group': 'root', 'name': 'postgresql-growthbook-next-deploy', 'owner': 'root'}, {'name': 'growthbook-next'}, {'name': 'growthbook-next-deploy'}]}, 'llm-inference': {'usernames': [{'group': 'research-deployers', 'name': 'llm-inference', 'owner': 'root'}, {'group': 'research-deployers', 'name': 'llm-inference-deploy', 'owner': 'root'}]}, 'mediawiki-dumps-legacy': {'usernames': [{'name': 'mediawiki-dumps-legacy'}, {'name': 'mediawiki-dumps-legacy-deploy'}]}, 'mw-content-history-reconcile-enrich': {'usernames': [{'name': 'mw-content-history-reconcile-enrich'}, {'name': 'mw-content-history-reconcile-enrich-deploy'}]}, 'mw-content-history-reconcile-enrich-next': {'usernames': [{'name': 'mw-content-history-reconcile-enrich-next'}, {'name': 'mw-content-history-reconcile-enrich-next-deploy'}]}, 'mw-dump-rev-content-reconcile-enrich': {'usernames': [{'name': 'mw-dump-rev-content-reconcile-enrich'}, {'name': 'mw-dump-rev-content-reconcile-enrich-deploy'}]}, 'mw-dump-rev-content-reconcile-enrich-next': {'usernames': [{'name': 'mw-dump-rev-content-reconcile-enrich-next'}, {'name': 'mw-dump-rev-content-reconcile-enrich-next-deploy'}]}, 'mw-page-html-content-change-enrich': {'usernames': [{'name': 'mw-page-html-content-change-enrich'}, {'name': 'mw-page-html-content-change-enrich-deploy'}]}, 'mw-page-html-content-change-enrich-next': {'usernames': [{'name': 'mw-page-html-content-change-enrich-next'}, {'name': 'mw-page-html-content-change-enrich-next-deploy'}]}, 'mw-page-html-feature-counts-change-enrich': {'usernames': [{'name': 'mw-page-html-feature-counts-change-enrich'}, {'name': 'mw-page-html-feature-counts-change-enrich-deploy'}]}, 'mw-page-html-feature-counts-change-enrich-next': {'usernames': [{'name': 'mw-page-html-feature-counts-change-enrich-next'}, {'name': 'mw-page-html-feature-counts-change-enrich-next-deploy'}]}, 'rdf-streaming-updater': {'usernames': [{'name': 'rdf-streaming-updater'}, {'name': 'rdf-streaming-updater-deploy'}]}, 'spark': {'usernames': [{'name': 'spark'}, {'name': 'spark-deploy'}]}, 'spark-history': {'usernames': [{'group': 'analytics-deployers', 'name': 'spark-history', 'owner': 'root'}, {'group': 'analytics-deployers', 'name': 'spark-history-deploy', 'owner': 'root'}]}, 'spark-history-test': {'usernames': [{'group': 'analytics-deployers', 'name': 'spark-history-test', 'owner': 'root'}, {'group': 'analytics-deployers', 'name': 'spark-history-test-deploy', 'owner': 'root'}]}, 'superset': {'usernames': [{'group': 'analytics-deployers', 'name': 'superset', 'owner': 'root'}, {'group': 'analytics-deployers', 'name': 'superset-deploy', 'owner': 'root'}]}, 'superset-next': {'usernames': [{'group': 'analytics-deployers', 'name': 'superset-next', 'owner': 'root'}, {'group': 'analytics-deployers', 'name': 'superset-next-deploy', 'owner': 'root'}]}, 'test-kitchen': {'usernames': [{'name': 'test-kitchen'}, {'name': 'test-kitchen-deploy'}]}, 'test-kitchen-next': {'usernames': [{'name': 'test-kitchen-next'}, {'name': 'test-kitchen-next-deploy'}]}, 'turnilo': {'usernames': [{'name': 'turnilo'}, {'name': 'turnilo-deploy'}]}, 'turnilo-next': {'usernames': [{'name': 'turnilo-next'}, {'name': 'turnilo-next-deploy'}]}, 'wdqs-queryhammer': {'usernames': [{'name': 'wdqs-queryhammer'}, {'name': 'wdqs-queryhammer-deploy'}]}}, 'aux-k8s': {'codesearch': {'usernames': [{'name': 'codesearch'}, {'name': 'codesearch-deploy'}]}, 'jaeger': {'usernames': [{'name': 'jaeger'}, {'name': 'jaeger-deploy'}]}, 'kafka-mirrormaker': {'usernames': [{'name': 'kafka-mirrormaker'}, {'name': 'kafka-mirrormaker-deploy'}]}, 'miscweb': {'usernames': [{'name': 'miscweb'}, {'name': 'miscweb-deploy'}]}, 'redioscope': {'usernames': [{'name': 'redioscope'}, {'name': 'redioscope-deploy'}]}, 'sophroid': {'usernames': [{'name': 'sophroid'}, {'name': 'sophroid-deploy'}]}, 'zarcillo': {'usernames': [{'name': 'zarcillo'}, {'name': 'zarcillo-deploy'}]}}}\n+    services => {'main': {'apertium': {'usernames': [{'name': 'apertium'}, {'name': 'apertium-deploy'}]}, 'api-gateway': {'usernames': [{'name': 'api-gateway'}, {'name': 'api-gateway-deploy'}]}, 'benthos-cache-invalidator': {'usernames': [{'name': 'benthos-cache-invalidator'}, {'name': 'benthos-cache-invalidator-deploy'}]}, 'changeprop': {'usernames': [{'name': 'changeprop'}, {'name': 'changeprop-deploy'}]}, 'changeprop-jobqueue': {'usernames': [{'name': 'changeprop-jobqueue'}, {'name': 'changeprop-jobqueue-deploy'}]}, 'chart-renderer': {'usernames': [{'name': 'chart-renderer'}, {'name': 'chart-renderer-deploy'}]}, 'cirrus-streaming-updater': {'usernames': [{'name': 'cirrus-streaming-updater'}, {'name': 'cirrus-streaming-updater-deploy'}]}, 'citoid': {'usernames': [{'name': 'citoid'}, {'name': 'citoid-deploy'}]}, 'commons-impact-analytics': {'usernames': [{'name': 'commons-impact-analytics'}, {'name': 'commons-impact-analytics-deploy'}]}, 'cxserver': {'usernames': [{'name': 'cxserver'}, {'name': 'cxserver-deploy'}]}, 'data-gateway': {'usernames': [{'name': 'data-gateway'}, {'name': 'data-gateway-deploy'}]}, 'developer-portal': {'usernames': [{'name': 'developer-portal'}, {'name': 'developer-portal-deploy'}]}, 'device-analytics': {'usernames': [{'name': 'device-analytics'}, {'name': 'device-analytics-deploy'}]}, 'echostore': {'usernames': [{'name': 'echostore'}, {'name': 'echostore-deploy'}]}, 'edit-analytics': {'usernames': [{'name': 'edit-analytics'}, {'name': 'edit-analytics-deploy'}]}, 'editor-analytics': {'usernames': [{'name': 'editor-analytics'}, {'name': 'editor-analytics-deploy'}]}, 'eventgate-analytics': {'usernames': [{'name': 'eventgate-analytics'}, {'name': 'eventgate-analytics-deploy'}]}, 'eventgate-analytics-external': {'usernames': [{'name': 'eventgate-analytics-external'}, {'name': 'eventgate-analytics-external-deploy'}]}, 'eventgate-logging-external': {'usernames': [{'name': 'eventgate-logging-external'}, {'name': 'eventgate-logging-external-deploy'}]}, 'eventgate-main': {'usernames': [{'name': 'eventgate-main'}, {'name': 'eventgate-main-deploy'}]}, 'eventstreams': {'usernames': [{'name': 'eventstreams'}, {'name': 'eventstreams-deploy'}]}, 'eventstreams-internal': {'usernames': [{'name': 'eventstreams-internal'}, {'name': 'eventstreams-internal-deploy'}]}, 'failoid-ng': {'usernames': [{'name': 'failoid-ng'}, {'name': 'failoid-ng-deploy'}]}, 'geo-analytics': {'usernames': [{'name': 'geo-analytics'}, {'name': 'geo-analytics-deploy'}]}, 'ipoid': {'usernames': [{'name': 'ipoid'}, {'name': 'ipoid-deploy'}]}, 'kartotherian': {'usernames': [{'name': 'kartotherian'}, {'name': 'kartotherian-deploy'}]}, 'linked-artifacts': {'usernames': [{'name': 'linked-artifacts'}, {'name': 'linked-artifacts-deploy'}]}, 'linkrecommendation': {'usernames': [{'name': 'linkrecommendation'}, {'name': 'linkrecommendation-deploy'}]}, 'machinetranslation': {'usernames': [{'name': 'machinetranslation'}, {'name': 'machinetranslation-deploy'}]}, 'mathoid': {'usernames': [{'name': 'mathoid'}, {'name': 'mathoid-deploy'}]}, 'media-analytics': {'usernames': [{'name': 'media-analytics'}, {'name': 'media-analytics-deploy'}]}, 'miscweb': {'usernames': [{'name': 'miscweb'}, {'name': 'miscweb-deploy'}]}, 'mobileapps': {'usernames': [{'name': 'mobileapps'}, {'name': 'mobileapps-deploy'}]}, 'mw-api-ext': {'usernames': [{'name': 'mw-api-ext'}, {'name': 'mw-api-ext-deploy'}]}, 'mw-api-int': {'usernames': [{'name': 'mw-api-int'}, {'name': 'mw-api-int-deploy'}]}, 'mw-cron': {'usernames': [{'name': 'mw-cron'}, {'name': 'mw-cron-deploy'}, {'group': 'restricted', 'name': 'mw-cron-restricted'}, {'group': 'restricted', 'name': 'mw-cron-restricted-deploy'}]}, 'mw-debug': {'usernames': [{'name': 'mw-debug'}, {'name': 'mw-debug-deploy'}]}, 'mw-experimental': {'usernames': [{'name': 'mw-experimental'}, {'name': 'mw-experimental-deploy'}]}, 'mw-jobrunner': {'usernames': [{'name': 'mw-jobrunner'}, {'name': 'mw-jobrunner-deploy'}]}, 'mw-mcrouter': {'usernames': [{'name': 'mw-mcrouter'}, {'name': 'mw-mcrouter-deploy'}]}, 'mw-misc': {'usernames': [{'name': 'mw-misc'}, {'name': 'mw-misc-deploy'}]}, 'mw-page-content-change-enrich': {'usernames': [{'name': 'mw-page-content-change-enrich'}, {'name': 'mw-page-content-change-enrich-deploy'}]}, 'mw-parsoid': {'usernames': [{'name': 'mw-parsoid'}, {'name': 'mw-parsoid-deploy'}]}, 'mw-script': {'usernames': [{'name': 'mw-script'}, {'name': 'mw-script-deploy'}, {'group': 'restricted', 'name': 'mw-script-restricted'}, {'group': 'restricted', 'name': 'mw-script-restricted-deploy'}]}, 'mw-videoscaler': {'usernames': [{'name': 'mw-videoscaler'}, {'name': 'mw-videoscaler-deploy'}]}, 'mw-web': {'usernames': [{'name': 'mw-web'}, {'name': 'mw-web-deploy'}]}, 'mw-wikifunctions': {'usernames': [{'name': 'mw-wikifunctions'}, {'name': 'mw-wikifunctions-deploy'}]}, 'opentelemetry-collector': {'usernames': [{'name': 'opentelemetry-collector'}, {'name': 'opentelemetry-collector-deploy'}]}, 'page-analytics': {'usernames': [{'name': 'page-analytics'}, {'name': 'page-analytics-deploy'}]}, 'proton': {'usernames': [{'name': 'proton'}, {'name': 'proton-deploy'}]}, 'push-notifications': {'usernames': [{'name': 'push-notifications'}, {'name': 'push-notifications-deploy'}]}, 'ratelimit': {'usernames': [{'name': 'ratelimit'}, {'name': 'ratelimit-deploy'}]}, 'ratelimit-media': {'usernames': [{'name': 'ratelimit-media'}, {'name': 'ratelimit-media-deploy'}]}, 'rdf-streaming-updater': {'usernames': [{'name': 'rdf-streaming-updater'}, {'name': 'rdf-streaming-updater-deploy'}]}, 'recommendation-api': {'usernames': [{'name': 'recommendation-api'}, {'name': 'recommendation-api-deploy'}]}, 'rest-gateway': {'usernames': [{'name': 'rest-gateway'}, {'name': 'rest-gateway-deploy'}]}, 'sessionstore': {'usernames': [{'name': 'sessionstore'}, {'name': 'sessionstore-deploy'}]}, 'shellbox': {'usernames': [{'name': 'shellbox'}, {'name': 'shellbox-deploy'}]}, 'shellbox-constraints': {'usernames': [{'name': 'shellbox-constraints'}, {'name': 'shellbox-constraints-deploy'}]}, 'shellbox-media': {'usernames': [{'name': 'shellbox-media'}, {'name': 'shellbox-media-deploy'}]}, 'shellbox-syntaxhighlight': {'usernames': [{'name': 'shellbox-syntaxhighlight'}, {'name': 'shellbox-syntaxhighlight-deploy'}]}, 'shellbox-timeline': {'usernames': [{'name': 'shellbox-timeline'}, {'name': 'shellbox-timeline-deploy'}]}, 'shellbox-video': {'usernames': [{'name': 'shellbox-video'}, {'name': 'shellbox-video-deploy'}]}, 'tegola-vector-tiles': {'usernames': [{'name': 'tegola-vector-tiles'}, {'name': 'tegola-vector-tiles-deploy'}]}, 'termbox': {'usernames': [{'name': 'termbox'}, {'name': 'termbox-deploy'}]}, 'thumbor': {'usernames': [{'name': 'thumbor'}, {'name': 'thumbor-deploy'}]}, 'toolhub': {'usernames': [{'name': 'toolhub'}, {'name': 'toolhub-deploy'}]}, 'wikidata-query-gui': {'usernames': [{'name': 'wikidata-query-gui'}, {'name': 'wikidata-query-gui-deploy'}]}, 'wikifeeds': {'usernames': [{'name': 'wikifeeds'}, {'name': 'wikifeeds-deploy'}]}, 'wikifunctions': {'usernames': [{'name': 'wikifunctions'}, {'name': 'wikifunctions-deploy'}]}, 'zotero': {'usernames': [{'name': 'zotero'}, {'name': 'zotero-deploy'}]}}, 'ml-serve': {'article-descriptions': {'usernames': [{'group': 'deploy-ml-service', 'name': 'article-descriptions', 'owner': 'root'}, {'group': 'deploy-ml-service', 'name': 'article-descriptions-deploy', 'owner': 'root'}]}, 'article-models': {'usernames': [{'group': 'deploy-ml-service', 'name': 'article-models', 'owner': 'root'}, {'group': 'deploy-ml-service', 'name': 'article-models-deploy', 'owner': 'root'}]}, 'articletopic-outlink': {'usernames': [{'group': 'deploy-ml-service', 'name': 'articletopic-outlink', 'owner': 'root'}, {'group': 'deploy-ml-service', 'name': 'articletopic-outlink-deploy', 'owner': 'root'}]}, 'edit-check': {'usernames': [{'group': 'deploy-ml-service', 'name': 'edit-check', 'owner': 'root'}, {'group': 'deploy-ml-service', 'name': 'edit-check-deploy', 'owner': 'root'}]}, 'experimental': {'usernames': [{'group': 'deploy-ml-service', 'name': 'experimental', 'owner': 'root'}, {'group': 'deploy-ml-service', 'name': 'experimental-deploy', 'owner': 'root'}, {'group': 'deploy-ml-service', 'name': 'experimental-debug', 'owner': 'root'}]}, 'llm': {'usernames': [{'group': 'deploy-ml-service', 'name': 'llm', 'owner': 'root'}, {'group': 'deploy-ml-service', 'name': 'llm-deploy', 'owner': 'root'}]}, 'logo-detection': {'usernames': [{'group': 'deploy-ml-service', 'name': 'logo-detection', 'owner': 'root'}, {'group': 'deploy-ml-service', 'name': 'logo-detection-deploy', 'owner': 'root'}]}, 'ores-legacy': {'usernames': [{'group': 'deploy-ml-service', 'name': 'ores-legacy', 'owner': 'root'}, {'group': 'deploy-ml-service', 'name': 'ores-legacy-deploy', 'owner': 'root'}]}, 'readability': {'usernames': [{'group': 'deploy-ml-service', 'name': 'readability', 'owner': 'root'}, {'group': 'deploy-ml-service', 'name': 'readability-deploy', 'owner': 'root'}]}, 'recommendation-api-ng': {'usernames': [{'group': 'deploy-ml-service', 'name': 'recommendation-api-ng', 'owner': 'root'}, {'group': 'deploy-ml-service', 'name': 'recommendation-api-ng-deploy', 'owner': 'root'}]}, 'revertrisk': {'usernames': [{'group': 'deploy-ml-service', 'name': 'revertrisk', 'owner': 'root'}, {'group': 'deploy-ml-service', 'name': 'revertrisk-deploy', 'owner': 'root'}]}, 'revise-tone-task-generator': {'usernames': [{'group': 'deploy-ml-service', 'name': 'revise-tone-task-generator', 'owner': 'root'}, {'group': 'deploy-ml-service', 'name': 'revise-tone-task-generator-deploy', 'owner': 'root'}]}, 'revision-models': {'usernames': [{'group': 'deploy-ml-service', 'name': 'revision-models', 'owner': 'root'}, {'group': 'deploy-ml-service', 'name': 'revision-models-deploy', 'owner': 'root'}]}, 'revscoring-articlequality': {'usernames': [{'group': 'deploy-ml-service', 'name': 'revscoring-articlequality', 'owner': 'root'}, {'group': 'deploy-ml-service', 'name': 'revscoring-articlequality-deploy', 'owner': 'root'}]}, 'revscoring-articletopic': {'usernames': [{'group': 'deploy-ml-service', 'name': 'revscoring-articletopic', 'owner': 'root'}, {'group': 'deploy-ml-service', 'name': 'revscoring-articletopic-deploy', 'owner': 'root'}]}, 'revscoring-draftquality': {'usernames': [{'group': 'deploy-ml-service', 'name': 'revscoring-draftquality', 'owner': 'root'}, {'group': 'deploy-ml-service', 'name': 'revscoring-draftquality-deploy', 'owner': 'root'}]}, 'revscoring-drafttopic': {'usernames': [{'group': 'deploy-ml-service', 'name': 'revscoring-drafttopic', 'owner': 'root'}, {'group': 'deploy-ml-service', 'name': 'revscoring-drafttopic-deploy', 'owner': 'root'}]}, 'revscoring-editquality-damaging': {'usernames': [{'group': 'deploy-ml-service', 'name': 'revscoring-editquality-damaging', 'owner': 'root'}, {'group': 'deploy-ml-service', 'name': 'revscoring-editquality-damaging-deploy', 'owner': 'root'}]}, 'revscoring-editquality-goodfaith': {'usernames': [{'group': 'deploy-ml-service', 'name': 'revscoring-editquality-goodfaith', 'owner': 'root'}, {'group': 'deploy-ml-service', 'name': 'revscoring-editquality-goodfaith-deploy', 'owner': 'root'}]}, 'revscoring-editquality-reverted': {'usernames': [{'group': 'deploy-ml-service', 'name': 'revscoring-editquality-reverted', 'owner': 'root'}, {'group': 'deploy-ml-service', 'name': 'revscoring-editquality-reverted-deploy', 'owner': 'root'}]}}, 'dse-k8s': {'analytics': {'usernames': [{'group': 'analytics-deployers', 'name': 'analytics', 'owner': 'root'}, {'group': 'analytics-deployers', 'name': 'analytics-deploy', 'owner': 'root'}]}, 'analytics-test': {'usernames': [{'group': 'analytics-deployers', 'name': 'analytics-test', 'owner': 'root'}, {'group': 'analytics-deployers', 'name': 'analytics-test-deploy', 'owner': 'root'}]}, 'kafka-mirrormaker': {'usernames': [{'name': 'kafka-mirrormaker'}, {'name': 'kafka-mirrormaker-deploy'}]}, 'opensearch-ipoid': {'usernames': [{'name': 'opensearch-ipoid'}, {'name': 'opensearch-ipoid-deploy'}]}, 'opensearch-ipoid-test': {'usernames': [{'name': 'opensearch-ipoid-test'}, {'name': 'opensearch-ipoid-test-deploy'}]}, 'opensearch-operator': {'usernames': [{'name': 'opensearch-operator'}, {'name': 'opensearch-operator-deploy'}]}, 'opensearch-operator-3': {'usernames': [{'name': 'opensearch-operator-3'}, {'name': 'opensearch-operator-3-deploy'}]}, 'opensearch-semantic-search': {'usernames': [{'name': 'opensearch-semantic-search'}, {'name': 'opensearch-semantic-search-deploy'}]}, 'opensearch-semantic-search-test': {'usernames': [{'name': 'opensearch-semantic-search-test'}, {'name': 'opensearch-semantic-search-test-deploy'}]}, 'opensearch-test': {'usernames': [{'name': 'opensearch-test'}, {'name': 'opensearch-test-deploy'}]}, 'opensearch-toolhub': {'usernames': [{'name': 'opensearch-toolhub'}, {'name': 'opensearch-toolhub-deploy'}]}, 'opensearch-toolhub-test': {'usernames': [{'name': 'opensearch-toolhub-test'}, {'name': 'opensearch-toolhub-test-deploy'}]}, 'opensearch-apifeatureusage': {'usernames': [{'name': 'opensearch-apifeatureusage'}, {'name': 'opensearch-apifeatureusage-deploy'}]}, 'opensearch-apifeatureusage-test': {'usernames': [{'name': 'opensearch-apifeatureusage-test'}, {'name': 'opensearch-apifeatureusage-test-deploy'}]}, 'opensearch-ttmserver': {'usernames': [{'name': 'opensearch-ttmserver'}, {'name': 'opensearch-ttmserver-deploy'}]}, 'opensearch-ttmserver-test': {'usernames': [{'name': 'opensearch-ttmserver-test'}, {'name': 'opensearch-ttmserver-test-deploy'}]}}, 'dse-k8s-codfw': {'echoserver': {'usernames': [{'name': 'echoserver'}, {'name': 'echoserver-deploy'}]}}, 'dse-k8s-eqiad': {'airflow-analytics-product': {'private_files': {'group': 'airflow-deployers', 'mode': '0640', 'owner': 'root'}, 'usernames': [{'group': 'root', 'name': 'postgresql-airflow-analytics-product', 'owner': 'root'}, {'group': 'root', 'name': 'postgresql-airflow-analytics-product-deploy', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-analytics-product', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-analytics-product-deploy', 'owner': 'root'}]}, 'airflow-analytics-test': {'private_files': {'group': 'airflow-deployers', 'mode': '0640', 'owner': 'root'}, 'usernames': [{'group': 'root', 'name': 'postgresql-airflow-analytics-test', 'owner': 'root'}, {'group': 'root', 'name': 'postgresql-airflow-analytics-test-deploy', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-analytics-test', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-analytics-test-deploy', 'owner': 'root'}]}, 'airflow-dev': {'private_files': {'group': 'airflow-deployers', 'mode': '0640', 'owner': 'root'}, 'usernames': [{'group': 'root', 'name': 'postgresql-airflow-dev', 'owner': 'root'}, {'group': 'root', 'name': 'postgresql-airflow-dev-deploy', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-dev', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-dev-deploy', 'owner': 'root'}]}, 'airflow-fr-tech': {'private_files': {'group': 'airflow-deployers', 'mode': '0640', 'owner': 'root'}, 'usernames': [{'group': 'root', 'name': 'postgresql-airflow-fr-tech', 'owner': 'root'}, {'group': 'root', 'name': 'postgresql-airflow-fr-tech-deploy', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-fr-tech', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-fr-tech-deploy', 'owner': 'root'}]}, 'airflow-main': {'private_files': {'group': 'airflow-deployers', 'mode': '0640', 'owner': 'root'}, 'usernames': [{'group': 'root', 'name': 'postgresql-airflow-main', 'owner': 'root'}, {'group': 'root', 'name': 'postgresql-airflow-main-deploy', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-main', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-main-deploy', 'owner': 'root'}]}, 'airflow-ml': {'private_files': {'group': 'airflow-deployers', 'mode': '0640', 'owner': 'root'}, 'usernames': [{'group': 'root', 'name': 'postgresql-airflow-ml', 'owner': 'root'}, {'group': 'root', 'name': 'postgresql-airflow-ml-deploy', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-ml', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-ml-deploy', 'owner': 'root'}]}, 'airflow-platform-eng': {'private_files': {'group': 'airflow-deployers', 'mode': '0640', 'owner': 'root'}, 'usernames': [{'group': 'root', 'name': 'postgresql-airflow-platform-eng', 'owner': 'root'}, {'group': 'root', 'name': 'postgresql-airflow-platform-eng-deploy', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-platform-eng', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-platform-eng-deploy', 'owner': 'root'}]}, 'airflow-research': {'private_files': {'group': 'airflow-deployers', 'mode': '0640', 'owner': 'root'}, 'usernames': [{'group': 'root', 'name': 'postgresql-airflow-research', 'owner': 'root'}, {'group': 'root', 'name': 'postgresql-airflow-research-deploy', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-research', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-research-deploy', 'owner': 'root'}]}, 'airflow-search': {'private_files': {'group': 'airflow-deployers', 'mode': '0640', 'owner': 'root'}, 'usernames': [{'group': 'root', 'name': 'postgresql-airflow-search', 'owner': 'root'}, {'group': 'root', 'name': 'postgresql-airflow-search-deploy', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-search', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-search-deploy', 'owner': 'root'}]}, 'airflow-sre': {'private_files': {'group': 'ops', 'mode': '0640', 'owner': 'root'}, 'usernames': [{'group': 'root', 'name': 'postgresql-airflow-sre', 'owner': 'root'}, {'group': 'root', 'name': 'postgresql-airflow-sre-deploy', 'owner': 'root'}, {'group': 'ops', 'name': 'airflow-sre', 'owner': 'root'}, {'group': 'ops', 'name': 'airflow-sre-deploy', 'owner': 'root'}]}, 'airflow-test-k8s': {'private_files': {'group': 'airflow-deployers', 'mode': '0640', 'owner': 'root'}, 'usernames': [{'group': 'root', 'name': 'postgresql-airflow-test-k8s', 'owner': 'root'}, {'group': 'root', 'name': 'postgresql-airflow-test-k8s-deploy', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-test-k8s', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-test-k8s-deploy', 'owner': 'root'}]}, 'airflow-wikidata': {'private_files': {'group': 'airflow-deployers', 'mode': '0640', 'owner': 'root'}, 'usernames': [{'group': 'root', 'name': 'postgresql-airflow-wikidata', 'owner': 'root'}, {'group': 'root', 'name': 'postgresql-airflow-wikidata-deploy', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-wikidata', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-wikidata-deploy', 'owner': 'root'}]}, 'airflow-wmde': {'private_files': {'group': 'airflow-deployers', 'mode': '0640', 'owner': 'root'}, 'usernames': [{'group': 'root', 'name': 'postgresql-airflow-wmde', 'owner': 'root'}, {'group': 'root', 'name': 'postgresql-airflow-wmde-deploy', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-wmde', 'owner': 'root'}, {'group': 'airflow-deployers', 'name': 'airflow-wmde-deploy', 'owner': 'root'}]}, 'blunderbuss': {'usernames': [{'name': 'blunderbuss'}, {'name': 'blunderbuss-deploy'}]}, 'datahub': {'usernames': [{'name': 'datahub'}, {'name': 'datahub-deploy'}]}, 'datahub-next': {'usernames': [{'name': 'datahub-next'}, {'name': 'datahub-next-deploy'}]}, 'datasets-config': {'usernames': [{'name': 'datasets-config'}, {'name': 'datasets-config-deploy'}]}, 'datasets-config-next': {'usernames': [{'name': 'datasets-config-next'}, {'name': 'datasets-config-next-deploy'}]}, 'growthbook': {'usernames': [{'group': 'root', 'name': 'postgresql-growthbook', 'owner': 'root'}, {'group': 'root', 'name': 'postgresql-growthbook-deploy', 'owner': 'root'}, {'name': 'growthbook'}, {'name': 'growthbook-deploy'}]}, 'growthbook-next': {'usernames': [{'group': 'root', 'name': 'postgresql-growthbook-next', 'owner': 'root'}, {'group': 'root', 'name': 'postgresql-growthbook-next-deploy', 'owner': 'root'}, {'name': 'growthbook-next'}, {'name': 'growthbook-next-deploy'}]}, 'llm-inference': {'usernames': [{'group': 'research-deployers', 'name': 'llm-inference', 'owner': 'root'}, {'group': 'research-deployers', 'name': 'llm-inference-deploy', 'owner': 'root'}]}, 'mediawiki-dumps-legacy': {'usernames': [{'name': 'mediawiki-dumps-legacy'}, {'name': 'mediawiki-dumps-legacy-deploy'}]}, 'mw-content-history-reconcile-enrich': {'usernames': [{'name': 'mw-content-history-reconcile-enrich'}, {'name': 'mw-content-history-reconcile-enrich-deploy'}]}, 'mw-content-history-reconcile-enrich-next': {'usernames': [{'name': 'mw-content-history-reconcile-enrich-next'}, {'name': 'mw-content-history-reconcile-enrich-next-deploy'}]}, 'mw-dump-rev-content-reconcile-enrich': {'usernames': [{'name': 'mw-dump-rev-content-reconcile-enrich'}, {'name': 'mw-dump-rev-content-reconcile-enrich-deploy'}]}, 'mw-dump-rev-content-reconcile-enrich-next': {'usernames': [{'name': 'mw-dump-rev-content-reconcile-enrich-next'}, {'name': 'mw-dump-rev-content-reconcile-enrich-next-deploy'}]}, 'mw-page-html-content-change-enrich': {'usernames': [{'name': 'mw-page-html-content-change-enrich'}, {'name': 'mw-page-html-content-change-enrich-deploy'}]}, 'mw-page-html-content-change-enrich-next': {'usernames': [{'name': 'mw-page-html-content-change-enrich-next'}, {'name': 'mw-page-html-content-change-enrich-next-deploy'}]}, 'mw-page-html-feature-counts-change-enrich': {'usernames': [{'name': 'mw-page-html-feature-counts-change-enrich'}, {'name': 'mw-page-html-feature-counts-change-enrich-deploy'}]}, 'mw-page-html-feature-counts-change-enrich-next': {'usernames': [{'name': 'mw-page-html-feature-counts-change-enrich-next'}, {'name': 'mw-page-html-feature-counts-change-enrich-next-deploy'}]}, 'rdf-streaming-updater': {'usernames': [{'name': 'rdf-streaming-updater'}, {'name': 'rdf-streaming-updater-deploy'}]}, 'spark': {'usernames': [{'name': 'spark'}, {'name': 'spark-deploy'}]}, 'spark-history': {'usernames': [{'group': 'analytics-deployers', 'name': 'spark-history', 'owner': 'root'}, {'group': 'analytics-deployers', 'name': 'spark-history-deploy', 'owner': 'root'}]}, 'spark-history-test': {'usernames': [{'group': 'analytics-deployers', 'name': 'spark-history-test', 'owner': 'root'}, {'group': 'analytics-deployers', 'name': 'spark-history-test-deploy', 'owner': 'root'}]}, 'superset': {'usernames': [{'group': 'analytics-deployers', 'name': 'superset', 'owner': 'root'}, {'group': 'analytics-deployers', 'name': 'superset-deploy', 'owner': 'root'}]}, 'superset-next': {'usernames': [{'group': 'analytics-deployers', 'name': 'superset-next', 'owner': 'root'}, {'group': 'analytics-deployers', 'name': 'superset-next-deploy', 'owner': 'root'}]}, 'test-kitchen': {'usernames': [{'name': 'test-kitchen'}, {'name': 'test-kitchen-deploy'}]}, 'test-kitchen-next': {'usernames': [{'name': 'test-kitchen-next'}, {'name': 'test-kitchen-next-deploy'}]}, 'turnilo': {'usernames': [{'name': 'turnilo'}, {'name': 'turnilo-deploy'}]}, 'turnilo-next': {'usernames': [{'name': 'turnilo-next'}, {'name': 'turnilo-next-deploy'}]}, 'wdqs-queryhammer': {'usernames': [{'name': 'wdqs-queryhammer'}, {'name': 'wdqs-queryhammer-deploy'}]}}, 'aux-k8s': {'codesearch': {'usernames': [{'name': 'codesearch'}, {'name': 'codesearch-deploy'}]}, 'jaeger': {'usernames': [{'name': 'jaeger'}, {'name': 'jaeger-deploy'}]}, 'kafka-mirrormaker': {'usernames': [{'name': 'kafka-mirrormaker'}, {'name': 'kafka-mirrormaker-deploy'}]}, 'miscweb': {'usernames': [{'name': 'miscweb'}, {'name': 'miscweb-deploy'}]}, 'redioscope': {'usernames': [{'name': 'redioscope'}, {'name': 'redioscope-deploy'}]}, 'sophroid': {'usernames': [{'name': 'sophroid'}, {'name': 'sophroid-deploy'}]}, 'zarcillo': {'usernames': [{'name': 'zarcillo'}, {'name': 'zarcillo-deploy'}]}}}\n"}], "perc_changed": "1.26%"}}}