Puppet Class: profile::query_service::wikidata

Defined in:
modules/profile/manifests/query_service/wikidata.pp

Overview

SPDX-License-Identifier: Apache-2.0

Class: profile::query_service::wikidata

This class defines a meta-class that pulls in all the query_service profiles necessary for a query service installation servicing the www.wikidata.org dataset.

This additionally provides a location for defining datasource specific configuration, such as if geo support is necessary. This kind of configuration doesn't end up fitting in hiera as we have multiple blazegraph instances per host (preventing configuration by profile), and multiple roles per datasource (preventing configuration by role).

Parameters:

  • journal (String) (defaults to: lookup('profile::query_service::journal'))
  • username (String) (defaults to: lookup('profile::query_service::username'))
  • package_dir (Stdlib::Unixpath) (defaults to: lookup('profile::query_service::package_dir'))
  • data_dir (Stdlib::Unixpath) (defaults to: lookup('profile::query_service::data_dir'))
  • log_dir (Stdlib::Unixpath) (defaults to: lookup('profile::query_service::log_dir'))
  • deploy_name (String) (defaults to: lookup('profile::query_service::deploy_name'))
  • logstash_logback_port (Stdlib::Port) (defaults to: lookup('logstash_logback_port'))
  • heap_size (String) (defaults to: lookup('profile::query_service::blazegraph_heap_size', {'default_value' => '31g'}))
  • use_deployed_config (Boolean) (defaults to: lookup('profile::query_service::blazegraph_use_deployed_config', {'default_value' => false}))
  • extra_jvm_opts (Array[String]) (defaults to: lookup('profile::query_service::blazegraph_extra_jvm_opts'))
  • monitoring_enabled (Boolean) (defaults to: lookup('profile::query_service::blazegraph::monitoring_enabled'))
  • contact_groups (String) (defaults to: lookup('contactgroups', {'default_value' => 'admins'}))
  • sparql_query_stream (Optional[String]) (defaults to: lookup('profile::query_service::sparql_query_stream', {'default_value' => undef}))
  • event_service_endpoint (Optional[String]) (defaults to: lookup('profile::query_service::event_service_endpoint', {'default_value' => undef}))
  • federation_user_agent (String) (defaults to: lookup('profile::query_service::federation_user_agent'))
  • blazegraph_main_ns (String) (defaults to: lookup('profile::query_service::blazegraph_main_ns'))
  • jvmquake_options (Optional[String]) (defaults to: lookup('profile::query_service::jvmquake_options', {'default_value' => undef}))
  • jvmquake_warn_threshold (Optional[Integer]) (defaults to: lookup('profile::query_service::jvmquake_warn_threshold', {'default_value' => undef}))
  • jvmquake_warn_file (String) (defaults to: lookup('profile::query_service::jvmquake_warn_file', {'default_value' => '/tmp/wdqs_blazegraph_jvmquake_warn_gc'}))
  • uri_scheme_options (Array[String]) (defaults to: lookup('profile::query_service::uri_scheme_options'))
  • ldf_host (Stdlib::Fqdn) (defaults to: lookup('profile::query_service::ldf_host', {'default_value' => 'placeholder.wmnet'}))
  • internal_federated_endpoints (Optional[Hash[Stdlib::HTTPSUrl, Array[Stdlib::HTTPSUrl]]]) (defaults to: lookup('profile::query_service::internal_federated_endpoints', {'default_value' => undef}))
  • only_throttle_cdn (Boolean) (defaults to: lookup('profile::query_service::only_throttle_cdn', {'default_value' => false}))


13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
# File 'modules/profile/manifests/query_service/wikidata.pp', line 13

