Mobrovac has submitted this change and it was merged.

Change subject: Refactor config to pull out the spec at the root
......................................................................


Refactor config to pull out the spec at the root

Change-Id: If1289206841b1721007b9dfc5762709a65a1dbcd
---
M scap/templates/config.yaml.j2
1 file changed, 581 insertions(+), 578 deletions(-)

Approvals:
  Mobrovac: Verified; Looks good to me, approved



diff --git a/scap/templates/config.yaml.j2 b/scap/templates/config.yaml.j2
index 3678e6d..2aacf4c 100644
--- a/scap/templates/config.yaml.j2
+++ b/scap/templates/config.yaml.j2
@@ -1,3 +1,583 @@
+spec: &spec
+  x-sub-request-filters:
+    - type: default
+      name: http
+      options:
+        allow:
+          - pattern: /^https?:\/\//
+            forward_headers:
+              user-agent: true
+  title: The Change Propagation root
+  paths:
+    /{api:sys}/purge:
+      x-modules:
+        - path: src/sys/purge.js
+          options:
+            host: <%= purge_host %>
+            port: <%= purge_port %>
+    /{api:sys}/links:
+      x-modules:
+        - path: src/sys/dep_updates.js
+          options:
+            templates:
+              mw_api:
+                uri: <%= mwapi_uri %>
+                headers:
+                  host: '{{message.meta.domain}}'
+                body:
+                  formatversion: 2
+    /{api:sys}/queue:
+      x-modules:
+        - path: src/sys/kafka.js
+          options:
+            metadata_broker_list: <%= broker_list %>
+            dc_name: <%= site %>
+            concurrency: <%= concurrency %>
+            startup_delay: 60000
+            templates:
+              summary_definition_rerender: &summary_definition_rerender_spec
+                topic: resource_change
+                cases:
+                  - match:
+                      meta:
+                        uri: 
'/^https?:\/\/[^\/]+\/api\/rest_v1\/page\/html\/([^\/]+)$/'
+                      tags:
+                        - restbase
+                    match_not:
+                      meta:
+                        domain: '/wiktionary\.org$/'
+                    exec:
+                      method: get
+                      # Don't encode title since it should be already encoded
+                      uri: '<%= restbase_uri 
%>/{{message.meta.domain}}/v1/page/summary/{{match.meta.uri[1]}}'
+                      query:
+                        redirect: false
+                      headers:
+                        cache-control: no-cache
+                  - match:
+                      meta:
+                        # These URIs are coming from RESTBase, so we know that 
article titles will be normalized
+                        # and main namespace articles will not have : 
(uri-encoded, so %3a or %3A)
+                        uri: 
'/^https?:\/\/[^\/]+\/api\/rest_v1\/page\/html\/((?:(?!%3a|%3A|\/).)+)$/'
+                        domain: '/^en\.wiktionary\.org$/'
+                      tags:
+                        - restbase
+                    exec:
+                      method: get
+                      # Don't encode title since it should be already encoded
+                      uri: '<%= restbase_uri 
%>/{{message.meta.domain}}/v1/page/definition/{{match.meta.uri[1]}}'
+                      query:
+                        redirect: false
+                      headers:
+                        cache-control: no-cache
+
+              summary_definition_rerender_transcludes:
+                <<: *summary_definition_rerender_spec
+                topic: change-prop.transcludes.resource-change
+
+              mobile_rerender: &mobile_rerender_spec
+                topic: resource_change
+                match:
+                  meta:
+                    uri: 
'/^https?:\/\/[^\/]+\/api\/rest_v1\/page\/html\/([^/]+)$/'
+                  tags:
+                    - restbase
+                exec:
+                  method: get
+                  # Don't encode title since it should be already encoded
+                  uri: '<%= restbase_uri 
%>/{{message.meta.domain}}/v1/page/mobile-sections/{{match.meta.uri[1]}}'
+                  query:
+                    redirect: false
+                  headers:
+                    cache-control: no-cache
+
+              mobile_rerender_transcludes:
+                <<: *mobile_rerender_spec
+                topic: change-prop.transcludes.resource-change
+
+              purge_varnish: &purge_varnish_spec
+                topic: resource_change
+                match:
+                  meta:
+                    uri: '/^https?:\/\/[^\/]+\/api\/rest_v1\/(?<title>.+)$/'
+                  tags:
+                    - restbase
+                exec:
+                  method: post
+                  uri: '/sys/purge/'
+                  body:
+                    - meta:
+                        uri: 
'//{{message.meta.domain}}/api/rest_v1/{{match.meta.uri.title}}'
+
+              purge_varnish_transcludes:
+                <<: *purge_varnish_spec
+                topic: change-prop.transcludes.resource-change
+
+              # RESTBase update jobs
+              mw_purge:
+                topic: resource_change
+                match:
+                  meta:
+                    uri: '/^https?:\/\/[^\/]+\/wiki\/(?<title>.+)$/'
+                  tags:
+                    - purge
+                exec:
+                  method: get
+                  uri: '<%= restbase_uri 
%>/{{message.meta.domain}}/v1/page/html/{{match.meta.uri.title}}'
+                  headers:
+                    cache-control: no-cache
+                    if-unmodified-since: '{{date(message.meta.dt)}}'
+                  query:
+                    redirect: false
+
+              null_edit:
+                topic: resource_change
+                ignore:
+                  status:
+                    - 403 # Ignoring 403 since some of the pages with high 
number of null_edit events are blacklisted
+                    - 412
+                match:
+                  meta:
+                    uri: '/^https?:\/\/[^\/]+\/wiki\/(?<title>.+)$/'
+                  tags:
+                    - null_edit
+                exec:
+                  method: get
+                  uri: '<%= restbase_uri 
%>/{{message.meta.domain}}/v1/page/html/{{match.meta.uri.title}}'
+                  headers:
+                    cache-control: no-cache
+                    if-unmodified-since: '{{date(message.meta.dt)}}'
+                  query:
+                    redirect: false
+
+              page_edit:
+                topic: mediawiki.revision-create
+                retry_on:
+                  status:
+                    - '5xx'
+                    - 404 # Sometimes occasional 404s happen because of the 
mysql replication lag, so retry
+                exec:
+                  method: get
+                  uri: '<%= restbase_uri 
%>/{{message.meta.domain}}/v1/page/html/{message.page_title}/{{message.rev_id}}'
+                  headers:
+                    cache-control: no-cache
+                    x-restbase-parentrevision: '{{message.rev_parent_id}}'
+                    if-unmodified-since: '{{date(message.meta.dt)}}'
+                  query:
+                    redirect: false
+
+              revision_visibility_change:
+                topic: mediawiki.revision-visibility-change
+                ignore:
+                  status:
+                    - 403 # When the revision is hidden 403 will be returned 
by RESTBase, it's a valid situation
+                    - 412
+                exec:
+                  method: get
+                  uri: '<%= restbase_uri 
%>/{{message.meta.domain}}/v1/page/revision/{{message.rev_id}}'
+                  headers:
+                    cache-control: no-cache
+                  query:
+                    redirect: false
+
+              page_delete:
+                topic: mediawiki.page-delete
+                ignore:
+                  status:
+                    - 404 # 404 is a normal response for page deletion
+                    - 412
+                exec:
+                  - method: get
+                    uri: '<%= restbase_uri 
%>/{{message.meta.domain}}/v1/page/title/{message.page_title}'
+                    headers:
+                      cache-control: no-cache
+                    query:
+                      redirect: false
+                  # For page deletion RESTBase doesn't emit resource_change 
events, and to go through
+                  # the normal purge chain (html update -> html 
resource_change -> summary update -> summary resource_change)
+                  # we need to add many workarounds/shortcurst in RESTBase. So 
having this list here is an OK compromise.
+                  - method: post
+                    uri: '/sys/purge/'
+                    body:
+                      - meta:
+                          uri: 
'//{{message.meta.domain}}/api/rest_v1/page/html/{message.page_title}'
+                      - meta:
+                          uri: 
'//{{message.meta.domain}}/api/rest_v1/page/html/{message.page_title}/{{message.rev_id}}'
+                      - meta:
+                          uri: 
'//{{message.meta.domain}}/api/rest_v1/page/summary/{message.page_title}'
+                      - meta:
+                          uri: 
'//{{message.meta.domain}}/api/rest_v1/page/definition/{message.page_title}'
+                      - meta:
+                          uri: 
'//{{message.meta.domain}}/api/rest_v1/page/mobile-sections/{message.page_title}'
+                      - meta:
+                          uri: 
'//{{message.meta.domain}}/api/rest_v1/page/mobile-sections-lead/{message.page_title}'
+                      - meta:
+                          uri: 
'//{{message.meta.domain}}/api/rest_v1/page/mobile-sections-remaining/{message.page_title}'
+
+              page_restore:
+                topic: mediawiki.page-undelete
+                exec:
+                  method: get
+                  uri: '<%= restbase_uri 
%>/{{message.meta.domain}}/v1/page/html/{message.page_title}'
+                  headers:
+                    cache-control: no-cache
+                  query:
+                    redirect: false
+
+              page_move:
+                topic: mediawiki.page-move
+                exec:
+                  - method: get
+                    uri: '<%= restbase_uri 
%>/{{message.meta.domain}}/v1/page/html/{message.page_title}/{{message.rev_id}}'
+                    headers:
+                      cache-control: no-cache
+                      if-unmodified-since: '{{date(message.meta.dt)}}'
+                    query:
+                      redirect: false
+                  - method: get
+                    uri: '<%= restbase_uri 
%>/{{message.meta.domain}}/v1/page/title/{message.prior_state.page_title}'
+                    headers:
+                      cache-control: no-cache
+                    query:
+                      redirect: false
+
+              transclusion_update:
+                topic: mediawiki.revision-create
+                exec:
+                  method: post
+                  uri: '/sys/links/transcludes/{message.page_title}'
+                  body: '{{globals.message}}'
+
+              on_transclusion_update:
+                concurrency: <%= concurrency * 8 %>
+                topic: change-prop.transcludes.resource-change
+                match:
+                  meta:
+                    uri: '/https?:\/\/[^\/]+\/wiki\/(?<title>.+)/'
+                  tags: [ 'transcludes' ]
+                exec:
+                  method: get
+                  uri: '<%= restbase_uri 
%>/{{message.meta.domain}}/v1/page/html/{{match.meta.uri.title}}'
+                  headers:
+                    cache-control: no-cache
+                    if-unmodified-since: '{{date(message.meta.dt)}}'
+                    x-restbase-mode: '{{message.tags[1]}}'
+                  query:
+                    redirect: false
+
+              # ORES caching updates
+              ores_cache:
+                topic: mediawiki.revision-create
+                concurrency: 15
+                ignore:
+                  status:
+                    - 503
+                cases:
+                  - match:
+                      meta:
+                        domain: ar.wikipedia.org
+                      performer:
+                        user_is_bot: false
+                    exec:
+                      uri: '<%= ores_uri %>/v2/scores/arwiki/'
+                      query:
+                        models: 'reverted'
+                        revids: '{{message.rev_id}}'
+                        precache: true
+                  - match:
+                      meta:
+                        domain: cs.wikipedia.org
+                      performer:
+                        user_is_bot: false
+                    exec:
+                      uri: '<%= ores_uri %>/v2/scores/cswiki/'
+                      query:
+                        models: 'reverted'
+                        revids: '{{message.rev_id}}'
+                        precache: true
+                  - match:
+                      meta:
+                        domain: en.wikipedia.org
+                      performer:
+                        user_is_bot: false
+                    exec:
+                      uri: '<%= ores_uri %>/v2/scores/enwiki/'
+                      query:
+                        models: 'reverted|damaging|goodfaith'
+                        revids: '{{message.rev_id}}'
+                        precache: true
+                  - match:
+                      meta:
+                        domain: en.wiktionary.org
+                      performer:
+                        user_is_bot: false
+                    exec:
+                      uri: '<%= ores_uri %>/v2/scores/enwiktionary/'
+                      query:
+                        models: 'reverted'
+                        revids: '{{message.rev_id}}'
+                        precache: true
+                  - match:
+                      meta:
+                        domain: es.wikipedia.org
+                      performer:
+                        user_is_bot: false
+                    exec:
+                      uri: '<%= ores_uri %>/v2/scores/eswiki/'
+                      query:
+                        models: 'reverted'
+                        revids: '{{message.rev_id}}'
+                        precache: true
+                  - match:
+                      meta:
+                        domain: et.wikipedia.org
+                      performer:
+                        user_is_bot: false
+                    exec:
+                      uri: '<%= ores_uri %>/v2/scores/etwiki/'
+                      query:
+                        models: 'reverted'
+                        revids: '{{message.rev_id}}'
+                        precache: true
+                  - match:
+                      meta:
+                        domain: fa.wikipedia.org
+                      performer:
+                        user_is_bot: false
+                    exec:
+                      uri: '<%= ores_uri %>/v2/scores/fawiki/'
+                      query:
+                        models: 'reverted|damaging|goodfaith'
+                        revids: '{{message.rev_id}}'
+                        precache: true
+                  - match:
+                      meta:
+                        domain: fr.wikipedia.org
+                      performer:
+                        user_is_bot: false
+                    exec:
+                      uri: '<%= ores_uri %>/v2/scores/frwiki/'
+                      query:
+                        models: 'reverted'
+                        revids: '{{message.rev_id}}'
+                        precache: true
+                  - match:
+                      meta:
+                        domain: he.wikipedia.org
+                      performer:
+                        user_is_bot: false
+                    exec:
+                      uri: '<%= ores_uri %>/v2/scores/hewiki/'
+                      query:
+                        models: 'reverted'
+                        revids: '{{message.rev_id}}'
+                        precache: true
+                  - match:
+                      meta:
+                        domain: hu.wikipedia.org
+                      performer:
+                        user_is_bot: false
+                    exec:
+                      uri: '<%= ores_uri %>/v2/scores/huwiki/'
+                      query:
+                        models: 'reverted'
+                        revids: '{{message.rev_id}}'
+                        precache: true
+                  - match:
+                      meta:
+                        domain: id.wikipedia.org
+                      performer:
+                        user_is_bot: false
+                    exec:
+                      uri: '<%= ores_uri %>/v2/scores/idwiki/'
+                      query:
+                        models: 'reverted'
+                        revids: '{{message.rev_id}}'
+                        precache: true
+                  - match:
+                      meta:
+                        domain: it.wikipedia.org
+                      performer:
+                        user_is_bot: false
+                    exec:
+                      uri: '<%= ores_uri %>/v2/scores/itwiki/'
+                      query:
+                        models: 'reverted'
+                        revids: '{{message.rev_id}}'
+                        precache: true
+                  - match:
+                      meta:
+                        domain: nl.wikipedia.org
+                      performer:
+                        user_is_bot: false
+                    exec:
+                      uri: '<%= ores_uri %>/v2/scores/nlwiki/'
+                      query:
+                        models: 'reverted|damaging|goodfaith'
+                        revids: '{{message.rev_id}}'
+                        precache: true
+                  - match:
+                      meta:
+                        domain: pl.wikipedia.org
+                      performer:
+                        user_is_bot: false
+                    exec:
+                      uri: '<%= ores_uri %>/v2/scores/plwiki/'
+                      query:
+                        models: 'reverted|damaging|goodfaith'
+                        revids: '{{message.rev_id}}'
+                        precache: true
+                  - match:
+                      meta:
+                        domain: pt.wikipedia.org
+                      performer:
+                        user_is_bot: false
+                    exec:
+                      uri: '<%= ores_uri %>/v2/scores/ptwiki/'
+                      query:
+                        models: 'reverted|damaging|goodfaith'
+                        revids: '{{message.rev_id}}'
+                        precache: true
+                  - match:
+                      meta:
+                        domain: ru.wikipedia.org
+                      performer:
+                        user_is_bot: false
+                    exec:
+                      uri: '<%= ores_uri %>/v2/scores/ruwiki/'
+                      query:
+                        models: 'reverted|damaging|goodfaith'
+                        revids: '{{message.rev_id}}'
+                        precache: true
+                  - match:
+                      meta:
+                        domain: tr.wikipedia.org
+                      performer:
+                        user_is_bot: false
+                    exec:
+                      uri: '<%= ores_uri %>/v2/scores/trwiki/'
+                      query:
+                        models: 'reverted|damaging|goodfaith'
+                        revids: '{{message.rev_id}}'
+                        precache: true
+                  - match:
+                      meta:
+                        domain: uk.wikipedia.org
+                      performer:
+                        user_is_bot: false
+                    exec:
+                      uri: '<%= ores_uri %>/v2/scores/ukwiki/'
+                      query:
+                        models: 'reverted'
+                        revids: '{{message.rev_id}}'
+                        precache: true
+                  - match:
+                      meta:
+                        domain: vi.wikipedia.org
+                      performer:
+                        user_is_bot: false
+                    exec:
+                      uri: '<%= ores_uri %>/v2/scores/viwiki/'
+                      query:
+                        models: 'reverted'
+                        revids: '{{message.rev_id}}'
+                        precache: true
+                  - match:
+                      meta:
+                        domain: wikidata.org
+                      page_namespace: 0
+                      performer:
+                        user_is_bot: false
+                    exec:
+                      uri: '<%= ores_uri %>/v2/scores/wikidatawiki/'
+                      query:
+                        models: 'reverted|damaging|goodfaith'
+                        revids: '{{message.rev_id}}'
+                        precache: true
+
+              wikidata_description_on_edit:
+                topic: mediawiki.revision-create
+                match:
+                  meta:
+                    domain: www.wikidata.org
+                  page_namespace: 0
+                  # It's impossible to modify a comment in wikidata while 
editing the entity.
+                  comment: '/wbeditentity|wbsetdescription/'
+                exec:
+                  method: post
+                  uri: '/sys/links/wikidata_descriptions'
+                  body: '{{globals.message}}'
+
+              wikidata_description_on_revision_visibility_change:
+                topic: mediawiki.revision-visibility-change
+                match:
+                  meta:
+                    domain: www.wikidata.org
+                  page_namespace: 0
+                exec:
+                  method: post
+                  uri: '/sys/links/wikidata_descriptions'
+                  body: '{{globals.message}}'
+
+              on_wikidata_description_change:
+                topic: change-prop.transcludes.resource-change
+                match:
+                  meta:
+                    uri: '/https?:\/\/[^\/]+\/wiki\/(?<title>.+)/'
+                  tags: [ 'wikidata' ]
+                exec:
+                  - method: get
+                    uri: '<%= restbase_uri 
%>/{{message.meta.domain}}/v1/page/summary/{{match.meta.uri.title}}'
+                    headers:
+                      cache-control: no-cache
+                    query:
+                      redirect: false
+                  - method: get
+                    uri: '<%= restbase_uri 
%>/{{message.meta.domain}}/v1/page/mobile-sections/{{match.meta.uri.title}}'
+                    headers:
+                      cache-control: no-cache
+                    query:
+                      redirect: false
+
+              # Rerender summary when pageimages page property change
+              page_images:
+                topic: mediawiki.page-properties-change
+                # We don't support 'OR' in the match section, so workaround it 
by 2 cases with identical exec
+                cases:
+                  - match:
+                      added_properties:
+                        page_image: '/.+/' # Regex that matches anything just 
to check the prop is set
+                    exec:
+                      - method: get
+                        uri: '<%= restbase_uri 
%>/{{message.meta.domain}}/v1/page/summary/{message.page_title}'
+                        headers:
+                          cache-control: no-cache
+                        query:
+                          redirect: false
+                      - method: get
+                        uri: '<%= restbase_uri 
%>/{{message.meta.domain}}/v1/page/mobile-sections/{message.page_title}'
+                        headers:
+                          cache-control: no-cache
+                        query:
+                          redirect: false
+                  - match:
+                      removed_properties:
+                        page_image: '/.+/' # Regex that matches anything just 
to check the prop is set
+                    exec:
+                      - method: get
+                        uri: '<%= restbase_uri 
%>/{{message.meta.domain}}/v1/page/summary/{message.page_title}'
+                        headers:
+                          cache-control: no-cache
+                        query:
+                          redirect: false
+                      - method: get
+                        uri: '<%= restbase_uri 
%>/{{message.meta.domain}}/v1/page/mobile-sections/{message.page_title}'
+                        headers:
+                          cache-control: no-cache
+                        query:
+                          redirect: false
+
+
 # Number of worker processes to spawn.
 # Set to 0 to run everything in a single process without clustering.
 # Use 'ncpu' to run as many workers as there are CPU units
