hawkular-client 2.7.0 → 2.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (156) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +19 -2
  3. data/.travis/wait_for_services.rb +23 -0
  4. data/CHANGES.rdoc +11 -0
  5. data/docker-compose.yml +15 -0
  6. data/lib/hawkular/alerts/alerts_api.rb +24 -0
  7. data/lib/hawkular/base_client.rb +7 -0
  8. data/lib/hawkular/inventory/entities.rb +3 -0
  9. data/lib/hawkular/metrics/metric_api.rb +38 -3
  10. data/lib/hawkular/metrics/metrics_client.rb +3 -0
  11. data/lib/hawkular/metrics/tenant_api.rb +2 -2
  12. data/lib/hawkular/version.rb +1 -1
  13. data/spec/integration/alert-resources/alerts-test-data.json +40 -0
  14. data/spec/integration/alert-resources/events-test-data.json +78 -0
  15. data/spec/integration/alert-resources/triggers-test-data.json +66 -0
  16. data/spec/integration/alerts_spec.rb +192 -83
  17. data/spec/integration/hello-world-definitions.json +1 -2
  18. data/spec/integration/inventory_spec.rb +18 -5
  19. data/spec/integration/metric_spec.rb +201 -40
  20. data/spec/integration/operations_spec.rb +45 -1
  21. data/spec/spec_helper.rb +25 -6
  22. data/spec/vcr_cassettes/Alert/Alerts/Templates/Should_acknowledge_an_alert.yml +205 -0
  23. data/spec/vcr_cassettes/Alert/Alerts/Templates/Should_fetch_single_alert.yml +108 -0
  24. data/spec/vcr_cassettes/Alert/Alerts/Templates/Should_list_alerts.yml +59 -0
  25. data/spec/vcr_cassettes/Alert/Alerts/Templates/Should_list_alerts_for_trigger.yml +58 -0
  26. data/spec/vcr_cassettes/Alert/Alerts/{Should_list_alerts_for_unknown_trigger.yml → Templates/Should_list_alerts_for_unknown_trigger.yml} +13 -9
  27. data/spec/vcr_cassettes/Alert/Alerts/Templates/Should_list_open_alerts.yml +59 -0
  28. data/spec/vcr_cassettes/Alert/Alerts/Templates/Should_resolve_an_alert.yml +207 -0
  29. data/spec/vcr_cassettes/Alert/Alerts/Templates/setup.yml +255 -0
  30. data/spec/vcr_cassettes/Alert/Alerts/Templates/setup_cleanup.yml +302 -0
  31. data/spec/vcr_cassettes/Alert/EndToEnd/Templates/Should_create_and_fire_a_trigger.yml +527 -0
  32. data/spec/vcr_cassettes/{Metrics/NonSecure/metrics_0_16_0/Templates/Gauge_metrics/Should_return_periods.yml → Alert/Events/Templates/Should_create_an_event.yml} +22 -18
  33. data/spec/vcr_cassettes/{Metrics/NonSecure/metrics_0_16_0/Templates/Availability_metrics/Should_push_metric_data_to_non-existing_Availability.yml → Alert/Events/Templates/Should_delete_an_event.yml} +28 -24
  34. data/spec/vcr_cassettes/Alert/Events/Templates/Should_list_events.yml +91 -0
  35. data/spec/vcr_cassettes/Alert/Events/Templates/Should_list_events_using_criteria.yml +60 -0
  36. data/spec/vcr_cassettes/Alert/Events/{Should_not_list_events_using_criteria.yml → Templates/Should_not_list_events_using_criteria.yml} +14 -13
  37. data/spec/vcr_cassettes/Alert/Events/Templates/setup.yml +615 -0
  38. data/spec/vcr_cassettes/Alert/Events/Templates/setup_cleanup.yml +567 -0
  39. data/spec/vcr_cassettes/Alert/Groups/{Should_operate_a_complex_group_trigger.yml → Templates/Should_operate_a_complex_group_trigger.yml} +508 -352
  40. data/spec/vcr_cassettes/{Alerts → Alert/Templates}/Should_return_the_version.yml +10 -8
  41. data/spec/vcr_cassettes/Alert/Triggers/Templates/Should_List_Triggers.yml +55 -0
  42. data/spec/vcr_cassettes/Alert/Triggers/Templates/Should_List_Triggers_for_ID.yml +56 -0
  43. data/spec/vcr_cassettes/Alert/Triggers/Templates/Should_List_Triggers_for_Tag.yml +56 -0
  44. data/spec/vcr_cassettes/Alert/Triggers/Templates/Should_List_Triggers_for_Tags.yml +56 -0
  45. data/spec/vcr_cassettes/Alert/Triggers/Templates/Should_bulk_load_triggers.yml +243 -0
  46. data/spec/vcr_cassettes/Alert/Triggers/{Should_create_a_basic_trigger_with_action.yml → Templates/Should_create_a_basic_trigger_with_action.yml} +107 -76
  47. data/spec/vcr_cassettes/Alert/Triggers/{Should_create_a_firing_ALL_ANY_trigger.yml → Templates/Should_create_a_firing_ALL_ANY_trigger.yml} +81 -61
  48. data/spec/vcr_cassettes/{Metrics/NonSecure/metrics_0_16_0/Templates/Counter_metrics/Should_push_metric_data_to_non-existing_counter.yml → Alert/Triggers/Templates/Should_create_an_action.yml} +32 -30
  49. data/spec/vcr_cassettes/{Metrics/Secure/metrics_0_16_0/Templates/Availability_metrics/Should_push_metric_data_to_non-existing_Availability.yml → Alert/Triggers/Templates/Should_get_a_single_Trigger_with_conditions.yml} +29 -29
  50. data/spec/vcr_cassettes/Alert/Triggers/Templates/Should_get_a_single_metric_Trigger.yml +50 -0
  51. data/spec/vcr_cassettes/Alert/Triggers/{Should_get_the_action_definitions.yml → Templates/Should_get_the_action_definitions.yml} +46 -73
  52. data/spec/vcr_cassettes/Alert/Triggers/{Should_not_create_an_action_for_unknown_plugin.yml → Templates/Should_not_create_an_action_for_unknown_plugin.yml} +12 -8
  53. data/spec/vcr_cassettes/{Metrics/NonSecure/metrics_0_16_0/Templates/Availability_metrics/Should_create_Availability_definition_using_MetricDefinition_parameter.yml → Alert/Triggers/Templates/Should_not_create_an_action_for_unknown_properties.yml} +27 -26
  54. data/spec/vcr_cassettes/Alert/Triggers/Templates/setup.yml +52 -0
  55. data/spec/vcr_cassettes/{Metrics/NonSecure/metrics_0_16_0/Templates/Mixed_metrics/Should_send_mixed_metric_request_of_a_single_type.yml → Alert/Triggers/Templates/setup_cleanup.yml} +51 -51
  56. data/spec/vcr_cassettes/Inventory/NonSecure/inventory_0_17/Templates/Should_list_metrics_of_given_metric_type.yml +29 -25
  57. data/spec/vcr_cassettes/Metrics/NonSecure/ID_with_special_characters/Templates/Get_metric_definition_by_id.yml +3 -3
  58. data/spec/vcr_cassettes/Metrics/NonSecure/ID_with_special_characters/Templates/Retrieve_metric_rate_points.yml +5 -5
  59. data/spec/vcr_cassettes/Metrics/NonSecure/ID_with_special_characters/Templates/Should_create_Availability_definition.yml +4 -4
  60. data/spec/vcr_cassettes/Metrics/NonSecure/ID_with_special_characters/Templates/Should_create_Counter_definition.yml +4 -4
  61. data/spec/vcr_cassettes/Metrics/NonSecure/ID_with_special_characters/Templates/Should_create_gauge_definition.yml +4 -4
  62. data/spec/vcr_cassettes/Metrics/NonSecure/ID_with_special_characters/Templates/Should_push_metric_data_to_existing_gauge.yml +4 -4
  63. data/spec/vcr_cassettes/Metrics/NonSecure/ID_with_special_characters/Templates/Should_update_tags_for_Availability_definition.yml +6 -6
  64. data/spec/vcr_cassettes/Metrics/NonSecure/ID_with_special_characters/Templates/Should_update_tags_for_gauge_definition.yml +8 -8
  65. data/spec/vcr_cassettes/Metrics/NonSecure/ID_with_special_characters/Templates/setup_client.yml +44 -0
  66. data/spec/vcr_cassettes/Metrics/NonSecure/{metrics_0_16_0/Templates/Counter_metrics/Should_get_metrics_with_limit_and_order.yml → metrics_services/Templates/All_Tags_for_metrics/Should_fetch_all_metric_tags_for_metrics_definitions.yml} +159 -53
  67. data/spec/vcr_cassettes/Metrics/NonSecure/metrics_services/Templates/Availability_metrics/Should_group_contiguous_values.yml +47 -6
  68. data/spec/vcr_cassettes/Metrics/NonSecure/metrics_services/Templates/Availability_metrics/Should_push_metric_data_to_non-existing_Availability.yml +12 -12
  69. data/spec/vcr_cassettes/Metrics/NonSecure/metrics_services/Templates/Availability_metrics/setup_client.yml +44 -0
  70. data/spec/vcr_cassettes/Metrics/NonSecure/metrics_services/Templates/Counter_metrics/Should_get_metrics_as_bucketed_results.yml +17 -17
  71. data/spec/vcr_cassettes/Metrics/NonSecure/metrics_services/Templates/Counter_metrics/Should_get_metrics_with_limit_and_order.yml +23 -23
  72. data/spec/vcr_cassettes/Metrics/NonSecure/metrics_services/Templates/Counter_metrics/Should_push_metric_data_to_existing_counter.yml +19 -19
  73. data/spec/vcr_cassettes/Metrics/NonSecure/metrics_services/Templates/Counter_metrics/Should_push_metric_data_to_non-existing_counter.yml +12 -12
  74. data/spec/vcr_cassettes/Metrics/NonSecure/metrics_services/Templates/Counter_metrics/setup_client.yml +44 -0
  75. data/spec/vcr_cassettes/Metrics/NonSecure/metrics_services/Templates/Gauge_metrics/Should_push_metric_data_to_existing_gauge.yml +19 -19
  76. data/spec/vcr_cassettes/Metrics/NonSecure/metrics_services/Templates/Gauge_metrics/Should_push_metric_data_to_non-existing_gauge.yml +12 -12
  77. data/spec/vcr_cassettes/Metrics/NonSecure/metrics_services/Templates/Gauge_metrics/Should_return_periods.yml +5 -5
  78. data/spec/vcr_cassettes/Metrics/NonSecure/metrics_services/Templates/Gauge_metrics/Should_return_platform_memory.yml +151 -5
  79. data/spec/vcr_cassettes/Metrics/NonSecure/metrics_services/Templates/Gauge_metrics/Should_return_platform_memory_def.yml +152 -6
  80. data/spec/vcr_cassettes/Metrics/NonSecure/metrics_services/Templates/Gauge_metrics/setup_client.yml +44 -0
  81. data/spec/vcr_cassettes/Metrics/NonSecure/metrics_services/Templates/Mixed_metrics/Should_fetch_rate_stats_for_mixed_metric.yml +33 -33
  82. data/spec/vcr_cassettes/Metrics/NonSecure/metrics_services/Templates/Mixed_metrics/Should_fetch_stats_for_mixed_metric.yml +31 -32
  83. data/spec/vcr_cassettes/Metrics/NonSecure/metrics_services/Templates/Mixed_metrics/Should_requests_raw_data_for_multiple_metrics.yml +108 -20
  84. data/spec/vcr_cassettes/Metrics/NonSecure/metrics_services/Templates/Mixed_metrics/Should_send_mixed_metric_request.yml +26 -26
  85. data/spec/vcr_cassettes/Metrics/NonSecure/metrics_services/Templates/Mixed_metrics/Should_send_mixed_metric_request_of_a_single_type.yml +27 -27
  86. data/spec/vcr_cassettes/Metrics/NonSecure/{metrics_0_16_0/Templates/Status/Should_return_the_version.yml → metrics_services/Templates/Mixed_metrics/setup_client.yml} +3 -3
  87. data/spec/vcr_cassettes/Metrics/NonSecure/metrics_services/Templates/No_Tenant/Should_fail.yml +43 -4
  88. data/spec/vcr_cassettes/Metrics/NonSecure/metrics_services/Templates/Status/Should_return_the_version.yml +44 -3
  89. data/spec/vcr_cassettes/Metrics/NonSecure/{metrics_0_16_0/Templates/Gauge_metrics/Should_create_gauge_definition_using_Hash.yml → metrics_services/Templates/String_metrics/Should_create_string_definition_using_Hash.yml} +9 -9
  90. data/spec/vcr_cassettes/Metrics/NonSecure/{metrics_0_16_0/Templates/Gauge_metrics/Should_create_gauge_definition_using_MetricDefinition.yml → metrics_services/Templates/String_metrics/Should_create_string_definition_using_MetricDefinition.yml} +9 -9
  91. data/spec/vcr_cassettes/Metrics/NonSecure/{metrics_0_16_0/Templates/Gauge_metrics/Should_push_metric_data_to_existing_gauge.yml → metrics_services/Templates/String_metrics/Should_push_metric_data_to_existing_string.yml} +27 -27
  92. data/spec/vcr_cassettes/Metrics/NonSecure/{metrics_0_16_0/Templates/Gauge_metrics/Should_push_metric_data_to_non-existing_gauge.yml → metrics_services/Templates/String_metrics/Should_push_metric_data_to_non-existing_string.yml} +15 -15
  93. data/spec/vcr_cassettes/Metrics/NonSecure/metrics_services/Templates/String_metrics/setup_client.yml +44 -0
  94. data/spec/vcr_cassettes/Metrics/NonSecure/metrics_services/Templates/Tags_Metrics/setup_client.yml +44 -0
  95. data/spec/vcr_cassettes/Metrics/NonSecure/metrics_services/Templates/Tenants/Should_create_and_return_tenant.yml +10 -6
  96. data/spec/vcr_cassettes/Metrics/{Secure/metrics_0_16_0/Templates/Status/Should_return_the_version.yml → NonSecure/metrics_services/Templates/Tenants/setup_client.yml} +5 -5
  97. data/spec/vcr_cassettes/Metrics/NonSecure/metrics_services/Templates/setup_client.yml +44 -0
  98. data/spec/vcr_cassettes/Metrics/Secure/metrics_services/Templates/Mixed_metrics/Should_requests_raw_data_for_multiple_metrics.yml +80 -33
  99. data/spec/vcr_cassettes/Operation/NonSecure/Operation/Add_XA_datasource_should_be_doable.json +23 -0
  100. data/spec/vcr_cassettes/Operation/NonSecure/Operation/{Add_datasource_should_be_doable.json → Add_non-XA_datasource_should_be_doable.json} +0 -0
  101. metadata +111 -156
  102. data/spec/vcr_cassettes/Alert/Alerts/Should_acknowledge_an_alert.yml +0 -183
  103. data/spec/vcr_cassettes/Alert/Alerts/Should_fetch_single_alert.yml +0 -69
  104. data/spec/vcr_cassettes/Alert/Alerts/Should_list_alerts.yml +0 -85
  105. data/spec/vcr_cassettes/Alert/Alerts/Should_list_alerts_for_trigger.yml +0 -142
  106. data/spec/vcr_cassettes/Alert/Alerts/Should_resolve_an_alert.yml +0 -181
  107. data/spec/vcr_cassettes/Alert/Alerts/Should_resolve_an_alert2.yml +0 -49
  108. data/spec/vcr_cassettes/Alert/EndToEnd/Should_create_and_fire_a_trigger.yml +0 -1187
  109. data/spec/vcr_cassettes/Alert/Events/Should_create_an_event.yml +0 -50
  110. data/spec/vcr_cassettes/Alert/Events/Should_list_events.yml +0 -101
  111. data/spec/vcr_cassettes/Alert/Events/Should_list_events_using_criteria.yml +0 -79
  112. data/spec/vcr_cassettes/Alert/Triggers/Should_List_Triggers.yml +0 -62
  113. data/spec/vcr_cassettes/Alert/Triggers/Should_List_Triggers_for_ID.yml +0 -55
  114. data/spec/vcr_cassettes/Alert/Triggers/Should_List_Triggers_for_Tag.yml +0 -68
  115. data/spec/vcr_cassettes/Alert/Triggers/Should_List_Triggers_for_Tags.yml +0 -68
  116. data/spec/vcr_cassettes/Alert/Triggers/Should_bulk_load_triggers.yml +0 -225
  117. data/spec/vcr_cassettes/Alert/Triggers/Should_create_an_action.yml +0 -134
  118. data/spec/vcr_cassettes/Alert/Triggers/Should_create_an_action_for_webhooks.yml +0 -220
  119. data/spec/vcr_cassettes/Alert/Triggers/Should_get_a_single_Trigger_with_conditions.yml +0 -138
  120. data/spec/vcr_cassettes/Alert/Triggers/Should_get_a_single_metric_Trigger.yml +0 -50
  121. data/spec/vcr_cassettes/Alert/Triggers/Should_not_create_an_action_for_unknown_properties.yml +0 -134
  122. data/spec/vcr_cassettes/Metrics/NonSecure/metrics_0_16_0/Templates/Availability_metrics/Should_create_and_return_Availability_using_Hash_parameter.yml +0 -99
  123. data/spec/vcr_cassettes/Metrics/NonSecure/metrics_0_16_0/Templates/Availability_metrics/Should_group_contiguous_values.yml +0 -97
  124. data/spec/vcr_cassettes/Metrics/NonSecure/metrics_0_16_0/Templates/Availability_metrics/Should_update_tags_for_Availability_definition.yml +0 -240
  125. data/spec/vcr_cassettes/Metrics/NonSecure/metrics_0_16_0/Templates/Counter_metrics/Should_create_and_return_counter_using_Hash_parameter.yml +0 -99
  126. data/spec/vcr_cassettes/Metrics/NonSecure/metrics_0_16_0/Templates/Counter_metrics/Should_create_counter_definition_using_MetricDefinition_parameter.yml +0 -99
  127. data/spec/vcr_cassettes/Metrics/NonSecure/metrics_0_16_0/Templates/Counter_metrics/Should_get_metrics_as_bucketed_results.yml +0 -240
  128. data/spec/vcr_cassettes/Metrics/NonSecure/metrics_0_16_0/Templates/Counter_metrics/Should_push_metric_data_to_existing_counter.yml +0 -281
  129. data/spec/vcr_cassettes/Metrics/NonSecure/metrics_0_16_0/Templates/Gauge_metrics/Should_update_tags_for_gauge_definition.yml +0 -240
  130. data/spec/vcr_cassettes/Metrics/NonSecure/metrics_0_16_0/Templates/Mixed_metrics/Should_requests_raw_data_for_multiple_metrics.yml +0 -326
  131. data/spec/vcr_cassettes/Metrics/NonSecure/metrics_0_16_0/Templates/Mixed_metrics/Should_send_mixed_metric_request.yml +0 -314
  132. data/spec/vcr_cassettes/Metrics/NonSecure/metrics_0_16_0/Templates/No_Tenant/Should_fail.yml +0 -50
  133. data/spec/vcr_cassettes/Metrics/NonSecure/metrics_0_16_0/Templates/Simple/Should_be_Cool.yml +0 -48
  134. data/spec/vcr_cassettes/Metrics/NonSecure/metrics_0_16_0/Templates/Tenants/Should_create_and_return_tenant.yml +0 -99
  135. data/spec/vcr_cassettes/Metrics/Secure/metrics_0_16_0/Templates/Availability_metrics/Should_create_Availability_definition_using_MetricDefinition_parameter.yml +0 -99
  136. data/spec/vcr_cassettes/Metrics/Secure/metrics_0_16_0/Templates/Availability_metrics/Should_create_and_return_Availability_using_Hash_parameter.yml +0 -99
  137. data/spec/vcr_cassettes/Metrics/Secure/metrics_0_16_0/Templates/Availability_metrics/Should_group_contiguous_values.yml +0 -97
  138. data/spec/vcr_cassettes/Metrics/Secure/metrics_0_16_0/Templates/Availability_metrics/Should_update_tags_for_Availability_definition.yml +0 -240
  139. data/spec/vcr_cassettes/Metrics/Secure/metrics_0_16_0/Templates/Counter_metrics/Should_create_and_return_counter_using_Hash_parameter.yml +0 -99
  140. data/spec/vcr_cassettes/Metrics/Secure/metrics_0_16_0/Templates/Counter_metrics/Should_create_counter_definition_using_MetricDefinition_parameter.yml +0 -99
  141. data/spec/vcr_cassettes/Metrics/Secure/metrics_0_16_0/Templates/Counter_metrics/Should_get_metrics_as_bucketed_results.yml +0 -240
  142. data/spec/vcr_cassettes/Metrics/Secure/metrics_0_16_0/Templates/Counter_metrics/Should_get_metrics_with_limit_and_order.yml +0 -328
  143. data/spec/vcr_cassettes/Metrics/Secure/metrics_0_16_0/Templates/Counter_metrics/Should_push_metric_data_to_existing_counter.yml +0 -281
  144. data/spec/vcr_cassettes/Metrics/Secure/metrics_0_16_0/Templates/Counter_metrics/Should_push_metric_data_to_non-existing_counter.yml +0 -144
  145. data/spec/vcr_cassettes/Metrics/Secure/metrics_0_16_0/Templates/Gauge_metrics/Should_create_gauge_definition_using_Hash.yml +0 -99
  146. data/spec/vcr_cassettes/Metrics/Secure/metrics_0_16_0/Templates/Gauge_metrics/Should_create_gauge_definition_using_MetricDefinition.yml +0 -99
  147. data/spec/vcr_cassettes/Metrics/Secure/metrics_0_16_0/Templates/Gauge_metrics/Should_push_metric_data_to_existing_gauge.yml +0 -281
  148. data/spec/vcr_cassettes/Metrics/Secure/metrics_0_16_0/Templates/Gauge_metrics/Should_push_metric_data_to_non-existing_gauge.yml +0 -144
  149. data/spec/vcr_cassettes/Metrics/Secure/metrics_0_16_0/Templates/Gauge_metrics/Should_return_periods.yml +0 -97
  150. data/spec/vcr_cassettes/Metrics/Secure/metrics_0_16_0/Templates/Gauge_metrics/Should_update_tags_for_gauge_definition.yml +0 -240
  151. data/spec/vcr_cassettes/Metrics/Secure/metrics_0_16_0/Templates/Mixed_metrics/Should_requests_raw_data_for_multiple_metrics.yml +0 -326
  152. data/spec/vcr_cassettes/Metrics/Secure/metrics_0_16_0/Templates/Mixed_metrics/Should_send_mixed_metric_request.yml +0 -314
  153. data/spec/vcr_cassettes/Metrics/Secure/metrics_0_16_0/Templates/Mixed_metrics/Should_send_mixed_metric_request_of_a_single_type.yml +0 -285
  154. data/spec/vcr_cassettes/Metrics/Secure/metrics_0_16_0/Templates/No_Tenant/Should_fail.yml +0 -50
  155. data/spec/vcr_cassettes/Metrics/Secure/metrics_0_16_0/Templates/Simple/Should_be_Cool.yml +0 -48
  156. data/spec/vcr_cassettes/Metrics/Secure/metrics_0_16_0/Templates/Tenants/Should_create_and_return_tenant.yml +0 -99
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 9dff0c0c4a4cf26161263ef21f06e0962f94fbf0
4
- data.tar.gz: 665dd8784d3495ec6da84849b702ef105498ae59
3
+ metadata.gz: cc8f82c57d113d57a96488d3d5537e7e20449435
4
+ data.tar.gz: 365a613e0f23108b62d87fbb1bf78cc0ac7db08a
5
5
  SHA512:
