{"host": "deploy1003.eqiad.wmnet", "state": "core_diff", "description": "Differences to core resources", "diff": {"full": {"total": 17426, "only_in_self": ["Cfssl::Cert[dse__wdqs-external-deploy]", "Cfssl::Cert[dse__wdqs-external-next-deploy]", "Cfssl::Cert[dse__wdqs-external-next]", "Cfssl::Cert[dse__wdqs-external]", "Cfssl::Cert[dse__wdqs-internal-deploy]", "Cfssl::Cert[dse__wdqs-internal-next-deploy]", "Cfssl::Cert[dse__wdqs-internal-next]", "Cfssl::Cert[dse__wdqs-internal]", "Cfssl::Csr[/etc/cfssl/csr/dse__wdqs-external-deploy.csr]", "Cfssl::Csr[/etc/cfssl/csr/dse__wdqs-external-next-deploy.csr]", "Cfssl::Csr[/etc/cfssl/csr/dse__wdqs-external-next.csr]", "Cfssl::Csr[/etc/cfssl/csr/dse__wdqs-external.csr]", "Cfssl::Csr[/etc/cfssl/csr/dse__wdqs-internal-deploy.csr]", "Cfssl::Csr[/etc/cfssl/csr/dse__wdqs-internal-next-deploy.csr]", "Cfssl::Csr[/etc/cfssl/csr/dse__wdqs-internal-next.csr]", "Cfssl::Csr[/etc/cfssl/csr/dse__wdqs-internal.csr]", "Exec[Generate cert dse__wdqs-external refresh on intermediate ca change]", "Exec[Generate cert dse__wdqs-external refresh]", "Exec[Generate cert dse__wdqs-external-deploy refresh on intermediate ca change]", "Exec[Generate cert dse__wdqs-external-deploy refresh]", "Exec[Generate cert dse__wdqs-external-deploy]", "Exec[Generate cert dse__wdqs-external-next refresh on intermediate ca change]", "Exec[Generate cert dse__wdqs-external-next refresh]", "Exec[Generate cert dse__wdqs-external-next-deploy refresh on intermediate ca change]", "Exec[Generate cert dse__wdqs-external-next-deploy refresh]", "Exec[Generate cert dse__wdqs-external-next-deploy]", "Exec[Generate cert dse__wdqs-external-next]", "Exec[Generate cert dse__wdqs-external]", "Exec[Generate cert dse__wdqs-internal refresh on intermediate ca change]", "Exec[Generate cert dse__wdqs-internal refresh]", "Exec[Generate cert dse__wdqs-internal-deploy refresh on intermediate ca change]", "Exec[Generate cert dse__wdqs-internal-deploy refresh]", "Exec[Generate cert dse__wdqs-internal-deploy]", "Exec[Generate cert dse__wdqs-internal-next refresh on intermediate ca change]", "Exec[Generate cert dse__wdqs-internal-next refresh]", "Exec[Generate cert dse__wdqs-internal-next-deploy refresh on intermediate ca change]", "Exec[Generate cert dse__wdqs-internal-next-deploy refresh]", "Exec[Generate cert dse__wdqs-internal-next-deploy]", "Exec[Generate cert dse__wdqs-internal-next]", "Exec[Generate cert dse__wdqs-internal]", "Exec[create chained cert /etc/kubernetes/pki/dse__wdqs-external-deploy.chain.pem]", "Exec[create chained cert /etc/kubernetes/pki/dse__wdqs-external-next-deploy.chain.pem]", "Exec[create chained cert /etc/kubernetes/pki/dse__wdqs-external-next.chain.pem]", "Exec[create chained cert /etc/kubernetes/pki/dse__wdqs-external.chain.pem]", "Exec[create chained cert /etc/kubernetes/pki/dse__wdqs-internal-deploy.chain.pem]", "Exec[create chained cert /etc/kubernetes/pki/dse__wdqs-internal-next-deploy.chain.pem]", "Exec[create chained cert /etc/kubernetes/pki/dse__wdqs-internal-next.chain.pem]", "Exec[create chained cert /etc/kubernetes/pki/dse__wdqs-internal.chain.pem]", "Exec[renew certificate - dse__wdqs-external-deploy]", "Exec[renew certificate - dse__wdqs-external-next-deploy]", "Exec[renew certificate - dse__wdqs-external-next]", "Exec[renew certificate - dse__wdqs-external]", "Exec[renew certificate - dse__wdqs-internal-deploy]", "Exec[renew certificate - dse__wdqs-internal-next-deploy]", "Exec[renew certificate - dse__wdqs-internal-next]", "Exec[renew certificate - dse__wdqs-internal]", "File[/etc/cfssl/csr/dse__wdqs-external-deploy.csr]", "File[/etc/cfssl/csr/dse__wdqs-external-next-deploy.csr]", "File[/etc/cfssl/csr/dse__wdqs-external-next.csr]", "File[/etc/cfssl/csr/dse__wdqs-external.csr]", "File[/etc/cfssl/csr/dse__wdqs-internal-deploy.csr]", "File[/etc/cfssl/csr/dse__wdqs-internal-next-deploy.csr]", "File[/etc/cfssl/csr/dse__wdqs-internal-next.csr]", "File[/etc/cfssl/csr/dse__wdqs-internal.csr]", "File[/etc/helmfile-defaults/private/dse-k8s_services/wdqs-external-next]", "File[/etc/helmfile-defaults/private/dse-k8s_services/wdqs-external]", "File[/etc/helmfile-defaults/private/dse-k8s_services/wdqs-internal-next]", "File[/etc/helmfile-defaults/private/dse-k8s_services/wdqs-internal]", "File[/etc/kubernetes/pki/dse__wdqs-external-deploy-key.pem]", "File[/etc/kubernetes/pki/dse__wdqs-external-deploy.chain.pem]", "File[/etc/kubernetes/pki/dse__wdqs-external-deploy.chained.pem]", "File[/etc/kubernetes/pki/dse__wdqs-external-deploy.csr]", "File[/etc/kubernetes/pki/dse__wdqs-external-deploy.pem]", "File[/etc/kubernetes/pki/dse__wdqs-external-key.pem]", "File[/etc/kubernetes/pki/dse__wdqs-external-next-deploy-key.pem]", "File[/etc/kubernetes/pki/dse__wdqs-external-next-deploy.chain.pem]", "File[/etc/kubernetes/pki/dse__wdqs-external-next-deploy.chained.pem]", "File[/etc/kubernetes/pki/dse__wdqs-external-next-deploy.csr]", "File[/etc/kubernetes/pki/dse__wdqs-external-next-deploy.pem]", "File[/etc/kubernetes/pki/dse__wdqs-external-next-key.pem]", "File[/etc/kubernetes/pki/dse__wdqs-external-next.chain.pem]", "File[/etc/kubernetes/pki/dse__wdqs-external-next.chained.pem]", "File[/etc/kubernetes/pki/dse__wdqs-external-next.csr]", "File[/etc/kubernetes/pki/dse__wdqs-external-next.pem]", "File[/etc/kubernetes/pki/dse__wdqs-external.chain.pem]", "File[/etc/kubernetes/pki/dse__wdqs-external.chained.pem]", "File[/etc/kubernetes/pki/dse__wdqs-external.csr]", "File[/etc/kubernetes/pki/dse__wdqs-external.pem]", "File[/etc/kubernetes/pki/dse__wdqs-internal-deploy-key.pem]", "File[/etc/kubernetes/pki/dse__wdqs-internal-deploy.chain.pem]", "File[/etc/kubernetes/pki/dse__wdqs-internal-deploy.chained.pem]", "File[/etc/kubernetes/pki/dse__wdqs-internal-deploy.csr]", "File[/etc/kubernetes/pki/dse__wdqs-internal-deploy.pem]", "File[/etc/kubernetes/pki/dse__wdqs-internal-key.pem]", "File[/etc/kubernetes/pki/dse__wdqs-internal-next-deploy-key.pem]", "File[/etc/kubernetes/pki/dse__wdqs-internal-next-deploy.chain.pem]", "File[/etc/kubernetes/pki/dse__wdqs-internal-next-deploy.chained.pem]", "File[/etc/kubernetes/pki/dse__wdqs-internal-next-deploy.csr]", "File[/etc/kubernetes/pki/dse__wdqs-internal-next-deploy.pem]", "File[/etc/kubernetes/pki/dse__wdqs-internal-next-key.pem]", "File[/etc/kubernetes/pki/dse__wdqs-internal-next.chain.pem]", "File[/etc/kubernetes/pki/dse__wdqs-internal-next.chained.pem]", "File[/etc/kubernetes/pki/dse__wdqs-internal-next.csr]", "File[/etc/kubernetes/pki/dse__wdqs-internal-next.pem]", "File[/etc/kubernetes/pki/dse__wdqs-internal.chain.pem]", "File[/etc/kubernetes/pki/dse__wdqs-internal.chained.pem]", "File[/etc/kubernetes/pki/dse__wdqs-internal.csr]", "File[/etc/kubernetes/pki/dse__wdqs-internal.pem]", "File[/etc/kubernetes/wdqs-external-deploy-dse-k8s-codfw.config]", "File[/etc/kubernetes/wdqs-external-deploy-dse-k8s-eqiad.config]", "File[/etc/kubernetes/wdqs-external-dse-k8s-codfw.config]", "File[/etc/kubernetes/wdqs-external-dse-k8s-eqiad.config]", "File[/etc/kubernetes/wdqs-external-next-deploy-dse-k8s-codfw.config]", "File[/etc/kubernetes/wdqs-external-next-deploy-dse-k8s-eqiad.config]", "File[/etc/kubernetes/wdqs-external-next-dse-k8s-codfw.config]", "File[/etc/kubernetes/wdqs-external-next-dse-k8s-eqiad.config]", "File[/etc/kubernetes/wdqs-internal-deploy-dse-k8s-codfw.config]", "File[/etc/kubernetes/wdqs-internal-deploy-dse-k8s-eqiad.config]", "File[/etc/kubernetes/wdqs-internal-dse-k8s-codfw.config]", "File[/etc/kubernetes/wdqs-internal-dse-k8s-eqiad.config]", "File[/etc/kubernetes/wdqs-internal-next-deploy-dse-k8s-codfw.config]", "File[/etc/kubernetes/wdqs-internal-next-deploy-dse-k8s-eqiad.config]", "File[/etc/kubernetes/wdqs-internal-next-dse-k8s-codfw.config]", "File[/etc/kubernetes/wdqs-internal-next-dse-k8s-eqiad.config]", "K8s::Kubeconfig[/etc/kubernetes/wdqs-external-deploy-dse-k8s-codfw.config]", "K8s::Kubeconfig[/etc/kubernetes/wdqs-external-deploy-dse-k8s-eqiad.config]", "K8s::Kubeconfig[/etc/kubernetes/wdqs-external-dse-k8s-codfw.config]", "K8s::Kubeconfig[/etc/kubernetes/wdqs-external-dse-k8s-eqiad.config]", "K8s::Kubeconfig[/etc/kubernetes/wdqs-external-next-deploy-dse-k8s-codfw.config]", "K8s::Kubeconfig[/etc/kubernetes/wdqs-external-next-deploy-dse-k8s-eqiad.config]", "K8s::Kubeconfig[/etc/kubernetes/wdqs-external-next-dse-k8s-codfw.config]", "K8s::Kubeconfig[/etc/kubernetes/wdqs-external-next-dse-k8s-eqiad.config]", "K8s::Kubeconfig[/etc/kubernetes/wdqs-internal-deploy-dse-k8s-codfw.config]", "K8s::Kubeconfig[/etc/kubernetes/wdqs-internal-deploy-dse-k8s-eqiad.config]", "K8s::Kubeconfig[/etc/kubernetes/wdqs-internal-dse-k8s-codfw.config]", "K8s::Kubeconfig[/etc/kubernetes/wdqs-internal-dse-k8s-eqiad.config]", "K8s::Kubeconfig[/etc/kubernetes/wdqs-internal-next-deploy-dse-k8s-codfw.config]", "K8s::Kubeconfig[/etc/kubernetes/wdqs-internal-next-deploy-dse-k8s-eqiad.config]", "K8s::Kubeconfig[/etc/kubernetes/wdqs-internal-next-dse-k8s-codfw.config]", "K8s::Kubeconfig[/etc/kubernetes/wdqs-internal-next-dse-k8s-eqiad.config]"], "only_in_other": ["Cfssl::Cert[dse__wdqs-deploy]", "Cfssl::Cert[dse__wdqs-next-deploy]", "Cfssl::Cert[dse__wdqs-next]", "Cfssl::Cert[dse__wdqs]", "Cfssl::Csr[/etc/cfssl/csr/dse__wdqs-deploy.csr]", "Cfssl::Csr[/etc/cfssl/csr/dse__wdqs-next-deploy.csr]", "Cfssl::Csr[/etc/cfssl/csr/dse__wdqs-next.csr]", "Cfssl::Csr[/etc/cfssl/csr/dse__wdqs.csr]", "Exec[Generate cert dse__wdqs refresh on intermediate ca change]", "Exec[Generate cert dse__wdqs refresh]", "Exec[Generate cert dse__wdqs-deploy refresh on intermediate ca change]", "Exec[Generate cert dse__wdqs-deploy refresh]", "Exec[Generate cert dse__wdqs-deploy]", "Exec[Generate cert dse__wdqs-next refresh on intermediate ca change]", "Exec[Generate cert dse__wdqs-next refresh]", "Exec[Generate cert dse__wdqs-next-deploy refresh on intermediate ca change]", "Exec[Generate cert dse__wdqs-next-deploy refresh]", "Exec[Generate cert dse__wdqs-next-deploy]", "Exec[Generate cert dse__wdqs-next]", "Exec[Generate cert dse__wdqs]", "Exec[create chained cert /etc/kubernetes/pki/dse__wdqs-deploy.chain.pem]", "Exec[create chained cert /etc/kubernetes/pki/dse__wdqs-next-deploy.chain.pem]", "Exec[create chained cert /etc/kubernetes/pki/dse__wdqs-next.chain.pem]", "Exec[create chained cert /etc/kubernetes/pki/dse__wdqs.chain.pem]", "Exec[renew certificate - dse__wdqs-deploy]", "Exec[renew certificate - dse__wdqs-next-deploy]", "Exec[renew certificate - dse__wdqs-next]", "Exec[renew certificate - dse__wdqs]", "File[/etc/cfssl/csr/dse__wdqs-deploy.csr]", "File[/etc/cfssl/csr/dse__wdqs-next-deploy.csr]", "File[/etc/cfssl/csr/dse__wdqs-next.csr]", "File[/etc/cfssl/csr/dse__wdqs.csr]", "File[/etc/helmfile-defaults/private/dse-k8s_services/wdqs-next]", "File[/etc/helmfile-defaults/private/dse-k8s_services/wdqs]", "File[/etc/kubernetes/pki/dse__wdqs-deploy-key.pem]", "File[/etc/kubernetes/pki/dse__wdqs-deploy.chain.pem]", "File[/etc/kubernetes/pki/dse__wdqs-deploy.chained.pem]", "File[/etc/kubernetes/pki/dse__wdqs-deploy.csr]", "File[/etc/kubernetes/pki/dse__wdqs-deploy.pem]", "File[/etc/kubernetes/pki/dse__wdqs-key.pem]", "File[/etc/kubernetes/pki/dse__wdqs-next-deploy-key.pem]", "File[/etc/kubernetes/pki/dse__wdqs-next-deploy.chain.pem]", "File[/etc/kubernetes/pki/dse__wdqs-next-deploy.chained.pem]", "File[/etc/kubernetes/pki/dse__wdqs-next-deploy.csr]", "File[/etc/kubernetes/pki/dse__wdqs-next-deploy.pem]", "File[/etc/kubernetes/pki/dse__wdqs-next-key.pem]", "File[/etc/kubernetes/pki/dse__wdqs-next.chain.pem]", "File[/etc/kubernetes/pki/dse__wdqs-next.chained.pem]", "File[/etc/kubernetes/pki/dse__wdqs-next.csr]", "File[/etc/kubernetes/pki/dse__wdqs-next.pem]", "File[/etc/kubernetes/pki/dse__wdqs.chain.pem]", "File[/etc/kubernetes/pki/dse__wdqs.chained.pem]", "File[/etc/kubernetes/pki/dse__wdqs.csr]", "File[/etc/kubernetes/pki/dse__wdqs.pem]", "File[/etc/kubernetes/wdqs-deploy-dse-k8s-codfw.config]", "File[/etc/kubernetes/wdqs-deploy-dse-k8s-eqiad.config]", "File[/etc/kubernetes/wdqs-dse-k8s-codfw.config]", "File[/etc/kubernetes/wdqs-dse-k8s-eqiad.config]", "File[/etc/kubernetes/wdqs-next-deploy-dse-k8s-codfw.config]", "File[/etc/kubernetes/wdqs-next-deploy-dse-k8s-eqiad.config]", "File[/etc/kubernetes/wdqs-next-dse-k8s-codfw.config]", "File[/etc/kubernetes/wdqs-next-dse-k8s-eqiad.config]", "K8s::Kubeconfig[/etc/kubernetes/wdqs-deploy-dse-k8s-codfw.config]", "K8s::Kubeconfig[/etc/kubernetes/wdqs-deploy-dse-k8s-eqiad.config]", "K8s::Kubeconfig[/etc/kubernetes/wdqs-dse-k8s-codfw.config]", "K8s::Kubeconfig[/etc/kubernetes/wdqs-dse-k8s-eqiad.config]", "K8s::Kubeconfig[/etc/kubernetes/wdqs-next-deploy-dse-k8s-codfw.config]", "K8s::Kubeconfig[/etc/kubernetes/wdqs-next-deploy-dse-k8s-eqiad.config]", "K8s::Kubeconfig[/etc/kubernetes/wdqs-next-dse-k8s-codfw.config]", "K8s::Kubeconfig[/etc/kubernetes/wdqs-next-dse-k8s-eqiad.config]"], "resource_diffs": [{"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@@ -76,22 +76,14 @@\n     usernames:\n     - name: opensearch-ttmserver-test\n     - name: opensearch-ttmserver-test-deploy\n-  wdqs-internal:\n+  wdqs:\n     usernames:\n-    - name: wdqs-internal\n-    - name: wdqs-internal-deploy\n-  wdqs-internal-next:\n+    - name: wdqs\n+    - name: wdqs-deploy\n+  wdqs-next:\n     usernames:\n-    - name: wdqs-internal-next\n-    - name: wdqs-internal-next-deploy\n-  wdqs-external:\n-    usernames:\n-    - name: wdqs-external\n-    - name: wdqs-external-deploy\n-  wdqs-external-next:\n-    usernames:\n-    - name: wdqs-external-next\n-    - name: wdqs-external-next-deploy\n+    - name: wdqs-next\n+    - name: wdqs-next-deploy\n   echoserver:\n     usernames:\n     - name: echoserver"}, {"resource": "Exec[Generate cert dse__wdqs-deploy refresh]", "parameters": "--- Exec[Generate cert dse__wdqs-deploy refresh].orig\n+++ Exec[Generate cert dse__wdqs-deploy refresh]\n\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__wdqs-deploy.csr | /usr/bin/cfssljson -bare /etc/kubernetes/pki/dse__wdqs-deploy\n\n+    refreshonly => True\n+    subscribe   => File[/etc/cfssl/csr/dse__wdqs-deploy.csr]\n+    environment => ['GODEBUG=x509ignoreCN=0']\n"}, {"resource": "Exec[Generate cert dse__wdqs-internal-next refresh]", "parameters": "--- Exec[Generate cert dse__wdqs-internal-next refresh].orig\n+++ Exec[Generate cert dse__wdqs-internal-next refresh]\n\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__wdqs-internal-next.csr | /usr/bin/cfssljson -bare /etc/kubernetes/pki/dse__wdqs-internal-next\n\n-    refreshonly => True\n-    subscribe   => File[/etc/cfssl/csr/dse__wdqs-internal-next.csr]\n-    environment => ['GODEBUG=x509ignoreCN=0']\n"}, {"resource": "File[/etc/kubernetes/wdqs-external-dse-k8s-codfw.config]", "content": "--- /etc/kubernetes/wdqs-external-dse-k8s-codfw.config.orig\n+++ /etc/kubernetes/wdqs-external-dse-k8s-codfw.config\n@@ -1,19 +0,0 @@\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: wdqs-external\n-    namespace: wdqs-external\n-clusters:\n-- name: default-cluster\n-  cluster:\n-    server: https://dse-k8s-ctrl.svc.codfw.wmnet:6443\n-users:\n-- name: wdqs-external\n-  user:\n-    client-certificate: /etc/kubernetes/pki/dse__wdqs-external.pem\n-    client-key: /etc/kubernetes/pki/dse__wdqs-external-key.pem", "parameters": "--- File[/etc/kubernetes/wdqs-external-dse-k8s-codfw.config].orig\n+++ File[/etc/kubernetes/wdqs-external-dse-k8s-codfw.config]\n\n-    mode   => 0640\n-    owner  => mwdeploy\n-    group  => deployment\n-    ensure => present\n"}, {"resource": "File[/etc/kubernetes/pki/dse__wdqs-external-next.chained.pem]", "parameters": "--- File[/etc/kubernetes/pki/dse__wdqs-external-next.chained.pem].orig\n+++ File[/etc/kubernetes/pki/dse__wdqs-external-next.chained.pem]\n\n-    owner   => mwdeploy\n-    require => Exec[create chained cert /etc/kubernetes/pki/dse__wdqs-external-next.chain.pem]\n-    group   => deployment\n-    ensure  => file\n"}, {"resource": "Exec[Generate cert dse__wdqs-next-deploy refresh on intermediate ca change]", "parameters": "--- Exec[Generate cert dse__wdqs-next-deploy refresh on intermediate ca change].orig\n+++ Exec[Generate cert dse__wdqs-next-deploy refresh on intermediate ca change]\n\n+    refreshonly => True\n+    require     => Cfssl::Csr[/etc/cfssl/csr/dse__wdqs-next-deploy.csr]\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__wdqs-next-deploy.csr | /usr/bin/cfssljson -bare /etc/kubernetes/pki/dse__wdqs-next-deploy\n\n+    subscribe   => File[/etc/kubernetes/pki/dse__wdqs-next-deploy.chain.pem]\n"}, {"resource": "Cfssl::Cert[dse__wdqs-internal-next-deploy]", "parameters": "--- Cfssl::Cert[dse__wdqs-internal-next-deploy].orig\n+++ Cfssl::Cert[dse__wdqs-internal-next-deploy]\n\n-    notify_services => []\n-    renew_seconds   => 952200\n-    names           => [{'organisation': 'view'}, {'organisation': 'deploy'}]\n-    key             => {'algo': 'ecdsa', 'size': 256}\n-    auto_renew      => True\n-    owner           => mwdeploy\n-    provide_chain   => True\n-    mode            => 0740\n-    common_name     => wdqs-internal-next-deploy\n-    label           => dse\n-    ensure          => present\n-    environment     => ['GODEBUG=x509ignoreCN=0']\n-    group           => deployment\n-    outdir          => /etc/kubernetes/pki\n-    before_services => []\n-    hosts           => []\n"}, {"resource": "Exec[renew certificate - dse__wdqs-external-next-deploy]", "parameters": "--- Exec[renew certificate - dse__wdqs-external-next-deploy].orig\n+++ Exec[renew certificate - dse__wdqs-external-next-deploy]\n\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__wdqs-external-next-deploy.csr | /usr/bin/cfssljson -bare /etc/kubernetes/pki/dse__wdqs-external-next-deploy\n\n-    environment => ['GODEBUG=x509ignoreCN=0']\n-    unless      => /usr/bin/openssl x509 -in /etc/kubernetes/pki/dse__wdqs-external-next-deploy.pem -checkend 952200\n-    require     => Exec[Generate cert dse__wdqs-external-next-deploy]\n"}, {"resource": "File[/etc/kubernetes/pki/dse__wdqs-external-deploy-key.pem]", "parameters": "--- File[/etc/kubernetes/pki/dse__wdqs-external-deploy-key.pem].orig\n+++ File[/etc/kubernetes/pki/dse__wdqs-external-deploy-key.pem]\n\n-    show_diff => False\n-    owner     => mwdeploy\n-    mode      => 0440\n-    backup    => False\n-    group     => deployment\n-    ensure    => file\n"}, {"resource": "Exec[create chained cert /etc/kubernetes/pki/dse__wdqs-external.chain.pem]", "parameters": "--- Exec[create chained cert /etc/kubernetes/pki/dse__wdqs-external.chain.pem].orig\n+++ Exec[create chained cert /etc/kubernetes/pki/dse__wdqs-external.chain.pem]\n\n-    command   => /bin/cat /etc/kubernetes/pki/dse__wdqs-external.pem /etc/kubernetes/pki/dse__wdqs-external.chain.pem > /etc/kubernetes/pki/dse__wdqs-external.chained.pem\n-    subscribe => ['Exec[renew certificate - dse__wdqs-external]', 'File[/etc/kubernetes/pki/dse__wdqs-external.chain.pem]', 'File[/etc/kubernetes/pki/dse__wdqs-external.pem]']\n-    require   => Exec[Generate cert dse__wdqs-external refresh on intermediate ca change]\n-    unless    => /usr/bin/test \"$(/bin/cat /etc/kubernetes/pki/dse__wdqs-external.pem /etc/kubernetes/pki/dse__wdqs-external.chain.pem | sha512sum)\" == \"$(/bin/cat /etc/kubernetes/pki/dse__wdqs-external.chained.pem | sha512sum)\"\n\n"}, {"resource": "Exec[renew certificate - dse__wdqs]", "parameters": "--- Exec[renew certificate - dse__wdqs].orig\n+++ Exec[renew certificate - dse__wdqs]\n\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__wdqs.csr | /usr/bin/cfssljson -bare /etc/kubernetes/pki/dse__wdqs\n\n+    environment => ['GODEBUG=x509ignoreCN=0']\n+    unless      => /usr/bin/openssl x509 -in /etc/kubernetes/pki/dse__wdqs.pem -checkend 952200\n+    require     => Exec[Generate cert dse__wdqs]\n"}, {"resource": "Exec[Generate cert dse__wdqs-internal-next-deploy refresh]", "parameters": "--- Exec[Generate cert dse__wdqs-internal-next-deploy refresh].orig\n+++ Exec[Generate cert dse__wdqs-internal-next-deploy refresh]\n\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__wdqs-internal-next-deploy.csr | /usr/bin/cfssljson -bare /etc/kubernetes/pki/dse__wdqs-internal-next-deploy\n\n-    refreshonly => True\n-    subscribe   => File[/etc/cfssl/csr/dse__wdqs-internal-next-deploy.csr]\n-    environment => ['GODEBUG=x509ignoreCN=0']\n"}, {"resource": "File[/etc/cfssl/csr/dse__wdqs-next.csr]", "content": "--- /etc/cfssl/csr/dse__wdqs-next.csr.orig\n+++ /etc/cfssl/csr/dse__wdqs-next.csr\n@@ -0,0 +1,19 @@\n+{\n+  \"CN\": \"wdqs-next\",\n+  \"hosts\": [\n+    \"wdqs-next\"\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__wdqs-next.csr].orig\n+++ File[/etc/cfssl/csr/dse__wdqs-next.csr]\n\n+    mode   => 0400\n+    owner  => root\n+    group  => root\n+    ensure => file\n"}, {"resource": "K8s::Kubeconfig[/etc/kubernetes/wdqs-external-next-deploy-dse-k8s-codfw.config]", "parameters": "--- K8s::Kubeconfig[/etc/kubernetes/wdqs-external-next-deploy-dse-k8s-codfw.config].orig\n+++ K8s::Kubeconfig[/etc/kubernetes/wdqs-external-next-deploy-dse-k8s-codfw.config]\n\n-    master_host => dse-k8s-ctrl.svc.codfw.wmnet\n-    require     => ['Class[K8s::Base_dirs]']\n-    owner       => mwdeploy\n-    namespace   => wdqs-external-next\n-    mode        => 0640\n-    ensure      => present\n-    username    => wdqs-external-next-deploy\n-    auth_cert   => {'cert': '/etc/kubernetes/pki/dse__wdqs-external-next-deploy.pem', 'key': '/etc/kubernetes/pki/dse__wdqs-external-next-deploy-key.pem', 'chain': '/etc/kubernetes/pki/dse__wdqs-external-next-deploy.chain.pem', 'chained': '/etc/kubernetes/pki/dse__wdqs-external-next-deploy.chained.pem'}\n-    group       => deployment\n"}, {"resource": "File[/etc/kubernetes/pki/dse__wdqs-external-next.csr]", "parameters": "--- File[/etc/kubernetes/pki/dse__wdqs-external-next.csr].orig\n+++ File[/etc/kubernetes/pki/dse__wdqs-external-next.csr]\n\n-    mode   => 0440\n-    owner  => mwdeploy\n-    group  => deployment\n-    ensure => file\n"}, {"resource": "Exec[Generate cert dse__wdqs]", "parameters": "--- Exec[Generate cert dse__wdqs].orig\n+++ Exec[Generate cert dse__wdqs]\n\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__wdqs.csr | /usr/bin/cfssljson -bare /etc/kubernetes/pki/dse__wdqs\n\n+    environment => ['GODEBUG=x509ignoreCN=0']\n+    unless      => /usr/bin/test \"$(/usr/bin/openssl x509 -in /etc/kubernetes/pki/dse__wdqs.pem -noout -pubkey 2>&1)\" == \"$(/usr/bin/openssl pkey -pubout -in /etc/kubernetes/pki/dse__wdqs-key.pem 2>&1)\"\n\n+    require     => Cfssl::Csr[/etc/cfssl/csr/dse__wdqs.csr]\n"}, {"resource": "File[/etc/kubernetes/pki/dse__wdqs-internal.pem]", "parameters": "--- File[/etc/kubernetes/pki/dse__wdqs-internal.pem].orig\n+++ File[/etc/kubernetes/pki/dse__wdqs-internal.pem]\n\n-    mode   => 0440\n-    owner  => mwdeploy\n-    group  => deployment\n-    ensure => file\n"}, {"resource": "File[/etc/kubernetes/pki/dse__wdqs-internal-next-deploy.chain.pem]", "parameters": "--- File[/etc/kubernetes/pki/dse__wdqs-internal-next-deploy.chain.pem].orig\n+++ File[/etc/kubernetes/pki/dse__wdqs-internal-next-deploy.chain.pem]\n\n-    source => puppet:///modules/profile/pki/intermediates/dse-cert.pem\n-    owner  => mwdeploy\n-    mode   => 0440\n-    group  => deployment\n-    ensure => file\n"}, {"resource": "K8s::Kubeconfig[/etc/kubernetes/wdqs-internal-dse-k8s-codfw.config]", "parameters": "--- K8s::Kubeconfig[/etc/kubernetes/wdqs-internal-dse-k8s-codfw.config].orig\n+++ K8s::Kubeconfig[/etc/kubernetes/wdqs-internal-dse-k8s-codfw.config]\n\n-    master_host => dse-k8s-ctrl.svc.codfw.wmnet\n-    require     => ['Class[K8s::Base_dirs]']\n-    owner       => mwdeploy\n-    namespace   => wdqs-internal\n-    mode        => 0640\n-    ensure      => present\n-    username    => wdqs-internal\n-    auth_cert   => {'cert': '/etc/kubernetes/pki/dse__wdqs-internal.pem', 'key': '/etc/kubernetes/pki/dse__wdqs-internal-key.pem', 'chain': '/etc/kubernetes/pki/dse__wdqs-internal.chain.pem', 'chained': '/etc/kubernetes/pki/dse__wdqs-internal.chained.pem'}\n-    group       => deployment\n"}, {"resource": "File[/etc/kubernetes/wdqs-next-deploy-dse-k8s-eqiad.config]", "content": "--- /etc/kubernetes/wdqs-next-deploy-dse-k8s-eqiad.config.orig\n+++ /etc/kubernetes/wdqs-next-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: wdqs-next-deploy\n+    namespace: wdqs-next\n+clusters:\n+- name: default-cluster\n+  cluster:\n+    server: https://dse-k8s-ctrl.svc.eqiad.wmnet:6443\n+users:\n+- name: wdqs-next-deploy\n+  user:\n+    client-certificate: /etc/kubernetes/pki/dse__wdqs-next-deploy.pem\n+    client-key: /etc/kubernetes/pki/dse__wdqs-next-deploy-key.pem", "parameters": "--- File[/etc/kubernetes/wdqs-next-deploy-dse-k8s-eqiad.config].orig\n+++ File[/etc/kubernetes/wdqs-next-deploy-dse-k8s-eqiad.config]\n\n+    mode   => 0640\n+    owner  => mwdeploy\n+    group  => deployment\n+    ensure => present\n"}, {"resource": "Exec[Generate cert dse__wdqs-external-next]", "parameters": "--- Exec[Generate cert dse__wdqs-external-next].orig\n+++ Exec[Generate cert dse__wdqs-external-next]\n\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__wdqs-external-next.csr | /usr/bin/cfssljson -bare /etc/kubernetes/pki/dse__wdqs-external-next\n\n-    environment => ['GODEBUG=x509ignoreCN=0']\n-    unless      => /usr/bin/test \"$(/usr/bin/openssl x509 -in /etc/kubernetes/pki/dse__wdqs-external-next.pem -noout -pubkey 2>&1)\" == \"$(/usr/bin/openssl pkey -pubout -in /etc/kubernetes/pki/dse__wdqs-external-next-key.pem 2>&1)\"\n\n-    require     => Cfssl::Csr[/etc/cfssl/csr/dse__wdqs-external-next.csr]\n"}, {"resource": "File[/etc/kubernetes/pki/dse__wdqs-next-deploy.chain.pem]", "parameters": "--- File[/etc/kubernetes/pki/dse__wdqs-next-deploy.chain.pem].orig\n+++ File[/etc/kubernetes/pki/dse__wdqs-next-deploy.chain.pem]\n\n+    source => puppet:///modules/profile/pki/intermediates/dse-cert.pem\n+    owner  => mwdeploy\n+    mode   => 0440\n+    group  => deployment\n+    ensure => file\n"}, {"resource": "Exec[renew certificate - dse__wdqs-external-next]", "parameters": "--- Exec[renew certificate - dse__wdqs-external-next].orig\n+++ Exec[renew certificate - dse__wdqs-external-next]\n\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__wdqs-external-next.csr | /usr/bin/cfssljson -bare /etc/kubernetes/pki/dse__wdqs-external-next\n\n-    environment => ['GODEBUG=x509ignoreCN=0']\n-    unless      => /usr/bin/openssl x509 -in /etc/kubernetes/pki/dse__wdqs-external-next.pem -checkend 952200\n-    require     => Exec[Generate cert dse__wdqs-external-next]\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 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 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 kafka-ui 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 wdqs-internal wdqs-internal-next wdqs-external wdqs-external-next 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 eventstreams-internal 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 webrequest-page-view webrequest-page-view-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 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 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 kafka-ui 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 wdqs wdqs-next 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 eventstreams-internal 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 webrequest-page-view webrequest-page-view-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": "Cfssl::Cert[dse__wdqs]", "parameters": "--- Cfssl::Cert[dse__wdqs].orig\n+++ Cfssl::Cert[dse__wdqs]\n\n+    notify_services => []\n+    renew_seconds   => 952200\n+    names           => [{'organisation': 'view'}]\n+    key             => {'algo': 'ecdsa', 'size': 256}\n+    auto_renew      => True\n+    owner           => mwdeploy\n+    provide_chain   => True\n+    mode            => 0740\n+    common_name     => wdqs\n+    label           => dse\n+    ensure          => present\n+    environment     => ['GODEBUG=x509ignoreCN=0']\n+    group           => deployment\n+    outdir          => /etc/kubernetes/pki\n+    before_services => []\n+    hosts           => []\n"}, {"resource": "File[/etc/kubernetes/wdqs-deploy-dse-k8s-codfw.config]", "content": "--- /etc/kubernetes/wdqs-deploy-dse-k8s-codfw.config.orig\n+++ /etc/kubernetes/wdqs-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: wdqs-deploy\n+    namespace: wdqs\n+clusters:\n+- name: default-cluster\n+  cluster:\n+    server: https://dse-k8s-ctrl.svc.codfw.wmnet:6443\n+users:\n+- name: wdqs-deploy\n+  user:\n+    client-certificate: /etc/kubernetes/pki/dse__wdqs-deploy.pem\n+    client-key: /etc/kubernetes/pki/dse__wdqs-deploy-key.pem", "parameters": "--- File[/etc/kubernetes/wdqs-deploy-dse-k8s-codfw.config].orig\n+++ File[/etc/kubernetes/wdqs-deploy-dse-k8s-codfw.config]\n\n+    mode   => 0640\n+    owner  => mwdeploy\n+    group  => deployment\n+    ensure => present\n"}, {"resource": "K8s::Kubeconfig[/etc/kubernetes/wdqs-dse-k8s-codfw.config]", "parameters": "--- K8s::Kubeconfig[/etc/kubernetes/wdqs-dse-k8s-codfw.config].orig\n+++ K8s::Kubeconfig[/etc/kubernetes/wdqs-dse-k8s-codfw.config]\n\n+    master_host => dse-k8s-ctrl.svc.codfw.wmnet\n+    require     => ['Class[K8s::Base_dirs]']\n+    owner       => mwdeploy\n+    namespace   => wdqs\n+    mode        => 0640\n+    ensure      => present\n+    username    => wdqs\n+    auth_cert   => {'cert': '/etc/kubernetes/pki/dse__wdqs.pem', 'key': '/etc/kubernetes/pki/dse__wdqs-key.pem', 'chain': '/etc/kubernetes/pki/dse__wdqs.chain.pem', 'chained': '/etc/kubernetes/pki/dse__wdqs.chained.pem'}\n+    group       => deployment\n"}, {"resource": "K8s::Kubeconfig[/etc/kubernetes/wdqs-internal-next-dse-k8s-eqiad.config]", "parameters": "--- K8s::Kubeconfig[/etc/kubernetes/wdqs-internal-next-dse-k8s-eqiad.config].orig\n+++ K8s::Kubeconfig[/etc/kubernetes/wdqs-internal-next-dse-k8s-eqiad.config]\n\n-    master_host => dse-k8s-ctrl.svc.eqiad.wmnet\n-    require     => ['Class[K8s::Base_dirs]']\n-    owner       => mwdeploy\n-    namespace   => wdqs-internal-next\n-    mode        => 0640\n-    ensure      => present\n-    username    => wdqs-internal-next\n-    auth_cert   => {'cert': '/etc/kubernetes/pki/dse__wdqs-internal-next.pem', 'key': '/etc/kubernetes/pki/dse__wdqs-internal-next-key.pem', 'chain': '/etc/kubernetes/pki/dse__wdqs-internal-next.chain.pem', 'chained': '/etc/kubernetes/pki/dse__wdqs-internal-next.chained.pem'}\n-    group       => deployment\n"}, {"resource": "File[/etc/kubernetes/wdqs-external-next-dse-k8s-codfw.config]", "content": "--- /etc/kubernetes/wdqs-external-next-dse-k8s-codfw.config.orig\n+++ /etc/kubernetes/wdqs-external-next-dse-k8s-codfw.config\n@@ -1,19 +0,0 @@\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: wdqs-external-next\n-    namespace: wdqs-external-next\n-clusters:\n-- name: default-cluster\n-  cluster:\n-    server: https://dse-k8s-ctrl.svc.codfw.wmnet:6443\n-users:\n-- name: wdqs-external-next\n-  user:\n-    client-certificate: /etc/kubernetes/pki/dse__wdqs-external-next.pem\n-    client-key: /etc/kubernetes/pki/dse__wdqs-external-next-key.pem", "parameters": "--- File[/etc/kubernetes/wdqs-external-next-dse-k8s-codfw.config].orig\n+++ File[/etc/kubernetes/wdqs-external-next-dse-k8s-codfw.config]\n\n-    mode   => 0640\n-    owner  => mwdeploy\n-    group  => deployment\n-    ensure => present\n"}, {"resource": "File[/etc/cfssl/csr/dse__wdqs-internal-deploy.csr]", "content": "--- /etc/cfssl/csr/dse__wdqs-internal-deploy.csr.orig\n+++ /etc/cfssl/csr/dse__wdqs-internal-deploy.csr\n@@ -1,26 +0,0 @@\n-{\n-  \"CN\": \"wdqs-internal-deploy\",\n-  \"hosts\": [\n-    \"wdqs-internal-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__wdqs-internal-deploy.csr].orig\n+++ File[/etc/cfssl/csr/dse__wdqs-internal-deploy.csr]\n\n-    mode   => 0400\n-    owner  => root\n-    group  => root\n-    ensure => file\n"}, {"resource": "Cfssl::Cert[dse__wdqs-internal]", "parameters": "--- Cfssl::Cert[dse__wdqs-internal].orig\n+++ Cfssl::Cert[dse__wdqs-internal]\n\n-    notify_services => []\n-    renew_seconds   => 952200\n-    names           => [{'organisation': 'view'}]\n-    key             => {'algo': 'ecdsa', 'size': 256}\n-    auto_renew      => True\n-    owner           => mwdeploy\n-    provide_chain   => True\n-    mode            => 0740\n-    common_name     => wdqs-internal\n-    label           => dse\n-    ensure          => present\n-    environment     => ['GODEBUG=x509ignoreCN=0']\n-    group           => deployment\n-    outdir          => /etc/kubernetes/pki\n-    before_services => []\n-    hosts           => []\n"}, {"resource": "File[/etc/helmfile-defaults/private/dse-k8s_services/wdqs-internal-next]", "parameters": "--- File[/etc/helmfile-defaults/private/dse-k8s_services/wdqs-internal-next].orig\n+++ File[/etc/helmfile-defaults/private/dse-k8s_services/wdqs-internal-next]\n\n-    recurse => True\n-    owner   => mwdeploy\n-    mode    => 0751\n-    force   => True\n-    group   => deployment\n-    ensure  => directory\n"}, {"resource": "Cfssl::Cert[dse__wdqs-external-deploy]", "parameters": "--- Cfssl::Cert[dse__wdqs-external-deploy].orig\n+++ Cfssl::Cert[dse__wdqs-external-deploy]\n\n-    notify_services => []\n-    renew_seconds   => 952200\n-    names           => [{'organisation': 'view'}, {'organisation': 'deploy'}]\n-    key             => {'algo': 'ecdsa', 'size': 256}\n-    auto_renew      => True\n-    owner           => mwdeploy\n-    provide_chain   => True\n-    mode            => 0740\n-    common_name     => wdqs-external-deploy\n-    label           => dse\n-    ensure          => present\n-    environment     => ['GODEBUG=x509ignoreCN=0']\n-    group           => deployment\n-    outdir          => /etc/kubernetes/pki\n-    before_services => []\n-    hosts           => []\n"}, {"resource": "File[/etc/cfssl/csr/dse__wdqs-deploy.csr]", "content": "--- /etc/cfssl/csr/dse__wdqs-deploy.csr.orig\n+++ /etc/cfssl/csr/dse__wdqs-deploy.csr\n@@ -0,0 +1,26 @@\n+{\n+  \"CN\": \"wdqs-deploy\",\n+  \"hosts\": [\n+    \"wdqs-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__wdqs-deploy.csr].orig\n+++ File[/etc/cfssl/csr/dse__wdqs-deploy.csr]\n\n+    mode   => 0400\n+    owner  => root\n+    group  => root\n+    ensure => file\n"}, {"resource": "Exec[renew certificate - dse__wdqs-internal-next-deploy]", "parameters": "--- Exec[renew certificate - dse__wdqs-internal-next-deploy].orig\n+++ Exec[renew certificate - dse__wdqs-internal-next-deploy]\n\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__wdqs-internal-next-deploy.csr | /usr/bin/cfssljson -bare /etc/kubernetes/pki/dse__wdqs-internal-next-deploy\n\n-    environment => ['GODEBUG=x509ignoreCN=0']\n-    unless      => /usr/bin/openssl x509 -in /etc/kubernetes/pki/dse__wdqs-internal-next-deploy.pem -checkend 952200\n-    require     => Exec[Generate cert dse__wdqs-internal-next-deploy]\n"}, {"resource": "File[/etc/cfssl/csr/dse__wdqs-internal-next.csr]", "content": "--- /etc/cfssl/csr/dse__wdqs-internal-next.csr.orig\n+++ /etc/cfssl/csr/dse__wdqs-internal-next.csr\n@@ -1,19 +0,0 @@\n-{\n-  \"CN\": \"wdqs-internal-next\",\n-  \"hosts\": [\n-    \"wdqs-internal-next\"\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__wdqs-internal-next.csr].orig\n+++ File[/etc/cfssl/csr/dse__wdqs-internal-next.csr]\n\n-    mode   => 0400\n-    owner  => root\n-    group  => root\n-    ensure => file\n"}, {"resource": "File[/etc/cfssl/csr/dse__wdqs-next-deploy.csr]", "content": "--- /etc/cfssl/csr/dse__wdqs-next-deploy.csr.orig\n+++ /etc/cfssl/csr/dse__wdqs-next-deploy.csr\n@@ -0,0 +1,26 @@\n+{\n+  \"CN\": \"wdqs-next-deploy\",\n+  \"hosts\": [\n+    \"wdqs-next-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__wdqs-next-deploy.csr].orig\n+++ File[/etc/cfssl/csr/dse__wdqs-next-deploy.csr]\n\n+    mode   => 0400\n+    owner  => root\n+    group  => root\n+    ensure => file\n"}, {"resource": "Cfssl::Csr[/etc/cfssl/csr/dse__wdqs.csr]", "parameters": "--- Cfssl::Csr[/etc/cfssl/csr/dse__wdqs.csr].orig\n+++ Cfssl::Csr[/etc/cfssl/csr/dse__wdqs.csr]\n\n+    key         => {'algo': 'ecdsa', 'size': 256}\n+    hosts       => []\n+    names       => [{'organisation': 'view'}]\n+    common_name => wdqs\n+    ensure      => present\n"}, {"resource": "Cfssl::Csr[/etc/cfssl/csr/dse__wdqs-internal-deploy.csr]", "parameters": "--- Cfssl::Csr[/etc/cfssl/csr/dse__wdqs-internal-deploy.csr].orig\n+++ Cfssl::Csr[/etc/cfssl/csr/dse__wdqs-internal-deploy.csr]\n\n-    key         => {'algo': 'ecdsa', 'size': 256}\n-    hosts       => []\n-    names       => [{'organisation': 'view'}, {'organisation': 'deploy'}]\n-    common_name => wdqs-internal-deploy\n-    ensure      => present\n"}, {"resource": "Exec[Generate cert dse__wdqs-next-deploy refresh]", "parameters": "--- Exec[Generate cert dse__wdqs-next-deploy refresh].orig\n+++ Exec[Generate cert dse__wdqs-next-deploy refresh]\n\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__wdqs-next-deploy.csr | /usr/bin/cfssljson -bare /etc/kubernetes/pki/dse__wdqs-next-deploy\n\n+    refreshonly => True\n+    subscribe   => File[/etc/cfssl/csr/dse__wdqs-next-deploy.csr]\n+    environment => ['GODEBUG=x509ignoreCN=0']\n"}, {"resource": "File[/etc/kubernetes/pki/dse__wdqs-external-next-deploy.pem]", "parameters": "--- File[/etc/kubernetes/pki/dse__wdqs-external-next-deploy.pem].orig\n+++ File[/etc/kubernetes/pki/dse__wdqs-external-next-deploy.pem]\n\n-    mode   => 0440\n-    owner  => mwdeploy\n-    group  => deployment\n-    ensure => file\n"}, {"resource": "File[/etc/kubernetes/wdqs-dse-k8s-codfw.config]", "content": "--- /etc/kubernetes/wdqs-dse-k8s-codfw.config.orig\n+++ /etc/kubernetes/wdqs-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: wdqs\n+    namespace: wdqs\n+clusters:\n+- name: default-cluster\n+  cluster:\n+    server: https://dse-k8s-ctrl.svc.codfw.wmnet:6443\n+users:\n+- name: wdqs\n+  user:\n+    client-certificate: /etc/kubernetes/pki/dse__wdqs.pem\n+    client-key: /etc/kubernetes/pki/dse__wdqs-key.pem", "parameters": "--- File[/etc/kubernetes/wdqs-dse-k8s-codfw.config].orig\n+++ File[/etc/kubernetes/wdqs-dse-k8s-codfw.config]\n\n+    mode   => 0640\n+    owner  => mwdeploy\n+    group  => deployment\n+    ensure => present\n"}, {"resource": "Exec[Generate cert dse__wdqs refresh on intermediate ca change]", "parameters": "--- Exec[Generate cert dse__wdqs refresh on intermediate ca change].orig\n+++ Exec[Generate cert dse__wdqs refresh on intermediate ca change]\n\n+    refreshonly => True\n+    require     => Cfssl::Csr[/etc/cfssl/csr/dse__wdqs.csr]\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__wdqs.csr | /usr/bin/cfssljson -bare /etc/kubernetes/pki/dse__wdqs\n\n+    subscribe   => File[/etc/kubernetes/pki/dse__wdqs.chain.pem]\n"}, {"resource": "File[/etc/kubernetes/pki/dse__wdqs-external-deploy.chained.pem]", "parameters": "--- File[/etc/kubernetes/pki/dse__wdqs-external-deploy.chained.pem].orig\n+++ File[/etc/kubernetes/pki/dse__wdqs-external-deploy.chained.pem]\n\n-    owner   => mwdeploy\n-    require => Exec[create chained cert /etc/kubernetes/pki/dse__wdqs-external-deploy.chain.pem]\n-    group   => deployment\n-    ensure  => file\n"}, {"resource": "K8s::Kubeconfig[/etc/kubernetes/wdqs-internal-next-dse-k8s-codfw.config]", "parameters": "--- K8s::Kubeconfig[/etc/kubernetes/wdqs-internal-next-dse-k8s-codfw.config].orig\n+++ K8s::Kubeconfig[/etc/kubernetes/wdqs-internal-next-dse-k8s-codfw.config]\n\n-    master_host => dse-k8s-ctrl.svc.codfw.wmnet\n-    require     => ['Class[K8s::Base_dirs]']\n-    owner       => mwdeploy\n-    namespace   => wdqs-internal-next\n-    mode        => 0640\n-    ensure      => present\n-    username    => wdqs-internal-next\n-    auth_cert   => {'cert': '/etc/kubernetes/pki/dse__wdqs-internal-next.pem', 'key': '/etc/kubernetes/pki/dse__wdqs-internal-next-key.pem', 'chain': '/etc/kubernetes/pki/dse__wdqs-internal-next.chain.pem', 'chained': '/etc/kubernetes/pki/dse__wdqs-internal-next.chained.pem'}\n-    group       => deployment\n"}, {"resource": "File[/etc/kubernetes/wdqs-dse-k8s-eqiad.config]", "content": "--- /etc/kubernetes/wdqs-dse-k8s-eqiad.config.orig\n+++ /etc/kubernetes/wdqs-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: wdqs\n+    namespace: wdqs\n+clusters:\n+- name: default-cluster\n+  cluster:\n+    server: https://dse-k8s-ctrl.svc.eqiad.wmnet:6443\n+users:\n+- name: wdqs\n+  user:\n+    client-certificate: /etc/kubernetes/pki/dse__wdqs.pem\n+    client-key: /etc/kubernetes/pki/dse__wdqs-key.pem", "parameters": "--- File[/etc/kubernetes/wdqs-dse-k8s-eqiad.config].orig\n+++ File[/etc/kubernetes/wdqs-dse-k8s-eqiad.config]\n\n+    mode   => 0640\n+    owner  => mwdeploy\n+    group  => deployment\n+    ensure => present\n"}, {"resource": "Exec[Generate cert dse__wdqs-internal-deploy]", "parameters": "--- Exec[Generate cert dse__wdqs-internal-deploy].orig\n+++ Exec[Generate cert dse__wdqs-internal-deploy]\n\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__wdqs-internal-deploy.csr | /usr/bin/cfssljson -bare /etc/kubernetes/pki/dse__wdqs-internal-deploy\n\n-    environment => ['GODEBUG=x509ignoreCN=0']\n-    unless      => /usr/bin/test \"$(/usr/bin/openssl x509 -in /etc/kubernetes/pki/dse__wdqs-internal-deploy.pem -noout -pubkey 2>&1)\" == \"$(/usr/bin/openssl pkey -pubout -in /etc/kubernetes/pki/dse__wdqs-internal-deploy-key.pem 2>&1)\"\n\n-    require     => Cfssl::Csr[/etc/cfssl/csr/dse__wdqs-internal-deploy.csr]\n"}, {"resource": "File[/etc/kubernetes/pki/dse__wdqs-next-deploy.csr]", "parameters": "--- File[/etc/kubernetes/pki/dse__wdqs-next-deploy.csr].orig\n+++ File[/etc/kubernetes/pki/dse__wdqs-next-deploy.csr]\n\n+    mode   => 0440\n+    owner  => mwdeploy\n+    group  => deployment\n+    ensure => file\n"}, {"resource": "File[/etc/kubernetes/pki/dse__wdqs-external.chain.pem]", "parameters": "--- File[/etc/kubernetes/pki/dse__wdqs-external.chain.pem].orig\n+++ File[/etc/kubernetes/pki/dse__wdqs-external.chain.pem]\n\n-    source => puppet:///modules/profile/pki/intermediates/dse-cert.pem\n-    owner  => mwdeploy\n-    mode   => 0440\n-    group  => deployment\n-    ensure => file\n"}, {"resource": "File[/etc/kubernetes/wdqs-internal-next-dse-k8s-eqiad.config]", "content": "--- /etc/kubernetes/wdqs-internal-next-dse-k8s-eqiad.config.orig\n+++ /etc/kubernetes/wdqs-internal-next-dse-k8s-eqiad.config\n@@ -1,19 +0,0 @@\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: wdqs-internal-next\n-    namespace: wdqs-internal-next\n-clusters:\n-- name: default-cluster\n-  cluster:\n-    server: https://dse-k8s-ctrl.svc.eqiad.wmnet:6443\n-users:\n-- name: wdqs-internal-next\n-  user:\n-    client-certificate: /etc/kubernetes/pki/dse__wdqs-internal-next.pem\n-    client-key: /etc/kubernetes/pki/dse__wdqs-internal-next-key.pem", "parameters": "--- File[/etc/kubernetes/wdqs-internal-next-dse-k8s-eqiad.config].orig\n+++ File[/etc/kubernetes/wdqs-internal-next-dse-k8s-eqiad.config]\n\n-    mode   => 0640\n-    owner  => mwdeploy\n-    group  => deployment\n-    ensure => present\n"}, {"resource": "File[/etc/kubernetes/pki/dse__wdqs-external-next.chain.pem]", "parameters": "--- File[/etc/kubernetes/pki/dse__wdqs-external-next.chain.pem].orig\n+++ File[/etc/kubernetes/pki/dse__wdqs-external-next.chain.pem]\n\n-    source => puppet:///modules/profile/pki/intermediates/dse-cert.pem\n-    owner  => mwdeploy\n-    mode   => 0440\n-    group  => deployment\n-    ensure => file\n"}, {"resource": "Cfssl::Csr[/etc/cfssl/csr/dse__wdqs-internal-next.csr]", "parameters": "--- Cfssl::Csr[/etc/cfssl/csr/dse__wdqs-internal-next.csr].orig\n+++ Cfssl::Csr[/etc/cfssl/csr/dse__wdqs-internal-next.csr]\n\n-    key         => {'algo': 'ecdsa', 'size': 256}\n-    hosts       => []\n-    names       => [{'organisation': 'view'}]\n-    common_name => wdqs-internal-next\n-    ensure      => present\n"}, {"resource": "File[/etc/kubernetes/pki/dse__wdqs-key.pem]", "parameters": "--- File[/etc/kubernetes/pki/dse__wdqs-key.pem].orig\n+++ File[/etc/kubernetes/pki/dse__wdqs-key.pem]\n\n+    show_diff => False\n+    owner     => mwdeploy\n+    mode      => 0440\n+    backup    => False\n+    group     => deployment\n+    ensure    => file\n"}, {"resource": "Exec[create chained cert /etc/kubernetes/pki/dse__wdqs-internal.chain.pem]", "parameters": "--- Exec[create chained cert /etc/kubernetes/pki/dse__wdqs-internal.chain.pem].orig\n+++ Exec[create chained cert /etc/kubernetes/pki/dse__wdqs-internal.chain.pem]\n\n-    command   => /bin/cat /etc/kubernetes/pki/dse__wdqs-internal.pem /etc/kubernetes/pki/dse__wdqs-internal.chain.pem > /etc/kubernetes/pki/dse__wdqs-internal.chained.pem\n-    subscribe => ['Exec[renew certificate - dse__wdqs-internal]', 'File[/etc/kubernetes/pki/dse__wdqs-internal.chain.pem]', 'File[/etc/kubernetes/pki/dse__wdqs-internal.pem]']\n-    require   => Exec[Generate cert dse__wdqs-internal refresh on intermediate ca change]\n-    unless    => /usr/bin/test \"$(/bin/cat /etc/kubernetes/pki/dse__wdqs-internal.pem /etc/kubernetes/pki/dse__wdqs-internal.chain.pem | sha512sum)\" == \"$(/bin/cat /etc/kubernetes/pki/dse__wdqs-internal.chained.pem | sha512sum)\"\n\n"}, {"resource": "File[/etc/kubernetes/pki/dse__wdqs-deploy-key.pem]", "parameters": "--- File[/etc/kubernetes/pki/dse__wdqs-deploy-key.pem].orig\n+++ File[/etc/kubernetes/pki/dse__wdqs-deploy-key.pem]\n\n+    show_diff => False\n+    owner     => mwdeploy\n+    mode      => 0440\n+    backup    => False\n+    group     => deployment\n+    ensure    => file\n"}, {"resource": "Exec[Generate cert dse__wdqs-external refresh]", "parameters": "--- Exec[Generate cert dse__wdqs-external refresh].orig\n+++ Exec[Generate cert dse__wdqs-external refresh]\n\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__wdqs-external.csr | /usr/bin/cfssljson -bare /etc/kubernetes/pki/dse__wdqs-external\n\n-    refreshonly => True\n-    subscribe   => File[/etc/cfssl/csr/dse__wdqs-external.csr]\n-    environment => ['GODEBUG=x509ignoreCN=0']\n"}, {"resource": "File[/etc/kubernetes/pki/dse__wdqs-external-next-deploy.chain.pem]", "parameters": "--- File[/etc/kubernetes/pki/dse__wdqs-external-next-deploy.chain.pem].orig\n+++ File[/etc/kubernetes/pki/dse__wdqs-external-next-deploy.chain.pem]\n\n-    source => puppet:///modules/profile/pki/intermediates/dse-cert.pem\n-    owner  => mwdeploy\n-    mode   => 0440\n-    group  => deployment\n-    ensure => file\n"}, {"resource": "Cfssl::Csr[/etc/cfssl/csr/dse__wdqs-next-deploy.csr]", "parameters": "--- Cfssl::Csr[/etc/cfssl/csr/dse__wdqs-next-deploy.csr].orig\n+++ Cfssl::Csr[/etc/cfssl/csr/dse__wdqs-next-deploy.csr]\n\n+    key         => {'algo': 'ecdsa', 'size': 256}\n+    hosts       => []\n+    names       => [{'organisation': 'view'}, {'organisation': 'deploy'}]\n+    common_name => wdqs-next-deploy\n+    ensure      => present\n"}, {"resource": "K8s::Kubeconfig[/etc/kubernetes/wdqs-internal-next-deploy-dse-k8s-codfw.config]", "parameters": "--- K8s::Kubeconfig[/etc/kubernetes/wdqs-internal-next-deploy-dse-k8s-codfw.config].orig\n+++ K8s::Kubeconfig[/etc/kubernetes/wdqs-internal-next-deploy-dse-k8s-codfw.config]\n\n-    master_host => dse-k8s-ctrl.svc.codfw.wmnet\n-    require     => ['Class[K8s::Base_dirs]']\n-    owner       => mwdeploy\n-    namespace   => wdqs-internal-next\n-    mode        => 0640\n-    ensure      => present\n-    username    => wdqs-internal-next-deploy\n-    auth_cert   => {'cert': '/etc/kubernetes/pki/dse__wdqs-internal-next-deploy.pem', 'key': '/etc/kubernetes/pki/dse__wdqs-internal-next-deploy-key.pem', 'chain': '/etc/kubernetes/pki/dse__wdqs-internal-next-deploy.chain.pem', 'chained': '/etc/kubernetes/pki/dse__wdqs-internal-next-deploy.chained.pem'}\n-    group       => deployment\n"}, {"resource": "K8s::Kubeconfig[/etc/kubernetes/wdqs-external-dse-k8s-eqiad.config]", "parameters": "--- K8s::Kubeconfig[/etc/kubernetes/wdqs-external-dse-k8s-eqiad.config].orig\n+++ K8s::Kubeconfig[/etc/kubernetes/wdqs-external-dse-k8s-eqiad.config]\n\n-    master_host => dse-k8s-ctrl.svc.eqiad.wmnet\n-    require     => ['Class[K8s::Base_dirs]']\n-    owner       => mwdeploy\n-    namespace   => wdqs-external\n-    mode        => 0640\n-    ensure      => present\n-    username    => wdqs-external\n-    auth_cert   => {'cert': '/etc/kubernetes/pki/dse__wdqs-external.pem', 'key': '/etc/kubernetes/pki/dse__wdqs-external-key.pem', 'chain': '/etc/kubernetes/pki/dse__wdqs-external.chain.pem', 'chained': '/etc/kubernetes/pki/dse__wdqs-external.chained.pem'}\n-    group       => deployment\n"}, {"resource": "File[/etc/kubernetes/pki/dse__wdqs-internal-deploy.pem]", "parameters": "--- File[/etc/kubernetes/pki/dse__wdqs-internal-deploy.pem].orig\n+++ File[/etc/kubernetes/pki/dse__wdqs-internal-deploy.pem]\n\n-    mode   => 0440\n-    owner  => mwdeploy\n-    group  => deployment\n-    ensure => file\n"}, {"resource": "File[/etc/kubernetes/pki/dse__wdqs-next-deploy-key.pem]", "parameters": "--- File[/etc/kubernetes/pki/dse__wdqs-next-deploy-key.pem].orig\n+++ File[/etc/kubernetes/pki/dse__wdqs-next-deploy-key.pem]\n\n+    show_diff => False\n+    owner     => mwdeploy\n+    mode      => 0440\n+    backup    => False\n+    group     => deployment\n+    ensure    => file\n"}, {"resource": "Cfssl::Cert[dse__wdqs-external-next]", "parameters": "--- Cfssl::Cert[dse__wdqs-external-next].orig\n+++ Cfssl::Cert[dse__wdqs-external-next]\n\n-    notify_services => []\n-    renew_seconds   => 952200\n-    names           => [{'organisation': 'view'}]\n-    key             => {'algo': 'ecdsa', 'size': 256}\n-    auto_renew      => True\n-    owner           => mwdeploy\n-    provide_chain   => True\n-    mode            => 0740\n-    common_name     => wdqs-external-next\n-    label           => dse\n-    ensure          => present\n-    environment     => ['GODEBUG=x509ignoreCN=0']\n-    group           => deployment\n-    outdir          => /etc/kubernetes/pki\n-    before_services => []\n-    hosts           => []\n"}, {"resource": "File[/etc/kubernetes/wdqs-next-dse-k8s-eqiad.config]", "content": "--- /etc/kubernetes/wdqs-next-dse-k8s-eqiad.config.orig\n+++ /etc/kubernetes/wdqs-next-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: wdqs-next\n+    namespace: wdqs-next\n+clusters:\n+- name: default-cluster\n+  cluster:\n+    server: https://dse-k8s-ctrl.svc.eqiad.wmnet:6443\n+users:\n+- name: wdqs-next\n+  user:\n+    client-certificate: /etc/kubernetes/pki/dse__wdqs-next.pem\n+    client-key: /etc/kubernetes/pki/dse__wdqs-next-key.pem", "parameters": "--- File[/etc/kubernetes/wdqs-next-dse-k8s-eqiad.config].orig\n+++ File[/etc/kubernetes/wdqs-next-dse-k8s-eqiad.config]\n\n+    mode   => 0640\n+    owner  => mwdeploy\n+    group  => deployment\n+    ensure => present\n"}, {"resource": "K8s::Kubeconfig[/etc/kubernetes/wdqs-external-next-dse-k8s-eqiad.config]", "parameters": "--- K8s::Kubeconfig[/etc/kubernetes/wdqs-external-next-dse-k8s-eqiad.config].orig\n+++ K8s::Kubeconfig[/etc/kubernetes/wdqs-external-next-dse-k8s-eqiad.config]\n\n-    master_host => dse-k8s-ctrl.svc.eqiad.wmnet\n-    require     => ['Class[K8s::Base_dirs]']\n-    owner       => mwdeploy\n-    namespace   => wdqs-external-next\n-    mode        => 0640\n-    ensure      => present\n-    username    => wdqs-external-next\n-    auth_cert   => {'cert': '/etc/kubernetes/pki/dse__wdqs-external-next.pem', 'key': '/etc/kubernetes/pki/dse__wdqs-external-next-key.pem', 'chain': '/etc/kubernetes/pki/dse__wdqs-external-next.chain.pem', 'chained': '/etc/kubernetes/pki/dse__wdqs-external-next.chained.pem'}\n-    group       => deployment\n"}, {"resource": "Exec[Generate cert dse__wdqs-external]", "parameters": "--- Exec[Generate cert dse__wdqs-external].orig\n+++ Exec[Generate cert dse__wdqs-external]\n\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__wdqs-external.csr | /usr/bin/cfssljson -bare /etc/kubernetes/pki/dse__wdqs-external\n\n-    environment => ['GODEBUG=x509ignoreCN=0']\n-    unless      => /usr/bin/test \"$(/usr/bin/openssl x509 -in /etc/kubernetes/pki/dse__wdqs-external.pem -noout -pubkey 2>&1)\" == \"$(/usr/bin/openssl pkey -pubout -in /etc/kubernetes/pki/dse__wdqs-external-key.pem 2>&1)\"\n\n-    require     => Cfssl::Csr[/etc/cfssl/csr/dse__wdqs-external.csr]\n"}, {"resource": "File[/etc/kubernetes/wdqs-external-next-deploy-dse-k8s-eqiad.config]", "content": "--- /etc/kubernetes/wdqs-external-next-deploy-dse-k8s-eqiad.config.orig\n+++ /etc/kubernetes/wdqs-external-next-deploy-dse-k8s-eqiad.config\n@@ -1,19 +0,0 @@\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: wdqs-external-next-deploy\n-    namespace: wdqs-external-next\n-clusters:\n-- name: default-cluster\n-  cluster:\n-    server: https://dse-k8s-ctrl.svc.eqiad.wmnet:6443\n-users:\n-- name: wdqs-external-next-deploy\n-  user:\n-    client-certificate: /etc/kubernetes/pki/dse__wdqs-external-next-deploy.pem\n-    client-key: /etc/kubernetes/pki/dse__wdqs-external-next-deploy-key.pem", "parameters": "--- File[/etc/kubernetes/wdqs-external-next-deploy-dse-k8s-eqiad.config].orig\n+++ File[/etc/kubernetes/wdqs-external-next-deploy-dse-k8s-eqiad.config]\n\n-    mode   => 0640\n-    owner  => mwdeploy\n-    group  => deployment\n-    ensure => present\n"}, {"resource": "Exec[Generate cert dse__wdqs-external-deploy refresh]", "parameters": "--- Exec[Generate cert dse__wdqs-external-deploy refresh].orig\n+++ Exec[Generate cert dse__wdqs-external-deploy refresh]\n\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__wdqs-external-deploy.csr | /usr/bin/cfssljson -bare /etc/kubernetes/pki/dse__wdqs-external-deploy\n\n-    refreshonly => True\n-    subscribe   => File[/etc/cfssl/csr/dse__wdqs-external-deploy.csr]\n-    environment => ['GODEBUG=x509ignoreCN=0']\n"}, {"resource": "File[/etc/kubernetes/pki/dse__wdqs.csr]", "parameters": "--- File[/etc/kubernetes/pki/dse__wdqs.csr].orig\n+++ File[/etc/kubernetes/pki/dse__wdqs.csr]\n\n+    mode   => 0440\n+    owner  => mwdeploy\n+    group  => deployment\n+    ensure => file\n"}, {"resource": "Exec[Generate cert dse__wdqs-external-next refresh on intermediate ca change]", "parameters": "--- Exec[Generate cert dse__wdqs-external-next refresh on intermediate ca change].orig\n+++ Exec[Generate cert dse__wdqs-external-next refresh on intermediate ca change]\n\n-    refreshonly => True\n-    require     => Cfssl::Csr[/etc/cfssl/csr/dse__wdqs-external-next.csr]\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__wdqs-external-next.csr | /usr/bin/cfssljson -bare /etc/kubernetes/pki/dse__wdqs-external-next\n\n-    subscribe   => File[/etc/kubernetes/pki/dse__wdqs-external-next.chain.pem]\n"}, {"resource": "File[/etc/kubernetes/pki/dse__wdqs-next-deploy.pem]", "parameters": "--- File[/etc/kubernetes/pki/dse__wdqs-next-deploy.pem].orig\n+++ File[/etc/kubernetes/pki/dse__wdqs-next-deploy.pem]\n\n+    mode   => 0440\n+    owner  => mwdeploy\n+    group  => deployment\n+    ensure => file\n"}, {"resource": "K8s::Kubeconfig[/etc/kubernetes/wdqs-internal-deploy-dse-k8s-eqiad.config]", "parameters": "--- K8s::Kubeconfig[/etc/kubernetes/wdqs-internal-deploy-dse-k8s-eqiad.config].orig\n+++ K8s::Kubeconfig[/etc/kubernetes/wdqs-internal-deploy-dse-k8s-eqiad.config]\n\n-    master_host => dse-k8s-ctrl.svc.eqiad.wmnet\n-    require     => ['Class[K8s::Base_dirs]']\n-    owner       => mwdeploy\n-    namespace   => wdqs-internal\n-    mode        => 0640\n-    ensure      => present\n-    username    => wdqs-internal-deploy\n-    auth_cert   => {'cert': '/etc/kubernetes/pki/dse__wdqs-internal-deploy.pem', 'key': '/etc/kubernetes/pki/dse__wdqs-internal-deploy-key.pem', 'chain': '/etc/kubernetes/pki/dse__wdqs-internal-deploy.chain.pem', 'chained': '/etc/kubernetes/pki/dse__wdqs-internal-deploy.chained.pem'}\n-    group       => deployment\n"}, {"resource": "Exec[create chained cert /etc/kubernetes/pki/dse__wdqs-internal-next.chain.pem]", "parameters": "--- Exec[create chained cert /etc/kubernetes/pki/dse__wdqs-internal-next.chain.pem].orig\n+++ Exec[create chained cert /etc/kubernetes/pki/dse__wdqs-internal-next.chain.pem]\n\n-    command   => /bin/cat /etc/kubernetes/pki/dse__wdqs-internal-next.pem /etc/kubernetes/pki/dse__wdqs-internal-next.chain.pem > /etc/kubernetes/pki/dse__wdqs-internal-next.chained.pem\n-    subscribe => ['Exec[renew certificate - dse__wdqs-internal-next]', 'File[/etc/kubernetes/pki/dse__wdqs-internal-next.chain.pem]', 'File[/etc/kubernetes/pki/dse__wdqs-internal-next.pem]']\n-    require   => Exec[Generate cert dse__wdqs-internal-next refresh on intermediate ca change]\n-    unless    => /usr/bin/test \"$(/bin/cat /etc/kubernetes/pki/dse__wdqs-internal-next.pem /etc/kubernetes/pki/dse__wdqs-internal-next.chain.pem | sha512sum)\" == \"$(/bin/cat /etc/kubernetes/pki/dse__wdqs-internal-next.chained.pem | sha512sum)\"\n\n"}, {"resource": "File[/etc/kubernetes/pki/dse__wdqs-internal-deploy.chained.pem]", "parameters": "--- File[/etc/kubernetes/pki/dse__wdqs-internal-deploy.chained.pem].orig\n+++ File[/etc/kubernetes/pki/dse__wdqs-internal-deploy.chained.pem]\n\n-    owner   => mwdeploy\n-    require => Exec[create chained cert /etc/kubernetes/pki/dse__wdqs-internal-deploy.chain.pem]\n-    group   => deployment\n-    ensure  => file\n"}, {"resource": "Exec[Generate cert dse__wdqs-deploy]", "parameters": "--- Exec[Generate cert dse__wdqs-deploy].orig\n+++ Exec[Generate cert dse__wdqs-deploy]\n\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__wdqs-deploy.csr | /usr/bin/cfssljson -bare /etc/kubernetes/pki/dse__wdqs-deploy\n\n+    environment => ['GODEBUG=x509ignoreCN=0']\n+    unless      => /usr/bin/test \"$(/usr/bin/openssl x509 -in /etc/kubernetes/pki/dse__wdqs-deploy.pem -noout -pubkey 2>&1)\" == \"$(/usr/bin/openssl pkey -pubout -in /etc/kubernetes/pki/dse__wdqs-deploy-key.pem 2>&1)\"\n\n+    require     => Cfssl::Csr[/etc/cfssl/csr/dse__wdqs-deploy.csr]\n"}, {"resource": "Exec[renew certificate - dse__wdqs-internal-deploy]", "parameters": "--- Exec[renew certificate - dse__wdqs-internal-deploy].orig\n+++ Exec[renew certificate - dse__wdqs-internal-deploy]\n\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__wdqs-internal-deploy.csr | /usr/bin/cfssljson -bare /etc/kubernetes/pki/dse__wdqs-internal-deploy\n\n-    environment => ['GODEBUG=x509ignoreCN=0']\n-    unless      => /usr/bin/openssl x509 -in /etc/kubernetes/pki/dse__wdqs-internal-deploy.pem -checkend 952200\n-    require     => Exec[Generate cert dse__wdqs-internal-deploy]\n"}, {"resource": "Exec[create chained cert /etc/kubernetes/pki/dse__wdqs-next.chain.pem]", "parameters": "--- Exec[create chained cert /etc/kubernetes/pki/dse__wdqs-next.chain.pem].orig\n+++ Exec[create chained cert /etc/kubernetes/pki/dse__wdqs-next.chain.pem]\n\n+    command   => /bin/cat /etc/kubernetes/pki/dse__wdqs-next.pem /etc/kubernetes/pki/dse__wdqs-next.chain.pem > /etc/kubernetes/pki/dse__wdqs-next.chained.pem\n+    subscribe => ['Exec[renew certificate - dse__wdqs-next]', 'File[/etc/kubernetes/pki/dse__wdqs-next.chain.pem]', 'File[/etc/kubernetes/pki/dse__wdqs-next.pem]']\n+    require   => Exec[Generate cert dse__wdqs-next refresh on intermediate ca change]\n+    unless    => /usr/bin/test \"$(/bin/cat /etc/kubernetes/pki/dse__wdqs-next.pem /etc/kubernetes/pki/dse__wdqs-next.chain.pem | sha512sum)\" == \"$(/bin/cat /etc/kubernetes/pki/dse__wdqs-next.chained.pem | sha512sum)\"\n\n"}, {"resource": "File[/etc/cfssl/csr/dse__wdqs-internal-next-deploy.csr]", "content": "--- /etc/cfssl/csr/dse__wdqs-internal-next-deploy.csr.orig\n+++ /etc/cfssl/csr/dse__wdqs-internal-next-deploy.csr\n@@ -1,26 +0,0 @@\n-{\n-  \"CN\": \"wdqs-internal-next-deploy\",\n-  \"hosts\": [\n-    \"wdqs-internal-next-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__wdqs-internal-next-deploy.csr].orig\n+++ File[/etc/cfssl/csr/dse__wdqs-internal-next-deploy.csr]\n\n-    mode   => 0400\n-    owner  => root\n-    group  => root\n-    ensure => file\n"}, {"resource": "File[/etc/kubernetes/pki/dse__wdqs-internal-next.chained.pem]", "parameters": "--- File[/etc/kubernetes/pki/dse__wdqs-internal-next.chained.pem].orig\n+++ File[/etc/kubernetes/pki/dse__wdqs-internal-next.chained.pem]\n\n-    owner   => mwdeploy\n-    require => Exec[create chained cert /etc/kubernetes/pki/dse__wdqs-internal-next.chain.pem]\n-    group   => deployment\n-    ensure  => file\n"}, {"resource": "File[/etc/kubernetes/pki/dse__wdqs-internal-deploy.chain.pem]", "parameters": "--- File[/etc/kubernetes/pki/dse__wdqs-internal-deploy.chain.pem].orig\n+++ File[/etc/kubernetes/pki/dse__wdqs-internal-deploy.chain.pem]\n\n-    source => puppet:///modules/profile/pki/intermediates/dse-cert.pem\n-    owner  => mwdeploy\n-    mode   => 0440\n-    group  => deployment\n-    ensure => file\n"}, {"resource": "File[/etc/cfssl/csr/dse__wdqs-external-next.csr]", "content": "--- /etc/cfssl/csr/dse__wdqs-external-next.csr.orig\n+++ /etc/cfssl/csr/dse__wdqs-external-next.csr\n@@ -1,19 +0,0 @@\n-{\n-  \"CN\": \"wdqs-external-next\",\n-  \"hosts\": [\n-    \"wdqs-external-next\"\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__wdqs-external-next.csr].orig\n+++ File[/etc/cfssl/csr/dse__wdqs-external-next.csr]\n\n-    mode   => 0400\n-    owner  => root\n-    group  => root\n-    ensure => file\n"}, {"resource": "File[/etc/kubernetes/pki/dse__wdqs-deploy.chain.pem]", "parameters": "--- File[/etc/kubernetes/pki/dse__wdqs-deploy.chain.pem].orig\n+++ File[/etc/kubernetes/pki/dse__wdqs-deploy.chain.pem]\n\n+    source => puppet:///modules/profile/pki/intermediates/dse-cert.pem\n+    owner  => mwdeploy\n+    mode   => 0440\n+    group  => deployment\n+    ensure => file\n"}, {"resource": "Exec[create chained cert /etc/kubernetes/pki/dse__wdqs-external-next.chain.pem]", "parameters": "--- Exec[create chained cert /etc/kubernetes/pki/dse__wdqs-external-next.chain.pem].orig\n+++ Exec[create chained cert /etc/kubernetes/pki/dse__wdqs-external-next.chain.pem]\n\n-    command   => /bin/cat /etc/kubernetes/pki/dse__wdqs-external-next.pem /etc/kubernetes/pki/dse__wdqs-external-next.chain.pem > /etc/kubernetes/pki/dse__wdqs-external-next.chained.pem\n-    subscribe => ['Exec[renew certificate - dse__wdqs-external-next]', 'File[/etc/kubernetes/pki/dse__wdqs-external-next.chain.pem]', 'File[/etc/kubernetes/pki/dse__wdqs-external-next.pem]']\n-    require   => Exec[Generate cert dse__wdqs-external-next refresh on intermediate ca change]\n-    unless    => /usr/bin/test \"$(/bin/cat /etc/kubernetes/pki/dse__wdqs-external-next.pem /etc/kubernetes/pki/dse__wdqs-external-next.chain.pem | sha512sum)\" == \"$(/bin/cat /etc/kubernetes/pki/dse__wdqs-external-next.chained.pem | sha512sum)\"\n\n"}, {"resource": "File[/etc/kubernetes/pki/dse__wdqs-external-next-deploy.csr]", "parameters": "--- File[/etc/kubernetes/pki/dse__wdqs-external-next-deploy.csr].orig\n+++ File[/etc/kubernetes/pki/dse__wdqs-external-next-deploy.csr]\n\n-    mode   => 0440\n-    owner  => mwdeploy\n-    group  => deployment\n-    ensure => file\n"}, {"resource": "Cfssl::Csr[/etc/cfssl/csr/dse__wdqs-next.csr]", "parameters": "--- Cfssl::Csr[/etc/cfssl/csr/dse__wdqs-next.csr].orig\n+++ Cfssl::Csr[/etc/cfssl/csr/dse__wdqs-next.csr]\n\n+    key         => {'algo': 'ecdsa', 'size': 256}\n+    hosts       => []\n+    names       => [{'organisation': 'view'}]\n+    common_name => wdqs-next\n+    ensure      => present\n"}, {"resource": "K8s::Kubeconfig[/etc/kubernetes/wdqs-next-deploy-dse-k8s-eqiad.config]", "parameters": "--- K8s::Kubeconfig[/etc/kubernetes/wdqs-next-deploy-dse-k8s-eqiad.config].orig\n+++ K8s::Kubeconfig[/etc/kubernetes/wdqs-next-deploy-dse-k8s-eqiad.config]\n\n+    master_host => dse-k8s-ctrl.svc.eqiad.wmnet\n+    require     => ['Class[K8s::Base_dirs]']\n+    owner       => mwdeploy\n+    namespace   => wdqs-next\n+    mode        => 0640\n+    ensure      => present\n+    username    => wdqs-next-deploy\n+    auth_cert   => {'cert': '/etc/kubernetes/pki/dse__wdqs-next-deploy.pem', 'key': '/etc/kubernetes/pki/dse__wdqs-next-deploy-key.pem', 'chain': '/etc/kubernetes/pki/dse__wdqs-next-deploy.chain.pem', 'chained': '/etc/kubernetes/pki/dse__wdqs-next-deploy.chained.pem'}\n+    group       => deployment\n"}, {"resource": "File[/etc/kubernetes/pki/dse__wdqs.pem]", "parameters": "--- File[/etc/kubernetes/pki/dse__wdqs.pem].orig\n+++ File[/etc/kubernetes/pki/dse__wdqs.pem]\n\n+    mode   => 0440\n+    owner  => mwdeploy\n+    group  => deployment\n+    ensure => file\n"}, {"resource": "K8s::Kubeconfig[/etc/kubernetes/wdqs-deploy-dse-k8s-eqiad.config]", "parameters": "--- K8s::Kubeconfig[/etc/kubernetes/wdqs-deploy-dse-k8s-eqiad.config].orig\n+++ K8s::Kubeconfig[/etc/kubernetes/wdqs-deploy-dse-k8s-eqiad.config]\n\n+    master_host => dse-k8s-ctrl.svc.eqiad.wmnet\n+    require     => ['Class[K8s::Base_dirs]']\n+    owner       => mwdeploy\n+    namespace   => wdqs\n+    mode        => 0640\n+    ensure      => present\n+    username    => wdqs-deploy\n+    auth_cert   => {'cert': '/etc/kubernetes/pki/dse__wdqs-deploy.pem', 'key': '/etc/kubernetes/pki/dse__wdqs-deploy-key.pem', 'chain': '/etc/kubernetes/pki/dse__wdqs-deploy.chain.pem', 'chained': '/etc/kubernetes/pki/dse__wdqs-deploy.chained.pem'}\n+    group       => deployment\n"}, {"resource": "Exec[create chained cert /etc/kubernetes/pki/dse__wdqs-external-deploy.chain.pem]", "parameters": "--- Exec[create chained cert /etc/kubernetes/pki/dse__wdqs-external-deploy.chain.pem].orig\n+++ Exec[create chained cert /etc/kubernetes/pki/dse__wdqs-external-deploy.chain.pem]\n\n-    command   => /bin/cat /etc/kubernetes/pki/dse__wdqs-external-deploy.pem /etc/kubernetes/pki/dse__wdqs-external-deploy.chain.pem > /etc/kubernetes/pki/dse__wdqs-external-deploy.chained.pem\n-    subscribe => ['Exec[renew certificate - dse__wdqs-external-deploy]', 'File[/etc/kubernetes/pki/dse__wdqs-external-deploy.chain.pem]', 'File[/etc/kubernetes/pki/dse__wdqs-external-deploy.pem]']\n-    require   => Exec[Generate cert dse__wdqs-external-deploy refresh on intermediate ca change]\n-    unless    => /usr/bin/test \"$(/bin/cat /etc/kubernetes/pki/dse__wdqs-external-deploy.pem /etc/kubernetes/pki/dse__wdqs-external-deploy.chain.pem | sha512sum)\" == \"$(/bin/cat /etc/kubernetes/pki/dse__wdqs-external-deploy.chained.pem | sha512sum)\"\n\n"}, {"resource": "File[/etc/kubernetes/wdqs-internal-deploy-dse-k8s-eqiad.config]", "content": "--- /etc/kubernetes/wdqs-internal-deploy-dse-k8s-eqiad.config.orig\n+++ /etc/kubernetes/wdqs-internal-deploy-dse-k8s-eqiad.config\n@@ -1,19 +0,0 @@\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: wdqs-internal-deploy\n-    namespace: wdqs-internal\n-clusters:\n-- name: default-cluster\n-  cluster:\n-    server: https://dse-k8s-ctrl.svc.eqiad.wmnet:6443\n-users:\n-- name: wdqs-internal-deploy\n-  user:\n-    client-certificate: /etc/kubernetes/pki/dse__wdqs-internal-deploy.pem\n-    client-key: /etc/kubernetes/pki/dse__wdqs-internal-deploy-key.pem", "parameters": "--- File[/etc/kubernetes/wdqs-internal-deploy-dse-k8s-eqiad.config].orig\n+++ File[/etc/kubernetes/wdqs-internal-deploy-dse-k8s-eqiad.config]\n\n-    mode   => 0640\n-    owner  => mwdeploy\n-    group  => deployment\n-    ensure => present\n"}, {"resource": "File[/etc/kubernetes/wdqs-internal-dse-k8s-eqiad.config]", "content": "--- /etc/kubernetes/wdqs-internal-dse-k8s-eqiad.config.orig\n+++ /etc/kubernetes/wdqs-internal-dse-k8s-eqiad.config\n@@ -1,19 +0,0 @@\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: wdqs-internal\n-    namespace: wdqs-internal\n-clusters:\n-- name: default-cluster\n-  cluster:\n-    server: https://dse-k8s-ctrl.svc.eqiad.wmnet:6443\n-users:\n-- name: wdqs-internal\n-  user:\n-    client-certificate: /etc/kubernetes/pki/dse__wdqs-internal.pem\n-    client-key: /etc/kubernetes/pki/dse__wdqs-internal-key.pem", "parameters": "--- File[/etc/kubernetes/wdqs-internal-dse-k8s-eqiad.config].orig\n+++ File[/etc/kubernetes/wdqs-internal-dse-k8s-eqiad.config]\n\n-    mode   => 0640\n-    owner  => mwdeploy\n-    group  => deployment\n-    ensure => present\n"}, {"resource": "Exec[Generate cert dse__wdqs-internal-next-deploy refresh on intermediate ca change]", "parameters": "--- Exec[Generate cert dse__wdqs-internal-next-deploy refresh on intermediate ca change].orig\n+++ Exec[Generate cert dse__wdqs-internal-next-deploy refresh on intermediate ca change]\n\n-    refreshonly => True\n-    require     => Cfssl::Csr[/etc/cfssl/csr/dse__wdqs-internal-next-deploy.csr]\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__wdqs-internal-next-deploy.csr | /usr/bin/cfssljson -bare /etc/kubernetes/pki/dse__wdqs-internal-next-deploy\n\n-    subscribe   => File[/etc/kubernetes/pki/dse__wdqs-internal-next-deploy.chain.pem]\n"}, {"resource": "Cfssl::Csr[/etc/cfssl/csr/dse__wdqs-external.csr]", "parameters": "--- Cfssl::Csr[/etc/cfssl/csr/dse__wdqs-external.csr].orig\n+++ Cfssl::Csr[/etc/cfssl/csr/dse__wdqs-external.csr]\n\n-    key         => {'algo': 'ecdsa', 'size': 256}\n-    hosts       => []\n-    names       => [{'organisation': 'view'}]\n-    common_name => wdqs-external\n-    ensure      => present\n"}, {"resource": "File[/etc/kubernetes/pki/dse__wdqs-external.csr]", "parameters": "--- File[/etc/kubernetes/pki/dse__wdqs-external.csr].orig\n+++ File[/etc/kubernetes/pki/dse__wdqs-external.csr]\n\n-    mode   => 0440\n-    owner  => mwdeploy\n-    group  => deployment\n-    ensure => file\n"}, {"resource": "Exec[create chained cert /etc/kubernetes/pki/dse__wdqs-deploy.chain.pem]", "parameters": "--- Exec[create chained cert /etc/kubernetes/pki/dse__wdqs-deploy.chain.pem].orig\n+++ Exec[create chained cert /etc/kubernetes/pki/dse__wdqs-deploy.chain.pem]\n\n+    command   => /bin/cat /etc/kubernetes/pki/dse__wdqs-deploy.pem /etc/kubernetes/pki/dse__wdqs-deploy.chain.pem > /etc/kubernetes/pki/dse__wdqs-deploy.chained.pem\n+    subscribe => ['Exec[renew certificate - dse__wdqs-deploy]', 'File[/etc/kubernetes/pki/dse__wdqs-deploy.chain.pem]', 'File[/etc/kubernetes/pki/dse__wdqs-deploy.pem]']\n+    require   => Exec[Generate cert dse__wdqs-deploy refresh on intermediate ca change]\n+    unless    => /usr/bin/test \"$(/bin/cat /etc/kubernetes/pki/dse__wdqs-deploy.pem /etc/kubernetes/pki/dse__wdqs-deploy.chain.pem | sha512sum)\" == \"$(/bin/cat /etc/kubernetes/pki/dse__wdqs-deploy.chained.pem | sha512sum)\"\n\n"}, {"resource": "Cfssl::Csr[/etc/cfssl/csr/dse__wdqs-external-next.csr]", "parameters": "--- Cfssl::Csr[/etc/cfssl/csr/dse__wdqs-external-next.csr].orig\n+++ Cfssl::Csr[/etc/cfssl/csr/dse__wdqs-external-next.csr]\n\n-    key         => {'algo': 'ecdsa', 'size': 256}\n-    hosts       => []\n-    names       => [{'organisation': 'view'}]\n-    common_name => wdqs-external-next\n-    ensure      => present\n"}, {"resource": "File[/etc/kubernetes/pki/dse__wdqs-external-next-key.pem]", "parameters": "--- File[/etc/kubernetes/pki/dse__wdqs-external-next-key.pem].orig\n+++ File[/etc/kubernetes/pki/dse__wdqs-external-next-key.pem]\n\n-    show_diff => False\n-    owner     => mwdeploy\n-    mode      => 0440\n-    backup    => False\n-    group     => deployment\n-    ensure    => file\n"}, {"resource": "File[/etc/kubernetes/wdqs-deploy-dse-k8s-eqiad.config]", "content": "--- /etc/kubernetes/wdqs-deploy-dse-k8s-eqiad.config.orig\n+++ /etc/kubernetes/wdqs-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: wdqs-deploy\n+    namespace: wdqs\n+clusters:\n+- name: default-cluster\n+  cluster:\n+    server: https://dse-k8s-ctrl.svc.eqiad.wmnet:6443\n+users:\n+- name: wdqs-deploy\n+  user:\n+    client-certificate: /etc/kubernetes/pki/dse__wdqs-deploy.pem\n+    client-key: /etc/kubernetes/pki/dse__wdqs-deploy-key.pem", "parameters": "--- File[/etc/kubernetes/wdqs-deploy-dse-k8s-eqiad.config].orig\n+++ File[/etc/kubernetes/wdqs-deploy-dse-k8s-eqiad.config]\n\n+    mode   => 0640\n+    owner  => mwdeploy\n+    group  => deployment\n+    ensure => present\n"}, {"resource": "File[/etc/kubernetes/pki/dse__wdqs-internal-next.csr]", "parameters": "--- File[/etc/kubernetes/pki/dse__wdqs-internal-next.csr].orig\n+++ File[/etc/kubernetes/pki/dse__wdqs-internal-next.csr]\n\n-    mode   => 0440\n-    owner  => mwdeploy\n-    group  => deployment\n-    ensure => file\n"}, {"resource": "K8s::Kubeconfig[/etc/kubernetes/wdqs-dse-k8s-eqiad.config]", "parameters": "--- K8s::Kubeconfig[/etc/kubernetes/wdqs-dse-k8s-eqiad.config].orig\n+++ K8s::Kubeconfig[/etc/kubernetes/wdqs-dse-k8s-eqiad.config]\n\n+    master_host => dse-k8s-ctrl.svc.eqiad.wmnet\n+    require     => ['Class[K8s::Base_dirs]']\n+    owner       => mwdeploy\n+    namespace   => wdqs\n+    mode        => 0640\n+    ensure      => present\n+    username    => wdqs\n+    auth_cert   => {'cert': '/etc/kubernetes/pki/dse__wdqs.pem', 'key': '/etc/kubernetes/pki/dse__wdqs-key.pem', 'chain': '/etc/kubernetes/pki/dse__wdqs.chain.pem', 'chained': '/etc/kubernetes/pki/dse__wdqs.chained.pem'}\n+    group       => deployment\n"}, {"resource": "File[/etc/helmfile-defaults/private/dse-k8s_services/wdqs-next]", "parameters": "--- File[/etc/helmfile-defaults/private/dse-k8s_services/wdqs-next].orig\n+++ File[/etc/helmfile-defaults/private/dse-k8s_services/wdqs-next]\n\n+    recurse => True\n+    owner   => mwdeploy\n+    mode    => 0751\n+    force   => True\n+    group   => deployment\n+    ensure  => directory\n"}, {"resource": "Cfssl::Csr[/etc/cfssl/csr/dse__wdqs-external-next-deploy.csr]", "parameters": "--- Cfssl::Csr[/etc/cfssl/csr/dse__wdqs-external-next-deploy.csr].orig\n+++ Cfssl::Csr[/etc/cfssl/csr/dse__wdqs-external-next-deploy.csr]\n\n-    key         => {'algo': 'ecdsa', 'size': 256}\n-    hosts       => []\n-    names       => [{'organisation': 'view'}, {'organisation': 'deploy'}]\n-    common_name => wdqs-external-next-deploy\n-    ensure      => present\n"}, {"resource": "K8s::Kubeconfig[/etc/kubernetes/wdqs-internal-dse-k8s-eqiad.config]", "parameters": "--- K8s::Kubeconfig[/etc/kubernetes/wdqs-internal-dse-k8s-eqiad.config].orig\n+++ K8s::Kubeconfig[/etc/kubernetes/wdqs-internal-dse-k8s-eqiad.config]\n\n-    master_host => dse-k8s-ctrl.svc.eqiad.wmnet\n-    require     => ['Class[K8s::Base_dirs]']\n-    owner       => mwdeploy\n-    namespace   => wdqs-internal\n-    mode        => 0640\n-    ensure      => present\n-    username    => wdqs-internal\n-    auth_cert   => {'cert': '/etc/kubernetes/pki/dse__wdqs-internal.pem', 'key': '/etc/kubernetes/pki/dse__wdqs-internal-key.pem', 'chain': '/etc/kubernetes/pki/dse__wdqs-internal.chain.pem', 'chained': '/etc/kubernetes/pki/dse__wdqs-internal.chained.pem'}\n-    group       => deployment\n"}, {"resource": "File[/etc/kubernetes/pki/dse__wdqs.chained.pem]", "parameters": "--- File[/etc/kubernetes/pki/dse__wdqs.chained.pem].orig\n+++ File[/etc/kubernetes/pki/dse__wdqs.chained.pem]\n\n+    owner   => mwdeploy\n+    require => Exec[create chained cert /etc/kubernetes/pki/dse__wdqs.chain.pem]\n+    group   => deployment\n+    ensure  => file\n"}, {"resource": "File[/etc/helmfile-defaults/private/dse-k8s_services/wdqs]", "parameters": "--- File[/etc/helmfile-defaults/private/dse-k8s_services/wdqs].orig\n+++ File[/etc/helmfile-defaults/private/dse-k8s_services/wdqs]\n\n+    recurse => True\n+    owner   => mwdeploy\n+    mode    => 0751\n+    force   => True\n+    group   => deployment\n+    ensure  => directory\n"}, {"resource": "Exec[renew certificate - dse__wdqs-next-deploy]", "parameters": "--- Exec[renew certificate - dse__wdqs-next-deploy].orig\n+++ Exec[renew certificate - dse__wdqs-next-deploy]\n\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__wdqs-next-deploy.csr | /usr/bin/cfssljson -bare /etc/kubernetes/pki/dse__wdqs-next-deploy\n\n+    environment => ['GODEBUG=x509ignoreCN=0']\n+    unless      => /usr/bin/openssl x509 -in /etc/kubernetes/pki/dse__wdqs-next-deploy.pem -checkend 952200\n+    require     => Exec[Generate cert dse__wdqs-next-deploy]\n"}, {"resource": "Exec[create chained cert /etc/kubernetes/pki/dse__wdqs-internal-deploy.chain.pem]", "parameters": "--- Exec[create chained cert /etc/kubernetes/pki/dse__wdqs-internal-deploy.chain.pem].orig\n+++ Exec[create chained cert /etc/kubernetes/pki/dse__wdqs-internal-deploy.chain.pem]\n\n-    command   => /bin/cat /etc/kubernetes/pki/dse__wdqs-internal-deploy.pem /etc/kubernetes/pki/dse__wdqs-internal-deploy.chain.pem > /etc/kubernetes/pki/dse__wdqs-internal-deploy.chained.pem\n-    subscribe => ['Exec[renew certificate - dse__wdqs-internal-deploy]', 'File[/etc/kubernetes/pki/dse__wdqs-internal-deploy.chain.pem]', 'File[/etc/kubernetes/pki/dse__wdqs-internal-deploy.pem]']\n-    require   => Exec[Generate cert dse__wdqs-internal-deploy refresh on intermediate ca change]\n-    unless    => /usr/bin/test \"$(/bin/cat /etc/kubernetes/pki/dse__wdqs-internal-deploy.pem /etc/kubernetes/pki/dse__wdqs-internal-deploy.chain.pem | sha512sum)\" == \"$(/bin/cat /etc/kubernetes/pki/dse__wdqs-internal-deploy.chained.pem | sha512sum)\"\n\n"}, {"resource": "Exec[Generate cert dse__wdqs-deploy refresh on intermediate ca change]", "parameters": "--- Exec[Generate cert dse__wdqs-deploy refresh on intermediate ca change].orig\n+++ Exec[Generate cert dse__wdqs-deploy refresh on intermediate ca change]\n\n+    refreshonly => True\n+    require     => Cfssl::Csr[/etc/cfssl/csr/dse__wdqs-deploy.csr]\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__wdqs-deploy.csr | /usr/bin/cfssljson -bare /etc/kubernetes/pki/dse__wdqs-deploy\n\n+    subscribe   => File[/etc/kubernetes/pki/dse__wdqs-deploy.chain.pem]\n"}, {"resource": "File[/etc/kubernetes/wdqs-external-deploy-dse-k8s-codfw.config]", "content": "--- /etc/kubernetes/wdqs-external-deploy-dse-k8s-codfw.config.orig\n+++ /etc/kubernetes/wdqs-external-deploy-dse-k8s-codfw.config\n@@ -1,19 +0,0 @@\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: wdqs-external-deploy\n-    namespace: wdqs-external\n-clusters:\n-- name: default-cluster\n-  cluster:\n-    server: https://dse-k8s-ctrl.svc.codfw.wmnet:6443\n-users:\n-- name: wdqs-external-deploy\n-  user:\n-    client-certificate: /etc/kubernetes/pki/dse__wdqs-external-deploy.pem\n-    client-key: /etc/kubernetes/pki/dse__wdqs-external-deploy-key.pem", "parameters": "--- File[/etc/kubernetes/wdqs-external-deploy-dse-k8s-codfw.config].orig\n+++ File[/etc/kubernetes/wdqs-external-deploy-dse-k8s-codfw.config]\n\n-    mode   => 0640\n-    owner  => mwdeploy\n-    group  => deployment\n-    ensure => present\n"}, {"resource": "Exec[Generate cert dse__wdqs-external refresh on intermediate ca change]", "parameters": "--- Exec[Generate cert dse__wdqs-external refresh on intermediate ca change].orig\n+++ Exec[Generate cert dse__wdqs-external refresh on intermediate ca change]\n\n-    refreshonly => True\n-    require     => Cfssl::Csr[/etc/cfssl/csr/dse__wdqs-external.csr]\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__wdqs-external.csr | /usr/bin/cfssljson -bare /etc/kubernetes/pki/dse__wdqs-external\n\n-    subscribe   => File[/etc/kubernetes/pki/dse__wdqs-external.chain.pem]\n"}, {"resource": "File[/etc/helmfile-defaults/private/dse-k8s_services/wdqs-external-next]", "parameters": "--- File[/etc/helmfile-defaults/private/dse-k8s_services/wdqs-external-next].orig\n+++ File[/etc/helmfile-defaults/private/dse-k8s_services/wdqs-external-next]\n\n-    recurse => True\n-    owner   => mwdeploy\n-    mode    => 0751\n-    force   => True\n-    group   => deployment\n-    ensure  => directory\n"}, {"resource": "File[/etc/cfssl/csr/dse__wdqs-external.csr]", "content": "--- /etc/cfssl/csr/dse__wdqs-external.csr.orig\n+++ /etc/cfssl/csr/dse__wdqs-external.csr\n@@ -1,19 +0,0 @@\n-{\n-  \"CN\": \"wdqs-external\",\n-  \"hosts\": [\n-    \"wdqs-external\"\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__wdqs-external.csr].orig\n+++ File[/etc/cfssl/csr/dse__wdqs-external.csr]\n\n-    mode   => 0400\n-    owner  => root\n-    group  => root\n-    ensure => file\n"}, {"resource": "Exec[Generate cert dse__wdqs-external-next-deploy refresh]", "parameters": "--- Exec[Generate cert dse__wdqs-external-next-deploy refresh].orig\n+++ Exec[Generate cert dse__wdqs-external-next-deploy refresh]\n\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__wdqs-external-next-deploy.csr | /usr/bin/cfssljson -bare /etc/kubernetes/pki/dse__wdqs-external-next-deploy\n\n-    refreshonly => True\n-    subscribe   => File[/etc/cfssl/csr/dse__wdqs-external-next-deploy.csr]\n-    environment => ['GODEBUG=x509ignoreCN=0']\n"}, {"resource": "File[/etc/kubernetes/pki/dse__wdqs-internal-deploy-key.pem]", "parameters": "--- File[/etc/kubernetes/pki/dse__wdqs-internal-deploy-key.pem].orig\n+++ File[/etc/kubernetes/pki/dse__wdqs-internal-deploy-key.pem]\n\n-    show_diff => False\n-    owner     => mwdeploy\n-    mode      => 0440\n-    backup    => False\n-    group     => deployment\n-    ensure    => file\n"}, {"resource": "File[/etc/kubernetes/pki/dse__wdqs-next-key.pem]", "parameters": "--- File[/etc/kubernetes/pki/dse__wdqs-next-key.pem].orig\n+++ File[/etc/kubernetes/pki/dse__wdqs-next-key.pem]\n\n+    show_diff => False\n+    owner     => mwdeploy\n+    mode      => 0440\n+    backup    => False\n+    group     => deployment\n+    ensure    => file\n"}, {"resource": "Exec[renew certificate - dse__wdqs-next]", "parameters": "--- Exec[renew certificate - dse__wdqs-next].orig\n+++ Exec[renew certificate - dse__wdqs-next]\n\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__wdqs-next.csr | /usr/bin/cfssljson -bare /etc/kubernetes/pki/dse__wdqs-next\n\n+    environment => ['GODEBUG=x509ignoreCN=0']\n+    unless      => /usr/bin/openssl x509 -in /etc/kubernetes/pki/dse__wdqs-next.pem -checkend 952200\n+    require     => Exec[Generate cert dse__wdqs-next]\n"}, {"resource": "File[/etc/kubernetes/pki/dse__wdqs-next.csr]", "parameters": "--- File[/etc/kubernetes/pki/dse__wdqs-next.csr].orig\n+++ File[/etc/kubernetes/pki/dse__wdqs-next.csr]\n\n+    mode   => 0440\n+    owner  => mwdeploy\n+    group  => deployment\n+    ensure => file\n"}, {"resource": "Cfssl::Cert[dse__wdqs-next]", "parameters": "--- Cfssl::Cert[dse__wdqs-next].orig\n+++ Cfssl::Cert[dse__wdqs-next]\n\n+    notify_services => []\n+    renew_seconds   => 952200\n+    names           => [{'organisation': 'view'}]\n+    key             => {'algo': 'ecdsa', 'size': 256}\n+    auto_renew      => True\n+    owner           => mwdeploy\n+    provide_chain   => True\n+    mode            => 0740\n+    common_name     => wdqs-next\n+    label           => dse\n+    ensure          => present\n+    environment     => ['GODEBUG=x509ignoreCN=0']\n+    group           => deployment\n+    outdir          => /etc/kubernetes/pki\n+    before_services => []\n+    hosts           => []\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@@ -76,22 +76,14 @@\n     usernames:\n     - name: opensearch-ttmserver-test\n     - name: opensearch-ttmserver-test-deploy\n-  wdqs-internal:\n-    usernames:\n-    - name: wdqs-internal\n-    - name: wdqs-internal-deploy\n-  wdqs-internal-next:\n-    usernames:\n-    - name: wdqs-internal-next\n-    - name: wdqs-internal-next-deploy\n-  wdqs-external:\n-    usernames:\n-    - name: wdqs-external\n-    - name: wdqs-external-deploy\n-  wdqs-external-next:\n-    usernames:\n-    - name: wdqs-external-next\n-    - name: wdqs-external-next-deploy\n+  wdqs:\n+    usernames:\n+    - name: wdqs\n+    - name: wdqs-deploy\n+  wdqs-next:\n+    usernames:\n+    - name: wdqs-next\n+    - name: wdqs-next-deploy\n   airflow-analytics-product:\n     private_files:\n       group: airflow-deployers"}, {"resource": "Cfssl::Csr[/etc/cfssl/csr/dse__wdqs-deploy.csr]", "parameters": "--- Cfssl::Csr[/etc/cfssl/csr/dse__wdqs-deploy.csr].orig\n+++ Cfssl::Csr[/etc/cfssl/csr/dse__wdqs-deploy.csr]\n\n+    key         => {'algo': 'ecdsa', 'size': 256}\n+    hosts       => []\n+    names       => [{'organisation': 'view'}, {'organisation': 'deploy'}]\n+    common_name => wdqs-deploy\n+    ensure      => present\n"}, {"resource": "File[/etc/kubernetes/pki/dse__wdqs-deploy.pem]", "parameters": "--- File[/etc/kubernetes/pki/dse__wdqs-deploy.pem].orig\n+++ File[/etc/kubernetes/pki/dse__wdqs-deploy.pem]\n\n+    mode   => 0440\n+    owner  => mwdeploy\n+    group  => deployment\n+    ensure => file\n"}, {"resource": "File[/etc/cfssl/csr/dse__wdqs.csr]", "content": "--- /etc/cfssl/csr/dse__wdqs.csr.orig\n+++ /etc/cfssl/csr/dse__wdqs.csr\n@@ -0,0 +1,19 @@\n+{\n+  \"CN\": \"wdqs\",\n+  \"hosts\": [\n+    \"wdqs\"\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__wdqs.csr].orig\n+++ File[/etc/cfssl/csr/dse__wdqs.csr]\n\n+    mode   => 0400\n+    owner  => root\n+    group  => root\n+    ensure => file\n"}, {"resource": "File[/etc/kubernetes/pki/dse__wdqs-internal-next-deploy.csr]", "parameters": "--- File[/etc/kubernetes/pki/dse__wdqs-internal-next-deploy.csr].orig\n+++ File[/etc/kubernetes/pki/dse__wdqs-internal-next-deploy.csr]\n\n-    mode   => 0440\n-    owner  => mwdeploy\n-    group  => deployment\n-    ensure => file\n"}, {"resource": "File[/etc/kubernetes/pki/dse__wdqs-internal-key.pem]", "parameters": "--- File[/etc/kubernetes/pki/dse__wdqs-internal-key.pem].orig\n+++ File[/etc/kubernetes/pki/dse__wdqs-internal-key.pem]\n\n-    show_diff => False\n-    owner     => mwdeploy\n-    mode      => 0440\n-    backup    => False\n-    group     => deployment\n-    ensure    => file\n"}, {"resource": "File[/etc/kubernetes/pki/dse__wdqs-internal.chained.pem]", "parameters": "--- File[/etc/kubernetes/pki/dse__wdqs-internal.chained.pem].orig\n+++ File[/etc/kubernetes/pki/dse__wdqs-internal.chained.pem]\n\n-    owner   => mwdeploy\n-    require => Exec[create chained cert /etc/kubernetes/pki/dse__wdqs-internal.chain.pem]\n-    group   => deployment\n-    ensure  => file\n"}, {"resource": "Cfssl::Csr[/etc/cfssl/csr/dse__wdqs-internal-next-deploy.csr]", "parameters": "--- Cfssl::Csr[/etc/cfssl/csr/dse__wdqs-internal-next-deploy.csr].orig\n+++ Cfssl::Csr[/etc/cfssl/csr/dse__wdqs-internal-next-deploy.csr]\n\n-    key         => {'algo': 'ecdsa', 'size': 256}\n-    hosts       => []\n-    names       => [{'organisation': 'view'}, {'organisation': 'deploy'}]\n-    common_name => wdqs-internal-next-deploy\n-    ensure      => present\n"}, {"resource": "Cfssl::Cert[dse__wdqs-deploy]", "parameters": "--- Cfssl::Cert[dse__wdqs-deploy].orig\n+++ Cfssl::Cert[dse__wdqs-deploy]\n\n+    notify_services => []\n+    renew_seconds   => 952200\n+    names           => [{'organisation': 'view'}, {'organisation': 'deploy'}]\n+    key             => {'algo': 'ecdsa', 'size': 256}\n+    auto_renew      => True\n+    owner           => mwdeploy\n+    provide_chain   => True\n+    mode            => 0740\n+    common_name     => wdqs-deploy\n+    label           => dse\n+    ensure          => present\n+    environment     => ['GODEBUG=x509ignoreCN=0']\n+    group           => deployment\n+    outdir          => /etc/kubernetes/pki\n+    before_services => []\n+    hosts           => []\n"}, {"resource": "Exec[Generate cert dse__wdqs-internal-next refresh on intermediate ca change]", "parameters": "--- Exec[Generate cert dse__wdqs-internal-next refresh on intermediate ca change].orig\n+++ Exec[Generate cert dse__wdqs-internal-next refresh on intermediate ca change]\n\n-    refreshonly => True\n-    require     => Cfssl::Csr[/etc/cfssl/csr/dse__wdqs-internal-next.csr]\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__wdqs-internal-next.csr | /usr/bin/cfssljson -bare /etc/kubernetes/pki/dse__wdqs-internal-next\n\n-    subscribe   => File[/etc/kubernetes/pki/dse__wdqs-internal-next.chain.pem]\n"}, {"resource": "K8s::Kubeconfig[/etc/kubernetes/wdqs-external-dse-k8s-codfw.config]", "parameters": "--- K8s::Kubeconfig[/etc/kubernetes/wdqs-external-dse-k8s-codfw.config].orig\n+++ K8s::Kubeconfig[/etc/kubernetes/wdqs-external-dse-k8s-codfw.config]\n\n-    master_host => dse-k8s-ctrl.svc.codfw.wmnet\n-    require     => ['Class[K8s::Base_dirs]']\n-    owner       => mwdeploy\n-    namespace   => wdqs-external\n-    mode        => 0640\n-    ensure      => present\n-    username    => wdqs-external\n-    auth_cert   => {'cert': '/etc/kubernetes/pki/dse__wdqs-external.pem', 'key': '/etc/kubernetes/pki/dse__wdqs-external-key.pem', 'chain': '/etc/kubernetes/pki/dse__wdqs-external.chain.pem', 'chained': '/etc/kubernetes/pki/dse__wdqs-external.chained.pem'}\n-    group       => deployment\n"}, {"resource": "File[/etc/kubernetes/pki/dse__wdqs-internal-next-deploy.chained.pem]", "parameters": "--- File[/etc/kubernetes/pki/dse__wdqs-internal-next-deploy.chained.pem].orig\n+++ File[/etc/kubernetes/pki/dse__wdqs-internal-next-deploy.chained.pem]\n\n-    owner   => mwdeploy\n-    require => Exec[create chained cert /etc/kubernetes/pki/dse__wdqs-internal-next-deploy.chain.pem]\n-    group   => deployment\n-    ensure  => file\n"}, {"resource": "File[/etc/cfssl/csr/dse__wdqs-internal.csr]", "content": "--- /etc/cfssl/csr/dse__wdqs-internal.csr.orig\n+++ /etc/cfssl/csr/dse__wdqs-internal.csr\n@@ -1,19 +0,0 @@\n-{\n-  \"CN\": \"wdqs-internal\",\n-  \"hosts\": [\n-    \"wdqs-internal\"\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__wdqs-internal.csr].orig\n+++ File[/etc/cfssl/csr/dse__wdqs-internal.csr]\n\n-    mode   => 0400\n-    owner  => root\n-    group  => root\n-    ensure => file\n"}, {"resource": "K8s::Kubeconfig[/etc/kubernetes/wdqs-deploy-dse-k8s-codfw.config]", "parameters": "--- K8s::Kubeconfig[/etc/kubernetes/wdqs-deploy-dse-k8s-codfw.config].orig\n+++ K8s::Kubeconfig[/etc/kubernetes/wdqs-deploy-dse-k8s-codfw.config]\n\n+    master_host => dse-k8s-ctrl.svc.codfw.wmnet\n+    require     => ['Class[K8s::Base_dirs]']\n+    owner       => mwdeploy\n+    namespace   => wdqs\n+    mode        => 0640\n+    ensure      => present\n+    username    => wdqs-deploy\n+    auth_cert   => {'cert': '/etc/kubernetes/pki/dse__wdqs-deploy.pem', 'key': '/etc/kubernetes/pki/dse__wdqs-deploy-key.pem', 'chain': '/etc/kubernetes/pki/dse__wdqs-deploy.chain.pem', 'chained': '/etc/kubernetes/pki/dse__wdqs-deploy.chained.pem'}\n+    group       => deployment\n"}, {"resource": "K8s::Kubeconfig[/etc/kubernetes/wdqs-next-dse-k8s-eqiad.config]", "parameters": "--- K8s::Kubeconfig[/etc/kubernetes/wdqs-next-dse-k8s-eqiad.config].orig\n+++ K8s::Kubeconfig[/etc/kubernetes/wdqs-next-dse-k8s-eqiad.config]\n\n+    master_host => dse-k8s-ctrl.svc.eqiad.wmnet\n+    require     => ['Class[K8s::Base_dirs]']\n+    owner       => mwdeploy\n+    namespace   => wdqs-next\n+    mode        => 0640\n+    ensure      => present\n+    username    => wdqs-next\n+    auth_cert   => {'cert': '/etc/kubernetes/pki/dse__wdqs-next.pem', 'key': '/etc/kubernetes/pki/dse__wdqs-next-key.pem', 'chain': '/etc/kubernetes/pki/dse__wdqs-next.chain.pem', 'chained': '/etc/kubernetes/pki/dse__wdqs-next.chained.pem'}\n+    group       => deployment\n"}, {"resource": "Exec[renew certificate - dse__wdqs-internal]", "parameters": "--- Exec[renew certificate - dse__wdqs-internal].orig\n+++ Exec[renew certificate - dse__wdqs-internal]\n\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__wdqs-internal.csr | /usr/bin/cfssljson -bare /etc/kubernetes/pki/dse__wdqs-internal\n\n-    environment => ['GODEBUG=x509ignoreCN=0']\n-    unless      => /usr/bin/openssl x509 -in /etc/kubernetes/pki/dse__wdqs-internal.pem -checkend 952200\n-    require     => Exec[Generate cert dse__wdqs-internal]\n"}, {"resource": "Exec[create chained cert /etc/kubernetes/pki/dse__wdqs.chain.pem]", "parameters": "--- Exec[create chained cert /etc/kubernetes/pki/dse__wdqs.chain.pem].orig\n+++ Exec[create chained cert /etc/kubernetes/pki/dse__wdqs.chain.pem]\n\n+    command   => /bin/cat /etc/kubernetes/pki/dse__wdqs.pem /etc/kubernetes/pki/dse__wdqs.chain.pem > /etc/kubernetes/pki/dse__wdqs.chained.pem\n+    subscribe => ['Exec[renew certificate - dse__wdqs]', 'File[/etc/kubernetes/pki/dse__wdqs.chain.pem]', 'File[/etc/kubernetes/pki/dse__wdqs.pem]']\n+    require   => Exec[Generate cert dse__wdqs refresh on intermediate ca change]\n+    unless    => /usr/bin/test \"$(/bin/cat /etc/kubernetes/pki/dse__wdqs.pem /etc/kubernetes/pki/dse__wdqs.chain.pem | sha512sum)\" == \"$(/bin/cat /etc/kubernetes/pki/dse__wdqs.chained.pem | sha512sum)\"\n\n"}, {"resource": "Exec[create chained cert /etc/kubernetes/pki/dse__wdqs-next-deploy.chain.pem]", "parameters": "--- Exec[create chained cert /etc/kubernetes/pki/dse__wdqs-next-deploy.chain.pem].orig\n+++ Exec[create chained cert /etc/kubernetes/pki/dse__wdqs-next-deploy.chain.pem]\n\n+    command   => /bin/cat /etc/kubernetes/pki/dse__wdqs-next-deploy.pem /etc/kubernetes/pki/dse__wdqs-next-deploy.chain.pem > /etc/kubernetes/pki/dse__wdqs-next-deploy.chained.pem\n+    subscribe => ['Exec[renew certificate - dse__wdqs-next-deploy]', 'File[/etc/kubernetes/pki/dse__wdqs-next-deploy.chain.pem]', 'File[/etc/kubernetes/pki/dse__wdqs-next-deploy.pem]']\n+    require   => Exec[Generate cert dse__wdqs-next-deploy refresh on intermediate ca change]\n+    unless    => /usr/bin/test \"$(/bin/cat /etc/kubernetes/pki/dse__wdqs-next-deploy.pem /etc/kubernetes/pki/dse__wdqs-next-deploy.chain.pem | sha512sum)\" == \"$(/bin/cat /etc/kubernetes/pki/dse__wdqs-next-deploy.chained.pem | sha512sum)\"\n\n"}, {"resource": "File[/etc/kubernetes/pki/dse__wdqs.chain.pem]", "parameters": "--- File[/etc/kubernetes/pki/dse__wdqs.chain.pem].orig\n+++ File[/etc/kubernetes/pki/dse__wdqs.chain.pem]\n\n+    source => puppet:///modules/profile/pki/intermediates/dse-cert.pem\n+    owner  => mwdeploy\n+    mode   => 0440\n+    group  => deployment\n+    ensure => file\n"}, {"resource": "File[/etc/kubernetes/pki/dse__wdqs-external-deploy.pem]", "parameters": "--- File[/etc/kubernetes/pki/dse__wdqs-external-deploy.pem].orig\n+++ File[/etc/kubernetes/pki/dse__wdqs-external-deploy.pem]\n\n-    mode   => 0440\n-    owner  => mwdeploy\n-    group  => deployment\n-    ensure => file\n"}, {"resource": "File[/etc/kubernetes/pki/dse__wdqs-external-next-deploy-key.pem]", "parameters": "--- File[/etc/kubernetes/pki/dse__wdqs-external-next-deploy-key.pem].orig\n+++ File[/etc/kubernetes/pki/dse__wdqs-external-next-deploy-key.pem]\n\n-    show_diff => False\n-    owner     => mwdeploy\n-    mode      => 0440\n-    backup    => False\n-    group     => deployment\n-    ensure    => file\n"}, {"resource": "Exec[Generate cert dse__wdqs-internal-next-deploy]", "parameters": "--- Exec[Generate cert dse__wdqs-internal-next-deploy].orig\n+++ Exec[Generate cert dse__wdqs-internal-next-deploy]\n\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__wdqs-internal-next-deploy.csr | /usr/bin/cfssljson -bare /etc/kubernetes/pki/dse__wdqs-internal-next-deploy\n\n-    environment => ['GODEBUG=x509ignoreCN=0']\n-    unless      => /usr/bin/test \"$(/usr/bin/openssl x509 -in /etc/kubernetes/pki/dse__wdqs-internal-next-deploy.pem -noout -pubkey 2>&1)\" == \"$(/usr/bin/openssl pkey -pubout -in /etc/kubernetes/pki/dse__wdqs-internal-next-deploy-key.pem 2>&1)\"\n\n-    require     => Cfssl::Csr[/etc/cfssl/csr/dse__wdqs-internal-next-deploy.csr]\n"}, {"resource": "Cfssl::Cert[dse__wdqs-internal-next]", "parameters": "--- Cfssl::Cert[dse__wdqs-internal-next].orig\n+++ Cfssl::Cert[dse__wdqs-internal-next]\n\n-    notify_services => []\n-    renew_seconds   => 952200\n-    names           => [{'organisation': 'view'}]\n-    key             => {'algo': 'ecdsa', 'size': 256}\n-    auto_renew      => True\n-    owner           => mwdeploy\n-    provide_chain   => True\n-    mode            => 0740\n-    common_name     => wdqs-internal-next\n-    label           => dse\n-    ensure          => present\n-    environment     => ['GODEBUG=x509ignoreCN=0']\n-    group           => deployment\n-    outdir          => /etc/kubernetes/pki\n-    before_services => []\n-    hosts           => []\n"}, {"resource": "Cfssl::Csr[/etc/cfssl/csr/dse__wdqs-internal.csr]", "parameters": "--- Cfssl::Csr[/etc/cfssl/csr/dse__wdqs-internal.csr].orig\n+++ Cfssl::Csr[/etc/cfssl/csr/dse__wdqs-internal.csr]\n\n-    key         => {'algo': 'ecdsa', 'size': 256}\n-    hosts       => []\n-    names       => [{'organisation': 'view'}]\n-    common_name => wdqs-internal\n-    ensure      => present\n"}, {"resource": "Exec[Generate cert dse__wdqs-next]", "parameters": "--- Exec[Generate cert dse__wdqs-next].orig\n+++ Exec[Generate cert dse__wdqs-next]\n\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__wdqs-next.csr | /usr/bin/cfssljson -bare /etc/kubernetes/pki/dse__wdqs-next\n\n+    environment => ['GODEBUG=x509ignoreCN=0']\n+    unless      => /usr/bin/test \"$(/usr/bin/openssl x509 -in /etc/kubernetes/pki/dse__wdqs-next.pem -noout -pubkey 2>&1)\" == \"$(/usr/bin/openssl pkey -pubout -in /etc/kubernetes/pki/dse__wdqs-next-key.pem 2>&1)\"\n\n+    require     => Cfssl::Csr[/etc/cfssl/csr/dse__wdqs-next.csr]\n"}, {"resource": "File[/etc/kubernetes/pki/dse__wdqs-internal-next-deploy-key.pem]", "parameters": "--- File[/etc/kubernetes/pki/dse__wdqs-internal-next-deploy-key.pem].orig\n+++ File[/etc/kubernetes/pki/dse__wdqs-internal-next-deploy-key.pem]\n\n-    show_diff => False\n-    owner     => mwdeploy\n-    mode      => 0440\n-    backup    => False\n-    group     => deployment\n-    ensure    => file\n"}, {"resource": "File[/etc/kubernetes/pki/dse__wdqs-internal-next.chain.pem]", "parameters": "--- File[/etc/kubernetes/pki/dse__wdqs-internal-next.chain.pem].orig\n+++ File[/etc/kubernetes/pki/dse__wdqs-internal-next.chain.pem]\n\n-    source => puppet:///modules/profile/pki/intermediates/dse-cert.pem\n-    owner  => mwdeploy\n-    mode   => 0440\n-    group  => deployment\n-    ensure => file\n"}, {"resource": "K8s::Kubeconfig[/etc/kubernetes/wdqs-external-deploy-dse-k8s-eqiad.config]", "parameters": "--- K8s::Kubeconfig[/etc/kubernetes/wdqs-external-deploy-dse-k8s-eqiad.config].orig\n+++ K8s::Kubeconfig[/etc/kubernetes/wdqs-external-deploy-dse-k8s-eqiad.config]\n\n-    master_host => dse-k8s-ctrl.svc.eqiad.wmnet\n-    require     => ['Class[K8s::Base_dirs]']\n-    owner       => mwdeploy\n-    namespace   => wdqs-external\n-    mode        => 0640\n-    ensure      => present\n-    username    => wdqs-external-deploy\n-    auth_cert   => {'cert': '/etc/kubernetes/pki/dse__wdqs-external-deploy.pem', 'key': '/etc/kubernetes/pki/dse__wdqs-external-deploy-key.pem', 'chain': '/etc/kubernetes/pki/dse__wdqs-external-deploy.chain.pem', 'chained': '/etc/kubernetes/pki/dse__wdqs-external-deploy.chained.pem'}\n-    group       => deployment\n"}, {"resource": "Exec[Generate cert dse__wdqs-external-deploy refresh on intermediate ca change]", "parameters": "--- Exec[Generate cert dse__wdqs-external-deploy refresh on intermediate ca change].orig\n+++ Exec[Generate cert dse__wdqs-external-deploy refresh on intermediate ca change]\n\n-    refreshonly => True\n-    require     => Cfssl::Csr[/etc/cfssl/csr/dse__wdqs-external-deploy.csr]\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__wdqs-external-deploy.csr | /usr/bin/cfssljson -bare /etc/kubernetes/pki/dse__wdqs-external-deploy\n\n-    subscribe   => File[/etc/kubernetes/pki/dse__wdqs-external-deploy.chain.pem]\n"}, {"resource": "File[/etc/helmfile-defaults/private/dse-k8s_services/wdqs-external]", "parameters": "--- File[/etc/helmfile-defaults/private/dse-k8s_services/wdqs-external].orig\n+++ File[/etc/helmfile-defaults/private/dse-k8s_services/wdqs-external]\n\n-    recurse => True\n-    owner   => mwdeploy\n-    mode    => 0751\n-    force   => True\n-    group   => deployment\n-    ensure  => directory\n"}, {"resource": "Exec[Generate cert dse__wdqs-external-deploy]", "parameters": "--- Exec[Generate cert dse__wdqs-external-deploy].orig\n+++ Exec[Generate cert dse__wdqs-external-deploy]\n\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__wdqs-external-deploy.csr | /usr/bin/cfssljson -bare /etc/kubernetes/pki/dse__wdqs-external-deploy\n\n-    environment => ['GODEBUG=x509ignoreCN=0']\n-    unless      => /usr/bin/test \"$(/usr/bin/openssl x509 -in /etc/kubernetes/pki/dse__wdqs-external-deploy.pem -noout -pubkey 2>&1)\" == \"$(/usr/bin/openssl pkey -pubout -in /etc/kubernetes/pki/dse__wdqs-external-deploy-key.pem 2>&1)\"\n\n-    require     => Cfssl::Csr[/etc/cfssl/csr/dse__wdqs-external-deploy.csr]\n"}, {"resource": "Exec[renew certificate - dse__wdqs-external-deploy]", "parameters": "--- Exec[renew certificate - dse__wdqs-external-deploy].orig\n+++ Exec[renew certificate - dse__wdqs-external-deploy]\n\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__wdqs-external-deploy.csr | /usr/bin/cfssljson -bare /etc/kubernetes/pki/dse__wdqs-external-deploy\n\n-    environment => ['GODEBUG=x509ignoreCN=0']\n-    unless      => /usr/bin/openssl x509 -in /etc/kubernetes/pki/dse__wdqs-external-deploy.pem -checkend 952200\n-    require     => Exec[Generate cert dse__wdqs-external-deploy]\n"}, {"resource": "File[/etc/kubernetes/pki/dse__wdqs-external-next.pem]", "parameters": "--- File[/etc/kubernetes/pki/dse__wdqs-external-next.pem].orig\n+++ File[/etc/kubernetes/pki/dse__wdqs-external-next.pem]\n\n-    mode   => 0440\n-    owner  => mwdeploy\n-    group  => deployment\n-    ensure => file\n"}, {"resource": "File[/etc/kubernetes/wdqs-external-next-dse-k8s-eqiad.config]", "content": "--- /etc/kubernetes/wdqs-external-next-dse-k8s-eqiad.config.orig\n+++ /etc/kubernetes/wdqs-external-next-dse-k8s-eqiad.config\n@@ -1,19 +0,0 @@\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: wdqs-external-next\n-    namespace: wdqs-external-next\n-clusters:\n-- name: default-cluster\n-  cluster:\n-    server: https://dse-k8s-ctrl.svc.eqiad.wmnet:6443\n-users:\n-- name: wdqs-external-next\n-  user:\n-    client-certificate: /etc/kubernetes/pki/dse__wdqs-external-next.pem\n-    client-key: /etc/kubernetes/pki/dse__wdqs-external-next-key.pem", "parameters": "--- File[/etc/kubernetes/wdqs-external-next-dse-k8s-eqiad.config].orig\n+++ File[/etc/kubernetes/wdqs-external-next-dse-k8s-eqiad.config]\n\n-    mode   => 0640\n-    owner  => mwdeploy\n-    group  => deployment\n-    ensure => present\n"}, {"resource": "File[/etc/kubernetes/wdqs-external-deploy-dse-k8s-eqiad.config]", "content": "--- /etc/kubernetes/wdqs-external-deploy-dse-k8s-eqiad.config.orig\n+++ /etc/kubernetes/wdqs-external-deploy-dse-k8s-eqiad.config\n@@ -1,19 +0,0 @@\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: wdqs-external-deploy\n-    namespace: wdqs-external\n-clusters:\n-- name: default-cluster\n-  cluster:\n-    server: https://dse-k8s-ctrl.svc.eqiad.wmnet:6443\n-users:\n-- name: wdqs-external-deploy\n-  user:\n-    client-certificate: /etc/kubernetes/pki/dse__wdqs-external-deploy.pem\n-    client-key: /etc/kubernetes/pki/dse__wdqs-external-deploy-key.pem", "parameters": "--- File[/etc/kubernetes/wdqs-external-deploy-dse-k8s-eqiad.config].orig\n+++ File[/etc/kubernetes/wdqs-external-deploy-dse-k8s-eqiad.config]\n\n-    mode   => 0640\n-    owner  => mwdeploy\n-    group  => deployment\n-    ensure => present\n"}, {"resource": "File[/etc/helmfile-defaults/private/dse-k8s_services/wdqs-internal]", "parameters": "--- File[/etc/helmfile-defaults/private/dse-k8s_services/wdqs-internal].orig\n+++ File[/etc/helmfile-defaults/private/dse-k8s_services/wdqs-internal]\n\n-    recurse => True\n-    owner   => mwdeploy\n-    mode    => 0751\n-    force   => True\n-    group   => deployment\n-    ensure  => directory\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'}]}, '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'}]}, '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'}]}, 'kafka-ui': {'usernames': [{'name': 'kafka-ui'}, {'name': 'kafka-ui-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'}]}, 'wdqs-internal': {'usernames': [{'name': 'wdqs-internal'}, {'name': 'wdqs-internal-deploy'}]}, 'wdqs-internal-next': {'usernames': [{'name': 'wdqs-internal-next'}, {'name': 'wdqs-internal-next-deploy'}]}, 'wdqs-external': {'usernames': [{'name': 'wdqs-external'}, {'name': 'wdqs-external-deploy'}]}, 'wdqs-external-next': {'usernames': [{'name': 'wdqs-external-next'}, {'name': 'wdqs-external-next-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'}]}, 'eventstreams-internal': {'usernames': [{'name': 'eventstreams-internal'}, {'name': 'eventstreams-internal-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'}]}, 'webrequest-page-view': {'usernames': [{'name': 'webrequest-page-view'}, {'name': 'webrequest-page-view-deploy'}]}, 'webrequest-page-view-next': {'usernames': [{'name': 'webrequest-page-view-next'}, {'name': 'webrequest-page-view-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'}]}, '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'}]}, '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'}]}, 'kafka-ui': {'usernames': [{'name': 'kafka-ui'}, {'name': 'kafka-ui-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'}]}, 'wdqs': {'usernames': [{'name': 'wdqs'}, {'name': 'wdqs-deploy'}]}, 'wdqs-next': {'usernames': [{'name': 'wdqs-next'}, {'name': 'wdqs-next-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'}]}, 'eventstreams-internal': {'usernames': [{'name': 'eventstreams-internal'}, {'name': 'eventstreams-internal-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'}]}, 'webrequest-page-view': {'usernames': [{'name': 'webrequest-page-view'}, {'name': 'webrequest-page-view-deploy'}]}, 'webrequest-page-view-next': {'usernames': [{'name': 'webrequest-page-view-next'}, {'name': 'webrequest-page-view-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": "Exec[Generate cert dse__wdqs-next refresh]", "parameters": "--- Exec[Generate cert dse__wdqs-next refresh].orig\n+++ Exec[Generate cert dse__wdqs-next refresh]\n\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__wdqs-next.csr | /usr/bin/cfssljson -bare /etc/kubernetes/pki/dse__wdqs-next\n\n+    refreshonly => True\n+    subscribe   => File[/etc/cfssl/csr/dse__wdqs-next.csr]\n+    environment => ['GODEBUG=x509ignoreCN=0']\n"}, {"resource": "File[/etc/cfssl/csr/dse__wdqs-external-next-deploy.csr]", "content": "--- /etc/cfssl/csr/dse__wdqs-external-next-deploy.csr.orig\n+++ /etc/cfssl/csr/dse__wdqs-external-next-deploy.csr\n@@ -1,26 +0,0 @@\n-{\n-  \"CN\": \"wdqs-external-next-deploy\",\n-  \"hosts\": [\n-    \"wdqs-external-next-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__wdqs-external-next-deploy.csr].orig\n+++ File[/etc/cfssl/csr/dse__wdqs-external-next-deploy.csr]\n\n-    mode   => 0400\n-    owner  => root\n-    group  => root\n-    ensure => file\n"}, {"resource": "Cfssl::Cert[dse__wdqs-external]", "parameters": "--- Cfssl::Cert[dse__wdqs-external].orig\n+++ Cfssl::Cert[dse__wdqs-external]\n\n-    notify_services => []\n-    renew_seconds   => 952200\n-    names           => [{'organisation': 'view'}]\n-    key             => {'algo': 'ecdsa', 'size': 256}\n-    auto_renew      => True\n-    owner           => mwdeploy\n-    provide_chain   => True\n-    mode            => 0740\n-    common_name     => wdqs-external\n-    label           => dse\n-    ensure          => present\n-    environment     => ['GODEBUG=x509ignoreCN=0']\n-    group           => deployment\n-    outdir          => /etc/kubernetes/pki\n-    before_services => []\n-    hosts           => []\n"}, {"resource": "Exec[Generate cert dse__wdqs refresh]", "parameters": "--- Exec[Generate cert dse__wdqs refresh].orig\n+++ Exec[Generate cert dse__wdqs refresh]\n\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__wdqs.csr | /usr/bin/cfssljson -bare /etc/kubernetes/pki/dse__wdqs\n\n+    refreshonly => True\n+    subscribe   => File[/etc/cfssl/csr/dse__wdqs.csr]\n+    environment => ['GODEBUG=x509ignoreCN=0']\n"}, {"resource": "File[/etc/kubernetes/wdqs-internal-next-dse-k8s-codfw.config]", "content": "--- /etc/kubernetes/wdqs-internal-next-dse-k8s-codfw.config.orig\n+++ /etc/kubernetes/wdqs-internal-next-dse-k8s-codfw.config\n@@ -1,19 +0,0 @@\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: wdqs-internal-next\n-    namespace: wdqs-internal-next\n-clusters:\n-- name: default-cluster\n-  cluster:\n-    server: https://dse-k8s-ctrl.svc.codfw.wmnet:6443\n-users:\n-- name: wdqs-internal-next\n-  user:\n-    client-certificate: /etc/kubernetes/pki/dse__wdqs-internal-next.pem\n-    client-key: /etc/kubernetes/pki/dse__wdqs-internal-next-key.pem", "parameters": "--- File[/etc/kubernetes/wdqs-internal-next-dse-k8s-codfw.config].orig\n+++ File[/etc/kubernetes/wdqs-internal-next-dse-k8s-codfw.config]\n\n-    mode   => 0640\n-    owner  => mwdeploy\n-    group  => deployment\n-    ensure => present\n"}, {"resource": "File[/etc/kubernetes/pki/dse__wdqs-external-deploy.chain.pem]", "parameters": "--- File[/etc/kubernetes/pki/dse__wdqs-external-deploy.chain.pem].orig\n+++ File[/etc/kubernetes/pki/dse__wdqs-external-deploy.chain.pem]\n\n-    source => puppet:///modules/profile/pki/intermediates/dse-cert.pem\n-    owner  => mwdeploy\n-    mode   => 0440\n-    group  => deployment\n-    ensure => file\n"}, {"resource": "File[/etc/kubernetes/pki/dse__wdqs-next.chain.pem]", "parameters": "--- File[/etc/kubernetes/pki/dse__wdqs-next.chain.pem].orig\n+++ File[/etc/kubernetes/pki/dse__wdqs-next.chain.pem]\n\n+    source => puppet:///modules/profile/pki/intermediates/dse-cert.pem\n+    owner  => mwdeploy\n+    mode   => 0440\n+    group  => deployment\n+    ensure => file\n"}, {"resource": "File[/etc/kubernetes/pki/dse__wdqs-internal-deploy.csr]", "parameters": "--- File[/etc/kubernetes/pki/dse__wdqs-internal-deploy.csr].orig\n+++ File[/etc/kubernetes/pki/dse__wdqs-internal-deploy.csr]\n\n-    mode   => 0440\n-    owner  => mwdeploy\n-    group  => deployment\n-    ensure => file\n"}, {"resource": "File[/etc/kubernetes/pki/dse__wdqs-next-deploy.chained.pem]", "parameters": "--- File[/etc/kubernetes/pki/dse__wdqs-next-deploy.chained.pem].orig\n+++ File[/etc/kubernetes/pki/dse__wdqs-next-deploy.chained.pem]\n\n+    owner   => mwdeploy\n+    require => Exec[create chained cert /etc/kubernetes/pki/dse__wdqs-next-deploy.chain.pem]\n+    group   => deployment\n+    ensure  => file\n"}, {"resource": "K8s::Kubeconfig[/etc/kubernetes/wdqs-internal-deploy-dse-k8s-codfw.config]", "parameters": "--- K8s::Kubeconfig[/etc/kubernetes/wdqs-internal-deploy-dse-k8s-codfw.config].orig\n+++ K8s::Kubeconfig[/etc/kubernetes/wdqs-internal-deploy-dse-k8s-codfw.config]\n\n-    master_host => dse-k8s-ctrl.svc.codfw.wmnet\n-    require     => ['Class[K8s::Base_dirs]']\n-    owner       => mwdeploy\n-    namespace   => wdqs-internal\n-    mode        => 0640\n-    ensure      => present\n-    username    => wdqs-internal-deploy\n-    auth_cert   => {'cert': '/etc/kubernetes/pki/dse__wdqs-internal-deploy.pem', 'key': '/etc/kubernetes/pki/dse__wdqs-internal-deploy-key.pem', 'chain': '/etc/kubernetes/pki/dse__wdqs-internal-deploy.chain.pem', 'chained': '/etc/kubernetes/pki/dse__wdqs-internal-deploy.chained.pem'}\n-    group       => deployment\n"}, {"resource": "Cfssl::Cert[dse__wdqs-external-next-deploy]", "parameters": "--- Cfssl::Cert[dse__wdqs-external-next-deploy].orig\n+++ Cfssl::Cert[dse__wdqs-external-next-deploy]\n\n-    notify_services => []\n-    renew_seconds   => 952200\n-    names           => [{'organisation': 'view'}, {'organisation': 'deploy'}]\n-    key             => {'algo': 'ecdsa', 'size': 256}\n-    auto_renew      => True\n-    owner           => mwdeploy\n-    provide_chain   => True\n-    mode            => 0740\n-    common_name     => wdqs-external-next-deploy\n-    label           => dse\n-    ensure          => present\n-    environment     => ['GODEBUG=x509ignoreCN=0']\n-    group           => deployment\n-    outdir          => /etc/kubernetes/pki\n-    before_services => []\n-    hosts           => []\n"}, {"resource": "Exec[Generate cert dse__wdqs-internal refresh on intermediate ca change]", "parameters": "--- Exec[Generate cert dse__wdqs-internal refresh on intermediate ca change].orig\n+++ Exec[Generate cert dse__wdqs-internal refresh on intermediate ca change]\n\n-    refreshonly => True\n-    require     => Cfssl::Csr[/etc/cfssl/csr/dse__wdqs-internal.csr]\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__wdqs-internal.csr | /usr/bin/cfssljson -bare /etc/kubernetes/pki/dse__wdqs-internal\n\n-    subscribe   => File[/etc/kubernetes/pki/dse__wdqs-internal.chain.pem]\n"}, {"resource": "File[/etc/kubernetes/pki/dse__wdqs-external.chained.pem]", "parameters": "--- File[/etc/kubernetes/pki/dse__wdqs-external.chained.pem].orig\n+++ File[/etc/kubernetes/pki/dse__wdqs-external.chained.pem]\n\n-    owner   => mwdeploy\n-    require => Exec[create chained cert /etc/kubernetes/pki/dse__wdqs-external.chain.pem]\n-    group   => deployment\n-    ensure  => file\n"}, {"resource": "File[/etc/kubernetes/wdqs-next-deploy-dse-k8s-codfw.config]", "content": "--- /etc/kubernetes/wdqs-next-deploy-dse-k8s-codfw.config.orig\n+++ /etc/kubernetes/wdqs-next-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: wdqs-next-deploy\n+    namespace: wdqs-next\n+clusters:\n+- name: default-cluster\n+  cluster:\n+    server: https://dse-k8s-ctrl.svc.codfw.wmnet:6443\n+users:\n+- name: wdqs-next-deploy\n+  user:\n+    client-certificate: /etc/kubernetes/pki/dse__wdqs-next-deploy.pem\n+    client-key: /etc/kubernetes/pki/dse__wdqs-next-deploy-key.pem", "parameters": "--- File[/etc/kubernetes/wdqs-next-deploy-dse-k8s-codfw.config].orig\n+++ File[/etc/kubernetes/wdqs-next-deploy-dse-k8s-codfw.config]\n\n+    mode   => 0640\n+    owner  => mwdeploy\n+    group  => deployment\n+    ensure => present\n"}, {"resource": "Exec[Generate cert dse__wdqs-internal refresh]", "parameters": "--- Exec[Generate cert dse__wdqs-internal refresh].orig\n+++ Exec[Generate cert dse__wdqs-internal refresh]\n\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__wdqs-internal.csr | /usr/bin/cfssljson -bare /etc/kubernetes/pki/dse__wdqs-internal\n\n-    refreshonly => True\n-    subscribe   => File[/etc/cfssl/csr/dse__wdqs-internal.csr]\n-    environment => ['GODEBUG=x509ignoreCN=0']\n"}, {"resource": "K8s::Kubeconfig[/etc/kubernetes/wdqs-external-next-dse-k8s-codfw.config]", "parameters": "--- K8s::Kubeconfig[/etc/kubernetes/wdqs-external-next-dse-k8s-codfw.config].orig\n+++ K8s::Kubeconfig[/etc/kubernetes/wdqs-external-next-dse-k8s-codfw.config]\n\n-    master_host => dse-k8s-ctrl.svc.codfw.wmnet\n-    require     => ['Class[K8s::Base_dirs]']\n-    owner       => mwdeploy\n-    namespace   => wdqs-external-next\n-    mode        => 0640\n-    ensure      => present\n-    username    => wdqs-external-next\n-    auth_cert   => {'cert': '/etc/kubernetes/pki/dse__wdqs-external-next.pem', 'key': '/etc/kubernetes/pki/dse__wdqs-external-next-key.pem', 'chain': '/etc/kubernetes/pki/dse__wdqs-external-next.chain.pem', 'chained': '/etc/kubernetes/pki/dse__wdqs-external-next.chained.pem'}\n-    group       => deployment\n"}, {"resource": "File[/etc/kubernetes/pki/dse__wdqs-deploy.csr]", "parameters": "--- File[/etc/kubernetes/pki/dse__wdqs-deploy.csr].orig\n+++ File[/etc/kubernetes/pki/dse__wdqs-deploy.csr]\n\n+    mode   => 0440\n+    owner  => mwdeploy\n+    group  => deployment\n+    ensure => file\n"}, {"resource": "File[/etc/kubernetes/wdqs-next-dse-k8s-codfw.config]", "content": "--- /etc/kubernetes/wdqs-next-dse-k8s-codfw.config.orig\n+++ /etc/kubernetes/wdqs-next-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: wdqs-next\n+    namespace: wdqs-next\n+clusters:\n+- name: default-cluster\n+  cluster:\n+    server: https://dse-k8s-ctrl.svc.codfw.wmnet:6443\n+users:\n+- name: wdqs-next\n+  user:\n+    client-certificate: /etc/kubernetes/pki/dse__wdqs-next.pem\n+    client-key: /etc/kubernetes/pki/dse__wdqs-next-key.pem", "parameters": "--- File[/etc/kubernetes/wdqs-next-dse-k8s-codfw.config].orig\n+++ File[/etc/kubernetes/wdqs-next-dse-k8s-codfw.config]\n\n+    mode   => 0640\n+    owner  => mwdeploy\n+    group  => deployment\n+    ensure => present\n"}, {"resource": "Exec[Generate cert dse__wdqs-internal-next]", "parameters": "--- Exec[Generate cert dse__wdqs-internal-next].orig\n+++ Exec[Generate cert dse__wdqs-internal-next]\n\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__wdqs-internal-next.csr | /usr/bin/cfssljson -bare /etc/kubernetes/pki/dse__wdqs-internal-next\n\n-    environment => ['GODEBUG=x509ignoreCN=0']\n-    unless      => /usr/bin/test \"$(/usr/bin/openssl x509 -in /etc/kubernetes/pki/dse__wdqs-internal-next.pem -noout -pubkey 2>&1)\" == \"$(/usr/bin/openssl pkey -pubout -in /etc/kubernetes/pki/dse__wdqs-internal-next-key.pem 2>&1)\"\n\n-    require     => Cfssl::Csr[/etc/cfssl/csr/dse__wdqs-internal-next.csr]\n"}, {"resource": "File[/etc/kubernetes/pki/dse__wdqs-external-next-deploy.chained.pem]", "parameters": "--- File[/etc/kubernetes/pki/dse__wdqs-external-next-deploy.chained.pem].orig\n+++ File[/etc/kubernetes/pki/dse__wdqs-external-next-deploy.chained.pem]\n\n-    owner   => mwdeploy\n-    require => Exec[create chained cert /etc/kubernetes/pki/dse__wdqs-external-next-deploy.chain.pem]\n-    group   => deployment\n-    ensure  => file\n"}, {"resource": "Exec[renew certificate - dse__wdqs-deploy]", "parameters": "--- Exec[renew certificate - dse__wdqs-deploy].orig\n+++ Exec[renew certificate - dse__wdqs-deploy]\n\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__wdqs-deploy.csr | /usr/bin/cfssljson -bare /etc/kubernetes/pki/dse__wdqs-deploy\n\n+    environment => ['GODEBUG=x509ignoreCN=0']\n+    unless      => /usr/bin/openssl x509 -in /etc/kubernetes/pki/dse__wdqs-deploy.pem -checkend 952200\n+    require     => Exec[Generate cert dse__wdqs-deploy]\n"}, {"resource": "File[/etc/kubernetes/pki/dse__wdqs-internal-next-deploy.pem]", "parameters": "--- File[/etc/kubernetes/pki/dse__wdqs-internal-next-deploy.pem].orig\n+++ File[/etc/kubernetes/pki/dse__wdqs-internal-next-deploy.pem]\n\n-    mode   => 0440\n-    owner  => mwdeploy\n-    group  => deployment\n-    ensure => file\n"}, {"resource": "Exec[Generate cert dse__wdqs-external-next refresh]", "parameters": "--- Exec[Generate cert dse__wdqs-external-next refresh].orig\n+++ Exec[Generate cert dse__wdqs-external-next refresh]\n\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__wdqs-external-next.csr | /usr/bin/cfssljson -bare /etc/kubernetes/pki/dse__wdqs-external-next\n\n-    refreshonly => True\n-    subscribe   => File[/etc/cfssl/csr/dse__wdqs-external-next.csr]\n-    environment => ['GODEBUG=x509ignoreCN=0']\n"}, {"resource": "File[/etc/kubernetes/pki/dse__wdqs-internal.chain.pem]", "parameters": "--- File[/etc/kubernetes/pki/dse__wdqs-internal.chain.pem].orig\n+++ File[/etc/kubernetes/pki/dse__wdqs-internal.chain.pem]\n\n-    source => puppet:///modules/profile/pki/intermediates/dse-cert.pem\n-    owner  => mwdeploy\n-    mode   => 0440\n-    group  => deployment\n-    ensure => file\n"}, {"resource": "File[/etc/cfssl/csr/dse__wdqs-external-deploy.csr]", "content": "--- /etc/cfssl/csr/dse__wdqs-external-deploy.csr.orig\n+++ /etc/cfssl/csr/dse__wdqs-external-deploy.csr\n@@ -1,26 +0,0 @@\n-{\n-  \"CN\": \"wdqs-external-deploy\",\n-  \"hosts\": [\n-    \"wdqs-external-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__wdqs-external-deploy.csr].orig\n+++ File[/etc/cfssl/csr/dse__wdqs-external-deploy.csr]\n\n-    mode   => 0400\n-    owner  => root\n-    group  => root\n-    ensure => file\n"}, {"resource": "File[/etc/kubernetes/wdqs-external-dse-k8s-eqiad.config]", "content": "--- /etc/kubernetes/wdqs-external-dse-k8s-eqiad.config.orig\n+++ /etc/kubernetes/wdqs-external-dse-k8s-eqiad.config\n@@ -1,19 +0,0 @@\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: wdqs-external\n-    namespace: wdqs-external\n-clusters:\n-- name: default-cluster\n-  cluster:\n-    server: https://dse-k8s-ctrl.svc.eqiad.wmnet:6443\n-users:\n-- name: wdqs-external\n-  user:\n-    client-certificate: /etc/kubernetes/pki/dse__wdqs-external.pem\n-    client-key: /etc/kubernetes/pki/dse__wdqs-external-key.pem", "parameters": "--- File[/etc/kubernetes/wdqs-external-dse-k8s-eqiad.config].orig\n+++ File[/etc/kubernetes/wdqs-external-dse-k8s-eqiad.config]\n\n-    mode   => 0640\n-    owner  => mwdeploy\n-    group  => deployment\n-    ensure => present\n"}, {"resource": "File[/etc/kubernetes/pki/dse__wdqs-internal-next.pem]", "parameters": "--- File[/etc/kubernetes/pki/dse__wdqs-internal-next.pem].orig\n+++ File[/etc/kubernetes/pki/dse__wdqs-internal-next.pem]\n\n-    mode   => 0440\n-    owner  => mwdeploy\n-    group  => deployment\n-    ensure => file\n"}, {"resource": "Exec[Generate cert dse__wdqs-external-next-deploy refresh on intermediate ca change]", "parameters": "--- Exec[Generate cert dse__wdqs-external-next-deploy refresh on intermediate ca change].orig\n+++ Exec[Generate cert dse__wdqs-external-next-deploy refresh on intermediate ca change]\n\n-    refreshonly => True\n-    require     => Cfssl::Csr[/etc/cfssl/csr/dse__wdqs-external-next-deploy.csr]\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__wdqs-external-next-deploy.csr | /usr/bin/cfssljson -bare /etc/kubernetes/pki/dse__wdqs-external-next-deploy\n\n-    subscribe   => File[/etc/kubernetes/pki/dse__wdqs-external-next-deploy.chain.pem]\n"}, {"resource": "File[/etc/kubernetes/wdqs-internal-next-deploy-dse-k8s-eqiad.config]", "content": "--- /etc/kubernetes/wdqs-internal-next-deploy-dse-k8s-eqiad.config.orig\n+++ /etc/kubernetes/wdqs-internal-next-deploy-dse-k8s-eqiad.config\n@@ -1,19 +0,0 @@\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: wdqs-internal-next-deploy\n-    namespace: wdqs-internal-next\n-clusters:\n-- name: default-cluster\n-  cluster:\n-    server: https://dse-k8s-ctrl.svc.eqiad.wmnet:6443\n-users:\n-- name: wdqs-internal-next-deploy\n-  user:\n-    client-certificate: /etc/kubernetes/pki/dse__wdqs-internal-next-deploy.pem\n-    client-key: /etc/kubernetes/pki/dse__wdqs-internal-next-deploy-key.pem", "parameters": "--- File[/etc/kubernetes/wdqs-internal-next-deploy-dse-k8s-eqiad.config].orig\n+++ File[/etc/kubernetes/wdqs-internal-next-deploy-dse-k8s-eqiad.config]\n\n-    mode   => 0640\n-    owner  => mwdeploy\n-    group  => deployment\n-    ensure => present\n"}, {"resource": "File[/etc/kubernetes/wdqs-internal-next-deploy-dse-k8s-codfw.config]", "content": "--- /etc/kubernetes/wdqs-internal-next-deploy-dse-k8s-codfw.config.orig\n+++ /etc/kubernetes/wdqs-internal-next-deploy-dse-k8s-codfw.config\n@@ -1,19 +0,0 @@\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: wdqs-internal-next-deploy\n-    namespace: wdqs-internal-next\n-clusters:\n-- name: default-cluster\n-  cluster:\n-    server: https://dse-k8s-ctrl.svc.codfw.wmnet:6443\n-users:\n-- name: wdqs-internal-next-deploy\n-  user:\n-    client-certificate: /etc/kubernetes/pki/dse__wdqs-internal-next-deploy.pem\n-    client-key: /etc/kubernetes/pki/dse__wdqs-internal-next-deploy-key.pem", "parameters": "--- File[/etc/kubernetes/wdqs-internal-next-deploy-dse-k8s-codfw.config].orig\n+++ File[/etc/kubernetes/wdqs-internal-next-deploy-dse-k8s-codfw.config]\n\n-    mode   => 0640\n-    owner  => mwdeploy\n-    group  => deployment\n-    ensure => present\n"}, {"resource": "K8s::Kubeconfig[/etc/kubernetes/wdqs-external-deploy-dse-k8s-codfw.config]", "parameters": "--- K8s::Kubeconfig[/etc/kubernetes/wdqs-external-deploy-dse-k8s-codfw.config].orig\n+++ K8s::Kubeconfig[/etc/kubernetes/wdqs-external-deploy-dse-k8s-codfw.config]\n\n-    master_host => dse-k8s-ctrl.svc.codfw.wmnet\n-    require     => ['Class[K8s::Base_dirs]']\n-    owner       => mwdeploy\n-    namespace   => wdqs-external\n-    mode        => 0640\n-    ensure      => present\n-    username    => wdqs-external-deploy\n-    auth_cert   => {'cert': '/etc/kubernetes/pki/dse__wdqs-external-deploy.pem', 'key': '/etc/kubernetes/pki/dse__wdqs-external-deploy-key.pem', 'chain': '/etc/kubernetes/pki/dse__wdqs-external-deploy.chain.pem', 'chained': '/etc/kubernetes/pki/dse__wdqs-external-deploy.chained.pem'}\n-    group       => deployment\n"}, {"resource": "Exec[renew certificate - dse__wdqs-internal-next]", "parameters": "--- Exec[renew certificate - dse__wdqs-internal-next].orig\n+++ Exec[renew certificate - dse__wdqs-internal-next]\n\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__wdqs-internal-next.csr | /usr/bin/cfssljson -bare /etc/kubernetes/pki/dse__wdqs-internal-next\n\n-    environment => ['GODEBUG=x509ignoreCN=0']\n-    unless      => /usr/bin/openssl x509 -in /etc/kubernetes/pki/dse__wdqs-internal-next.pem -checkend 952200\n-    require     => Exec[Generate cert dse__wdqs-internal-next]\n"}, {"resource": "Exec[Generate cert dse__wdqs-internal-deploy refresh on intermediate ca change]", "parameters": "--- Exec[Generate cert dse__wdqs-internal-deploy refresh on intermediate ca change].orig\n+++ Exec[Generate cert dse__wdqs-internal-deploy refresh on intermediate ca change]\n\n-    refreshonly => True\n-    require     => Cfssl::Csr[/etc/cfssl/csr/dse__wdqs-internal-deploy.csr]\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__wdqs-internal-deploy.csr | /usr/bin/cfssljson -bare /etc/kubernetes/pki/dse__wdqs-internal-deploy\n\n-    subscribe   => File[/etc/kubernetes/pki/dse__wdqs-internal-deploy.chain.pem]\n"}, {"resource": "Exec[Generate cert dse__wdqs-next refresh on intermediate ca change]", "parameters": "--- Exec[Generate cert dse__wdqs-next refresh on intermediate ca change].orig\n+++ Exec[Generate cert dse__wdqs-next refresh on intermediate ca change]\n\n+    refreshonly => True\n+    require     => Cfssl::Csr[/etc/cfssl/csr/dse__wdqs-next.csr]\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__wdqs-next.csr | /usr/bin/cfssljson -bare /etc/kubernetes/pki/dse__wdqs-next\n\n+    subscribe   => File[/etc/kubernetes/pki/dse__wdqs-next.chain.pem]\n"}, {"resource": "File[/etc/kubernetes/wdqs-internal-deploy-dse-k8s-codfw.config]", "content": "--- /etc/kubernetes/wdqs-internal-deploy-dse-k8s-codfw.config.orig\n+++ /etc/kubernetes/wdqs-internal-deploy-dse-k8s-codfw.config\n@@ -1,19 +0,0 @@\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: wdqs-internal-deploy\n-    namespace: wdqs-internal\n-clusters:\n-- name: default-cluster\n-  cluster:\n-    server: https://dse-k8s-ctrl.svc.codfw.wmnet:6443\n-users:\n-- name: wdqs-internal-deploy\n-  user:\n-    client-certificate: /etc/kubernetes/pki/dse__wdqs-internal-deploy.pem\n-    client-key: /etc/kubernetes/pki/dse__wdqs-internal-deploy-key.pem", "parameters": "--- File[/etc/kubernetes/wdqs-internal-deploy-dse-k8s-codfw.config].orig\n+++ File[/etc/kubernetes/wdqs-internal-deploy-dse-k8s-codfw.config]\n\n-    mode   => 0640\n-    owner  => mwdeploy\n-    group  => deployment\n-    ensure => present\n"}, {"resource": "K8s::Kubeconfig[/etc/kubernetes/wdqs-external-next-deploy-dse-k8s-eqiad.config]", "parameters": "--- K8s::Kubeconfig[/etc/kubernetes/wdqs-external-next-deploy-dse-k8s-eqiad.config].orig\n+++ K8s::Kubeconfig[/etc/kubernetes/wdqs-external-next-deploy-dse-k8s-eqiad.config]\n\n-    master_host => dse-k8s-ctrl.svc.eqiad.wmnet\n-    require     => ['Class[K8s::Base_dirs]']\n-    owner       => mwdeploy\n-    namespace   => wdqs-external-next\n-    mode        => 0640\n-    ensure      => present\n-    username    => wdqs-external-next-deploy\n-    auth_cert   => {'cert': '/etc/kubernetes/pki/dse__wdqs-external-next-deploy.pem', 'key': '/etc/kubernetes/pki/dse__wdqs-external-next-deploy-key.pem', 'chain': '/etc/kubernetes/pki/dse__wdqs-external-next-deploy.chain.pem', 'chained': '/etc/kubernetes/pki/dse__wdqs-external-next-deploy.chained.pem'}\n-    group       => deployment\n"}, {"resource": "Cfssl::Cert[dse__wdqs-internal-deploy]", "parameters": "--- Cfssl::Cert[dse__wdqs-internal-deploy].orig\n+++ Cfssl::Cert[dse__wdqs-internal-deploy]\n\n-    notify_services => []\n-    renew_seconds   => 952200\n-    names           => [{'organisation': 'view'}, {'organisation': 'deploy'}]\n-    key             => {'algo': 'ecdsa', 'size': 256}\n-    auto_renew      => True\n-    owner           => mwdeploy\n-    provide_chain   => True\n-    mode            => 0740\n-    common_name     => wdqs-internal-deploy\n-    label           => dse\n-    ensure          => present\n-    environment     => ['GODEBUG=x509ignoreCN=0']\n-    group           => deployment\n-    outdir          => /etc/kubernetes/pki\n-    before_services => []\n-    hosts           => []\n"}, {"resource": "File[/etc/kubernetes/pki/dse__wdqs-external-key.pem]", "parameters": "--- File[/etc/kubernetes/pki/dse__wdqs-external-key.pem].orig\n+++ File[/etc/kubernetes/pki/dse__wdqs-external-key.pem]\n\n-    show_diff => False\n-    owner     => mwdeploy\n-    mode      => 0440\n-    backup    => False\n-    group     => deployment\n-    ensure    => file\n"}, {"resource": "K8s::Kubeconfig[/etc/kubernetes/wdqs-next-deploy-dse-k8s-codfw.config]", "parameters": "--- K8s::Kubeconfig[/etc/kubernetes/wdqs-next-deploy-dse-k8s-codfw.config].orig\n+++ K8s::Kubeconfig[/etc/kubernetes/wdqs-next-deploy-dse-k8s-codfw.config]\n\n+    master_host => dse-k8s-ctrl.svc.codfw.wmnet\n+    require     => ['Class[K8s::Base_dirs]']\n+    owner       => mwdeploy\n+    namespace   => wdqs-next\n+    mode        => 0640\n+    ensure      => present\n+    username    => wdqs-next-deploy\n+    auth_cert   => {'cert': '/etc/kubernetes/pki/dse__wdqs-next-deploy.pem', 'key': '/etc/kubernetes/pki/dse__wdqs-next-deploy-key.pem', 'chain': '/etc/kubernetes/pki/dse__wdqs-next-deploy.chain.pem', 'chained': '/etc/kubernetes/pki/dse__wdqs-next-deploy.chained.pem'}\n+    group       => deployment\n"}, {"resource": "Exec[create chained cert /etc/kubernetes/pki/dse__wdqs-internal-next-deploy.chain.pem]", "parameters": "--- Exec[create chained cert /etc/kubernetes/pki/dse__wdqs-internal-next-deploy.chain.pem].orig\n+++ Exec[create chained cert /etc/kubernetes/pki/dse__wdqs-internal-next-deploy.chain.pem]\n\n-    command   => /bin/cat /etc/kubernetes/pki/dse__wdqs-internal-next-deploy.pem /etc/kubernetes/pki/dse__wdqs-internal-next-deploy.chain.pem > /etc/kubernetes/pki/dse__wdqs-internal-next-deploy.chained.pem\n-    subscribe => ['Exec[renew certificate - dse__wdqs-internal-next-deploy]', 'File[/etc/kubernetes/pki/dse__wdqs-internal-next-deploy.chain.pem]', 'File[/etc/kubernetes/pki/dse__wdqs-internal-next-deploy.pem]']\n-    require   => Exec[Generate cert dse__wdqs-internal-next-deploy refresh on intermediate ca change]\n-    unless    => /usr/bin/test \"$(/bin/cat /etc/kubernetes/pki/dse__wdqs-internal-next-deploy.pem /etc/kubernetes/pki/dse__wdqs-internal-next-deploy.chain.pem | sha512sum)\" == \"$(/bin/cat /etc/kubernetes/pki/dse__wdqs-internal-next-deploy.chained.pem | sha512sum)\"\n\n"}, {"resource": "File[/etc/kubernetes/pki/dse__wdqs-next.chained.pem]", "parameters": "--- File[/etc/kubernetes/pki/dse__wdqs-next.chained.pem].orig\n+++ File[/etc/kubernetes/pki/dse__wdqs-next.chained.pem]\n\n+    owner   => mwdeploy\n+    require => Exec[create chained cert /etc/kubernetes/pki/dse__wdqs-next.chain.pem]\n+    group   => deployment\n+    ensure  => file\n"}, {"resource": "Cfssl::Csr[/etc/cfssl/csr/dse__wdqs-external-deploy.csr]", "parameters": "--- Cfssl::Csr[/etc/cfssl/csr/dse__wdqs-external-deploy.csr].orig\n+++ Cfssl::Csr[/etc/cfssl/csr/dse__wdqs-external-deploy.csr]\n\n-    key         => {'algo': 'ecdsa', 'size': 256}\n-    hosts       => []\n-    names       => [{'organisation': 'view'}, {'organisation': 'deploy'}]\n-    common_name => wdqs-external-deploy\n-    ensure      => present\n"}, {"resource": "File[/etc/kubernetes/pki/dse__wdqs-external-deploy.csr]", "parameters": "--- File[/etc/kubernetes/pki/dse__wdqs-external-deploy.csr].orig\n+++ File[/etc/kubernetes/pki/dse__wdqs-external-deploy.csr]\n\n-    mode   => 0440\n-    owner  => mwdeploy\n-    group  => deployment\n-    ensure => file\n"}, {"resource": "K8s::Kubeconfig[/etc/kubernetes/wdqs-internal-next-deploy-dse-k8s-eqiad.config]", "parameters": "--- K8s::Kubeconfig[/etc/kubernetes/wdqs-internal-next-deploy-dse-k8s-eqiad.config].orig\n+++ K8s::Kubeconfig[/etc/kubernetes/wdqs-internal-next-deploy-dse-k8s-eqiad.config]\n\n-    master_host => dse-k8s-ctrl.svc.eqiad.wmnet\n-    require     => ['Class[K8s::Base_dirs]']\n-    owner       => mwdeploy\n-    namespace   => wdqs-internal-next\n-    mode        => 0640\n-    ensure      => present\n-    username    => wdqs-internal-next-deploy\n-    auth_cert   => {'cert': '/etc/kubernetes/pki/dse__wdqs-internal-next-deploy.pem', 'key': '/etc/kubernetes/pki/dse__wdqs-internal-next-deploy-key.pem', 'chain': '/etc/kubernetes/pki/dse__wdqs-internal-next-deploy.chain.pem', 'chained': '/etc/kubernetes/pki/dse__wdqs-internal-next-deploy.chained.pem'}\n-    group       => deployment\n"}, {"resource": "File[/etc/kubernetes/pki/dse__wdqs-next.pem]", "parameters": "--- File[/etc/kubernetes/pki/dse__wdqs-next.pem].orig\n+++ File[/etc/kubernetes/pki/dse__wdqs-next.pem]\n\n+    mode   => 0440\n+    owner  => mwdeploy\n+    group  => deployment\n+    ensure => file\n"}, {"resource": "Exec[Generate cert dse__wdqs-next-deploy]", "parameters": "--- Exec[Generate cert dse__wdqs-next-deploy].orig\n+++ Exec[Generate cert dse__wdqs-next-deploy]\n\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__wdqs-next-deploy.csr | /usr/bin/cfssljson -bare /etc/kubernetes/pki/dse__wdqs-next-deploy\n\n+    environment => ['GODEBUG=x509ignoreCN=0']\n+    unless      => /usr/bin/test \"$(/usr/bin/openssl x509 -in /etc/kubernetes/pki/dse__wdqs-next-deploy.pem -noout -pubkey 2>&1)\" == \"$(/usr/bin/openssl pkey -pubout -in /etc/kubernetes/pki/dse__wdqs-next-deploy-key.pem 2>&1)\"\n\n+    require     => Cfssl::Csr[/etc/cfssl/csr/dse__wdqs-next-deploy.csr]\n"}, {"resource": "Exec[renew certificate - dse__wdqs-external]", "parameters": "--- Exec[renew certificate - dse__wdqs-external].orig\n+++ Exec[renew certificate - dse__wdqs-external]\n\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__wdqs-external.csr | /usr/bin/cfssljson -bare /etc/kubernetes/pki/dse__wdqs-external\n\n-    environment => ['GODEBUG=x509ignoreCN=0']\n-    unless      => /usr/bin/openssl x509 -in /etc/kubernetes/pki/dse__wdqs-external.pem -checkend 952200\n-    require     => Exec[Generate cert dse__wdqs-external]\n"}, {"resource": "Cfssl::Cert[dse__wdqs-next-deploy]", "parameters": "--- Cfssl::Cert[dse__wdqs-next-deploy].orig\n+++ Cfssl::Cert[dse__wdqs-next-deploy]\n\n+    notify_services => []\n+    renew_seconds   => 952200\n+    names           => [{'organisation': 'view'}, {'organisation': 'deploy'}]\n+    key             => {'algo': 'ecdsa', 'size': 256}\n+    auto_renew      => True\n+    owner           => mwdeploy\n+    provide_chain   => True\n+    mode            => 0740\n+    common_name     => wdqs-next-deploy\n+    label           => dse\n+    ensure          => present\n+    environment     => ['GODEBUG=x509ignoreCN=0']\n+    group           => deployment\n+    outdir          => /etc/kubernetes/pki\n+    before_services => []\n+    hosts           => []\n"}, {"resource": "Exec[Generate cert dse__wdqs-external-next-deploy]", "parameters": "--- Exec[Generate cert dse__wdqs-external-next-deploy].orig\n+++ Exec[Generate cert dse__wdqs-external-next-deploy]\n\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__wdqs-external-next-deploy.csr | /usr/bin/cfssljson -bare /etc/kubernetes/pki/dse__wdqs-external-next-deploy\n\n-    environment => ['GODEBUG=x509ignoreCN=0']\n-    unless      => /usr/bin/test \"$(/usr/bin/openssl x509 -in /etc/kubernetes/pki/dse__wdqs-external-next-deploy.pem -noout -pubkey 2>&1)\" == \"$(/usr/bin/openssl pkey -pubout -in /etc/kubernetes/pki/dse__wdqs-external-next-deploy-key.pem 2>&1)\"\n\n-    require     => Cfssl::Csr[/etc/cfssl/csr/dse__wdqs-external-next-deploy.csr]\n"}, {"resource": "File[/etc/kubernetes/wdqs-internal-dse-k8s-codfw.config]", "content": "--- /etc/kubernetes/wdqs-internal-dse-k8s-codfw.config.orig\n+++ /etc/kubernetes/wdqs-internal-dse-k8s-codfw.config\n@@ -1,19 +0,0 @@\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: wdqs-internal\n-    namespace: wdqs-internal\n-clusters:\n-- name: default-cluster\n-  cluster:\n-    server: https://dse-k8s-ctrl.svc.codfw.wmnet:6443\n-users:\n-- name: wdqs-internal\n-  user:\n-    client-certificate: /etc/kubernetes/pki/dse__wdqs-internal.pem\n-    client-key: /etc/kubernetes/pki/dse__wdqs-internal-key.pem", "parameters": "--- File[/etc/kubernetes/wdqs-internal-dse-k8s-codfw.config].orig\n+++ File[/etc/kubernetes/wdqs-internal-dse-k8s-codfw.config]\n\n-    mode   => 0640\n-    owner  => mwdeploy\n-    group  => deployment\n-    ensure => present\n"}, {"resource": "File[/etc/kubernetes/pki/dse__wdqs-external.pem]", "parameters": "--- File[/etc/kubernetes/pki/dse__wdqs-external.pem].orig\n+++ File[/etc/kubernetes/pki/dse__wdqs-external.pem]\n\n-    mode   => 0440\n-    owner  => mwdeploy\n-    group  => deployment\n-    ensure => file\n"}, {"resource": "Exec[Generate cert dse__wdqs-internal]", "parameters": "--- Exec[Generate cert dse__wdqs-internal].orig\n+++ Exec[Generate cert dse__wdqs-internal]\n\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__wdqs-internal.csr | /usr/bin/cfssljson -bare /etc/kubernetes/pki/dse__wdqs-internal\n\n-    environment => ['GODEBUG=x509ignoreCN=0']\n-    unless      => /usr/bin/test \"$(/usr/bin/openssl x509 -in /etc/kubernetes/pki/dse__wdqs-internal.pem -noout -pubkey 2>&1)\" == \"$(/usr/bin/openssl pkey -pubout -in /etc/kubernetes/pki/dse__wdqs-internal-key.pem 2>&1)\"\n\n-    require     => Cfssl::Csr[/etc/cfssl/csr/dse__wdqs-internal.csr]\n"}, {"resource": "File[/etc/kubernetes/pki/dse__wdqs-internal-next-key.pem]", "parameters": "--- File[/etc/kubernetes/pki/dse__wdqs-internal-next-key.pem].orig\n+++ File[/etc/kubernetes/pki/dse__wdqs-internal-next-key.pem]\n\n-    show_diff => False\n-    owner     => mwdeploy\n-    mode      => 0440\n-    backup    => False\n-    group     => deployment\n-    ensure    => file\n"}, {"resource": "Exec[create chained cert /etc/kubernetes/pki/dse__wdqs-external-next-deploy.chain.pem]", "parameters": "--- Exec[create chained cert /etc/kubernetes/pki/dse__wdqs-external-next-deploy.chain.pem].orig\n+++ Exec[create chained cert /etc/kubernetes/pki/dse__wdqs-external-next-deploy.chain.pem]\n\n-    command   => /bin/cat /etc/kubernetes/pki/dse__wdqs-external-next-deploy.pem /etc/kubernetes/pki/dse__wdqs-external-next-deploy.chain.pem > /etc/kubernetes/pki/dse__wdqs-external-next-deploy.chained.pem\n-    subscribe => ['Exec[renew certificate - dse__wdqs-external-next-deploy]', 'File[/etc/kubernetes/pki/dse__wdqs-external-next-deploy.chain.pem]', 'File[/etc/kubernetes/pki/dse__wdqs-external-next-deploy.pem]']\n-    require   => Exec[Generate cert dse__wdqs-external-next-deploy refresh on intermediate ca change]\n-    unless    => /usr/bin/test \"$(/bin/cat /etc/kubernetes/pki/dse__wdqs-external-next-deploy.pem /etc/kubernetes/pki/dse__wdqs-external-next-deploy.chain.pem | sha512sum)\" == \"$(/bin/cat /etc/kubernetes/pki/dse__wdqs-external-next-deploy.chained.pem | sha512sum)\"\n\n"}, {"resource": "Exec[Generate cert dse__wdqs-internal-deploy refresh]", "parameters": "--- Exec[Generate cert dse__wdqs-internal-deploy refresh].orig\n+++ Exec[Generate cert dse__wdqs-internal-deploy refresh]\n\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__wdqs-internal-deploy.csr | /usr/bin/cfssljson -bare /etc/kubernetes/pki/dse__wdqs-internal-deploy\n\n-    refreshonly => True\n-    subscribe   => File[/etc/cfssl/csr/dse__wdqs-internal-deploy.csr]\n-    environment => ['GODEBUG=x509ignoreCN=0']\n"}, {"resource": "File[/etc/kubernetes/pki/dse__wdqs-deploy.chained.pem]", "parameters": "--- File[/etc/kubernetes/pki/dse__wdqs-deploy.chained.pem].orig\n+++ File[/etc/kubernetes/pki/dse__wdqs-deploy.chained.pem]\n\n+    owner   => mwdeploy\n+    require => Exec[create chained cert /etc/kubernetes/pki/dse__wdqs-deploy.chain.pem]\n+    group   => deployment\n+    ensure  => file\n"}, {"resource": "File[/etc/kubernetes/wdqs-external-next-deploy-dse-k8s-codfw.config]", "content": "--- /etc/kubernetes/wdqs-external-next-deploy-dse-k8s-codfw.config.orig\n+++ /etc/kubernetes/wdqs-external-next-deploy-dse-k8s-codfw.config\n@@ -1,19 +0,0 @@\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: wdqs-external-next-deploy\n-    namespace: wdqs-external-next\n-clusters:\n-- name: default-cluster\n-  cluster:\n-    server: https://dse-k8s-ctrl.svc.codfw.wmnet:6443\n-users:\n-- name: wdqs-external-next-deploy\n-  user:\n-    client-certificate: /etc/kubernetes/pki/dse__wdqs-external-next-deploy.pem\n-    client-key: /etc/kubernetes/pki/dse__wdqs-external-next-deploy-key.pem", "parameters": "--- File[/etc/kubernetes/wdqs-external-next-deploy-dse-k8s-codfw.config].orig\n+++ File[/etc/kubernetes/wdqs-external-next-deploy-dse-k8s-codfw.config]\n\n-    mode   => 0640\n-    owner  => mwdeploy\n-    group  => deployment\n-    ensure => present\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'}]}, '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'}]}, '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'}]}, 'kafka-ui': {'usernames': [{'name': 'kafka-ui'}, {'name': 'kafka-ui-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'}]}, 'wdqs-internal': {'usernames': [{'name': 'wdqs-internal'}, {'name': 'wdqs-internal-deploy'}]}, 'wdqs-internal-next': {'usernames': [{'name': 'wdqs-internal-next'}, {'name': 'wdqs-internal-next-deploy'}]}, 'wdqs-external': {'usernames': [{'name': 'wdqs-external'}, {'name': 'wdqs-external-deploy'}]}, 'wdqs-external-next': {'usernames': [{'name': 'wdqs-external-next'}, {'name': 'wdqs-external-next-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'}]}, 'eventstreams-internal': {'usernames': [{'name': 'eventstreams-internal'}, {'name': 'eventstreams-internal-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'}]}, 'webrequest-page-view': {'usernames': [{'name': 'webrequest-page-view'}, {'name': 'webrequest-page-view-deploy'}]}, 'webrequest-page-view-next': {'usernames': [{'name': 'webrequest-page-view-next'}, {'name': 'webrequest-page-view-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'}]}, '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'}]}, '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'}]}, 'kafka-ui': {'usernames': [{'name': 'kafka-ui'}, {'name': 'kafka-ui-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'}]}, 'wdqs': {'usernames': [{'name': 'wdqs'}, {'name': 'wdqs-deploy'}]}, 'wdqs-next': {'usernames': [{'name': 'wdqs-next'}, {'name': 'wdqs-next-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'}]}, 'eventstreams-internal': {'usernames': [{'name': 'eventstreams-internal'}, {'name': 'eventstreams-internal-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'}]}, 'webrequest-page-view': {'usernames': [{'name': 'webrequest-page-view'}, {'name': 'webrequest-page-view-deploy'}]}, 'webrequest-page-view-next': {'usernames': [{'name': 'webrequest-page-view-next'}, {'name': 'webrequest-page-view-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/pki/dse__wdqs-internal.csr]", "parameters": "--- File[/etc/kubernetes/pki/dse__wdqs-internal.csr].orig\n+++ File[/etc/kubernetes/pki/dse__wdqs-internal.csr]\n\n-    mode   => 0440\n-    owner  => mwdeploy\n-    group  => deployment\n-    ensure => file\n"}, {"resource": "K8s::Kubeconfig[/etc/kubernetes/wdqs-next-dse-k8s-codfw.config]", "parameters": "--- K8s::Kubeconfig[/etc/kubernetes/wdqs-next-dse-k8s-codfw.config].orig\n+++ K8s::Kubeconfig[/etc/kubernetes/wdqs-next-dse-k8s-codfw.config]\n\n+    master_host => dse-k8s-ctrl.svc.codfw.wmnet\n+    require     => ['Class[K8s::Base_dirs]']\n+    owner       => mwdeploy\n+    namespace   => wdqs-next\n+    mode        => 0640\n+    ensure      => present\n+    username    => wdqs-next\n+    auth_cert   => {'cert': '/etc/kubernetes/pki/dse__wdqs-next.pem', 'key': '/etc/kubernetes/pki/dse__wdqs-next-key.pem', 'chain': '/etc/kubernetes/pki/dse__wdqs-next.chain.pem', 'chained': '/etc/kubernetes/pki/dse__wdqs-next.chained.pem'}\n+    group       => deployment\n"}], "perc_changed": "2.44%"}, "core": {"total": 17426, "only_in_self": ["Exec[Generate cert dse__wdqs-external refresh on intermediate ca change]", "Exec[Generate cert dse__wdqs-external refresh]", "Exec[Generate cert dse__wdqs-external-deploy refresh on intermediate ca change]", "Exec[Generate cert dse__wdqs-external-deploy refresh]", "Exec[Generate cert dse__wdqs-external-deploy]", "Exec[Generate cert dse__wdqs-external-next refresh on intermediate ca change]", "Exec[Generate cert dse__wdqs-external-next refresh]", "Exec[Generate cert dse__wdqs-external-next-deploy refresh on intermediate ca change]", "Exec[Generate cert dse__wdqs-external-next-deploy refresh]", "Exec[Generate cert dse__wdqs-external-next-deploy]", "Exec[Generate cert dse__wdqs-external-next]", "Exec[Generate cert dse__wdqs-external]", "Exec[Generate cert dse__wdqs-internal refresh on intermediate ca change]", "Exec[Generate cert dse__wdqs-internal refresh]", "Exec[Generate cert dse__wdqs-internal-deploy refresh on intermediate ca change]", "Exec[Generate cert dse__wdqs-internal-deploy refresh]", "Exec[Generate cert dse__wdqs-internal-deploy]", "Exec[Generate cert dse__wdqs-internal-next refresh on intermediate ca change]", "Exec[Generate cert dse__wdqs-internal-next refresh]", "Exec[Generate cert dse__wdqs-internal-next-deploy refresh on intermediate ca change]", "Exec[Generate cert dse__wdqs-internal-next-deploy refresh]", "Exec[Generate cert dse__wdqs-internal-next-deploy]", "Exec[Generate cert dse__wdqs-internal-next]", "Exec[Generate cert dse__wdqs-internal]", "Exec[create chained cert /etc/kubernetes/pki/dse__wdqs-external-deploy.chain.pem]", "Exec[create chained cert /etc/kubernetes/pki/dse__wdqs-external-next-deploy.chain.pem]", "Exec[create chained cert /etc/kubernetes/pki/dse__wdqs-external-next.chain.pem]", "Exec[create chained cert /etc/kubernetes/pki/dse__wdqs-external.chain.pem]", "Exec[create chained cert /etc/kubernetes/pki/dse__wdqs-internal-deploy.chain.pem]", "Exec[create chained cert /etc/kubernetes/pki/dse__wdqs-internal-next-deploy.chain.pem]", "Exec[create chained cert /etc/kubernetes/pki/dse__wdqs-internal-next.chain.pem]", "Exec[create chained cert /etc/kubernetes/pki/dse__wdqs-internal.chain.pem]", "Exec[renew certificate - dse__wdqs-external-deploy]", "Exec[renew certificate - dse__wdqs-external-next-deploy]", "Exec[renew certificate - dse__wdqs-external-next]", "Exec[renew certificate - dse__wdqs-external]", "Exec[renew certificate - dse__wdqs-internal-deploy]", "Exec[renew certificate - dse__wdqs-internal-next-deploy]", "Exec[renew certificate - dse__wdqs-internal-next]", "Exec[renew certificate - dse__wdqs-internal]", "File[/etc/cfssl/csr/dse__wdqs-external-deploy.csr]", "File[/etc/cfssl/csr/dse__wdqs-external-next-deploy.csr]", "File[/etc/cfssl/csr/dse__wdqs-external-next.csr]", "File[/etc/cfssl/csr/dse__wdqs-external.csr]", "File[/etc/cfssl/csr/dse__wdqs-internal-deploy.csr]", "File[/etc/cfssl/csr/dse__wdqs-internal-next-deploy.csr]", "File[/etc/cfssl/csr/dse__wdqs-internal-next.csr]", "File[/etc/cfssl/csr/dse__wdqs-internal.csr]", "File[/etc/helmfile-defaults/private/dse-k8s_services/wdqs-external-next]", "File[/etc/helmfile-defaults/private/dse-k8s_services/wdqs-external]", "File[/etc/helmfile-defaults/private/dse-k8s_services/wdqs-internal-next]", "File[/etc/helmfile-defaults/private/dse-k8s_services/wdqs-internal]", "File[/etc/kubernetes/pki/dse__wdqs-external-deploy-key.pem]", "File[/etc/kubernetes/pki/dse__wdqs-external-deploy.chain.pem]", "File[/etc/kubernetes/pki/dse__wdqs-external-deploy.chained.pem]", "File[/etc/kubernetes/pki/dse__wdqs-external-deploy.csr]", "File[/etc/kubernetes/pki/dse__wdqs-external-deploy.pem]", "File[/etc/kubernetes/pki/dse__wdqs-external-key.pem]", "File[/etc/kubernetes/pki/dse__wdqs-external-next-deploy-key.pem]", "File[/etc/kubernetes/pki/dse__wdqs-external-next-deploy.chain.pem]", "File[/etc/kubernetes/pki/dse__wdqs-external-next-deploy.chained.pem]", "File[/etc/kubernetes/pki/dse__wdqs-external-next-deploy.csr]", "File[/etc/kubernetes/pki/dse__wdqs-external-next-deploy.pem]", "File[/etc/kubernetes/pki/dse__wdqs-external-next-key.pem]", "File[/etc/kubernetes/pki/dse__wdqs-external-next.chain.pem]", "File[/etc/kubernetes/pki/dse__wdqs-external-next.chained.pem]", "File[/etc/kubernetes/pki/dse__wdqs-external-next.csr]", "File[/etc/kubernetes/pki/dse__wdqs-external-next.pem]", "File[/etc/kubernetes/pki/dse__wdqs-external.chain.pem]", "File[/etc/kubernetes/pki/dse__wdqs-external.chained.pem]", "File[/etc/kubernetes/pki/dse__wdqs-external.csr]", "File[/etc/kubernetes/pki/dse__wdqs-external.pem]", "File[/etc/kubernetes/pki/dse__wdqs-internal-deploy-key.pem]", "File[/etc/kubernetes/pki/dse__wdqs-internal-deploy.chain.pem]", "File[/etc/kubernetes/pki/dse__wdqs-internal-deploy.chained.pem]", "File[/etc/kubernetes/pki/dse__wdqs-internal-deploy.csr]", "File[/etc/kubernetes/pki/dse__wdqs-internal-deploy.pem]", "File[/etc/kubernetes/pki/dse__wdqs-internal-key.pem]", "File[/etc/kubernetes/pki/dse__wdqs-internal-next-deploy-key.pem]", "File[/etc/kubernetes/pki/dse__wdqs-internal-next-deploy.chain.pem]", "File[/etc/kubernetes/pki/dse__wdqs-internal-next-deploy.chained.pem]", "File[/etc/kubernetes/pki/dse__wdqs-internal-next-deploy.csr]", "File[/etc/kubernetes/pki/dse__wdqs-internal-next-deploy.pem]", "File[/etc/kubernetes/pki/dse__wdqs-internal-next-key.pem]", "File[/etc/kubernetes/pki/dse__wdqs-internal-next.chain.pem]", "File[/etc/kubernetes/pki/dse__wdqs-internal-next.chained.pem]", "File[/etc/kubernetes/pki/dse__wdqs-internal-next.csr]", "File[/etc/kubernetes/pki/dse__wdqs-internal-next.pem]", "File[/etc/kubernetes/pki/dse__wdqs-internal.chain.pem]", "File[/etc/kubernetes/pki/dse__wdqs-internal.chained.pem]", "File[/etc/kubernetes/pki/dse__wdqs-internal.csr]", "File[/etc/kubernetes/pki/dse__wdqs-internal.pem]", "File[/etc/kubernetes/wdqs-external-deploy-dse-k8s-codfw.config]", "File[/etc/kubernetes/wdqs-external-deploy-dse-k8s-eqiad.config]", "File[/etc/kubernetes/wdqs-external-dse-k8s-codfw.config]", "File[/etc/kubernetes/wdqs-external-dse-k8s-eqiad.config]", "File[/etc/kubernetes/wdqs-external-next-deploy-dse-k8s-codfw.config]", "File[/etc/kubernetes/wdqs-external-next-deploy-dse-k8s-eqiad.config]", "File[/etc/kubernetes/wdqs-external-next-dse-k8s-codfw.config]", "File[/etc/kubernetes/wdqs-external-next-dse-k8s-eqiad.config]", "File[/etc/kubernetes/wdqs-internal-deploy-dse-k8s-codfw.config]", "File[/etc/kubernetes/wdqs-internal-deploy-dse-k8s-eqiad.config]", "File[/etc/kubernetes/wdqs-internal-dse-k8s-codfw.config]", "File[/etc/kubernetes/wdqs-internal-dse-k8s-eqiad.config]", "File[/etc/kubernetes/wdqs-internal-next-deploy-dse-k8s-codfw.config]", "File[/etc/kubernetes/wdqs-internal-next-deploy-dse-k8s-eqiad.config]", "File[/etc/kubernetes/wdqs-internal-next-dse-k8s-codfw.config]", "File[/etc/kubernetes/wdqs-internal-next-dse-k8s-eqiad.config]"], "only_in_other": ["Exec[Generate cert dse__wdqs refresh on intermediate ca change]", "Exec[Generate cert dse__wdqs refresh]", "Exec[Generate cert dse__wdqs-deploy refresh on intermediate ca change]", "Exec[Generate cert dse__wdqs-deploy refresh]", "Exec[Generate cert dse__wdqs-deploy]", "Exec[Generate cert dse__wdqs-next refresh on intermediate ca change]", "Exec[Generate cert dse__wdqs-next refresh]", "Exec[Generate cert dse__wdqs-next-deploy refresh on intermediate ca change]", "Exec[Generate cert dse__wdqs-next-deploy refresh]", "Exec[Generate cert dse__wdqs-next-deploy]", "Exec[Generate cert dse__wdqs-next]", "Exec[Generate cert dse__wdqs]", "Exec[create chained cert /etc/kubernetes/pki/dse__wdqs-deploy.chain.pem]", "Exec[create chained cert /etc/kubernetes/pki/dse__wdqs-next-deploy.chain.pem]", "Exec[create chained cert /etc/kubernetes/pki/dse__wdqs-next.chain.pem]", "Exec[create chained cert /etc/kubernetes/pki/dse__wdqs.chain.pem]", "Exec[renew certificate - dse__wdqs-deploy]", "Exec[renew certificate - dse__wdqs-next-deploy]", "Exec[renew certificate - dse__wdqs-next]", "Exec[renew certificate - dse__wdqs]", "File[/etc/cfssl/csr/dse__wdqs-deploy.csr]", "File[/etc/cfssl/csr/dse__wdqs-next-deploy.csr]", "File[/etc/cfssl/csr/dse__wdqs-next.csr]", "File[/etc/cfssl/csr/dse__wdqs.csr]", "File[/etc/helmfile-defaults/private/dse-k8s_services/wdqs-next]", "File[/etc/helmfile-defaults/private/dse-k8s_services/wdqs]", "File[/etc/kubernetes/pki/dse__wdqs-deploy-key.pem]", "File[/etc/kubernetes/pki/dse__wdqs-deploy.chain.pem]", "File[/etc/kubernetes/pki/dse__wdqs-deploy.chained.pem]", "File[/etc/kubernetes/pki/dse__wdqs-deploy.csr]", "File[/etc/kubernetes/pki/dse__wdqs-deploy.pem]", "File[/etc/kubernetes/pki/dse__wdqs-key.pem]", "File[/etc/kubernetes/pki/dse__wdqs-next-deploy-key.pem]", "File[/etc/kubernetes/pki/dse__wdqs-next-deploy.chain.pem]", "File[/etc/kubernetes/pki/dse__wdqs-next-deploy.chained.pem]", "File[/etc/kubernetes/pki/dse__wdqs-next-deploy.csr]", "File[/etc/kubernetes/pki/dse__wdqs-next-deploy.pem]", "File[/etc/kubernetes/pki/dse__wdqs-next-key.pem]", "File[/etc/kubernetes/pki/dse__wdqs-next.chain.pem]", "File[/etc/kubernetes/pki/dse__wdqs-next.chained.pem]", "File[/etc/kubernetes/pki/dse__wdqs-next.csr]", "File[/etc/kubernetes/pki/dse__wdqs-next.pem]", "File[/etc/kubernetes/pki/dse__wdqs.chain.pem]", "File[/etc/kubernetes/pki/dse__wdqs.chained.pem]", "File[/etc/kubernetes/pki/dse__wdqs.csr]", "File[/etc/kubernetes/pki/dse__wdqs.pem]", "File[/etc/kubernetes/wdqs-deploy-dse-k8s-codfw.config]", "File[/etc/kubernetes/wdqs-deploy-dse-k8s-eqiad.config]", "File[/etc/kubernetes/wdqs-dse-k8s-codfw.config]", "File[/etc/kubernetes/wdqs-dse-k8s-eqiad.config]", "File[/etc/kubernetes/wdqs-next-deploy-dse-k8s-codfw.config]", "File[/etc/kubernetes/wdqs-next-deploy-dse-k8s-eqiad.config]", "File[/etc/kubernetes/wdqs-next-dse-k8s-codfw.config]", "File[/etc/kubernetes/wdqs-next-dse-k8s-eqiad.config]"], "resource_diffs": [{"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@@ -76,22 +76,14 @@\n     usernames:\n     - name: opensearch-ttmserver-test\n     - name: opensearch-ttmserver-test-deploy\n-  wdqs-internal:\n+  wdqs:\n     usernames:\n-    - name: wdqs-internal\n-    - name: wdqs-internal-deploy\n-  wdqs-internal-next:\n+    - name: wdqs\n+    - name: wdqs-deploy\n+  wdqs-next:\n     usernames:\n-    - name: wdqs-internal-next\n-    - name: wdqs-internal-next-deploy\n-  wdqs-external:\n-    usernames:\n-    - name: wdqs-external\n-    - name: wdqs-external-deploy\n-  wdqs-external-next:\n-    usernames:\n-    - name: wdqs-external-next\n-    - name: wdqs-external-next-deploy\n+    - name: wdqs-next\n+    - name: wdqs-next-deploy\n   echoserver:\n     usernames:\n     - name: echoserver"}, {"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@@ -76,22 +76,14 @@\n     usernames:\n     - name: opensearch-ttmserver-test\n     - name: opensearch-ttmserver-test-deploy\n-  wdqs-internal:\n-    usernames:\n-    - name: wdqs-internal\n-    - name: wdqs-internal-deploy\n-  wdqs-internal-next:\n-    usernames:\n-    - name: wdqs-internal-next\n-    - name: wdqs-internal-next-deploy\n-  wdqs-external:\n-    usernames:\n-    - name: wdqs-external\n-    - name: wdqs-external-deploy\n-  wdqs-external-next:\n-    usernames:\n-    - name: wdqs-external-next\n-    - name: wdqs-external-next-deploy\n+  wdqs:\n+    usernames:\n+    - name: wdqs\n+    - name: wdqs-deploy\n+  wdqs-next:\n+    usernames:\n+    - name: wdqs-next\n+    - name: wdqs-next-deploy\n   airflow-analytics-product:\n     private_files:\n       group: airflow-deployers"}, {"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 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 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 kafka-ui 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 wdqs-internal wdqs-internal-next wdqs-external wdqs-external-next 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 eventstreams-internal 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 webrequest-page-view webrequest-page-view-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 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 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 kafka-ui 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 wdqs wdqs-next 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 eventstreams-internal 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 webrequest-page-view webrequest-page-view-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"}], "perc_changed": "0.95%"}, "main": {"total": 17426, "only_in_self": ["Cfssl::Cert[dse__wdqs-external-deploy]", "Cfssl::Cert[dse__wdqs-external-next-deploy]", "Cfssl::Cert[dse__wdqs-external-next]", "Cfssl::Cert[dse__wdqs-external]", "Cfssl::Cert[dse__wdqs-internal-deploy]", "Cfssl::Cert[dse__wdqs-internal-next-deploy]", "Cfssl::Cert[dse__wdqs-internal-next]", "Cfssl::Cert[dse__wdqs-internal]", "Cfssl::Csr[/etc/cfssl/csr/dse__wdqs-external-deploy.csr]", "Cfssl::Csr[/etc/cfssl/csr/dse__wdqs-external-next-deploy.csr]", "Cfssl::Csr[/etc/cfssl/csr/dse__wdqs-external-next.csr]", "Cfssl::Csr[/etc/cfssl/csr/dse__wdqs-external.csr]", "Cfssl::Csr[/etc/cfssl/csr/dse__wdqs-internal-deploy.csr]", "Cfssl::Csr[/etc/cfssl/csr/dse__wdqs-internal-next-deploy.csr]", "Cfssl::Csr[/etc/cfssl/csr/dse__wdqs-internal-next.csr]", "Cfssl::Csr[/etc/cfssl/csr/dse__wdqs-internal.csr]", "Exec[Generate cert dse__wdqs-external refresh on intermediate ca change]", "Exec[Generate cert dse__wdqs-external refresh]", "Exec[Generate cert dse__wdqs-external-deploy refresh on intermediate ca change]", "Exec[Generate cert dse__wdqs-external-deploy refresh]", "Exec[Generate cert dse__wdqs-external-deploy]", "Exec[Generate cert dse__wdqs-external-next refresh on intermediate ca change]", "Exec[Generate cert dse__wdqs-external-next refresh]", "Exec[Generate cert dse__wdqs-external-next-deploy refresh on intermediate ca change]", "Exec[Generate cert dse__wdqs-external-next-deploy refresh]", "Exec[Generate cert dse__wdqs-external-next-deploy]", "Exec[Generate cert dse__wdqs-external-next]", "Exec[Generate cert dse__wdqs-external]", "Exec[Generate cert dse__wdqs-internal refresh on intermediate ca change]", "Exec[Generate cert dse__wdqs-internal refresh]", "Exec[Generate cert dse__wdqs-internal-deploy refresh on intermediate ca change]", "Exec[Generate cert dse__wdqs-internal-deploy refresh]", "Exec[Generate cert dse__wdqs-internal-deploy]", "Exec[Generate cert dse__wdqs-internal-next refresh on intermediate ca change]", "Exec[Generate cert dse__wdqs-internal-next refresh]", "Exec[Generate cert dse__wdqs-internal-next-deploy refresh on intermediate ca change]", "Exec[Generate cert dse__wdqs-internal-next-deploy refresh]", "Exec[Generate cert dse__wdqs-internal-next-deploy]", "Exec[Generate cert dse__wdqs-internal-next]", "Exec[Generate cert dse__wdqs-internal]", "Exec[create chained cert /etc/kubernetes/pki/dse__wdqs-external-deploy.chain.pem]", "Exec[create chained cert /etc/kubernetes/pki/dse__wdqs-external-next-deploy.chain.pem]", "Exec[create chained cert /etc/kubernetes/pki/dse__wdqs-external-next.chain.pem]", "Exec[create chained cert /etc/kubernetes/pki/dse__wdqs-external.chain.pem]", "Exec[create chained cert /etc/kubernetes/pki/dse__wdqs-internal-deploy.chain.pem]", "Exec[create chained cert /etc/kubernetes/pki/dse__wdqs-internal-next-deploy.chain.pem]", "Exec[create chained cert /etc/kubernetes/pki/dse__wdqs-internal-next.chain.pem]", "Exec[create chained cert /etc/kubernetes/pki/dse__wdqs-internal.chain.pem]", "Exec[renew certificate - dse__wdqs-external-deploy]", "Exec[renew certificate - dse__wdqs-external-next-deploy]", "Exec[renew certificate - dse__wdqs-external-next]", "Exec[renew certificate - dse__wdqs-external]", "Exec[renew certificate - dse__wdqs-internal-deploy]", "Exec[renew certificate - dse__wdqs-internal-next-deploy]", "Exec[renew certificate - dse__wdqs-internal-next]", "Exec[renew certificate - dse__wdqs-internal]", "File[/etc/cfssl/csr/dse__wdqs-external-deploy.csr]", "File[/etc/cfssl/csr/dse__wdqs-external-next-deploy.csr]", "File[/etc/cfssl/csr/dse__wdqs-external-next.csr]", "File[/etc/cfssl/csr/dse__wdqs-external.csr]", "File[/etc/cfssl/csr/dse__wdqs-internal-deploy.csr]", "File[/etc/cfssl/csr/dse__wdqs-internal-next-deploy.csr]", "File[/etc/cfssl/csr/dse__wdqs-internal-next.csr]", "File[/etc/cfssl/csr/dse__wdqs-internal.csr]", "File[/etc/helmfile-defaults/private/dse-k8s_services/wdqs-external-next]", "File[/etc/helmfile-defaults/private/dse-k8s_services/wdqs-external]", "File[/etc/helmfile-defaults/private/dse-k8s_services/wdqs-internal-next]", "File[/etc/helmfile-defaults/private/dse-k8s_services/wdqs-internal]", "File[/etc/kubernetes/pki/dse__wdqs-external-deploy-key.pem]", "File[/etc/kubernetes/pki/dse__wdqs-external-deploy.chain.pem]", "File[/etc/kubernetes/pki/dse__wdqs-external-deploy.chained.pem]", "File[/etc/kubernetes/pki/dse__wdqs-external-deploy.csr]", "File[/etc/kubernetes/pki/dse__wdqs-external-deploy.pem]", "File[/etc/kubernetes/pki/dse__wdqs-external-key.pem]", "File[/etc/kubernetes/pki/dse__wdqs-external-next-deploy-key.pem]", "File[/etc/kubernetes/pki/dse__wdqs-external-next-deploy.chain.pem]", "File[/etc/kubernetes/pki/dse__wdqs-external-next-deploy.chained.pem]", "File[/etc/kubernetes/pki/dse__wdqs-external-next-deploy.csr]", "File[/etc/kubernetes/pki/dse__wdqs-external-next-deploy.pem]", "File[/etc/kubernetes/pki/dse__wdqs-external-next-key.pem]", "File[/etc/kubernetes/pki/dse__wdqs-external-next.chain.pem]", "File[/etc/kubernetes/pki/dse__wdqs-external-next.chained.pem]", "File[/etc/kubernetes/pki/dse__wdqs-external-next.csr]", "File[/etc/kubernetes/pki/dse__wdqs-external-next.pem]", "File[/etc/kubernetes/pki/dse__wdqs-external.chain.pem]", "File[/etc/kubernetes/pki/dse__wdqs-external.chained.pem]", "File[/etc/kubernetes/pki/dse__wdqs-external.csr]", "File[/etc/kubernetes/pki/dse__wdqs-external.pem]", "File[/etc/kubernetes/pki/dse__wdqs-internal-deploy-key.pem]", "File[/etc/kubernetes/pki/dse__wdqs-internal-deploy.chain.pem]", "File[/etc/kubernetes/pki/dse__wdqs-internal-deploy.chained.pem]", "File[/etc/kubernetes/pki/dse__wdqs-internal-deploy.csr]", "File[/etc/kubernetes/pki/dse__wdqs-internal-deploy.pem]", "File[/etc/kubernetes/pki/dse__wdqs-internal-key.pem]", "File[/etc/kubernetes/pki/dse__wdqs-internal-next-deploy-key.pem]", "File[/etc/kubernetes/pki/dse__wdqs-internal-next-deploy.chain.pem]", "File[/etc/kubernetes/pki/dse__wdqs-internal-next-deploy.chained.pem]", "File[/etc/kubernetes/pki/dse__wdqs-internal-next-deploy.csr]", "File[/etc/kubernetes/pki/dse__wdqs-internal-next-deploy.pem]", "File[/etc/kubernetes/pki/dse__wdqs-internal-next-key.pem]", "File[/etc/kubernetes/pki/dse__wdqs-internal-next.chain.pem]", "File[/etc/kubernetes/pki/dse__wdqs-internal-next.chained.pem]", "File[/etc/kubernetes/pki/dse__wdqs-internal-next.csr]", "File[/etc/kubernetes/pki/dse__wdqs-internal-next.pem]", "File[/etc/kubernetes/pki/dse__wdqs-internal.chain.pem]", "File[/etc/kubernetes/pki/dse__wdqs-internal.chained.pem]", "File[/etc/kubernetes/pki/dse__wdqs-internal.csr]", "File[/etc/kubernetes/pki/dse__wdqs-internal.pem]", "File[/etc/kubernetes/wdqs-external-deploy-dse-k8s-codfw.config]", "File[/etc/kubernetes/wdqs-external-deploy-dse-k8s-eqiad.config]", "File[/etc/kubernetes/wdqs-external-dse-k8s-codfw.config]", "File[/etc/kubernetes/wdqs-external-dse-k8s-eqiad.config]", "File[/etc/kubernetes/wdqs-external-next-deploy-dse-k8s-codfw.config]", "File[/etc/kubernetes/wdqs-external-next-deploy-dse-k8s-eqiad.config]", "File[/etc/kubernetes/wdqs-external-next-dse-k8s-codfw.config]", "File[/etc/kubernetes/wdqs-external-next-dse-k8s-eqiad.config]", "File[/etc/kubernetes/wdqs-internal-deploy-dse-k8s-codfw.config]", "File[/etc/kubernetes/wdqs-internal-deploy-dse-k8s-eqiad.config]", "File[/etc/kubernetes/wdqs-internal-dse-k8s-codfw.config]", "File[/etc/kubernetes/wdqs-internal-dse-k8s-eqiad.config]", "File[/etc/kubernetes/wdqs-internal-next-deploy-dse-k8s-codfw.config]", "File[/etc/kubernetes/wdqs-internal-next-deploy-dse-k8s-eqiad.config]", "File[/etc/kubernetes/wdqs-internal-next-dse-k8s-codfw.config]", "File[/etc/kubernetes/wdqs-internal-next-dse-k8s-eqiad.config]", "K8s::Kubeconfig[/etc/kubernetes/wdqs-external-deploy-dse-k8s-codfw.config]", "K8s::Kubeconfig[/etc/kubernetes/wdqs-external-deploy-dse-k8s-eqiad.config]", "K8s::Kubeconfig[/etc/kubernetes/wdqs-external-dse-k8s-codfw.config]", "K8s::Kubeconfig[/etc/kubernetes/wdqs-external-dse-k8s-eqiad.config]", "K8s::Kubeconfig[/etc/kubernetes/wdqs-external-next-deploy-dse-k8s-codfw.config]", "K8s::Kubeconfig[/etc/kubernetes/wdqs-external-next-deploy-dse-k8s-eqiad.config]", "K8s::Kubeconfig[/etc/kubernetes/wdqs-external-next-dse-k8s-codfw.config]", "K8s::Kubeconfig[/etc/kubernetes/wdqs-external-next-dse-k8s-eqiad.config]", "K8s::Kubeconfig[/etc/kubernetes/wdqs-internal-deploy-dse-k8s-codfw.config]", "K8s::Kubeconfig[/etc/kubernetes/wdqs-internal-deploy-dse-k8s-eqiad.config]", "K8s::Kubeconfig[/etc/kubernetes/wdqs-internal-dse-k8s-codfw.config]", "K8s::Kubeconfig[/etc/kubernetes/wdqs-internal-dse-k8s-eqiad.config]", "K8s::Kubeconfig[/etc/kubernetes/wdqs-internal-next-deploy-dse-k8s-codfw.config]", "K8s::Kubeconfig[/etc/kubernetes/wdqs-internal-next-deploy-dse-k8s-eqiad.config]", "K8s::Kubeconfig[/etc/kubernetes/wdqs-internal-next-dse-k8s-codfw.config]", "K8s::Kubeconfig[/etc/kubernetes/wdqs-internal-next-dse-k8s-eqiad.config]"], "only_in_other": ["Cfssl::Cert[dse__wdqs-deploy]", "Cfssl::Cert[dse__wdqs-next-deploy]", "Cfssl::Cert[dse__wdqs-next]", "Cfssl::Cert[dse__wdqs]", "Cfssl::Csr[/etc/cfssl/csr/dse__wdqs-deploy.csr]", "Cfssl::Csr[/etc/cfssl/csr/dse__wdqs-next-deploy.csr]", "Cfssl::Csr[/etc/cfssl/csr/dse__wdqs-next.csr]", "Cfssl::Csr[/etc/cfssl/csr/dse__wdqs.csr]", "Exec[Generate cert dse__wdqs refresh on intermediate ca change]", "Exec[Generate cert dse__wdqs refresh]", "Exec[Generate cert dse__wdqs-deploy refresh on intermediate ca change]", "Exec[Generate cert dse__wdqs-deploy refresh]", "Exec[Generate cert dse__wdqs-deploy]", "Exec[Generate cert dse__wdqs-next refresh on intermediate ca change]", "Exec[Generate cert dse__wdqs-next refresh]", "Exec[Generate cert dse__wdqs-next-deploy refresh on intermediate ca change]", "Exec[Generate cert dse__wdqs-next-deploy refresh]", "Exec[Generate cert dse__wdqs-next-deploy]", "Exec[Generate cert dse__wdqs-next]", "Exec[Generate cert dse__wdqs]", "Exec[create chained cert /etc/kubernetes/pki/dse__wdqs-deploy.chain.pem]", "Exec[create chained cert /etc/kubernetes/pki/dse__wdqs-next-deploy.chain.pem]", "Exec[create chained cert /etc/kubernetes/pki/dse__wdqs-next.chain.pem]", "Exec[create chained cert /etc/kubernetes/pki/dse__wdqs.chain.pem]", "Exec[renew certificate - dse__wdqs-deploy]", "Exec[renew certificate - dse__wdqs-next-deploy]", "Exec[renew certificate - dse__wdqs-next]", "Exec[renew certificate - dse__wdqs]", "File[/etc/cfssl/csr/dse__wdqs-deploy.csr]", "File[/etc/cfssl/csr/dse__wdqs-next-deploy.csr]", "File[/etc/cfssl/csr/dse__wdqs-next.csr]", "File[/etc/cfssl/csr/dse__wdqs.csr]", "File[/etc/helmfile-defaults/private/dse-k8s_services/wdqs-next]", "File[/etc/helmfile-defaults/private/dse-k8s_services/wdqs]", "File[/etc/kubernetes/pki/dse__wdqs-deploy-key.pem]", "File[/etc/kubernetes/pki/dse__wdqs-deploy.chain.pem]", "File[/etc/kubernetes/pki/dse__wdqs-deploy.chained.pem]", "File[/etc/kubernetes/pki/dse__wdqs-deploy.csr]", "File[/etc/kubernetes/pki/dse__wdqs-deploy.pem]", "File[/etc/kubernetes/pki/dse__wdqs-key.pem]", "File[/etc/kubernetes/pki/dse__wdqs-next-deploy-key.pem]", "File[/etc/kubernetes/pki/dse__wdqs-next-deploy.chain.pem]", "File[/etc/kubernetes/pki/dse__wdqs-next-deploy.chained.pem]", "File[/etc/kubernetes/pki/dse__wdqs-next-deploy.csr]", "File[/etc/kubernetes/pki/dse__wdqs-next-deploy.pem]", "File[/etc/kubernetes/pki/dse__wdqs-next-key.pem]", "File[/etc/kubernetes/pki/dse__wdqs-next.chain.pem]", "File[/etc/kubernetes/pki/dse__wdqs-next.chained.pem]", "File[/etc/kubernetes/pki/dse__wdqs-next.csr]", "File[/etc/kubernetes/pki/dse__wdqs-next.pem]", "File[/etc/kubernetes/pki/dse__wdqs.chain.pem]", "File[/etc/kubernetes/pki/dse__wdqs.chained.pem]", "File[/etc/kubernetes/pki/dse__wdqs.csr]", "File[/etc/kubernetes/pki/dse__wdqs.pem]", "File[/etc/kubernetes/wdqs-deploy-dse-k8s-codfw.config]", "File[/etc/kubernetes/wdqs-deploy-dse-k8s-eqiad.config]", "File[/etc/kubernetes/wdqs-dse-k8s-codfw.config]", "File[/etc/kubernetes/wdqs-dse-k8s-eqiad.config]", "File[/etc/kubernetes/wdqs-next-deploy-dse-k8s-codfw.config]", "File[/etc/kubernetes/wdqs-next-deploy-dse-k8s-eqiad.config]", "File[/etc/kubernetes/wdqs-next-dse-k8s-codfw.config]", "File[/etc/kubernetes/wdqs-next-dse-k8s-eqiad.config]", "K8s::Kubeconfig[/etc/kubernetes/wdqs-deploy-dse-k8s-codfw.config]", "K8s::Kubeconfig[/etc/kubernetes/wdqs-deploy-dse-k8s-eqiad.config]", "K8s::Kubeconfig[/etc/kubernetes/wdqs-dse-k8s-codfw.config]", "K8s::Kubeconfig[/etc/kubernetes/wdqs-dse-k8s-eqiad.config]", "K8s::Kubeconfig[/etc/kubernetes/wdqs-next-deploy-dse-k8s-codfw.config]", "K8s::Kubeconfig[/etc/kubernetes/wdqs-next-deploy-dse-k8s-eqiad.config]", "K8s::Kubeconfig[/etc/kubernetes/wdqs-next-dse-k8s-codfw.config]", "K8s::Kubeconfig[/etc/kubernetes/wdqs-next-dse-k8s-eqiad.config]"], "resource_diffs": [{"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@@ -76,22 +76,14 @@\n     usernames:\n     - name: opensearch-ttmserver-test\n     - name: opensearch-ttmserver-test-deploy\n-  wdqs-internal:\n+  wdqs:\n     usernames:\n-    - name: wdqs-internal\n-    - name: wdqs-internal-deploy\n-  wdqs-internal-next:\n+    - name: wdqs\n+    - name: wdqs-deploy\n+  wdqs-next:\n     usernames:\n-    - name: wdqs-internal-next\n-    - name: wdqs-internal-next-deploy\n-  wdqs-external:\n-    usernames:\n-    - name: wdqs-external\n-    - name: wdqs-external-deploy\n-  wdqs-external-next:\n-    usernames:\n-    - name: wdqs-external-next\n-    - name: wdqs-external-next-deploy\n+    - name: wdqs-next\n+    - name: wdqs-next-deploy\n   echoserver:\n     usernames:\n     - name: echoserver"}, {"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@@ -76,22 +76,14 @@\n     usernames:\n     - name: opensearch-ttmserver-test\n     - name: opensearch-ttmserver-test-deploy\n-  wdqs-internal:\n-    usernames:\n-    - name: wdqs-internal\n-    - name: wdqs-internal-deploy\n-  wdqs-internal-next:\n-    usernames:\n-    - name: wdqs-internal-next\n-    - name: wdqs-internal-next-deploy\n-  wdqs-external:\n-    usernames:\n-    - name: wdqs-external\n-    - name: wdqs-external-deploy\n-  wdqs-external-next:\n-    usernames:\n-    - name: wdqs-external-next\n-    - name: wdqs-external-next-deploy\n+  wdqs:\n+    usernames:\n+    - name: wdqs\n+    - name: wdqs-deploy\n+  wdqs-next:\n+    usernames:\n+    - name: wdqs-next\n+    - name: wdqs-next-deploy\n   airflow-analytics-product:\n     private_files:\n       group: airflow-deployers"}, {"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 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 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 kafka-ui 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 wdqs-internal wdqs-internal-next wdqs-external wdqs-external-next 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 eventstreams-internal 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 webrequest-page-view webrequest-page-view-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 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 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 kafka-ui 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 wdqs wdqs-next 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 eventstreams-internal 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 webrequest-page-view webrequest-page-view-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::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'}]}, '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'}]}, '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'}]}, 'kafka-ui': {'usernames': [{'name': 'kafka-ui'}, {'name': 'kafka-ui-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'}]}, 'wdqs-internal': {'usernames': [{'name': 'wdqs-internal'}, {'name': 'wdqs-internal-deploy'}]}, 'wdqs-internal-next': {'usernames': [{'name': 'wdqs-internal-next'}, {'name': 'wdqs-internal-next-deploy'}]}, 'wdqs-external': {'usernames': [{'name': 'wdqs-external'}, {'name': 'wdqs-external-deploy'}]}, 'wdqs-external-next': {'usernames': [{'name': 'wdqs-external-next'}, {'name': 'wdqs-external-next-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'}]}, 'eventstreams-internal': {'usernames': [{'name': 'eventstreams-internal'}, {'name': 'eventstreams-internal-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'}]}, 'webrequest-page-view': {'usernames': [{'name': 'webrequest-page-view'}, {'name': 'webrequest-page-view-deploy'}]}, 'webrequest-page-view-next': {'usernames': [{'name': 'webrequest-page-view-next'}, {'name': 'webrequest-page-view-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'}]}, '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'}]}, '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'}]}, 'kafka-ui': {'usernames': [{'name': 'kafka-ui'}, {'name': 'kafka-ui-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'}]}, 'wdqs': {'usernames': [{'name': 'wdqs'}, {'name': 'wdqs-deploy'}]}, 'wdqs-next': {'usernames': [{'name': 'wdqs-next'}, {'name': 'wdqs-next-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'}]}, 'eventstreams-internal': {'usernames': [{'name': 'eventstreams-internal'}, {'name': 'eventstreams-internal-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'}]}, 'webrequest-page-view': {'usernames': [{'name': 'webrequest-page-view'}, {'name': 'webrequest-page-view-deploy'}]}, 'webrequest-page-view-next': {'usernames': [{'name': 'webrequest-page-view-next'}, {'name': 'webrequest-page-view-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": "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'}]}, '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'}]}, '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'}]}, 'kafka-ui': {'usernames': [{'name': 'kafka-ui'}, {'name': 'kafka-ui-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'}]}, 'wdqs-internal': {'usernames': [{'name': 'wdqs-internal'}, {'name': 'wdqs-internal-deploy'}]}, 'wdqs-internal-next': {'usernames': [{'name': 'wdqs-internal-next'}, {'name': 'wdqs-internal-next-deploy'}]}, 'wdqs-external': {'usernames': [{'name': 'wdqs-external'}, {'name': 'wdqs-external-deploy'}]}, 'wdqs-external-next': {'usernames': [{'name': 'wdqs-external-next'}, {'name': 'wdqs-external-next-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'}]}, 'eventstreams-internal': {'usernames': [{'name': 'eventstreams-internal'}, {'name': 'eventstreams-internal-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'}]}, 'webrequest-page-view': {'usernames': [{'name': 'webrequest-page-view'}, {'name': 'webrequest-page-view-deploy'}]}, 'webrequest-page-view-next': {'usernames': [{'name': 'webrequest-page-view-next'}, {'name': 'webrequest-page-view-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'}]}, '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'}]}, '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'}]}, 'kafka-ui': {'usernames': [{'name': 'kafka-ui'}, {'name': 'kafka-ui-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'}]}, 'wdqs': {'usernames': [{'name': 'wdqs'}, {'name': 'wdqs-deploy'}]}, 'wdqs-next': {'usernames': [{'name': 'wdqs-next'}, {'name': 'wdqs-next-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'}]}, 'eventstreams-internal': {'usernames': [{'name': 'eventstreams-internal'}, {'name': 'eventstreams-internal-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'}]}, 'webrequest-page-view': {'usernames': [{'name': 'webrequest-page-view'}, {'name': 'webrequest-page-view-deploy'}]}, 'webrequest-page-view-next': {'usernames': [{'name': 'webrequest-page-view-next'}, {'name': 'webrequest-page-view-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.23%"}}}