class profile::query_service::wikidata(
    String $journal = lookup('profile::query_service::journal'),
    String $username = lookup('profile::query_service::username'),
    Stdlib::Unixpath $package_dir = lookup('profile::query_service::package_dir'),
    Stdlib::Unixpath $data_dir = lookup('profile::query_service::data_dir'),
    Stdlib::Unixpath $log_dir = lookup('profile::query_service::log_dir'),
    String $deploy_name = lookup('profile::query_service::deploy_name'),
    Stdlib::Port $logstash_logback_port = lookup('logstash_logback_port'),
    String $heap_size = lookup('profile::query_service::blazegraph_heap_size', {'default_value' => '31g'}),
    Boolean $use_deployed_config = lookup('profile::query_service::blazegraph_use_deployed_config', {'default_value' => false}),
    Array[String] $extra_jvm_opts = lookup('profile::query_service::blazegraph_extra_jvm_opts'),
    Boolean $monitoring_enabled = lookup('profile::query_service::blazegraph::monitoring_enabled'),
    String $contact_groups = lookup('contactgroups', {'default_value' => 'admins'}),
    Optional[String] $sparql_query_stream = lookup('profile::query_service::sparql_query_stream', {'default_value' => undef}),
    Optional[String] $event_service_endpoint = lookup('profile::query_service::event_service_endpoint', {'default_value' => undef}),
    String $federation_user_agent = lookup('profile::query_service::federation_user_agent'),
    String $blazegraph_main_ns = lookup('profile::query_service::blazegraph_main_ns'),
    Optional[String] $jvmquake_options = lookup('profile::query_service::jvmquake_options', {'default_value' => undef}),
    Optional[Integer] $jvmquake_warn_threshold = lookup('profile::query_service::jvmquake_warn_threshold', {'default_value' => undef}),
    String $jvmquake_warn_file = lookup('profile::query_service::jvmquake_warn_file', {'default_value' => '/tmp/wdqs_blazegraph_jvmquake_warn_gc'}),
    Array[String] $uri_scheme_options = lookup('profile::query_service::uri_scheme_options'),
    Stdlib::Fqdn $ldf_host = lookup('profile::query_service::ldf_host', {'default_value' => 'placeholder.wmnet'}),
    Optional[Hash[Stdlib::HTTPSUrl, Array[Stdlib::HTTPSUrl]]] $internal_federated_endpoints = lookup('profile::query_service::internal_federated_endpoints', {'default_value' => undef}),
    Boolean $only_throttle_cdn = lookup('profile::query_service::only_throttle_cdn', {'default_value' => false}),
) {
    require ::profile::query_service::common
    require ::profile::query_service::streaming_updater
    require ::profile::query_service::gui

    $instance_name = "${deploy_name}-blazegraph"
    $nginx_port = 80
    $blazegraph_port = 9999
    $prometheus_port = 9193
    $prometheus_agent_port = 9102

    profile::query_service::blazegraph { $instance_name:
        journal                      => $journal,
        blazegraph_main_ns           => $blazegraph_main_ns,
        username                     => $username,
        package_dir                  => $package_dir,
        data_dir                     => $data_dir,
        log_dir                      => $log_dir,
        deploy_name                  => $deploy_name,
        logstash_logback_port        => $logstash_logback_port,
        heap_size                    => $heap_size,
        use_deployed_config          => $use_deployed_config,
        # force skolem for wikibase:isSomeValue (T244341)
        extra_jvm_opts               => $extra_jvm_opts + ['-DwikibaseSomeValueMode=skolem'] + $uri_scheme_options,
        contact_groups               => $contact_groups,
        monitoring_enabled           => $monitoring_enabled,
        sparql_query_stream          => $sparql_query_stream,
        event_service_endpoint       => $event_service_endpoint,
        nginx_port                   => $nginx_port,
        blazegraph_port              => $blazegraph_port,
        prometheus_port              => $prometheus_port,
        prometheus_agent_port        => $prometheus_agent_port,
        config_file_name             => 'RWStore.wikidata.properties',
        prefixes_file                => 'prefixes.conf',
        use_geospatial               => true,
        use_oauth                    => false,
        federation_user_agent        => $federation_user_agent,
        jvmquake_options             => $jvmquake_options,
        jvmquake_warn_threshold      => $jvmquake_warn_threshold,
        jvmquake_warn_file           => $jvmquake_warn_file,
        internal_federated_endpoints => $internal_federated_endpoints,
        only_throttle_cdn            => $only_throttle_cdn,
    }

    class { 'toil::systemd_scope_cleanup': }  # T265323

    if ($facts['fqdn']) == $ldf_host {
        class { '::profile::query_service::monitor::ldf': }
    }

}