Mobrovac has uploaded a new change for review. https://gerrit.wikimedia.org/r/319545
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(-) git pull ssh://gerrit.wikimedia.org:29418/mediawiki/services/change-propagation/deploy refs/changes/45/319545/1 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: newchange Gerrit-Change-Id: If1289206841b1721007b9dfc5762709a65a1dbcd Gerrit-PatchSet: 1 Gerrit-Project: mediawiki/services/change-propagation/deploy Gerrit-Branch: master Gerrit-Owner: Mobrovac <mobro...@wikimedia.org> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits