heat_template_version: pike

description: Fluentd logging configuration

parameters:
  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
  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
  EndpointMap:
    default: {}
    description: >
      Mapping of service endpoint -> protocol. Typically set
      via parameter_defaults in the resource registry.
    type: json
  LoggingDefaultFormat:
    description: >
      Default format used to parse messages from log files.
    type: string
    default: >-
      /(?<time>\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}.\d+)
      (?<pid>\d+)
      (?<priority>\S+)
      (?<message>.*)$/
  LoggingPosFilePath:
    description: >
      Directory in which to place fluentd pos_file files (used to track
      file position for the 'tail' input type).
    type: string
    default: /var/cache/fluentd
  LoggingDefaultGroups:
    description: >
      Make fluentd user a member of these groups. Only override this parameter
      if you want to modify the default list of groups.  Use
      LoggingExtraGroups to add the fluentd user to additional groups.
    type: comma_delimited_list
    default:
      - root
  LoggingExtraGroups:
    description: >
      Make fluentd user a member of these groups (in addition to
      LoggingDefaultGroups and the groups provided by individual
      composable services).
    type: comma_delimited_list
    default: []
  LoggingServers:
    description: |
      A list of destinations to which fluentd will forward log messages.  Expects
      a list of dictionaries of the form:

          - host: loghost1.example.com
            port: 24224
          - host: loghost2.example.com
            port: 24224
    type: json
    default: []
  LoggingDefaultFilters:
    description: >
      A list of fluentd default filters. This will be passed verbatim
      to the 'filter' key of a fluentd::config resource.  Only override this
      if you do not want the default set of filters; use LoggingExtraFilters
      if you just want to add additional servers.
    type: json
    default:
      - tag_pattern: '**'
        type: record_transformer
        record:
          host: '${hostname}'

      - tag_pattern: 'openstack.**'
        type: record_transformer
        record:
          component: '${tag_parts[1]}'
  LoggingExtraFilters:
    description: >
      A list of additional fluentd filters. This will be passed
      verbatim to the 'filter' key of a fluentd::config resource.
    type: json
    default: []
  LoggingUsesSSL:
    description: >
      A boolean value indicating whether or not we should forward log messages
      use the secure_forward plugin.
    type: boolean
    default: false
  LoggingSSLCertificate:
    description: >
      PEM-encoded SSL CA certificate for fluentd.
    type: string
    default: ""
  LoggingSSLKey:
    description: >
      PEM-encoded key for fluentd CA certificate (used by in_secure_forward).
    type: string
    default: ""
  LoggingSSLKeyPassphrase:
    description: >
      Passphrase for LoggingSSLKey (used by in_secure_forward).
    type: string
    default: ""
  LoggingSharedKey:
    description: >
      Shared secret for fluentd secure-forward plugin.
    type: string
    default: ""
  LoggingDefaultSources:
    description: >
      A list of default logging sources for fluentd.  You should only override
      this parameter if you wish to disable the default logging sources.  Use
      LoggingExtraSources to define additional source configurations.
    type: json
    default: []
  LoggingExtraSources:
    description: >
      A list of additional logging sources for fluentd.  These will be combined
      with the LoggingDefaultSources and any logging sources defined by
      composable services.
    type: json
    default: []

outputs:
  LoggingDefaultFormat:
    value: {get_param: LoggingDefaultFormat}
  LoggingDefaultFilters:
    value: {get_param: LoggingDefaultFilters}
  LoggingExtraFilters:
    value: {get_param: LoggingExtraFilters}
  LoggingDefaultGroups:
    value: {get_param: LoggingDefaultGroups}
  LoggingExtraGroups:
    value: {get_param: LoggingExtraGroups}
  LoggingPosFilePath:
    value: {get_param: LoggingPosFilePath}
  LoggingSSLCertificate:
    value: {get_param: LoggingSSLCertificate}
  LoggingSSLKey:
    value: {get_param: LoggingSSLKey}
  LoggingSSLKeyPassphrase:
    value: {get_param: LoggingSSLKeyPassphrase}
  LoggingServers:
    value: {get_param: LoggingServers}
  LoggingSharedKey:
    value: {get_param: LoggingSharedKey}
  LoggingUsesSSL:
    value: {get_param: LoggingUsesSSL}
  LoggingDefaultSources:
    value: {get_param: LoggingDefaultSources}
  LoggingExtraSources:
    value: {get_param: LoggingExtraSources}