6
- metadata.gz: caa40d7fc69a01af67584e1a1f2c821043a54955c647746d176ffba1c0bf3600690fb7667b11632c5a915ac6e3b761efa8e3c47ecf35538a62c5178e60a1b43a
7
- data.tar.gz: 2a236c3bc8117a808aa91948378f33f6fc86afb10ce889eade4b9f11ac26ed89fe1d7dc46f3115fe12f4787045faf78fdd69cf58d56cc54740b16908aa1c874f
6
+ metadata.gz: e072263ba50864dc2c3e7a5bdcd3e4bb4975f2dde4157fa31ddcb2498d5889ed83473c76186ba20b47cb80730e9d4f803ec1f2374b82d9ca9c49a16feb299f7a
7
+ data.tar.gz: acd1aef7ed3c8a2282a355efd8d9e1a06b4968c5a5e113e388dadd0d8bc5a5d24e309745beaf0078d4d0db121aeaf7b9dbd8ecb3ccb622c4d15da40bfd170fc2
data/.travis.yml CHANGED
@@ -1,6 +1,23 @@
1
+ sudo: required
2
+
1
3
  language: ruby
2
4
  rvm:
3
- - 2.0
4
- - 2.1
5
5
  - 2.2
6
6
  - 2.3.0
7
+ env:
8
+ global:
9
+ - ADMIN_TOKEN=4f4a1434-8cb3-11e6-ae22-56b6b6499611
10
+ matrix:
11
+ - RUN_ON_LIVE_SERVER=1 \
12
+ VCR_UPDATE=1 \
13
+ SKIP_SSL_WITHOUT_CERTIFICATE_TEST=1 \
14
+ SKIP_SECURE_CONTEXT=1 \
15
+ SKIP_V8_METRICS=1 \
16
+ - RUN_ON_LIVE_SERVER=0
17
+ services:
18
+ - docker
19
+ before_install:
20
+ - (test $RUN_ON_LIVE_SERVER = 1 && docker-compose up -d && ./.travis/wait_for_services.rb) || echo "Skipping live server"
21
+ # Lets wait a bit for the agent to load everything it needs.
22
+ before_script:
23
+ - (test $RUN_ON_LIVE_SERVER = 1 && sleep 20s) || true
@@ -0,0 +1,23 @@
1
+ #!/usr/bin/env ruby
2
+ require 'net/http'
3
+
4
+ uris = [
5
+ 'http://localhost:8080/hawkular/status',
6
+ 'http://localhost:8080/hawkular/metrics/status',
7
+ 'http://localhost:8080/hawkular/alerts/status',
8
+ 'http://localhost:8080/hawkular/inventory/status'
9
+ ]
10
+
11
+ uris.each do |uri_string|
12
+ loop do
13
+ uri = URI(uri_string)
14
+ begin
15
+ response = Net::HTTP.get_response(uri)
16
+ break if response.code == '200'
17
+ puts "Waiting for: #{uri_string}"
18
+ rescue
19
+ puts 'Waiting for Hawkular-Services to accept connections'
20
+ end
21
+ sleep 5
22
+ end
23
+ end
data/CHANGES.rdoc CHANGED
@@ -3,6 +3,17 @@
3
3
  This document describes the relevant changes between releases of the
