Better functional tests for monasca-api.

- This patch returns status code 200 if keystone auth token is
retrieved.
 - Minor adjustments to the keystone middleware sections.
 - Adjustments in user naming in service endpoint creations.

Change-Id: Ifbb356634b29f1586c44e1135a761bf1f6adddb0
This commit is contained in:
Donovan Francesco (drifterza) 2016-11-03 15:20:08 +02:00
parent 8b86e74dd7
commit a67b4c9673
7 changed files with 78 additions and 71 deletions

View File

@ -1,6 +0,0 @@
CHANGES
=======
* Role skeleton for os_monasca
* Initial Commit
* Initial commit

View File

@ -42,11 +42,14 @@ monasca_auth_url: "{{ keystone_service_internalurl }}"
monasca_keystone_auth_plugin: password
monasca_service_tenant_name: monasca
monasca_service_project_name: monasca
monasca_project_domain_name: default
monasca_user_domain_name: default
monasca_service_description: "Monasca Monitoring Service"
monasca_service_name: monasca
monasca_service_type: monitoring
monasca_agent_user_name: monasca-agent
monasca_regular_user_name: monasca-user
monasca_admin_username: monasca-admin
monasca_regular_username: monasca-user
monasca_service_admin_role_names: admin
monasca_backend_database: "influxdb"
@ -59,12 +62,6 @@ monasca_api_requirements_git_repo: https://git.openstack.org/openstack/requireme
monasca_api_requirements_git_install_branch: master
monasca_api_metrics_driver: "monasca_api.common.repositories.influxdb.metrics_repository:MetricsRepository"
monasca_events_api_service_port: 8072
monasca_events_api_git_repo: "https://git.openstack.org/openstack/monasca-events-api"
monasca_events_api_git_install_branch: master
monasca_events_api_requirements_git_repo: https://git.openstack.org/openstack/requirements
monasca_events_api_requirements_git_install_branch: master
monasca_log_api_service_port: 5607
monasca_log_api_git_repo: "https://git.openstack.org/openstack/monasca-log-api"
monasca_log_api_git_install_branch: master
@ -108,7 +105,6 @@ monasca_python_client_requirements_git_install_branch: master
monasca_developer_constraints:
- "git+{{ monasca_api_git_repo }}@{{ monasca_api_git_install_branch }}#egg=monasca-api"
- "git+{{ monasca_events_api_git_repo }}@{{ monasca_events_api_git_install_branch }}#egg=monasca-events-api"
- "git+{{ monasca_log_api_git_repo }}@{{ monasca_log_api_git_install_branch }}#egg=monasca-log-api"
- "git+{{ monasca_ceilometer_git_repo }}@{{ monasca_ceilometer_git_install_branch }}#egg=monasca-ceilometer"
- "git+{{ monasca_common_git_repo }}@{{ monasca_common_git_install_branch }}#egg=monasca-common"

View File

@ -55,7 +55,7 @@
- monasca-service-add
- monasca-setup
- name: Ensure the monasca-agent user exists
- name: Ensure the monasca admin user exists
keystone:
command: "ensure_user"
endpoint: "{{ keystone_service_adminurl }}"
@ -63,12 +63,12 @@
login_password: "{{ keystone_auth_admin_password }}"
login_project_name: "{{ keystone_admin_tenant_name }}"
insecure: "{{ keystone_service_adminuri_insecure }}"
user_name: "{{ monasca_agent_user_name }}"
user_name: "{{ monasca_admin_username }}"
tenant_name: "{{ monasca_service_tenant_name }}"
password: "{{ monasca_agent_user_password }}"
password: "{{ monasca_admin_password }}"
project_name: "{{ monasca_service_project_name }}"
register: add_monasca_agent_user
until: add_monasca_agent_user |success
register: add_monasca_admin_user
until: add_monasca_admin_user |success
retries: 5
delay: 2
tags:
@ -77,7 +77,7 @@
- monasca-user-add
- monasca-setup
- name: Ensure the monasca regular user exists
- name: Ensure the monasca read only user exists
keystone:
command: "ensure_user"
endpoint: "{{ keystone_service_adminurl }}"
@ -85,7 +85,7 @@
login_password: "{{ keystone_auth_admin_password }}"
login_project_name: "{{ keystone_admin_tenant_name }}"
insecure: "{{ keystone_service_adminuri_insecure }}"
user_name: "{{ monasca_regular_user_name }}"
user_name: "{{ monasca_regular_username }}"
tenant_name: "{{ monasca_service_tenant_name }}"
password: "{{ monasca_regular_user_password }}"
project_name: "{{ monasca_service_project_name }}"
@ -99,20 +99,20 @@
- monasca-user-add
- monasca-setup
- name: Ensure the monasca-agent user has the admin role
- name: Ensure the monasca admin user has the admin role
keystone:
command: "ensure_user_role"
endpoint: "{{ keystone_service_adminurl }}"
login_user: "{{ keystone_admin_user_name }}"
login_password: "{{ keystone_auth_admin_password }}"
login_project_name: "{{ keystone_admin_tenant_name }}"
user_name: "{{ monasca_agent_user_name }}"
user_name: "{{ monasca_admin_username }}"
tenant_name: "{{ monasca_service_tenant_name }}"
role_name: "{{ item }}"
insecure: "{{ keystone_service_adminuri_insecure }}"
project_name: "{{ monasca_service_project_name }}"
register: ensure_monasca_agent_roles
until: ensure_monasca_agent_roles |success
register: ensure_monasca_admin_roles
until: ensure_monasca_admin_roles |success
retries: 5
delay: 2
with_items: "{{ monasca_service_admin_role_names }}"

