<commit_before>heat_template_version: rocky

description: Collectd client service

parameters:
  ServiceData:
    default: {}
    description: Dictionary packing service data
    type: json
  ServiceNetMap:
    default: {}
    description: Mapping of service_name -> network name. Typically set
                 via parameter_defaults in the resource registry.  This
                 mapping overrides those in ServiceNetMapDefaults.
    type: json
  EndpointMap:
    default: {}
    description: Mapping of service endpoint -> protocol. Typically set
                 via parameter_defaults in the resource registry.
    type: json
  DefaultPasswords:
    default: {}
    type: json
  RoleName:
    default: ''
    description: Role name on which the service is applied
    type: string
  RoleParameters:
    default: {}
    description: Parameters specific to the role
    type: json
  GnocchiPassword:
    type: string
    description: The password for the gnocchi service and db account.
    hidden: true
  KeystoneRegion:
    type: string
    description: Keystone region for endpoint
    default: 'regionOne'
  CollectdDefaultPollingInterval:
    default: 120
    type: number
    description: >
      Controls how often registered read functions are called and with that
      the resolution of the collected data. This value can be overriden per
      plugin(per role) by setting "::collectd::plugin::<plugin_name>::interval"
      key in ExtraConfig(<role_name>ExtraConfig).
  CollectdDefaultPlugins:
    default:
      - disk
      - interface
      - load
      - memory
      - processes
      - tcpconns
      - unixsock
    type: comma_delimited_list
    description: >
      List of collectd plugins to activate on all overcloud hosts.  See
      the documentation for the puppet-collectd module for a list plugins
      supported by the module (https://github.com/voxpupuli/puppet-collectd).
      Set this key to override the default list of plugins.  Use
      CollectdExtraPlugins if you want to load additional plugins without
      overriding the defaults.
  CollectdExtraPlugins:
    default: []
    type: comma_delimited_list
    description: >
      List of collectd plugins to activate on all overcloud hosts.  See
      the documentation for the puppet-collectd module for a list plugins
      supported by the module (https://github.com/voxpupuli/puppet-collectd).
      Set this key to load plugins in addition to those in
      CollectdDefaultPlugins.
  CollectdServer:
    type: string
    description: >
      Address of remote collectd server to which we will send
      metrics.
    default: ''
  CollectdServerPort:
    type: number
    default: 25826
    description: >
      Port on remote collectd server to which we will send
      metrics.
  CollectdUsername:
    type: string
    description: >
      Username for authenticating to the remote collectd server. The default
      is to not configure any authentication.
    default: ''
  CollectdPassword:
    type: string
    hidden: true
    description: >
      Password for authenticating to the remote collectd server. The
      default is to not configure any authentication.
    default: ''
  CollectdSecurityLevel:
    type: string
    description: >
      Security level setting for remote collectd connection. If it is
      set to Sign or Encrypt the CollectdPassword and CollectdUsername
      parameters need to be set.
    default: 'None'
    constraints:
      - allowed_values:
          - None
          - Sign
          - Encrypt
  CollectdGnocchiAuthMode:
    type: string
    description: >
      Type of authentication Gnocchi server is using. Supported values are
      'simple' and 'keystone'.
    default: 'keystone'
  CollectdGnocchiProtocol:
    type: string
    description: API protocol Gnocchi server is using.
    default: 'http'
  CollectdGnocchiServer:
    type: string
    description: >
      The name or address of a gnocchi endpoint to which we should
      send metrics.
    default: nil
  CollectdGnocchiPort:
    type: number
    description: The port to which we will connect on the Gnocchi server.
    default: 8041
  CollectdGnocchiUser:
    type: string
    description: >
      Username for authenticating to the remote Gnocchi server using simple
      authentication.
    default: nil
  CollectdGnocchiKeystoneAuthUrl:
    type: string
    description: Keystone endpoint URL to authenticate to.
    default: nil
  CollectdGnocchiKeystoneUserName:
    type: string
    description: Username for authenticating to Keystone.
    default: nil
  CollectdGnocchiKeystoneUserId:
    type: string
    description: User ID for authenticating to Keystone.
    default: nil
  CollectdGnocchiKeystonePassword:
    type: string
    description: Password for authenticating to Keystone
    default: nil
    hidden: true
  CollectdGnocchiKeystoneProjectId:
    type: string
    description: Project ID for authenticating to Keystone.
    default: nil
  CollectdGnocchiKeystoneProjectName:
    type: string
    description: Project name for authenticating to Keystone.
    default: nil
  CollectdGnocchiKeystoneUserDomainId:
    type: string
    description: User domain ID for authenticating to Keystone.
    default: nil
  CollectdGnocchiKeystoneUserDomainName:
    type: string
    description: User domain name for authenticating to Keystone.
    default: nil
  CollectdGnocchiKeystoneProjectDomainId:
    type: string
    description: Project domain ID for authenticating to Keystone.
    default: nil
  CollectdGnocchiKeystoneProjectDomainName:
    type: string
    description: Project domain name for authenticating to Keystone.
    default: nil
  CollectdGnocchiKeystoneRegionName:
    type: string
    description: Region name for authenticating to Keystone.
    default: nil
  CollectdGnocchiKeystoneInterface:
    type: string
    description: Type of Keystone endpoint to authenticate to.
    default: nil
  CollectdGnocchiKeystoneEndpoint:
    type: string
    description: >
      Explicitly state Gnocchi server URL if you want to override
      Keystone value
    default: nil
  CollectdGnocchiResourceType:
    type: string
    description: >
      Default resource type created by the collectd-gnocchi plugin in Gnocchi
      to store hosts.
    default: 'collectd'
  CollectdGnocchiBatchSize:
    type: number
    description: Minimum number of values Gnocchi should batch.
    default: 10

conditions:
  gnocchi_default_connection:
    and:
      - equals: [{get_param: CollectdGnocchiServer}, nil]
      - equals: [{get_param: CollectdGnocchiKeystoneEndpoint}, nil]
  collectd_connection:
    not:
      equals: [{get_param: CollectdServer}, '']
  gnocchi_auth_simple:
    equals: [{get_param: CollectdGnocchiAuthMode}, 'simple']

outputs:
  role_data:
    description: Role data for the Collectd client role.
    value:
      service_name: collectd
      config_settings:
        map_merge:
          - collectd::manage_repo: false
            collectd::purge: true
            collectd::recurse: true
            collectd::purge_config: true
            collectd::minimum_version: "5.7"
            collectd::plugin::unixsock::socketgroup: root
            collectd::plugin::unixsock::socketfile: /var/run/collectd-socket
            collectd::interval: {get_param: CollectdDefaultPollingInterval}
            tripleo.collectd.plugins.collectd:
              yaql:
                data:
                  default_plugins: {get_param: CollectdDefaultPlugins}
                  extra_plugins: {get_param: CollectdExtraPlugins}
                expression: >
                  ($.data.default_plugins + $.data.extra_plugins)
                  .flatten().distinct()
          - if:
            - collectd_connection # use server side collectd or gnocchi as metrics relay?
            - tripleo::profile::base::metrics::collectd::collectd_server:
                get_param: CollectdServer
              tripleo::profile::base::metrics::collectd::collectd_port:
                get_param: CollectdServerPort
              tripleo::profile::base::metrics::collectd::collectd_username:
                get_param: CollectdUsername
              tripleo::profile::base::metrics::collectd::collectd_password:
                get_param: CollectdPassword
              tripleo::profile::base::metrics::collectd::collectd_securitylevel:
                get_param: CollectdSecurityLevel
            - map_merge:
              - tripleo::profile::base::metrics::collectd::gnocchi_auth_mode:
                  get_param: CollectdGnocchiAuthMode
                tripleo::profile::base::metrics::collectd::gnocchi_resource_type:
                  get_param: CollectdGnocchiResourceType
                tripleo::profile::base::metrics::collectd::gnocchi_batch_size:
                  get_param: CollectdGnocchiBatchSize
              - if:
                - gnocchi_default_connection  # use overcloud gnocchi instance or user provided instance?
                - tripleo::profile::base::metrics::collectd::gnocchi_keystone_endpoint:
                    get_param: [EndpointMap, GnocchiInternal, uri]
                  tripleo::profile::base::metrics::collectd::gnocchi_keystone_auth_url:
                    get_param: [EndpointMap, KeystoneInternal, uri_no_suffix]
                  tripleo::profile::base::metrics::collectd::gnocchi_keystone_user_name: 'gnocchi'
                  tripleo::profile::base::metrics::collectd::gnocchi_keystone_password:
                    get_param: GnocchiPassword
                  tripleo::profile::base::metrics::collectd::gnocchi_keystone_project_name: 'service'
                  tripleo::profile::base::metrics::collectd::gnocchi_keystone_user_domain_name: 'Default'
                  tripleo::profile::base::metrics::collectd::gnocchi_keystone_project_domain_name: 'Default'
                  tripleo::profile::base::metrics::collectd::gnocchi_keystone_region_name:
                    get_param: KeystoneRegion
                - if:
                  - gnocchi_auth_simple # use simple auth or keystone auth?
                  - tripleo::profile::base::metrics::collectd::gnocchi_protocol:
                      get_param: CollectdGnocchiProtocol
                    tripleo::profile::base::metrics::collectd::gnocchi_server:
                      get_param: CollectdGnocchiServer
                    tripleo::profile::base::metrics::collectd::gnocchi_port:
                      get_param: CollectdGnocchiPort
                    tripleo::profile::base::metrics::collectd::gnocchi_user:
                      get_param: CollectdGnocchiUser
                  - tripleo::profile::base::metrics::collectd::gnocchi_keystone_auth_url:
                      get_param: CollectdGnocchiKeystoneAuthUrl
                    tripleo::profile::base::metrics::collectd::gnocchi_keystone_user_name:
                      get_param: CollectdGnocchiKeystoneUserName
                    tripleo::profile::base::metrics::collectd::gnocchi_keystone_user_id:
                      get_param: CollectdGnocchiKeystoneUserId
                    tripleo::profile::base::metrics::collectd::gnocchi_keystone_password:
                      get_param: CollectdGnocchiKeystonePassword
                    tripleo::profile::base::metrics::collectd::gnocchi_keystone_project_id:
                      get_param: CollectdGnocchiKeystoneProjectId
                    tripleo::profile::base::metrics::collectd::gnocchi_keystone_project_name:
                      get_param: CollectdGnocchiKeystoneProjectName
                    tripleo::profile::base::metrics::collectd::gnocchi_keystone_user_domain_id:
                      get_param: CollectdGnocchiKeystoneUserDomainId
                    tripleo::profile::base::metrics::collectd::gnocchi_keystone_user_domain_name:
                      get_param: CollectdGnocchiKeystoneUserDomainName
                    tripleo::profile::base::metrics::collectd::gnocchi_keystone_project_domain_id:
                      get_param: CollectdGnocchiKeystoneProjectDomainId
                    tripleo::profile::base::metrics::collectd::gnocchi_keystone_project_domain_name:
                      get_param: CollectdGnocchiKeystoneProjectDomainName
                    tripleo::profile::base::metrics::collectd::gnocchi_keystone_region_name:
                      get_param: CollectdGnocchiKeystoneRegionName
                    tripleo::profile::base::metrics::collectd::gnocchi_keystone_interface:
                      get_param: CollectdGnocchiKeystoneInterface
                    tripleo::profile::base::metrics::collectd::gnocchi_keystone_endpoint:
                      get_param: CollectdGnocchiKeystoneEndpoint
      step_config: |
        include ::tripleo::profile::base::metrics::collectd
      upgrade_tasks:
        - name: Check if collectd is deployed
          command: systemctl is-enabled collectd
          tags: common
          ignore_errors: True
          register: collectd_enabled
        - name: Check status of collectd service
          shell: >
            /usr/bin/systemctl show collectd --property ActiveState |
            grep '\bactive\b'
          when:
            - step|int == 0
            - collectd_enabled.rc == 0
          tags: validation
        - name: Stop collectd service
          when:
            - step|int == 1
            - collectd_enabled.rc == 0
          service: name=collectd state=stopped
        - name: Install collectd package if it was disabled
          yum: name=collectd state=latest
          when:
            - step|int == 3
            - collectd_enabled.rc != 0
<commit_msg>fix a typo in collectd.yaml<commit_after>heat_template_version: rocky

description: Collectd client service

parameters:
  ServiceData:
    default: {}
    description: Dictionary packing service data
    type: json
  ServiceNetMap:
    default: {}
    description: Mapping of service_name -> network name. Typically set
                 via parameter_defaults in the resource registry.  This
                 mapping overrides those in ServiceNetMapDefaults.
    type: json
  EndpointMap:
    default: {}
    description: Mapping of service endpoint -> protocol. Typically set
                 via parameter_defaults in the resource registry.
    type: json
  DefaultPasswords:
    default: {}
    type: json
  RoleName:
    default: ''
    description: Role name on which the service is applied
    type: string
  RoleParameters:
    default: {}
    description: Parameters specific to the role
    type: json
  GnocchiPassword:
    type: string
    description: The password for the gnocchi service and db account.
    hidden: true
  KeystoneRegion:
    type: string
    description: Keystone region for endpoint
    default: 'regionOne'
  CollectdDefaultPollingInterval:
    default: 120
    type: number
    description: >
      Controls how often registered read functions are called and with that
      the resolution of the collected data. This value can be overridden per
      plugin(per role) by setting "::collectd::plugin::<plugin_name>::interval"
      key in ExtraConfig(<role_name>ExtraConfig).
  CollectdDefaultPlugins:
    default:
      - disk
      - interface
      - load
      - memory
      - processes
      - tcpconns
      - unixsock
    type: comma_delimited_list
    description: >
      List of collectd plugins to activate on all overcloud hosts.  See
      the documentation for the puppet-collectd module for a list plugins
      supported by the module (https://github.com/voxpupuli/puppet-collectd).
      Set this key to override the default list of plugins.  Use
      CollectdExtraPlugins if you want to load additional plugins without
      overriding the defaults.
  CollectdExtraPlugins:
    default: []
    type: comma_delimited_list
    description: >
      List of collectd plugins to activate on all overcloud hosts.  See
      the documentation for the puppet-collectd module for a list plugins
      supported by the module (https://github.com/voxpupuli/puppet-collectd).
      Set this key to load plugins in addition to those in
      CollectdDefaultPlugins.
  CollectdServer:
    type: string
    description: >
      Address of remote collectd server to which we will send
      metrics.
    default: ''
  CollectdServerPort:
    type: number
    default: 25826
    description: >
      Port on remote collectd server to which we will send
      metrics.
  CollectdUsername:
    type: string
    description: >
      Username for authenticating to the remote collectd server. The default
      is to not configure any authentication.
    default: ''
  CollectdPassword:
    type: string
    hidden: true
    description: >
      Password for authenticating to the remote collectd server. The
      default is to not configure any authentication.
    default: ''
  CollectdSecurityLevel:
    type: string
    description: >
      Security level setting for remote collectd connection. If it is
      set to Sign or Encrypt the CollectdPassword and CollectdUsername
      parameters need to be set.
    default: 'None'
    constraints:
      - allowed_values:
          - None
          - Sign
          - Encrypt
  CollectdGnocchiAuthMode:
    type: string
    description: >
      Type of authentication Gnocchi server is using. Supported values are
      'simple' and 'keystone'.
    default: 'keystone'
  CollectdGnocchiProtocol:
    type: string
    description: API protocol Gnocchi server is using.
    default: 'http'
  CollectdGnocchiServer:
    type: string
    description: >
      The name or address of a gnocchi endpoint to which we should
      send metrics.
    default: nil
  CollectdGnocchiPort:
    type: number
    description: The port to which we will connect on the Gnocchi server.
    default: 8041
  CollectdGnocchiUser:
    type: string
    description: >
      Username for authenticating to the remote Gnocchi server using simple
      authentication.
    default: nil
  CollectdGnocchiKeystoneAuthUrl:
    type: string
    description: Keystone endpoint URL to authenticate to.
    default: nil
  CollectdGnocchiKeystoneUserName:
    type: string
    description: Username for authenticating to Keystone.
    default: nil
  CollectdGnocchiKeystoneUserId:
    type: string
    description: User ID for authenticating to Keystone.
    default: nil
  CollectdGnocchiKeystonePassword:
    type: string
    description: Password for authenticating to Keystone
    default: nil
    hidden: true
  CollectdGnocchiKeystoneProjectId:
    type: string
    description: Project ID for authenticating to Keystone.
    default: nil
  CollectdGnocchiKeystoneProjectName:
    type: string
    description: Project name for authenticating to Keystone.
    default: nil
  CollectdGnocchiKeystoneUserDomainId:
    type: string
    description: User domain ID for authenticating to Keystone.
    default: nil
  CollectdGnocchiKeystoneUserDomainName:
    type: string
    description: User domain name for authenticating to Keystone.
    default: nil
  CollectdGnocchiKeystoneProjectDomainId:
    type: string
    description: Project domain ID for authenticating to Keystone.
    default: nil
  CollectdGnocchiKeystoneProjectDomainName:
    type: string
    description: Project domain name for authenticating to Keystone.
    default: nil
  CollectdGnocchiKeystoneRegionName:
    type: string
    description: Region name for authenticating to Keystone.
    default: nil
  CollectdGnocchiKeystoneInterface:
    type: string
    description: Type of Keystone endpoint to authenticate to.
    default: nil
  CollectdGnocchiKeystoneEndpoint:
    type: string
    description: >
      Explicitly state Gnocchi server URL if you want to override
      Keystone value
    default: nil
  CollectdGnocchiResourceType:
    type: string
    description: >
      Default resource type created by the collectd-gnocchi plugin in Gnocchi
      to store hosts.
    default: 'collectd'
  CollectdGnocchiBatchSize:
    type: number
    description: Minimum number of values Gnocchi should batch.
    default: 10

conditions:
  gnocchi_default_connection:
    and:
      - equals: [{get_param: CollectdGnocchiServer}, nil]
      - equals: [{get_param: CollectdGnocchiKeystoneEndpoint}, nil]
  collectd_connection:
    not:
      equals: [{get_param: CollectdServer}, '']
  gnocchi_auth_simple:
    equals: [{get_param: CollectdGnocchiAuthMode}, 'simple']

outputs:
  role_data:
    description: Role data for the Collectd client role.
    value:
      service_name: collectd
      config_settings:
        map_merge:
          - collectd::manage_repo: false
            collectd::purge: true
            collectd::recurse: true
            collectd::purge_config: true
            collectd::minimum_version: "5.7"
            collectd::plugin::unixsock::socketgroup: root
            collectd::plugin::unixsock::socketfile: /var/run/collectd-socket
            collectd::interval: {get_param: CollectdDefaultPollingInterval}
            tripleo.collectd.plugins.collectd:
              yaql:
                data:
                  default_plugins: {get_param: CollectdDefaultPlugins}
                  extra_plugins: {get_param: CollectdExtraPlugins}
                expression: >
                  ($.data.default_plugins + $.data.extra_plugins)
                  .flatten().distinct()
          - if:
            - collectd_connection # use server side collectd or gnocchi as metrics relay?
            - tripleo::profile::base::metrics::collectd::collectd_server:
                get_param: CollectdServer
              tripleo::profile::base::metrics::collectd::collectd_port:
                get_param: CollectdServerPort
              tripleo::profile::base::metrics::collectd::collectd_username:
                get_param: CollectdUsername
              tripleo::profile::base::metrics::collectd::collectd_password:
                get_param: CollectdPassword
              tripleo::profile::base::metrics::collectd::collectd_securitylevel:
                get_param: CollectdSecurityLevel
            - map_merge:
              - tripleo::profile::base::metrics::collectd::gnocchi_auth_mode:
                  get_param: CollectdGnocchiAuthMode
                tripleo::profile::base::metrics::collectd::gnocchi_resource_type:
                  get_param: CollectdGnocchiResourceType
                tripleo::profile::base::metrics::collectd::gnocchi_batch_size:
                  get_param: CollectdGnocchiBatchSize
              - if:
                - gnocchi_default_connection  # use overcloud gnocchi instance or user provided instance?
                - tripleo::profile::base::metrics::collectd::gnocchi_keystone_endpoint:
                    get_param: [EndpointMap, GnocchiInternal, uri]
                  tripleo::profile::base::metrics::collectd::gnocchi_keystone_auth_url:
                    get_param: [EndpointMap, KeystoneInternal, uri_no_suffix]
                  tripleo::profile::base::metrics::collectd::gnocchi_keystone_user_name: 'gnocchi'
                  tripleo::profile::base::metrics::collectd::gnocchi_keystone_password:
                    get_param: GnocchiPassword
                  tripleo::profile::base::metrics::collectd::gnocchi_keystone_project_name: 'service'
                  tripleo::profile::base::metrics::collectd::gnocchi_keystone_user_domain_name: 'Default'
                  tripleo::profile::base::metrics::collectd::gnocchi_keystone_project_domain_name: 'Default'
                  tripleo::profile::base::metrics::collectd::gnocchi_keystone_region_name:
                    get_param: KeystoneRegion
                - if:
                  - gnocchi_auth_simple # use simple auth or keystone auth?
                  - tripleo::profile::base::metrics::collectd::gnocchi_protocol:
                      get_param: CollectdGnocchiProtocol
                    tripleo::profile::base::metrics::collectd::gnocchi_server:
                      get_param: CollectdGnocchiServer
                    tripleo::profile::base::metrics::collectd::gnocchi_port:
                      get_param: CollectdGnocchiPort
                    tripleo::profile::base::metrics::collectd::gnocchi_user:
                      get_param: CollectdGnocchiUser
                  - tripleo::profile::base::metrics::collectd::gnocchi_keystone_auth_url:
                      get_param: CollectdGnocchiKeystoneAuthUrl
                    tripleo::profile::base::metrics::collectd::gnocchi_keystone_user_name:
                      get_param: CollectdGnocchiKeystoneUserName
                    tripleo::profile::base::metrics::collectd::gnocchi_keystone_user_id:
                      get_param: CollectdGnocchiKeystoneUserId
                    tripleo::profile::base::metrics::collectd::gnocchi_keystone_password:
                      get_param: CollectdGnocchiKeystonePassword
                    tripleo::profile::base::metrics::collectd::gnocchi_keystone_project_id:
                      get_param: CollectdGnocchiKeystoneProjectId
                    tripleo::profile::base::metrics::collectd::gnocchi_keystone_project_name:
                      get_param: CollectdGnocchiKeystoneProjectName
                    tripleo::profile::base::metrics::collectd::gnocchi_keystone_user_domain_id:
                      get_param: CollectdGnocchiKeystoneUserDomainId
                    tripleo::profile::base::metrics::collectd::gnocchi_keystone_user_domain_name:
                      get_param: CollectdGnocchiKeystoneUserDomainName
                    tripleo::profile::base::metrics::collectd::gnocchi_keystone_project_domain_id:
                      get_param: CollectdGnocchiKeystoneProjectDomainId
                    tripleo::profile::base::metrics::collectd::gnocchi_keystone_project_domain_name:
                      get_param: CollectdGnocchiKeystoneProjectDomainName
                    tripleo::profile::base::metrics::collectd::gnocchi_keystone_region_name:
                      get_param: CollectdGnocchiKeystoneRegionName
                    tripleo::profile::base::metrics::collectd::gnocchi_keystone_interface:
                      get_param: CollectdGnocchiKeystoneInterface
                    tripleo::profile::base::metrics::collectd::gnocchi_keystone_endpoint:
                      get_param: CollectdGnocchiKeystoneEndpoint
      step_config: |
        include ::tripleo::profile::base::metrics::collectd
      upgrade_tasks:
        - name: Check if collectd is deployed
          command: systemctl is-enabled collectd
          tags: common
          ignore_errors: True
          register: collectd_enabled
        - name: Check status of collectd service
          shell: >
            /usr/bin/systemctl show collectd --property ActiveState |
            grep '\bactive\b'
          when:
            - step|int == 0
            - collectd_enabled.rc == 0
          tags: validation
        - name: Stop collectd service
          when:
            - step|int == 1
            - collectd_enabled.rc == 0
          service: name=collectd state=stopped
        - name: Install collectd package if it was disabled
          yum: name=collectd state=latest
          when:
            - step|int == 3
            - collectd_enabled.rc != 0

{'fraction_non_alphanumeric': 0.06752246469833119, 'fraction_numerical': 0.0016137905739959655, 'mean_word_length': 2.5848014725216935, 'pattern_counts': {'":': 2, '<': 7, '<?xml version=': 0, '>': 41, 'https://': 4, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '6120930', 'n_tokens_mistral': 7397, 'n_tokens_neox': 7197, 'n_words': 1826}