4
4
  _hawkular-client_ project.
5
5
 
6
+ === V 2.8.0
7
+
8
+ * Allow to list tags in Hawkular-Metrics
9
+ * Adding support for Hawkular-Admin-Token via admin_token
10
+ * Use the new "ackBy" mechanism in Hawkular Alerts. The Ruby-client API stayed the same.
11
+ * Support for string metrics
12
+ * Exposes metric-id property if it exists and follow internal renaming
13
+ * Addition of 'delete_event' on the client.
14
+
15
+ Full list of changes can be found at https://github.com/hawkular/hawkular-client-ruby/milestone/13?closed=1
16
+
6
17
  === V 2.7.0
7
18
 
8
19
  * Support for SSL connections
@@ -0,0 +1,15 @@
1
+ hawkular:
2
+ image: "pilhuhn/hawkular-services:latest"
3
+ ports:
4
+ - "8080:8080"
5
+ - "8443:8443"
6
+ - "9990:9990"
7
+ links:
8
+ - myCassandra
9
+ environment:
10
+ - CASSANDRA_NODES=myCassandra
11
+ - ADMIN_TOKEN
12
+ myCassandra:
13
+ image: cassandra:3.7
14
+ environment:
15
+ - CASSANDRA_START_RPC=true
@@ -318,6 +318,10 @@ module Hawkular::Alerts
318
318
 
