Ppchelko has uploaded a new change for review.
https://gerrit.wikimedia.org/r/319254
Change subject: Config: Refactor to match the layout in example config.
......................................................................
Config: Refactor to match the layout in example config.
Whenever a config deploy is done, we need to transfer the changes
from the example config in github where we normally do the code
review to the scap-deployed config. It's way more convenient to do
if the config structures actually match.
Change-Id: I2efbfa882cd2c6360a0b442b2027481b9a5b5274
---
M scap/templates/config.yaml.j2
1 file changed, 580 insertions(+), 578 deletions(-)
git pull
ssh://gerrit.wikimedia.org:29418/mediawiki/services/change-propagation/deploy
refs/changes/54/319254/1
diff --git a/scap/templates/config.yaml.j2 b/scap/templates/config.yaml.j2
index a7f5ef9..b97d82e 100644
--- a/scap/templates/config.yaml.j2
+++ b/scap/templates/config.yaml.j2
@@ -1,3 +1,582 @@
+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/'
+ 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 +635,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/'
- 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
\ No newline at end of file
--
To view, visit https://gerrit.wikimedia.org/r/319254
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I2efbfa882cd2c6360a0b442b2027481b9a5b5274
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/services/change-propagation/deploy
Gerrit-Branch: master
Gerrit-Owner: Ppchelko <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits