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}))
  • graph_name (String) (defaults to: lookup('profile::query_service::graph_name', {'default_value' => 'wdqs'}))
  • 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'))
  • 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}))
  • deadlock_remediation_ensure (Wmflib::Ensure) (defaults to: lookup('profile::query_service::blazegraph::deadlock_remediation_ensure', {'default_value' => 'present'}))
  • deadlock_remediation_threshold (Integer[1]) (defaults to: lookup('profile::query_service::blazegraph::deadlock_remediation_threshold', {'default_value' => 1200}))
  • deadlock_remediation_cooldown_seconds (Integer[1]) (defaults to: lookup('profile::query_service::blazegraph::deadlock_remediation_cooldown_seconds', {'default_value' => 1800}))


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
88
89
90
# 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}),
    String $graph_name = lookup('profile::query_service::graph_name', {'default_value' => 'wdqs'}),
    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'),
    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}),
    Wmflib::Ensure $deadlock_remediation_ensure = lookup('profile::query_service::blazegraph::deadlock_remediation_ensure', {'default_value' => 'present'}),
    Integer[1] $deadlock_remediation_threshold = lookup('profile::query_service::blazegraph::deadlock_remediation_threshold', {'default_value' => 1200}),
    Integer[1] $deadlock_remediation_cooldown_seconds = lookup('profile::query_service::blazegraph::deadlock_remediation_cooldown_seconds', {'default_value' => 1800}),
) {
    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,
        graph_name                                => $graph_name,
        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,
        deadlock_remediation_ensure               => $deadlock_remediation_ensure,
        deadlock_remediation_threshold            => $deadlock_remediation_threshold,
        deadlock_remediation_cooldown_seconds     => $deadlock_remediation_cooldown_seconds,
        deadlock_remediation_updater_metrics_port => $prometheus_port,
    }

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