Adding backedn_status info to the monitoring service and tenant REST APIs
Adding e2e tests for monitoring service

Change-Id: I9f60f380318a84e2b13535f638920274c64ac30d
diff --git a/xos/test/roles/common/tasks/main.yml b/xos/test/roles/common/tasks/main.yml
new file mode 100644
index 0000000..32c9613
--- /dev/null
+++ b/xos/test/roles/common/tasks/main.yml
@@ -0,0 +1,17 @@
+---
+- name: Validate Monitoring service is ready
+  uri:
+    url: "{{item}}"
+    user: "{{ auth.user }}"
+    password: "{{ auth.pass }}"
+    status_code: 200
+    body_format: json
+    force_basic_auth: yes
+    HEADER_Content-Type: "application/json"
+  register: monitoringservice
+  until: "monitoringservice.json and 'OK' in monitoringservice.json[0].backend_status"
+  retries: 5
+  delay: 60
+  with_items:
+    - http://localhost:8888/api/service/monitoring/
+    - http://localhost:8888/api/tenant/monitoring/monitoringchannel/
diff --git a/xos/test/roles/test-inframonitoring/tasks/main.yml b/xos/test/roles/test-inframonitoring/tasks/main.yml
new file mode 100644
index 0000000..5703e48
--- /dev/null
+++ b/xos/test/roles/test-inframonitoring/tasks/main.yml
@@ -0,0 +1,28 @@
+---
+- name: Validate Monitoring URL is completely UP and valid metrics are returned
+  uri:
+    url: "{{monitoringservice.results[1].json[0].ceilometer_url}}v2/meters"
+    status_code: 200
+    return_content: yes
+    body_format: json
+    HEADER_Content-Type: "application/json"
+  register: metrics
+  until: "(metrics.status == 200) and (metrics.content|from_json|length>0)"
+  retries: 5
+  delay: 10
+
+- name: assert disk related infra metrics are present
+  assert:
+    that: "'disk.write.requests' in metrics.content"
+    msg: "Metrics does not contains disk related statistics"
+
+- name: assert memory related infra metrics are present
+  assert:
+    that: "'memory' in metrics.content"
+    msg: "Metrics does not contains memory related statistics"
+
+- name: assert cpu related infra metrics are present
+  assert:
+    that: "'cpu' in metrics.content"
+    msg: "Metrics does not contains cpu related statistics"
+
diff --git a/xos/test/roles/test-initial/tasks/main.yml b/xos/test/roles/test-initial/tasks/main.yml
new file mode 100644
index 0000000..dea7524
--- /dev/null
+++ b/xos/test/roles/test-initial/tasks/main.yml
@@ -0,0 +1,17 @@
+---
+- name: Validate Monitoring URL is completely UP
+  uri:
+    url: "{{monitoringservice.results[1].json[0].ceilometer_url}}v2/meters"
+    status_code: 200
+    return_content: yes
+    body_format: json
+    HEADER_Content-Type: "application/json"
+  register: metrics
+  until: metrics.status == 200
+  retries: 5
+  delay: 10
+
+- name: assert no metrics are present
+  assert:
+    that: metrics.content|from_json|length==0
+    msg: "Meters list is non empty for the first time"
diff --git a/xos/test/roles/test-vsgmonitoring/tasks/main.yml b/xos/test/roles/test-vsgmonitoring/tasks/main.yml
new file mode 100644
index 0000000..11d8be6
--- /dev/null
+++ b/xos/test/roles/test-vsgmonitoring/tasks/main.yml
@@ -0,0 +1,28 @@
+---
+- name: Validate Monitoring URL is completely UP and metrics contain vSG related metrics
+  uri:
+    url: "{{monitoringservice.results[1].json[0].ceilometer_url}}v2/meters"
+    status_code: 200
+    return_content: yes
+    body_format: json
+    HEADER_Content-Type: "application/json"
+  register: metrics
+  until: "(metrics.status == 200) and (metrics.content|from_json|length>0) and ('vsg' in metrics.content)"
+  retries: 5
+  delay: 10
+
+- name: assert vSG metrics vsg.dns.cache.size are present
+  assert:
+    that: "'vsg.dns.cache.size' in metrics.content"
+    msg: "Metrics does not contains vsg.dns.cache.size related statistics"
+
+- name: assert vSG metrics vsg.dns.replaced_unexpired_entries are present
+  assert:
+    that: "'vsg.dns.replaced_unexpired_entries' in metrics.content"
+    msg: "Metrics does not contains vsg.dns.replaced_unexpired_entries related statistics"
+
+- name: assert vSG metrics vsg.dns.queries_answered_locally are present
+  assert:
+    that: "'vsg.dns.queries_answered_locally' in metrics.content"
+    msg: "Metrics does not contains vsg.dns.queries_answered_locally related statistics"
+