doc:
  name: Keystone
  description: Keystone provides authentication, authorization and service discovery mechanisms via HTTP primarily for use by projects in the OpenStack family.
  role:
  {%- if pillar.keystone.client is defined %}
    client:
      name: client
      param: {}
  {%- endif %}
  {%- if pillar.keystone.server is defined %}
  {%- from "keystone/map.jinja" import server with context %}
    server:
      name: server
      endpoint:
        keystone_api_admin:
          name: keystone-api-admin
          type: keystone-api-admin
          address: http://{{ server.bind.address }}:{{ server.bind.private_port }}
          protocol: http
        keystone_api_public:
          name: keystone-api-public
          type: keystone-api-public
          address: http://{{ server.bind.address }}:{{ server.bind.public_port }}
          protocol: http
      param:
        bind:
          value: {{ server.bind.address }}:{{ server.bind.port }}
        token_engine:
          value: {{ server.tokens.engine }}
        region:
          name: "Region"
          value: {{ server.region }}
        service_tenant:
          value: {{ server.service_tenant }}
        version:
          name: "Version"
          value: {{ server.version }}
        database_host:
          name: "Database"
          value: {{ server.database.user }}@{{ server.database.host }}:3306//{{ server.database.name }}
        services:
          value: |
            {%- for service_name, service in server.get('service', {}).iteritems() %}
            * {{ service_name }}: {{ service.type }}, publicurl '{{ service.bind.get('public_protocol', 'http') }}://{{ service.bind.public_address }}:{{ service.bind.public_port }}{{ service.bind.public_path }}'
            {%- endfor %}
        packages:
          value: |
            {%- for pkg in server.pkgs %}
            {%- set pkg_version = "dpkg -l "+pkg+" | grep "+pkg+" | awk '{print $3}'" %}
            * {{ pkg }}: {{ salt['cmd.run'](pkg_version) }}
            {%- endfor %}
  {%- endif %}
  {%- if pillar.keystone.control is defined %}
    control:
      name: control
      param: {}
  {%- endif %}