319
319
  http_post('/events', event)
320
320
  end
321
+
322
+ def delete_event(id)
323
+ http_delete "/events/#{id}"
324
+ end
321
325
  end
322
326
 
323
327
  # Representation of one Trigger
@@ -519,9 +523,29 @@ module Hawkular::Alerts
519
523
  # server and not 'rubyfied'. So 'alertId' and not 'alert_id'
520
524
  # Check http://www.hawkular.org/docs/rest/rest-alerts.html#Alert for details
521
525
  class Alert < OpenStruct
526
+ attr_accessor :lifecycle
527
+
522
528
  def initialize(alert_hash)
523
529
  super(alert_hash)
530
+ @lifecycle = alert_hash['lifecycle']
531
+ end
532
+
533
+ def ack_by
534
+ status_by('ACKNOWLEDGED')
524
535
  end
536
+
537
+ def resolved_by
538
+ status_by('RESOLVED')
539
+ end
540
+
541
+ def status_by(status)
542
+ a = @lifecycle.nil? ? [] : @lifecycle.select { |l| l['status'].eql? status }
543
+ a.empty? ? nil : a.last['user']
544
+ end
545
+
546
+ # for some API back compatibility
547
+ alias_method :ackBy, :ack_by
548
+ alias_method :resolvedBy, :resolved_by
525
549
  end
