class RackspaceTests(unittest.TestCase): def setUp(self): RackspaceMonitoringDriver.connectionCls.conn_classes = ( RackspaceMockHttp, RackspaceMockHttp) RackspaceMonitoringDriver.connectionCls.auth_url = \ 'https://auth.api.example.com/v1.1/' RackspaceMockHttp.type = None self.driver = RackspaceMonitoringDriver( *RACKSPACE_PARAMS, ex_force_base_url='http://www.todo.com') def test_list_monitoring_zones(self): result = list(self.driver.list_monitoring_zones()) self.assertEqual(len(result), 1) self.assertEqual(result[0].id, 'mzxJ4L2IU') def test_list_entities(self): result = list(self.driver.list_entities()) self.assertEqual(len(result), 6) self.assertEqual(result[0].id, 'en8B9YwUn6') self.assertEqual(result[0].label, 'bar') def test_list_checks(self): en = self.driver.list_entities()[0] result = list(self.driver.list_checks(entity=en)) self.assertEqual(len(result), 1) self.assertEqual(result[0].label, 'bar') self.assertEqual(result[0].details['url'], 'http://www.foo.com') self.assertEqual(result[0].details['method'], 'GET') def test_list_alarms(self): en = self.driver.list_entities()[0] result = list(self.driver.list_alarms(entity=en)) self.assertEqual(len(result), 1) self.assertEqual(result[0].type, 'remote.http') self.assertEqual(result[0].notification_plan_id, 'npIXxOAn5') def test_list_check_types(self): result = list(self.driver.list_check_types()) self.assertEqual(len(result), 2) self.assertEqual(result[0].id, 'remote.dns') self.assertTrue(result[0].is_remote) def test_list_notification_types(self): result = list(self.driver.list_notification_types()) self.assertEqual(len(result), 1) self.assertEqual(result[0].id, 'webhook') def test_list_notifications(self): result = list(self.driver.list_notifications()) self.assertEqual(len(result), 2) self.assertEqual(result[0].type, 'webhook') self.assertEqual(result[0].details['url'], 'http://www.postbin.org/lulz') def test_list_notification_plans(self): result = list(self.driver.list_notification_plans()) self.assertEqual(len(result), 8) self.assertEqual(result[0].label, 'test-notification-plan') def test_ex_list_alarm_history_checks(self): entity = self.driver.list_entities()[0] alarm = self.driver.list_alarms(entity=entity)[0] result = self.driver.ex_list_alarm_history_checks(entity=entity, alarm=alarm) self.assertEqual(len(result['check_ids']), 2) def test_ex_list_alarm_history(self): entity = self.driver.list_entities()[0] alarm = self.driver.list_alarms(entity=entity)[0] check = self.driver.list_checks(entity=entity)[0] result = self.driver.ex_list_alarm_history(entity=entity, alarm=alarm, check=check) self.assertEqual(len(result), 1) self.assertTrue('timestamp' in result[0]) self.assertTrue('notification_plan_id' in result[0]) self.assertTrue('computed_state' in result[0]) self.assertTrue('transaction_id' in result[0]) self.assertTrue('notification_results' in result[0]) def test_test_alarm(self): entity = self.driver.list_entities()[0] criteria = ( 'if (metric[\"code\"] == \"404\") { return CRITICAL, \"not', 'found\" } return OK') check_data = [] result = self.driver.test_alarm(entity=entity, criteria=criteria, check_data=check_data) self.assertTrue('timestamp' in result[0]) self.assertTrue('computed_state' in result[0]) self.assertTrue('status' in result[0]) def test_check(self): entity = self.driver.list_entities()[0] check_data = { 'label': 'test', 'monitoring_zones': ['mzA'], 'target_alias': 'default', 'details': { 'url': 'http://www.google.com' }, 'type': 'remote.http' } result = self.driver.test_check(entity=entity) self.assertTrue('available' in result[0]) self.assertTrue('monitoring_zone_id' in result[0]) self.assertTrue('available' in result[0]) self.assertTrue('metrics' in result[0]) def test_delete_entity_success(self): entity = self.driver.list_entities()[0] result = self.driver.delete_entity(entity=entity, ex_delete_children=False) self.assertTrue(result) def test_delete_entity_children_exist(self): entity = self.driver.list_entities()[1] RackspaceMockHttp.type = 'CHILDREN_EXIST' try: self.driver.delete_entity(entity=entity, ex_delete_children=False) except RackspaceMonitoringValidationError: pass else: self.fail('Exception was not thrown') def test_delete_check_success(self): en = self.driver.list_entities()[0] check = self.driver.list_checks(entity=en)[0] check.delete() def test_delete_alarm(self): en = self.driver.list_entities()[0] alarm = self.driver.list_alarms(entity=en)[0] alarm.delete() def test_delete_notification(self): notification = self.driver.list_notifications()[0] notification.delete() def test_delete_notification_plan(self): notification_plan = self.driver.list_notification_plans()[0] notification_plan.delete()
class RackspaceTests(unittest.TestCase): def setUp(self): RackspaceMonitoringDriver.connectionCls.conn_classes = ( RackspaceMockHttp, RackspaceMockHttp) RackspaceMonitoringDriver.connectionCls.auth_url = \ 'https://auth.api.example.com/v1.1/' RackspaceMockHttp.type = None self.driver = RackspaceMonitoringDriver(key=RACKSPACE_PARAMS[0], secret=RACKSPACE_PARAMS[1], ex_force_base_url='http://www.todo.com') def test_list_monitoring_zones(self): result = list(self.driver.list_monitoring_zones()) self.assertEqual(len(result), 1) self.assertEqual(result[0].id, 'mzxJ4L2IU') def test_list_entities(self): result = list(self.driver.list_entities()) self.assertEqual(len(result), 6) self.assertEqual(result[0].id, 'en8B9YwUn6') self.assertEqual(result[0].label, 'bar') def test_list_checks(self): en = self.driver.list_entities()[0] result = list(self.driver.list_checks(entity=en)) self.assertEqual(len(result), 1) self.assertEqual(result[0].label, 'bar') self.assertEqual(result[0].details['url'], 'http://www.foo.com') self.assertEqual(result[0].details['method'], 'GET') def test_list_alarms(self): en = self.driver.list_entities()[0] result = list(self.driver.list_alarms(entity=en)) self.assertEqual(len(result), 1) self.assertEqual(result[0].check_id, 'chhJwYeArX') self.assertEqual(result[0].notification_plan_id, 'npIXxOAn5') def test_list_check_types(self): result = list(self.driver.list_check_types()) self.assertEqual(len(result), 2) self.assertEqual(result[0].id, 'remote.dns') self.assertTrue(result[0].is_remote) def test_list_metrics(self): en = self.driver.list_entities()[0] ch = self.driver.list_checks(entity=en)[0] result = list(self.driver.list_metrics(entity_id=en.id, check_id=ch.id)) self.assertEqual(len(result), 3) self.assertEqual(result[0].name, 'mzGRD.constdbl') def test_list_notification_types(self): result = list(self.driver.list_notification_types()) self.assertEqual(len(result), 1) self.assertEqual(result[0].id, 'webhook') def test_list_notifications(self): result = list(self.driver.list_notifications()) self.assertEqual(len(result), 2) self.assertEqual(result[0].type, 'webhook') self.assertEqual(result[0].details['url'], 'http://www.postbin.org/lulz') def test_list_notification_plans(self): result = list(self.driver.list_notification_plans()) self.assertEqual(len(result), 8) self.assertEqual(result[0].label, 'test-notification-plan') def test_list_agents(self): result = list(self.driver.list_agents()) self.assertEqual(len(result), 3) self.assertEqual(result[0].id, '612deec7-1a3d-429f-c2a2-aadc59') def test_list_agent_connections(self): result = list(self.driver.list_agent_connections('612deec7-1a3d-429f-c2a2-aadc59')) self.assertEqual(len(result), 2) self.assertEqual(result[0].id, 'cn0ElI4abc') self.assertEqual(result[0].agent_ip, '192.168.0.1') self.assertEqual(result[1].id, 'cnAAAAAAAA') self.assertEqual(result[1].agent_ip, '192.168.0.1') def test_get_agent_host_info(self): result = self.driver.get_agent_host_info('aaaaa', 'cpus') self.assertEqual(len(result), 1) self.assertEqual(result[0]['vendor'], 'AMD') self.assertEqual(result[0]['name'], 'cpu.0') self.assertEqual(result[0]['total_cores'], 1) result = self.driver.get_agent_host_info('aaaaa', 'memory') self.assertEqual(result['actual_free'], 2684153856) self.assertEqual(result['free'], 236662784) self.assertEqual(result['ram'], 4016) self.assertEqual(result['total'], 4208316416) self.assertEqual(result['used'], 3971653632) self.assertEqual(result['used_percent'], 36.217869792422) result = self.driver.get_agent_host_info('aaaaa', 'system') self.assertEqual(result['name'], 'Linux') self.assertEqual(result['arch'], 'x86_64') self.assertEqual(result['version'], '2.6.32-33-server') self.assertEqual(result['vendor'], 'Ubuntu') self.assertEqual(result['vendor_version'], '10.04') self.assertEqual(result['vendor_code_name'], 'lucid') self.assertEqual(result['description'], 'Ubuntu 10.04') result = self.driver.get_agent_host_info('aaaaa', 'network_interfaces') self.assertEqual(len(result), 2) self.assertEqual(result[0]['address'], '127.0.0.1') self.assertEqual(result[0]['broadcast'], '0.0.0.0') self.assertEqual(result[1]['address'], '192.168.0.2') self.assertEqual(result[1]['broadcast'], '192.168.0.255') result = self.driver.get_agent_host_info('aaaaa', 'processes') self.assertEqual(len(result), 1) self.assertEqual(result[0]['pid'], 13702) self.assertEqual(result[0]['time_sys'], 570) self.assertEqual(result[0]['memory_page_faults'], 37742) result = self.driver.get_agent_host_info('aaaaa', 'disks') self.assertEqual(len(result), 1) self.assertEqual(result[0]['queue'], 0.024919932106766) self.assertEqual(result[0]['name'], '/') self.assertEqual(result[0]['wtime'], 517366712) result = self.driver.get_agent_host_info('aaaaa', 'filesystems') self.assertEqual(len(result), 1) self.assertEqual(result[0]['dir_name'], '/') self.assertEqual(result[0]['dev_name'], '/dev/xvda1') self.assertEqual(result[0]['type_name'], 'local') self.assertEqual(result[0]['sys_type_name'], 'ext3') def test_get_entity_targets(self): result = self.driver.get_entity_agent_targets('aaaaa', 'agent.disk') self.assertEqual(len(result), 1) self.assertEqual(result[0]['targets'][0], '/') self.assertEqual(result[0]['targets'][1], '/dev') def test_get_entity_host_info(self): result = self.driver.get_entity_host_info('aaaaa', 'cpus') self.assertEqual(len(result), 1) self.assertEqual(result[0]['vendor'], 'AMD') self.assertEqual(result[0]['name'], 'cpu.0') self.assertEqual(result[0]['total_cores'], 1) result = self.driver.get_entity_host_info('aaaaa', 'memory') self.assertEqual(result['actual_free'], 2684153856) self.assertEqual(result['free'], 236662784) self.assertEqual(result['ram'], 4016) self.assertEqual(result['total'], 4208316416) self.assertEqual(result['used'], 3971653632) self.assertEqual(result['used_percent'], 36.217869792422) result = self.driver.get_entity_host_info('aaaaa', 'system') self.assertEqual(result['name'], 'Linux') self.assertEqual(result['arch'], 'x86_64') self.assertEqual(result['version'], '2.6.32-33-server') self.assertEqual(result['vendor'], 'Ubuntu') self.assertEqual(result['vendor_version'], '10.04') self.assertEqual(result['vendor_code_name'], 'lucid') self.assertEqual(result['description'], 'Ubuntu 10.04') result = self.driver.get_entity_host_info('aaaaa', 'network_interfaces') self.assertEqual(len(result), 2) self.assertEqual(result[0]['address'], '127.0.0.1') self.assertEqual(result[0]['broadcast'], '0.0.0.0') self.assertEqual(result[1]['address'], '192.168.0.2') self.assertEqual(result[1]['broadcast'], '192.168.0.255') result = self.driver.get_entity_host_info('aaaaa', 'processes') self.assertEqual(len(result), 1) self.assertEqual(result[0]['pid'], 13702) self.assertEqual(result[0]['time_sys'], 570) self.assertEqual(result[0]['memory_page_faults'], 37742) result = self.driver.get_entity_host_info('aaaaa', 'disks') self.assertEqual(len(result), 1) self.assertEqual(result[0]['queue'], 0.024919932106766) self.assertEqual(result[0]['name'], '/') self.assertEqual(result[0]['wtime'], 517366712) result = self.driver.get_entity_host_info('aaaaa', 'filesystems') self.assertEqual(len(result), 1) self.assertEqual(result[0]['dir_name'], '/') self.assertEqual(result[0]['dev_name'], '/dev/xvda1') self.assertEqual(result[0]['type_name'], 'local') self.assertEqual(result[0]['sys_type_name'], 'ext3') def test_ex_list_alarm_notification_history_checks(self): entity = self.driver.list_entities()[0] alarm = self.driver.list_alarms(entity=entity)[0] result = self.driver.ex_list_alarm_notification_history_checks( entity=entity, alarm=alarm) self.assertEqual(len(result['check_ids']), 2) def test_ex_list_alarm_notification_history(self): entity = self.driver.list_entities()[0] alarm = self.driver.list_alarms(entity=entity)[0] check = self.driver.list_checks(entity=entity)[0] result = self.driver.ex_list_alarm_notification_history(entity=entity, alarm=alarm, check=check) self.assertEqual(len(result), 1) self.assertTrue('timestamp' in result[0]) self.assertTrue('notification_plan_id' in result[0]) self.assertTrue('state' in result[0]) self.assertTrue('transaction_id' in result[0]) self.assertTrue('notification_results' in result[0]) def test_test_alarm(self): entity = self.driver.list_entities()[0] criteria = ('if (metric[\"code\"] == \"404\") { return CRITICAL, ', ' \"not found\" } return OK') check_data = [] result = self.driver.test_alarm(entity=entity, criteria=criteria, check_data=check_data) self.assertTrue('timestamp' in result[0]) self.assertTrue('computed_state' in result[0]) self.assertTrue('status' in result[0]) def test_check(self): entity = self.driver.list_entities()[0] check_data = {'label': 'test', 'monitoring_zones': ['mzA'], 'target_alias': 'default', 'details': {'url': 'http://www.google.com'}, 'type': 'remote.http'} result = self.driver.test_check(entity=entity) self.assertTrue('available' in result[0]) self.assertTrue('monitoring_zone_id' in result[0]) self.assertTrue('available' in result[0]) self.assertTrue('metrics' in result[0]) def test_delete_entity_success(self): entity = self.driver.list_entities()[0] result = self.driver.delete_entity(entity=entity) self.assertTrue(result) def test_delete_entity_children_exist(self): entity = self.driver.list_entities()[1] RackspaceMockHttp.type = 'CHILDREN_EXIST' try: self.driver.delete_entity(entity=entity) except RackspaceMonitoringValidationError: pass else: self.fail('Exception was not thrown') def test_delete_check_success(self): en = self.driver.list_entities()[0] check = self.driver.list_checks(entity=en)[0] check.delete() def test_delete_alarm(self): en = self.driver.list_entities()[0] alarm = self.driver.list_alarms(entity=en)[0] alarm.delete() def test_delete_notification(self): notification = self.driver.list_notifications()[0] notification.delete() def test_delete_notification_plan(self): notification_plan = self.driver.list_notification_plans()[0] notification_plan.delete() def test_list_agent_tokens(self): tokens = self.driver.list_agent_tokens() fixture = RackspaceMockHttp.fixtures.load('agent_tokens.json') fixture_tokens = json.loads(fixture) first_token = fixture_tokens["values"][0]["token"] self.assertEqual(tokens[0].token, first_token) self.assertEqual(len(tokens), 11) def test_delete_agent_token(self): agent_token = self.driver.list_agent_tokens()[0] self.assertTrue(self.driver.delete_agent_token( agent_token=agent_token)) def test_get_monitoring_zone(self): monitoring_zone = self.driver \ .get_monitoring_zone(monitoring_zone_id='mzord') self.assertEqual(monitoring_zone.id, 'mzord') self.assertEqual(monitoring_zone.label, 'ord') self.assertEqual(monitoring_zone.country_code, 'US') def test_ex_traceroute(self): monitoring_zone = self.driver.list_monitoring_zones()[0] result = self.driver.ex_traceroute(monitoring_zone=monitoring_zone, target='google.com') self.assertEqual(result[0]['number'], 1) self.assertEqual(result[0]['rtts'], [0.572, 0.586, 0.683]) self.assertEqual(result[0]['ip'], '50.57.61.2') def test__url_to_obj_ids(self): pairs = [ ['http://127.0.0.1:50000/v1.0/7777/entities/enSTkViNvw', {'entity_id': 'enSTkViNvw'}], ['https://monitoring.api.rackspacecloud.com/v1.0/7777/entities/enSTkViNvw', {'entity_id': 'enSTkViNvw'}], ['https://monitoring.api.rackspacecloud.com/v2.0/7777/entities/enSTkViNvu', {'entity_id': 'enSTkViNvu'}], ['https://monitoring.api.rackspacecloud.com/v2.0/7777/alarms/alfoo', {'alarm_id': 'alfoo'}], ['https://monitoring.api.rackspacecloud.com/v2.0/7777/entities/enFoo/checks/chBar', {'entity_id': 'enFoo', 'check_id': 'chBar'}], ['https://monitoring.api.rackspacecloud.com/v2.0/7777/entities/enFoo/alarms/alBar', {'entity_id': 'enFoo', 'alarm_id': 'alBar'}], ] for url, expected in pairs: result = self.driver._url_to_obj_ids(url) self.assertEqual(result, expected) def test_force_base_url(self): RackspaceMonitoringDriver.connectionCls.conn_classes = ( RackspaceMockHttp, RackspaceMockHttp) RackspaceMonitoringDriver.connectionCls.auth_url = \ 'https://auth.api.example.com/v1.1/' RackspaceMockHttp.type = None driver = RackspaceMonitoringDriver(key=RACKSPACE_PARAMS[0], secret=RACKSPACE_PARAMS[1], ex_force_base_url='http://www.todo.com') driver.list_entities() self.assertEqual(driver.connection._ex_force_base_url, 'http://www.todo.com/23213') def test_force_base_url_is_none(self): RackspaceMonitoringDriver.connectionCls.conn_classes = ( RackspaceMockHttp, RackspaceMockHttp) RackspaceMonitoringDriver.connectionCls.auth_url = \ 'https://auth.api.example.com/v1.1/' RackspaceMockHttp.type = None driver = RackspaceMonitoringDriver(key=RACKSPACE_PARAMS[0], secret=RACKSPACE_PARAMS[1]) driver.list_entities() self.assertEqual(driver.connection._ex_force_base_url, 'https://monitoring.api.rackspacecloud.com/v1.0/23213')
class RackspaceTests(unittest.TestCase): def setUp(self): RackspaceMonitoringDriver.connectionCls.conn_classes = (RackspaceMockHttp, RackspaceMockHttp) RackspaceMonitoringDriver.connectionCls.auth_url = "https://auth.api.example.com/v1.1/" RackspaceMockHttp.type = None self.driver = RackspaceMonitoringDriver(*RACKSPACE_PARAMS, ex_force_base_url="http://www.todo.com") def test_list_monitoring_zones(self): result = list(self.driver.list_monitoring_zones()) self.assertEqual(len(result), 1) self.assertEqual(result[0].id, "mzxJ4L2IU") def test_list_entities(self): result = list(self.driver.list_entities()) self.assertEqual(len(result), 6) self.assertEqual(result[0].id, "en8B9YwUn6") self.assertEqual(result[0].label, "bar") def test_list_checks(self): en = self.driver.list_entities()[0] result = list(self.driver.list_checks(entity=en)) self.assertEqual(len(result), 1) self.assertEqual(result[0].label, "bar") self.assertEqual(result[0].details["url"], "http://www.foo.com") self.assertEqual(result[0].details["method"], "GET") def test_list_alarms(self): en = self.driver.list_entities()[0] result = list(self.driver.list_alarms(entity=en)) self.assertEqual(len(result), 1) self.assertEqual(result[0].type, "remote.http") self.assertEqual(result[0].notification_plan_id, "npIXxOAn5") def test_list_check_types(self): result = list(self.driver.list_check_types()) self.assertEqual(len(result), 2) self.assertEqual(result[0].id, "remote.dns") self.assertTrue(result[0].is_remote) def test_list_notification_types(self): result = list(self.driver.list_notification_types()) self.assertEqual(len(result), 1) self.assertEqual(result[0].id, "webhook") def test_list_notifications(self): result = list(self.driver.list_notifications()) self.assertEqual(len(result), 2) self.assertEqual(result[0].type, "webhook") self.assertEqual(result[0].details["url"], "http://www.postbin.org/lulz") def test_list_notification_plans(self): result = list(self.driver.list_notification_plans()) self.assertEqual(len(result), 8) self.assertEqual(result[0].label, "test-notification-plan") def test_ex_list_alarm_history_checks(self): entity = self.driver.list_entities()[0] alarm = self.driver.list_alarms(entity=entity)[0] result = self.driver.ex_list_alarm_history_checks(entity=entity, alarm=alarm) self.assertEqual(len(result["check_ids"]), 2) def test_ex_list_alarm_history(self): entity = self.driver.list_entities()[0] alarm = self.driver.list_alarms(entity=entity)[0] check = self.driver.list_checks(entity=entity)[0] result = self.driver.ex_list_alarm_history(entity=entity, alarm=alarm, check=check) self.assertEqual(len(result), 1) self.assertTrue("timestamp" in result[0]) self.assertTrue("notification_plan_id" in result[0]) self.assertTrue("computed_state" in result[0]) self.assertTrue("transaction_id" in result[0]) self.assertTrue("notification_results" in result[0]) def test_test_alarm(self): entity = self.driver.list_entities()[0] criteria = ('if (metric["code"] == "404") { return CRITICAL, "not', 'found" } return OK') check_data = [] result = self.driver.test_alarm(entity=entity, criteria=criteria, check_data=check_data) self.assertTrue("timestamp" in result[0]) self.assertTrue("computed_state" in result[0]) self.assertTrue("status" in result[0]) def test_check(self): entity = self.driver.list_entities()[0] check_data = { "label": "test", "monitoring_zones": ["mzA"], "target_alias": "default", "details": {"url": "http://www.google.com"}, "type": "remote.http", } result = self.driver.test_check(entity=entity) self.assertTrue("available" in result[0]) self.assertTrue("monitoring_zone_id" in result[0]) self.assertTrue("available" in result[0]) self.assertTrue("metrics" in result[0]) def test_delete_entity_success(self): entity = self.driver.list_entities()[0] result = self.driver.delete_entity(entity=entity, ex_delete_children=False) self.assertTrue(result) def test_delete_entity_children_exist(self): entity = self.driver.list_entities()[1] RackspaceMockHttp.type = "CHILDREN_EXIST" try: self.driver.delete_entity(entity=entity, ex_delete_children=False) except RackspaceMonitoringValidationError: pass else: self.fail("Exception was not thrown") def test_delete_check_success(self): en = self.driver.list_entities()[0] check = self.driver.list_checks(entity=en)[0] check.delete() def test_delete_alarm(self): en = self.driver.list_entities()[0] alarm = self.driver.list_alarms(entity=en)[0] alarm.delete() def test_delete_notification(self): notification = self.driver.list_notifications()[0] notification.delete() def test_delete_notification_plan(self): notification_plan = self.driver.list_notification_plans()[0] notification_plan.delete()
class RackspaceTests(unittest.TestCase): def setUp(self): RackspaceMonitoringDriver.connectionCls.conn_classes = ( RackspaceMockHttp, RackspaceMockHttp) RackspaceMonitoringDriver.connectionCls.auth_url = \ 'https://auth.api.example.com/v1.1/' RackspaceMockHttp.type = None self.driver = RackspaceMonitoringDriver(key=RACKSPACE_PARAMS[0], secret=RACKSPACE_PARAMS[1]) def test_list_monitoring_zones(self): result = list(self.driver.list_monitoring_zones()) self.assertEqual(len(result), 1) self.assertEqual(result[0].id, 'mzxJ4L2IU') def test_list_entities(self): result = list(self.driver.list_entities()) self.assertEqual(len(result), 6) self.assertEqual(result[0].id, 'en8B9YwUn6') self.assertEqual(result[0].label, 'bar') def test_list_checks(self): en = self.driver.list_entities()[0] result = list(self.driver.list_checks(entity=en)) self.assertEqual(len(result), 1) self.assertEqual(result[0].label, 'bar') self.assertEqual(result[0].details['url'], 'http://www.foo.com') self.assertEqual(result[0].details['method'], 'GET') def test_list_alarms(self): en = self.driver.list_entities()[0] result = list(self.driver.list_alarms(entity=en)) self.assertEqual(len(result), 1) self.assertEqual(result[0].check_id, 'chhJwYeArX') self.assertEqual(result[0].notification_plan_id, 'npIXxOAn5') def test_list_check_types(self): result = list(self.driver.list_check_types()) self.assertEqual(len(result), 2) self.assertEqual(result[0].id, 'remote.dns') self.assertTrue(result[0].is_remote) def test_list_metrics(self): en = self.driver.list_entities()[0] ch = self.driver.list_checks(entity=en)[0] result = list(self.driver.list_metrics(entity_id=en.id, check_id=ch.id)) self.assertEqual(len(result), 3) self.assertEqual(result[0].name, 'mzGRD.constdbl') def test_list_notification_types(self): result = list(self.driver.list_notification_types()) self.assertEqual(len(result), 1) self.assertEqual(result[0].id, 'webhook') def test_list_notifications(self): result = list(self.driver.list_notifications()) self.assertEqual(len(result), 2) self.assertEqual(result[0].type, 'webhook') self.assertEqual(result[0].details['url'], 'http://www.postbin.org/lulz') def test_list_notification_plans(self): result = list(self.driver.list_notification_plans()) self.assertEqual(len(result), 8) self.assertEqual(result[0].label, 'test-notification-plan') def test_list_agents(self): result = list(self.driver.list_agents()) self.assertEqual(len(result), 3) self.assertEqual(result[0].id, '612deec7-1a3d-429f-c2a2-aadc59') def test_list_agent_connections(self): result = list(self.driver.list_agent_connections('612deec7-1a3d-429f-c2a2-aadc59')) self.assertEqual(len(result), 2) self.assertEqual(result[0].id, 'cn0ElI4abc') self.assertEqual(result[0].agent_ip, '192.168.0.1') self.assertEqual(result[1].id, 'cnAAAAAAAA') self.assertEqual(result[1].agent_ip, '192.168.0.1') def test_get_agent_host_info(self): result = self.driver.get_agent_host_info('aaaaa', 'cpus') self.assertEqual(len(result), 1) self.assertEqual(result[0]['vendor'], 'AMD') self.assertEqual(result[0]['name'], 'cpu.0') self.assertEqual(result[0]['total_cores'], 1) result = self.driver.get_agent_host_info('aaaaa', 'memory') self.assertEqual(result['actual_free'], 2684153856) self.assertEqual(result['free'], 236662784) self.assertEqual(result['ram'], 4016) self.assertEqual(result['total'], 4208316416) self.assertEqual(result['used'], 3971653632) self.assertEqual(result['used_percent'], 36.217869792422) result = self.driver.get_agent_host_info('aaaaa', 'system') self.assertEqual(result['name'], 'Linux') self.assertEqual(result['arch'], 'x86_64') self.assertEqual(result['version'], '2.6.32-33-server') self.assertEqual(result['vendor'], 'Ubuntu') self.assertEqual(result['vendor_version'], '10.04') self.assertEqual(result['vendor_code_name'], 'lucid') self.assertEqual(result['description'], 'Ubuntu 10.04') result = self.driver.get_agent_host_info('aaaaa', 'network_interfaces') self.assertEqual(len(result), 2) self.assertEqual(result[0]['address'], '127.0.0.1') self.assertEqual(result[0]['broadcast'], '0.0.0.0') self.assertEqual(result[1]['address'], '192.168.0.2') self.assertEqual(result[1]['broadcast'], '192.168.0.255') result = self.driver.get_agent_host_info('aaaaa', 'processes') self.assertEqual(len(result), 1) self.assertEqual(result[0]['pid'], 13702) self.assertEqual(result[0]['time_sys'], 570) self.assertEqual(result[0]['memory_page_faults'], 37742) result = self.driver.get_agent_host_info('aaaaa', 'disks') self.assertEqual(len(result), 1) self.assertEqual(result[0]['queue'], 0.024919932106766) self.assertEqual(result[0]['name'], '/') self.assertEqual(result[0]['wtime'], 517366712) result = self.driver.get_agent_host_info('aaaaa', 'filesystems') self.assertEqual(len(result), 1) self.assertEqual(result[0]['dir_name'], '/') self.assertEqual(result[0]['dev_name'], '/dev/xvda1') self.assertEqual(result[0]['type_name'], 'local') self.assertEqual(result[0]['sys_type_name'], 'ext3') def test_get_entity_targets(self): result = self.driver.get_entity_agent_targets('aaaaa', 'agent.disk') self.assertEqual(len(result), 1) self.assertEqual(result[0]['targets'][0], '/') self.assertEqual(result[0]['targets'][1], '/dev') def test_get_entity_host_info(self): result = self.driver.get_entity_host_info('aaaaa', 'cpus') self.assertEqual(len(result), 1) self.assertEqual(result[0]['vendor'], 'AMD') self.assertEqual(result[0]['name'], 'cpu.0') self.assertEqual(result[0]['total_cores'], 1) result = self.driver.get_entity_host_info('aaaaa', 'memory') self.assertEqual(result['actual_free'], 2684153856) self.assertEqual(result['free'], 236662784) self.assertEqual(result['ram'], 4016) self.assertEqual(result['total'], 4208316416) self.assertEqual(result['used'], 3971653632) self.assertEqual(result['used_percent'], 36.217869792422) result = self.driver.get_entity_host_info('aaaaa', 'system') self.assertEqual(result['name'], 'Linux') self.assertEqual(result['arch'], 'x86_64') self.assertEqual(result['version'], '2.6.32-33-server') self.assertEqual(result['vendor'], 'Ubuntu') self.assertEqual(result['vendor_version'], '10.04') self.assertEqual(result['vendor_code_name'], 'lucid') self.assertEqual(result['description'], 'Ubuntu 10.04') result = self.driver.get_entity_host_info('aaaaa', 'network_interfaces') self.assertEqual(len(result), 2) self.assertEqual(result[0]['address'], '127.0.0.1') self.assertEqual(result[0]['broadcast'], '0.0.0.0') self.assertEqual(result[1]['address'], '192.168.0.2') self.assertEqual(result[1]['broadcast'], '192.168.0.255') result = self.driver.get_entity_host_info('aaaaa', 'processes') self.assertEqual(len(result), 1) self.assertEqual(result[0]['pid'], 13702) self.assertEqual(result[0]['time_sys'], 570) self.assertEqual(result[0]['memory_page_faults'], 37742) result = self.driver.get_entity_host_info('aaaaa', 'disks') self.assertEqual(len(result), 1) self.assertEqual(result[0]['queue'], 0.024919932106766) self.assertEqual(result[0]['name'], '/') self.assertEqual(result[0]['wtime'], 517366712) result = self.driver.get_entity_host_info('aaaaa', 'filesystems') self.assertEqual(len(result), 1) self.assertEqual(result[0]['dir_name'], '/') self.assertEqual(result[0]['dev_name'], '/dev/xvda1') self.assertEqual(result[0]['type_name'], 'local') self.assertEqual(result[0]['sys_type_name'], 'ext3') def test_ex_list_alarm_notification_history_checks(self): entity = self.driver.list_entities()[0] alarm = self.driver.list_alarms(entity=entity)[0] result = self.driver.ex_list_alarm_notification_history_checks( entity=entity, alarm=alarm) self.assertEqual(len(result['check_ids']), 2) def test_ex_list_alarm_notification_history(self): entity = self.driver.list_entities()[0] alarm = self.driver.list_alarms(entity=entity)[0] check = self.driver.list_checks(entity=entity)[0] result = self.driver.ex_list_alarm_notification_history(entity=entity, alarm=alarm, check=check) self.assertEqual(len(result), 1) self.assertTrue('timestamp' in result[0]) self.assertTrue('notification_plan_id' in result[0]) self.assertTrue('state' in result[0]) self.assertTrue('transaction_id' in result[0]) self.assertTrue('notification_results' in result[0]) def test_test_alarm(self): entity = self.driver.list_entities()[0] criteria = ('if (metric[\"code\"] == \"404\") { return CRITICAL, ', ' \"not found\" } return OK') check_data = [] result = self.driver.test_alarm(entity=entity, criteria=criteria, check_data=check_data) self.assertTrue('timestamp' in result[0]) self.assertTrue('computed_state' in result[0]) self.assertTrue('status' in result[0]) def test_check(self): entity = self.driver.list_entities()[0] check_data = {'label': 'test', 'monitoring_zones': ['mzA'], 'target_alias': 'default', 'details': {'url': 'http://www.google.com'}, 'type': 'remote.http'} result = self.driver.test_check(entity=entity) self.assertTrue('available' in result[0]) self.assertTrue('monitoring_zone_id' in result[0]) self.assertTrue('available' in result[0]) self.assertTrue('metrics' in result[0]) def test_delete_entity_success(self): entity = self.driver.list_entities()[0] result = self.driver.delete_entity(entity=entity) self.assertTrue(result) def test_delete_entity_children_exist(self): entity = self.driver.list_entities()[1] RackspaceMockHttp.type = 'CHILDREN_EXIST' try: self.driver.delete_entity(entity=entity) except RackspaceMonitoringValidationError: pass else: self.fail('Exception was not thrown') def test_delete_check_success(self): en = self.driver.list_entities()[0] check = self.driver.list_checks(entity=en)[0] check.delete() def test_delete_alarm(self): en = self.driver.list_entities()[0] alarm = self.driver.list_alarms(entity=en)[0] alarm.delete() def test_delete_notification(self): notification = self.driver.list_notifications()[0] notification.delete() def test_delete_notification_plan(self): notification_plan = self.driver.list_notification_plans()[0] notification_plan.delete() def test_views_metric_list(self): metric_list = self.driver.ex_views_metric_list() self.assertTrue(len(metric_list) > 0) def test_list_agent_tokens(self): tokens = self.driver.list_agent_tokens() fixture = RackspaceMockHttp.fixtures.load('agent_tokens.json') fixture_tokens = json.loads(fixture) first_token = fixture_tokens["values"][0]["token"] self.assertEqual(tokens[0].token, first_token) self.assertEqual(len(tokens), 11) def test_delete_agent_token(self): agent_token = self.driver.list_agent_tokens()[0] self.assertTrue(self.driver.delete_agent_token( agent_token=agent_token)) def test_get_monitoring_zone(self): monitoring_zone = self.driver \ .get_monitoring_zone(monitoring_zone_id='mzord') self.assertEqual(monitoring_zone.id, 'mzord') self.assertEqual(monitoring_zone.label, 'ord') self.assertEqual(monitoring_zone.country_code, 'US') def test_ex_traceroute(self): monitoring_zone = self.driver.list_monitoring_zones()[0] result = self.driver.ex_traceroute(monitoring_zone=monitoring_zone, target='google.com') self.assertEqual(result[0]['number'], 1) self.assertEqual(result[0]['rtts'], [0.572, 0.586, 0.683]) self.assertEqual(result[0]['ip'], '50.57.61.2') def test__url_to_obj_ids(self): pairs = [ ['http://127.0.0.1:50000/v1.0/7777/entities/enSTkViNvw', {'entity_id': 'enSTkViNvw'}], ['https://monitoring.api.rackspacecloud.com/v1.0/7777/entities/enSTkViNvw', {'entity_id': 'enSTkViNvw'}], ['https://monitoring.api.rackspacecloud.com/v2.0/7777/entities/enSTkViNvu', {'entity_id': 'enSTkViNvu'}], ['https://monitoring.api.rackspacecloud.com/v2.0/7777/alarms/alfoo', {'alarm_id': 'alfoo'}], ['https://monitoring.api.rackspacecloud.com/v2.0/7777/entities/enFoo/checks/chBar', {'entity_id': 'enFoo', 'check_id': 'chBar'}], ['https://monitoring.api.rackspacecloud.com/v2.0/7777/entities/enFoo/alarms/alBar', {'entity_id': 'enFoo', 'alarm_id': 'alBar'}], ] for url, expected in pairs: result = self.driver._url_to_obj_ids(url) self.assertEqual(result, expected) def test_force_base_url(self): RackspaceMonitoringDriver.connectionCls.conn_classes = ( RackspaceMockHttp, RackspaceMockHttp) RackspaceMonitoringDriver.connectionCls.auth_url = \ 'https://auth.api.example.com/v1.1/' RackspaceMockHttp.type = None driver = RackspaceMonitoringDriver(key=RACKSPACE_PARAMS[0], secret=RACKSPACE_PARAMS[1], ex_force_base_url='http://www.todo.com') driver.list_entities() self.assertEqual(driver.connection._ex_force_base_url, 'http://www.todo.com/23213') def test_force_base_url_trailing_slash(self): RackspaceMonitoringDriver.connectionCls.conn_classes = ( RackspaceMockHttp, RackspaceMockHttp) RackspaceMonitoringDriver.connectionCls.auth_url = \ 'https://auth.api.example.com/v1.1/' RackspaceMockHttp.type = None driver = RackspaceMonitoringDriver(key=RACKSPACE_PARAMS[0], secret=RACKSPACE_PARAMS[1], ex_force_base_url='http://www.todo.com/') driver.list_entities() self.assertEqual(driver.connection._ex_force_base_url, 'http://www.todo.com/23213') def test_force_auth_token(self): RackspaceMonitoringDriver.connectionCls.conn_classes = ( RackspaceMockHttp, RackspaceMockHttp) RackspaceMonitoringDriver.connectionCls.auth_url = \ 'https://auth.api.example.com/v1.1/' RackspaceMockHttp.type = None driver = RackspaceMonitoringDriver(key=RACKSPACE_PARAMS[0], secret=RACKSPACE_PARAMS[1], ex_force_base_url='http://www.todo.com', ex_force_auth_token='matoken') driver.list_entities() self.assertEqual(driver.connection._ex_force_base_url, 'http://www.todo.com') self.assertEqual(driver.connection.auth_token, 'matoken') def test_force_base_url_is_none(self): RackspaceMonitoringDriver.connectionCls.conn_classes = ( RackspaceMockHttp, RackspaceMockHttp) RackspaceMonitoringDriver.connectionCls.auth_url = \ 'https://auth.api.example.com/v1.1/' RackspaceMockHttp.type = None driver = RackspaceMonitoringDriver(key=RACKSPACE_PARAMS[0], secret=RACKSPACE_PARAMS[1]) driver.list_entities() self.assertEqual(driver.connection._ex_force_base_url, 'https://monitoring.api.rackspacecloud.com/v1.0/23213')