heat_template_version: rocky

description: >
  OpenStack containerized Neutron API service

parameters:
  ContainerNeutronApiImage:
    description: image
    type: string
  NeutronServiceName:
    description: service name
    type: string

outputs:
  cmd_extra_args:
    description: Extra command line arguments for running the service in the container.
    value:
      str_replace:
        template: "--log-file=/var/log/neutron/SERVICE.log"
        params:
          SERVICE: {get_param: NeutronServiceName}
  config_settings:
    description: Extra hieradata needed to log to files in the host.
    value: null
  volumes:
    description: extra volumes
    value: &neutron_api_volumes
      - /var/log/containers/neutron:/var/log/neutron:z
      - /var/log/containers/httpd/neutron-api:/var/log/httpd:z
  docker_config:
    description: Extra containers needed for logging to files in the host.
    value:
      # db sync runs before permissions set by kolla_config
      step_2:
        neutron_init_logs:
          image: {get_param: ContainerNeutronApiImage}
          net: none
          privileged: false
          user: root
          volumes: *neutron_api_volumes
          command: ['/bin/bash', '-c', 'chown -R neutron:neutron /var/log/neutron']
  host_prep_tasks:
    description: Extra ansible tasks needed for logging to files in the host.
    value:
      - name: create persistent directories
        file:
          path: "{{ item.path }}"
          state: directory
          setype: "{{ item.setype }}"
        with_items:
          - { 'path': /var/log/containers/neutron, 'setype': svirt_sandbox_file_t, 'mode': '0750' }
          - { 'path': /var/log/containers/httpd/neutron-api, 'setype': svirt_sandbox_file_t, 'mode': '0750' }