526
550
 
527
551
  # Representation of one event.
@@ -25,6 +25,7 @@ module Hawkular
25
25
  }.merge(credentials)
26
26
  @options = {
27
27
  tenant: nil,
28
+ admin_token: nil,
28
29
  ssl_ca_file: nil,
29
30
  verify_ssl: OpenSSL::SSL::VERIFY_PEER,
30
31
  ssl_client_cert: nil,
@@ -174,6 +175,12 @@ module Hawkular
174
175
  class HawkularConnectionException < HawkularException
175
176
  end
176
177
 
178
+ def admin_header
179
+ headers = {}
180
+ headers[:'Hawkular-Admin-Token'] = @options[:admin_token] unless @options[:admin_token].nil?
181
+ headers
182
+ end
183
+
177
184
  private
178
185
 
179
186
  def token_header
@@ -102,6 +102,8 @@ module Hawkular::Inventory
102
102
  include MetricFields
103
103
 
104
104
  attr_reader :type_id
105
+ # @return [String] metric id used in Hawkular Metrics
106
+ attr_reader :hawkular_metric_id
105
107
 
106
108
  def initialize(metric_hash)
107
109
  super(metric_hash)
@@ -110,6 +112,7 @@ module Hawkular::Inventory
110
112
  @type_id = metric_hash['type']['id']
111
113
  @unit = metric_hash['type']['unit']
112
114
  @collection_interval = metric_hash['type']['collectionInterval']
115
+ @hawkular_metric_id = @properties.key?('hawkular-metric-id') ? @properties['hawkular-metric-id'] : @id
113
116
  end
114
117
  end
115
118
 
@@ -30,11 +30,12 @@ module Hawkular::Metrics
30
30
  # @example push gauge and availability datapoints
31
31
  # client.push_data(gauges: [{:id => "gauge1", :data => [{:value => 1}, {:value => 2}]}],
32
32
  # availabilities: [{:id => "avail1", :data => [{:value => "up"}]}])
33
- def push_data(gauges: [], counters: [], availabilities: [])
33
+ def push_data(gauges: [], counters: [], availabilities: [], strings: [])
34
34
  gauges.each { |g| default_timestamp g[:data] }
35
35
  counters.each { |g| default_timestamp g[:data] }
36
36
  availabilities.each { |g| default_timestamp g[:data] }
37
- data = { gauges: gauges, counters: counters, availabilities: availabilities }
37
+ strings.each { |g| default_timestamp g[:data] }
38
+ data = { gauges: gauges, counters: counters, availabilities: availabilities, strings: strings }
38
39
  path = '/metrics/'
39
40
  @legacy_api ? path << 'data' : path << 'raw'
40
41
  http_post(path, data)
@@ -68,6 +69,18 @@ module Hawkular::Metrics
68
69
  http_post(path, data)
69
70
  end
70
71
 
72
+ # Fetch all tags for metrics definitions
73
+ # @return [Hash{String=>String}]
74
+ def tags
75
+ tags = []
76
+ http_get('/metrics/').map do |g|
77
+ g['tags'].map do |k, v|
78
+ tags << { k => v }
79
+ end unless g['tags'].nil?
80
+ end
81
+ tags.uniq!
82
+ end
83
+
71
84
  # Base class for accessing metric definition and data of all
72
85
  # types (counters, gauges, availabilities).
73
86
  class Metrics
@@ -249,7 +262,7 @@ module Hawkular::Metrics
249
262
  # @return [Array[Hash]] rate points
250
263
  def get_rate(id, starts: nil, ends: nil, bucket_duration: nil)
251
264
  path = "/#{@resource}/#{ERB::Util.url_encode(id)}/rate"
252
- path << '/stats' unless bucket_duration.nil? && @legacy_api
265
+ path << '/stats' unless bucket_duration.nil? || @legacy_api
253
266
  params = { start: starts, end: ends, bucketDuration: bucket_duration }
254
267
  resp = @client.http_get(path + '?' + encode_params(params))
255
268
  # API returns no content (empty Hash) instead of empty array
@@ -257,6 +270,28 @@ module Hawkular::Metrics
257
270
  end
258
271
  end
259
272
 
273
+ # Class that interacts with "string" metric types
274
+ class Strings < Metrics
275
+ # @param client [Client]
276
+ def initialize(client)
277
+ super(client, 'string', 'strings')
278
+ end
279
+
280
+ # Retrieve metric datapoints
281
+ # @param id [String] metric definition id
282
+ # @param starts [Integer] optional timestamp (default now - 8h)
283
+ # @param ends [Integer] optional timestamp (default now)
284
+ # @param distinct [String] optional set to true to return only distinct, contiguous values
285
+ # @param limit [Integer] optional limit the number of data points returned
286
+ # @param order [String] optional Data point sort order, based on timestamp (ASC, DESC)
287
+ # @return [Array[Hash]] datapoints
288
+ # @see #push_data #push_data for datapoint detail
289
+ def get_data(id, starts: nil, ends: nil, distinct: nil, limit: nil, order: nil)
290
+ params = { start: starts, end: ends, distinct: distinct, limit: limit, order: order }
291
+ get_data_helper(id, params)
292
+ end
293
+ end
294
+
260
295
  # Class that interacts with "availability" metric types
261
296
  class Availability < Metrics
262
297
  # @param client [Client]
@@ -25,6 +25,8 @@ module Hawkular::Metrics
25
25
  attr_reader :counters
26
26
  # @return [Gauges] access gauges API
27
27
  attr_reader :gauges
28
+ # @return [Strings] access strings API
29
+ attr_reader :strings
28
30
  # @return [Availability] access counters API
29
31
  attr_reader :avail
30
32
 
@@ -61,6 +63,7 @@ module Hawkular::Metrics
61
63
  @counters = Client::Counters.new self
62
64
  @gauges = Client::Gauges.new self
63
65
  @avail = Client::Availability.new self
66
+ @strings = Client::Strings.new self
64
67
  end
65
68
  end
66
69
  end
@@ -11,13 +11,13 @@ module Hawkular::Metrics
11
11
  # Create new tenant
12
12
  # @param id [String] tenant ID/Name
13
13
  def create(id)
14
- @client.http_post("/#{@resource}", id: id)
14
+ @client.http_post("/#{@resource}", { id: id }, @client.admin_header)
15
15
  end
16
16
 
17
17
  # Query existing tenants
18
18
  # @return [Array[Tenant]]
19
19
  def query
20
- @client.http_get("/#{@resource}").map do |t|
20
+ @client.http_get("/#{@resource}", @client.admin_header).map do |t|
21
21
  Hawkular::Metrics::Tenant.new(t)
22
22
  end
23
23
  end
@@ -4,5 +4,5 @@
4
4
  # @see https://github.com/hawkular
5
5
  module Hawkular
6
6
  # Version of the Hawkular Ruby Gem
7
- VERSION = '2.7.0'.freeze
7
+ VERSION = '2.8.0'.freeze
8
8
  end
@@ -0,0 +1,40 @@
1
+ {
2
+ "triggers":[
3
+ {
4
+ "trigger": {
5
+ "id": "hello-world-trigger",
6
+ "name": "Hello World Trigger",
7
+ "description": "A mandatory Hello World Trigger",
8
+ "severity": "HIGH",
9
+ "enabled": true
10
+ },
11
+ "conditions":[
12
+ {
13
+ "triggerMode": "FIRING",
14
+ "type": "threshold",
15
+ "dataId": "data-x",
16
+ "operator": "LT",
17
+ "threshold": 5
18
+ }
19
+ ]
20
+ },
21
+ {
22
+ "trigger": {
23
+ "id": "a-trigger",
24
+ "name": "A trigger name",
25
+ "description": "Just a trigger",
26
+ "severity": "HIGH",
27
+ "enabled": true
28
+ },
29
+ "conditions":[
30
+ {
31
+ "triggerMode": "FIRING",
32
+ "type": "threshold",
33
+ "dataId": "data-x",
34
+ "operator": "LT",
35
+ "threshold": 5
36
+ }
37
+ ]
38
+ }
39
+ ]
40
+ }
@@ -0,0 +1,78 @@
1
+ {
2
+ "events": [
3
+ {
4
+ "id": "my-event-01",
5
+ "category": "general-category",
6
+ "text": "some text for this event",
7
+ "extras": {
8
+ "ctime": 2000
9
+ }
10
+ },
11
+ {
12
+ "id": "my-event-02",
13
+ "category": "my-category-01",
14
+ "text": "some text for this event",
15
+ "extras": {}
16
+ },
17
+ {
18
+ "id": "my-event-03",
19
+ "category": "my-category-01",
20
+ "text": "some text for this event",
21
+ "extras": {}
22
+ },
23
+ {
24
+ "id": "my-event-04",
25
+ "category": "general-category",
26
+ "text": "some text for this event",
27
+ "extras": {}
28
+ },
29
+ {
30
+ "id": "my-event-05",
31
+ "category": "my-category-02",
32
+ "text": "some text for this event",
33
+ "extras": {}
34
+ },
35
+ {
36
+ "id": "my-event-06",
37
+ "category": "general-category",
38
+ "text": "some text for this event",
39
+ "extras": {}
40
+ },
41
+ {
42
+ "id": "my-event-07",
43
+ "category": "my-category-01",
44
+ "text": "some text for this event",
45
+ "extras": {}
46
+ },
47
+ {
48
+ "id": "my-event-08",
49
+ "category": "general-category",
50
+ "text": "some text for this event",
51
+ "extras": {}
52
+ },
53
+ {
54
+ "id": "my-event-09",
55
+ "category": "general-category",
56
+ "text": "some text for this event",
57
+ "extras": {}
58
+ },
59
+ {
60
+ "id": "my-event-10",
61
+ "category": "general-category",
62
+ "text": "some text for this event",
63
+ "extras": {}
64
+ },
65
+ {
66
+ "id": "my-event-11",
67
+ "category": "general-category",
68
+ "text": "some text for this event",
69
+ "extras": {}
70
+ },
71
+ {
72
+ "id": "my-event-12",
73
+ "category": "general-category",
74
+ "text": "some text for this event",
75
+ "extras": {}
76
+ }
77
+ ]
78
+ }
@@ -0,0 +1,66 @@
1
+ {
2
+ "triggers":[
3
+ {
4
+ "trigger": {
5
+ "id": "my-trigger-01",
6
+ "tags": {
7
+ "resourceId": "my-resource01",
8
+ "app": "MyShop"
9
+ }
10
+ },
11
+ "conditions":[
12
+ {
13
+ "triggerMode": "FIRING",
14
+ "type": "threshold",
15
+ "dataId": "data-x",
16
+ "operator": "LT",
17
+ "threshold": 5
18
+ }
19
+ ],
20
+ "dampenings":[
21
+ {
22
+ "dampeningId": "my-trigger-01-my-dampening-id"
23
+ }
24
+ ]
25
+ },
26
+ {
27
+ "trigger": {
28
+ "id": "my-trigger-02",
29
+ "tags": {
30
+ "resourceId": "my-resource01"
31
+ }
32
+ }
33
+ },
34
+ {
35
+ "trigger": {
36
+ "id": "my-trigger-03",
37
+ "tags": {
38
+ "app": "MyShop"
39
+ }
40
+ }
41
+ },
42
+ {
43
+ "trigger": {
44
+ "id": "my-trigger-04",
45
+ "tags": {
46
+ "resourceId": "my-resource01",
47
+ "app": "MyShop"
48
+ }
49
+ }
50
+ },
51
+ {
52
+ "trigger": {
53
+ "id": "my-trigger-05"
54
+ }
55
+ },
56
+ {
57
+ "trigger": {
58
+ "id": "my-trigger-06",
59
+ "tags": {
60
+ "resourceId": "my-resource01",
61
+ "app": "MyShop"
62
+ }
63
+ }
64
+ }
65
+ ]
66
+ }