@@ -56,581 +636,4 @@
       #   - user-agent
       #   - x-request-id
       user_agent: ChangePropagation/WMF
-      spec:
-        x-sub-request-filters:
-          - type: default
-            name: http
-            options:
-              allow:
-                - pattern: /^https?:\/\//
-                  forward_headers:
-                    user-agent: true
-        title: The Change Propagation root
-        paths:
-          /{api:sys}/purge:
-            x-modules:
-              - path: src/sys/purge.js
-                options:
-                  host: <%= purge_host %>
-                  port: <%= purge_port %>
-          /{api:sys}/links:
-            x-modules:
-              - path: src/sys/dep_updates.js
-                options:
-                  templates:
-                    mw_api:
-                      uri: <%= mwapi_uri %>
-                      headers:
-                        host: '{{message.meta.domain}}'
-                      body:
-                        formatversion: 2
-          /{api:sys}/queue:
-            x-modules:
-              - path: src/sys/kafka.js
-                options:
-                  metadata_broker_list: <%= broker_list %>
-                  dc_name: <%= site %>
-                  concurrency: <%= concurrency %>
-                  startup_delay: 60000
-                  templates:
-                    summary_definition_rerender: 
&summary_definition_rerender_spec
-                      topic: resource_change
-                      cases:
-                        - match:
-                            meta:
-                              uri: 
'/^https?:\/\/[^\/]+\/api\/rest_v1\/page\/html\/([^\/]+)$/'
-                            tags:
-                              - restbase
-                          match_not:
-                            meta:
-                              domain: '/wiktionary\.org$/'
-                          exec:
-                            method: get
-                            # Don't encode title since it should be already 
encoded
-                            uri: '<%= restbase_uri 
%>/{{message.meta.domain}}/v1/page/summary/{{match.meta.uri[1]}}'
-                            query:
-                              redirect: false
-                            headers:
-                              cache-control: no-cache
-                        - match:
-                            meta:
-                              # These URIs are coming from RESTBase, so we 
know that article titles will be normalized
-                              # and main namespace articles will not have : 
(uri-encoded, so %3a or %3A)
-                              uri: 
'/^https?:\/\/[^\/]+\/api\/rest_v1\/page\/html\/((?:(?!%3a|%3A|\/).)+)$/'
-                              domain: '/^en\.wiktionary\.org$/'
-                            tags:
-                              - restbase
-                          exec:
-                            method: get
-                            # Don't encode title since it should be already 
encoded
-                            uri: '<%= restbase_uri 
%>/{{message.meta.domain}}/v1/page/definition/{{match.meta.uri[1]}}'
-                            query:
-                              redirect: false
-                            headers:
-                              cache-control: no-cache
-
-                    summary_definition_rerender_transcludes:
-                      <<: *summary_definition_rerender_spec
-                      topic: change-prop.transcludes.resource-change
-
-                    mobile_rerender: &mobile_rerender_spec
-                      topic: resource_change
-                      match:
-                        meta:
-                          uri: 
'/^https?:\/\/[^\/]+\/api\/rest_v1\/page\/html\/([^/]+)$/'
-                        tags:
-                          - restbase
-                      exec:
-                        method: get
-                        # Don't encode title since it should be already encoded
-                        uri: '<%= restbase_uri 
%>/{{message.meta.domain}}/v1/page/mobile-sections/{{match.meta.uri[1]}}'
-                        query:
-                          redirect: false
-                        headers:
-                          cache-control: no-cache
-
-                    mobile_rerender_transcludes:
-                      <<: *mobile_rerender_spec
-                      topic: change-prop.transcludes.resource-change
-
-                    purge_varnish: &purge_varnish_spec
-                      topic: resource_change
-                      match:
-                        meta:
-                          uri: 
'/^https?:\/\/[^\/]+\/api\/rest_v1\/(?<title>.+)$/'
-                        tags:
-                          - restbase
-                      exec:
-                        method: post
-                        uri: '/sys/purge/'
-                        body:
-                          - meta:
-                              uri: 
'//{{message.meta.domain}}/api/rest_v1/{{match.meta.uri.title}}'
-
-                    purge_varnish_transcludes:
-                      <<: *purge_varnish_spec
-                      topic: change-prop.transcludes.resource-change
-
-                    # RESTBase update jobs
-                    mw_purge:
-                      topic: resource_change
-                      match:
-                        meta:
-                          uri: '/^https?:\/\/[^\/]+\/wiki\/(?<title>.+)$/'
-                        tags:
-                          - purge
-                      exec:
-                        method: get
-                        uri: '<%= restbase_uri 
%>/{{message.meta.domain}}/v1/page/html/{{match.meta.uri.title}}'
-                        headers:
-                          cache-control: no-cache
-                          if-unmodified-since: '{{date(message.meta.dt)}}'
-                        query:
-                          redirect: false
-
-                    null_edit:
-                      topic: resource_change
-                      ignore:
-                        status:
-                          - 403 # Ignoring 403 since some of the pages with 
high number of null_edit events are blacklisted
-                          - 412
-                      match:
-                        meta:
-                          uri: '/^https?:\/\/[^\/]+\/wiki\/(?<title>.+)$/'
-                        tags:
-                          - null_edit
-                      exec:
-                        method: get
-                        uri: '<%= restbase_uri 
%>/{{message.meta.domain}}/v1/page/html/{{match.meta.uri.title}}'
-                        headers:
-                          cache-control: no-cache
-                          if-unmodified-since: '{{date(message.meta.dt)}}'
-                        query:
-                          redirect: false
-
-                    page_edit:
-                      topic: mediawiki.revision-create
-                      retry_on:
-                        status:
-                          - '5xx'
-                          - 404 # Sometimes occasional 404s happen because of 
the mysql replication lag, so retry
-                      exec:
-                        method: get
-                        uri: '<%= restbase_uri 
%>/{{message.meta.domain}}/v1/page/html/{message.page_title}/{{message.rev_id}}'
-                        headers:
-                          cache-control: no-cache
-                          x-restbase-parentrevision: 
'{{message.rev_parent_id}}'
-                          if-unmodified-since: '{{date(message.meta.dt)}}'
-                        query:
-                          redirect: false
-
-                    revision_visibility_change:
-                      topic: mediawiki.revision-visibility-change
-                      ignore:
-                        status:
-                          - 403 # When the revision is hidden 403 will be 
returned by RESTBase, it's a valid situation
-                          - 412
-                      exec:
-                        method: get
-                        uri: '<%= restbase_uri 
%>/{{message.meta.domain}}/v1/page/revision/{{message.rev_id}}'
-                        headers:
-                          cache-control: no-cache
-                        query:
-                          redirect: false
-
-                    page_delete:
-                      topic: mediawiki.page-delete
-                      ignore:
-                        status:
-                          - 404 # 404 is a normal response for page deletion
-                          - 412
-                      exec:
-                        - method: get
-                          uri: '<%= restbase_uri 
%>/{{message.meta.domain}}/v1/page/title/{message.page_title}'
-                          headers:
-                            cache-control: no-cache
-                          query:
-                            redirect: false
-                        # For page deletion RESTBase doesn't emit 
resource_change events, and to go through
-                        # the normal purge chain (html update -> html 
resource_change -> summary update -> summary resource_change)
-                        # we need to add many workarounds/shortcurst in 
RESTBase. So having this list here is an OK compromise.
-                        - method: post
-                          uri: '/sys/purge/'
-                          body:
-                            - meta:
-                                uri: 
'//{{message.meta.domain}}/api/rest_v1/page/html/{message.page_title}'
-                            - meta:
-                                uri: 
'//{{message.meta.domain}}/api/rest_v1/page/html/{message.page_title}/{{message.rev_id}}'
-                            - meta:
-                                uri: 
'//{{message.meta.domain}}/api/rest_v1/page/summary/{message.page_title}'
-                            - meta:
-                                uri: 
'//{{message.meta.domain}}/api/rest_v1/page/definition/{message.page_title}'
-                            - meta:
-                                uri: 
'//{{message.meta.domain}}/api/rest_v1/page/mobile-sections/{message.page_title}'
-                            - meta:
-                                uri: 
'//{{message.meta.domain}}/api/rest_v1/page/mobile-sections-lead/{message.page_title}'
-                            - meta:
-                                uri: 
'//{{message.meta.domain}}/api/rest_v1/page/mobile-sections-remaining/{message.page_title}'
-
-                    page_restore:
-                      topic: mediawiki.page-undelete
-                      exec:
-                        method: get
-                        uri: '<%= restbase_uri 
%>/{{message.meta.domain}}/v1/page/html/{message.page_title}'
-                        headers:
-                          cache-control: no-cache
-                        query:
-                          redirect: false
-
-                    page_move:
-                      topic: mediawiki.page-move
-                      exec:
-                        - method: get
-                          uri: '<%= restbase_uri 
%>/{{message.meta.domain}}/v1/page/html/{message.page_title}/{{message.rev_id}}'
-                          headers:
-                            cache-control: no-cache
-                            if-unmodified-since: '{{date(message.meta.dt)}}'
-                          query:
-                            redirect: false
-                        - method: get
-                          uri: '<%= restbase_uri 
%>/{{message.meta.domain}}/v1/page/title/{message.prior_state.page_title}'
-                          headers:
-                            cache-control: no-cache
-                          query:
-                            redirect: false
-
-                    transclusion_update:
-                      topic: mediawiki.revision-create
-                      exec:
-                        method: post
-                        uri: '/sys/links/transcludes/{message.page_title}'
-                        body: '{{globals.message}}'
-
-                    on_transclusion_update:
-                      concurrency: <%= concurrency * 8 %>
-                      topic: change-prop.transcludes.resource-change
-                      match:
-                        meta:
-                          uri: '/https?:\/\/[^\/]+\/wiki\/(?<title>.+)/'
-                        tags: [ 'transcludes' ]
-                      exec:
-                        method: get
-                        uri: '<%= restbase_uri 
%>/{{message.meta.domain}}/v1/page/html/{{match.meta.uri.title}}'
-                        headers:
-                          cache-control: no-cache
-                          if-unmodified-since: '{{date(message.meta.dt)}}'
-                          x-restbase-mode: '{{message.tags[1]}}'
-                        query:
-                          redirect: false
-
-                    # ORES caching updates
-                    ores_cache:
-                      topic: mediawiki.revision-create
-                      concurrency: 15
-                      ignore:
-                        status:
-                          - 503
-                      cases:
-                        - match:
-                            meta:
-                              domain: ar.wikipedia.org
-                            performer:
-                              user_is_bot: false
-                          exec:
-                            uri: '<%= ores_uri %>/v2/scores/arwiki/'
-                            query:
-                              models: 'reverted'
-                              revids: '{{message.rev_id}}'
-                              precache: true
-                        - match:
-                            meta:
-                              domain: cs.wikipedia.org
-                            performer:
-                              user_is_bot: false
-                          exec:
-                            uri: '<%= ores_uri %>/v2/scores/cswiki/'
-                            query:
-                              models: 'reverted'
-                              revids: '{{message.rev_id}}'
-                              precache: true
-                        - match:
-                            meta:
-                              domain: en.wikipedia.org
-                            performer:
-                              user_is_bot: false
-                          exec:
-                            uri: '<%= ores_uri %>/v2/scores/enwiki/'
-                            query:
-                              models: 'reverted|damaging|goodfaith'
-                              revids: '{{message.rev_id}}'
-                              precache: true
-                        - match:
-                            meta:
-                              domain: en.wiktionary.org
-                            performer:
-                              user_is_bot: false
-                          exec:
-                            uri: '<%= ores_uri %>/v2/scores/enwiktionary/'
-                            query:
-                              models: 'reverted'
-                              revids: '{{message.rev_id}}'
-                              precache: true
-                        - match:
-                            meta:
-                              domain: es.wikipedia.org
-                            performer:
-                              user_is_bot: false
-                          exec:
-                            uri: '<%= ores_uri %>/v2/scores/eswiki/'
-                            query:
-                              models: 'reverted'
-                              revids: '{{message.rev_id}}'
-                              precache: true
-                        - match:
-                            meta:
-                              domain: et.wikipedia.org
-                            performer:
-                              user_is_bot: false
-                          exec:
-                            uri: '<%= ores_uri %>/v2/scores/etwiki/'
-                            query:
-                              models: 'reverted'
-                              revids: '{{message.rev_id}}'
-                              precache: true
-                        - match:
-                            meta:
-                              domain: fa.wikipedia.org
-                            performer:
-                              user_is_bot: false
-                          exec:
-                            uri: '<%= ores_uri %>/v2/scores/fawiki/'
-                            query:
-                              models: 'reverted|damaging|goodfaith'
-                              revids: '{{message.rev_id}}'
-                              precache: true
-                        - match:
-                            meta:
-                              domain: fr.wikipedia.org
-                            performer:
-                              user_is_bot: false
-                          exec:
-                            uri: '<%= ores_uri %>/v2/scores/frwiki/'
-                            query:
-                              models: 'reverted'
-                              revids: '{{message.rev_id}}'
-                              precache: true
-                        - match:
-                            meta:
-                              domain: he.wikipedia.org
-                            performer:
-                              user_is_bot: false
-                          exec:
-                            uri: '<%= ores_uri %>/v2/scores/hewiki/'
-                            query:
-                              models: 'reverted'
-                              revids: '{{message.rev_id}}'
-                              precache: true
-                        - match:
-                            meta:
-                              domain: hu.wikipedia.org
-                            performer:
-                              user_is_bot: false
-                          exec:
-                            uri: '<%= ores_uri %>/v2/scores/huwiki/'
-                            query:
-                              models: 'reverted'
-                              revids: '{{message.rev_id}}'
-                              precache: true
-                        - match:
-                            meta:
-                              domain: id.wikipedia.org
-                            performer:
-                              user_is_bot: false
-                          exec:
-                            uri: '<%= ores_uri %>/v2/scores/idwiki/'
-                            query:
-                              models: 'reverted'
-                              revids: '{{message.rev_id}}'
-                              precache: true
-                        - match:
-                            meta:
-                              domain: it.wikipedia.org
-                            performer:
-                              user_is_bot: false
-                          exec:
-                            uri: '<%= ores_uri %>/v2/scores/itwiki/'
-                            query:
-                              models: 'reverted'
-                              revids: '{{message.rev_id}}'
-                              precache: true
-                        - match:
-                            meta:
-                              domain: nl.wikipedia.org
-                            performer:
-                              user_is_bot: false
-                          exec:
-                            uri: '<%= ores_uri %>/v2/scores/nlwiki/'
-                            query:
-                              models: 'reverted|damaging|goodfaith'
-                              revids: '{{message.rev_id}}'
-                              precache: true
-                        - match:
-                            meta:
-                              domain: pl.wikipedia.org
-                            performer:
-                              user_is_bot: false
-                          exec:
-                            uri: '<%= ores_uri %>/v2/scores/plwiki/'
-                            query:
-                              models: 'reverted|damaging|goodfaith'
-                              revids: '{{message.rev_id}}'
-                              precache: true
-                        - match:
-                            meta:
-                              domain: pt.wikipedia.org
-                            performer:
-                              user_is_bot: false
-                          exec:
-                            uri: '<%= ores_uri %>/v2/scores/ptwiki/'
-                            query:
-                              models: 'reverted|damaging|goodfaith'
-                              revids: '{{message.rev_id}}'
-                              precache: true
-                        - match:
-                            meta:
-                              domain: ru.wikipedia.org
-                            performer:
-                              user_is_bot: false
-                          exec:
-                            uri: '<%= ores_uri %>/v2/scores/ruwiki/'
-                            query:
-                              models: 'reverted|damaging|goodfaith'
-                              revids: '{{message.rev_id}}'
-                              precache: true
-                        - match:
-                            meta:
-                              domain: tr.wikipedia.org
-                            performer:
-                              user_is_bot: false
-                          exec:
-                            uri: '<%= ores_uri %>/v2/scores/trwiki/'
-                            query:
-                              models: 'reverted|damaging|goodfaith'
-                              revids: '{{message.rev_id}}'
-                              precache: true
-                        - match:
-                            meta:
-                              domain: uk.wikipedia.org
-                            performer:
-                              user_is_bot: false
-                          exec:
-                            uri: '<%= ores_uri %>/v2/scores/ukwiki/'
-                            query:
-                              models: 'reverted'
-                              revids: '{{message.rev_id}}'
-                              precache: true
-                        - match:
-                            meta:
-                              domain: vi.wikipedia.org
-                            performer:
-                              user_is_bot: false
-                          exec:
-                            uri: '<%= ores_uri %>/v2/scores/viwiki/'
-                            query:
-                              models: 'reverted'
-                              revids: '{{message.rev_id}}'
-                              precache: true
-                        - match:
-                            meta:
-                              domain: wikidata.org
-                            page_namespace: 0
-                            performer:
-                              user_is_bot: false
-                          exec:
-                            uri: '<%= ores_uri %>/v2/scores/wikidatawiki/'
-                            query:
-                              models: 'reverted|damaging|goodfaith'
-                              revids: '{{message.rev_id}}'
-                              precache: true
-
-                    wikidata_description_on_edit:
-                      topic: mediawiki.revision-create
-                      match:
-                        meta:
-                          domain: www.wikidata.org
-                        page_namespace: 0
-                        # It's impossible to modify a comment in wikidata 
while editing the entity.
-                        comment: '/wbeditentity|wbsetdescription/'
-                      exec:
-                        method: post
-                        uri: '/sys/links/wikidata_descriptions'
-                        body: '{{globals.message}}'
-
-                    wikidata_description_on_revision_visibility_change:
-                      topic: mediawiki.revision-visibility-change
-                      match:
-                        meta:
-                          domain: www.wikidata.org
-                        page_namespace: 0
-                      exec:
-                        method: post
-                        uri: '/sys/links/wikidata_descriptions'
-                        body: '{{globals.message}}'
-
-                    on_wikidata_description_change:
-                      topic: change-prop.transcludes.resource-change
-                      match:
-                        meta:
-                          uri: '/https?:\/\/[^\/]+\/wiki\/(?<title>.+)/'
-                        tags: [ 'wikidata' ]
-                      exec:
-                        - method: get
-                          uri: '<%= restbase_uri 
%>/{{message.meta.domain}}/v1/page/summary/{{match.meta.uri.title}}'
-                          headers:
-                            cache-control: no-cache
-                          query:
-                            redirect: false
-                        - method: get
-                          uri: '<%= restbase_uri 
%>/{{message.meta.domain}}/v1/page/mobile-sections/{{match.meta.uri.title}}'
-                          headers:
-                            cache-control: no-cache
-                          query:
-                            redirect: false
-
-                    # Rerender summary when pageimages page property change
-                    page_images:
-                      topic: mediawiki.page-properties-change
-                      # We don't support 'OR' in the match section, so 
workaround it by 2 cases with identical exec
-                      cases:
-                        - match:
-                            added_properties:
-                              page_image: '/.+/' # Regex that matches anything 
just to check the prop is set
-                          exec:
-                            - method: get
-                              uri: '<%= restbase_uri 
%>/{{message.meta.domain}}/v1/page/summary/{message.page_title}'
-                              headers:
-                                cache-control: no-cache
-                              query:
-                                redirect: false
-                            - method: get
-                              uri: '<%= restbase_uri 
%>/{{message.meta.domain}}/v1/page/mobile-sections/{message.page_title}'
-                              headers:
-                                cache-control: no-cache
-                              query:
-                                redirect: false
-                        - match:
-                            removed_properties:
-                              page_image: '/.+/' # Regex that matches anything 
just to check the prop is set
-                          exec:
-                            - method: get
-                              uri: '<%= restbase_uri 
%>/{{message.meta.domain}}/v1/page/summary/{message.page_title}'
-                              headers:
-                                cache-control: no-cache
-                              query:
-                                redirect: false
-                            - method: get
-                              uri: '<%= restbase_uri 
%>/{{message.meta.domain}}/v1/page/mobile-sections/{message.page_title}'
-                              headers:
-                                cache-control: no-cache
-                              query:
-                                redirect: false
+      spec: *spec

-- 
To view, visit https://gerrit.wikimedia.org/r/319545
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: If1289206841b1721007b9dfc5762709a65a1dbcd
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/services/change-propagation/deploy
Gerrit-Branch: master
Gerrit-Owner: Mobrovac <mobro...@wikimedia.org>
Gerrit-Reviewer: Mobrovac <mobro...@wikimedia.org>
Gerrit-Reviewer: Ppchelko <ppche...@wikimedia.org>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to