View File

@ -20,9 +20,9 @@ dimension_names = monasca_api.v2.reference.metrics:DimensionNames
notification_method_types = monasca_api.v2.reference.notificationstype:NotificationsType
[security]
default_authorized_roles = user, domainuser, domainadmin, {{ monasca_regular_user_name }}
agent_authorized_roles = {{ monasca_agent_user_name }}
read_only_authorized_roles = monasca-read-only-user
default_authorized_roles = user, domainuser, domainadmin, {{ monasca_regular_username }}
agent_authorized_roles = {{ monasca_admin_username }}
read_only_authorized_roles = {{ monasca_regular_username }}
delegate_authorized_roles = admin
[messaging]
@ -72,12 +72,11 @@ url = "mysql+pymysql://{{ monasca_galera_user }}:{{ monasca_galera_password }}@{
[keystone_authtoken]
insecure = {{ keystone_service_internaluri_insecure | bool }}
auth_plugin = {{ monasca_keystone_auth_plugin }}
auth_url = {{ keystone_service_adminuri }}
identity_uri = {{ keystone_service_adminuri }}
auth_url = {{ keystone_service_internaluri }}
auth_uri = {{ keystone_service_internaluri }}
project_domain_id = {{ monasca_service_project_domain_id }}
user_domain_id = {{ monasca_service_user_domain_id }}
project_name = {{ monasca_service_project_name }}
username = {{ monasca_service_user_name }}
password = {{ monasca_service_password }}
region_name = {{ keystone_service_region }}
auth_type = {{ monasca_keystone_auth_plugin }}
project_domain_name = {{ monasca_project_domain_name }}
user_domain_name = {{ monasca_user_domain_name }}
username = {{ monasca_admin_username }}
password = {{ monasca_admin_password }}

View File

@ -9,18 +9,6 @@ region = {{ keystone_service_region }}
topics = logs
kafka_url = {{ kafka_hosts }}
[keystone_authtoken]
insecure = {{ keystone_service_internaluri_insecure | bool }}
auth_plugin = {{ monasca_keystone_auth_plugin }}
auth_url = {{ keystone_service_adminuri }}
auth_uri = {{ keystone_service_internaluri }}
project_domain_id = {{ monasca_service_project_domain_id }}
user_domain_id = {{ monasca_service_user_domain_id }}
project_name = {{ monasca_service_project_name }}
username = {{ monasca_service_user_name }}
password = {{ monasca_service_password }}
region_name = {{ keystone_service_region }}
[kafka_healthcheck]
kafka_url = {{ kafka_hosts }}
kafka_topics = log
@ -28,11 +16,22 @@ kafka_topics = log
[roles_middleware]
path = /v2.0/log
path = /v3.0/logs
default_roles = user, domainuser, domainadmin, {{ monasca_regular_user_name }}
agent_roles = {{ monasca_agent_user_name }}, admin
default_roles = user, domainuser, domainadmin, {{ monasca_regular_username }}
agent_roles = {{ monasca_admin_username }}, admin
[dispatcher]
logs = monasca_log_api.reference.v2.logs:Logs
logs_v3 = monasca_log_api.reference.v3.logs:Logs
versions = monasca_log_api.reference.versions:Versions
healthchecks = monasca_log_api.reference.healthchecks:HealthChecks
[keystone_authtoken]
insecure = {{ keystone_service_internaluri_insecure | bool }}
identity_uri = {{ keystone_service_adminuri }}
auth_url = {{ keystone_service_internaluri }}
auth_uri = {{ keystone_service_internaluri }}
auth_type = {{ monasca_keystone_auth_plugin }}
pproject_domain_name = {{ monasca_project_domain_name }}
user_domain_name = {{ monasca_user_domain_name }}
username = {{ monasca_admin_username }}
password = {{ monasca_admin_password }}

View File

@ -18,24 +18,36 @@
# Reference: https://github.com/openstack/monasca-api/blob/master/docs/monasca-api-spec.md
- name: Playbook for functional testing monasca
hosts: monasca_api
hosts: monasca_all
user: root
gather_facts: false
vars:
monasca_api: "http://localhost:{{ monasca_api_service_port }}"
tasks:
- name: Install httplib2 so we can use the uri module
- name: Install openstackclient
pip:
name: httplib2
name: "python-openstackclient"
- name: Validate that auth is required
uri:
url: "{{ monasca_api }}"
status_code: 401
- name: Get auth token
shell: >
. /root/openrc && openstack token issue --format yaml | awk '/^id\:/ {print $2}'
register: get_keystone_token
- name: set token
set_fact:
keystone_token: "{{ get_keystone_token.stdout }}"
- name: Check the monasca-api
uri:
url: "http://localhost:8070"
status_code: 401
register: result
until:
- result is defined
- result.status is defined
- result.status == 401
retries: 5
delay: 10
url: "{{ monasca_api }}"
HEADER_X-Auth-Token: "{{ keystone_token }}"
status_code: 200,300
vars_files:
- common/test-vars.yml
- test-vars.yml
- common/test-vars.yml
- test-vars.yml

View File

@ -17,6 +17,8 @@
# (c) 2016 Paul Stevens <paul.stevens@is.co.za>
monasca_developer_mode: True
monasca_galera_address: "{{ hostvars[groups['galera_all'][0]]['ansible_host'] }}"
external_lb_vip_address: "{{ hostvars[groups['keystone_all'][0]]['ansible_host'] }}"
internal_lb_vip_address: "{{ hostvars[groups['keystone_all'][0]]['ansible_host'] }}"
monasca_galera_database: monasca
monasca_galera_user: monasca
monasca_galera_password: "secrete"
@ -28,24 +30,23 @@ monasca_rabbitmq_password: "secrete"
monasca_rabbitmq_userid: monasca
monasca_rabbitmq_vhost: /monasca
monasca_api_requirements_git_install_branch: master
monasca_events_api_requirements_git_install_branch: master
monasca_log_api_requirements_git_install_branch: master
monasca_ceilometer_requirements_git_install_branch: master
monasca_common_requirements_git_install_branch: master
monasca_transform_requirements_git_install_branch: master
monasca_notification_requirements_git_install_branch: master
monasca_analytics_requirements_git_install_branch: master
monasca_persister_requirements_git_install_branch: master
monasca_python_client_requirements_git_install_branch: master
monasca_service_password: "secrete"
monasca_regular_user_password: "secrete"
monasca_agent_user_password: "secrete"
monasca_service_project_domain_id: default
monasca_admin_password: "secrete"
monasca_project_domain_name: default
monasca_user_domain_name: default
monasca_service_project_name: service
monasca_service_region: RegionOne
monasca_service_user_domain_id: default
monasca_service_user_name: monasca
monasca_service_port: 8070
monasca_api_service_port: 8070
monasca_log_api_service_port: 5607
monasca_venv_tag: untagged
monasca_bin: "/openstack/venvs/monasca-{{ monasca_venv_tag }}/bin"
storm_nimbus_enabled: true
@ -61,3 +62,9 @@ monasca_grafana_admin_password: "secrete"
monasca_grafana_galera_password: "secrete"
monasca_grafana_galera_database: grafana
monasca_grafana_galera_username: grafana
grafana_mysql_host: "{{ monasca_galera_address }}"
grafana_admin_password: "{{ monasca_grafana_admin_password }}"
grafana_mysql_db: "{{ monasca_grafana_galera_database }}"
grafana_mysql_user: "{{ monasca_grafana_galera_username }}"
grafana_mysql_password: "{{ monasca_grafana_galera_password }}"
grafana_keystone_url: "{{ keystone_service_internaluri }}"