def test_str_with_meta(self): resp = fakes.create_response() obj = resource.StrWithMeta('test-str', resp) self.assertEqual('test-str', obj) # Check request_id attribute is added to obj self.assertTrue(hasattr(obj, 'request_id')) self.assertEqual(fakes.FAKE_REQUEST_ID, obj.request_id)
def test_list_alarm(self, mocked): alarm_id = "alarm-id" args = [alarm_id] verify_args = [("alarm_id", alarm_id)] parsed_args = self.check_parser(self.cmd, args, verify_args) mocked.return_value = base_resource.StrWithMeta('', 'Request-Id') result = self.cmd.take_action(parsed_args) mocked.assert_called_once_with("/alarms/%s" % alarm_id) self.assertEqual(result, "Alarm %s has been deleted" % alarm_id)
def _update_all(self, url, json, key=None, raw=False, headers={}): """update resource with PUT method""" resp, body = self.http_client.put(url, json=json, headers=headers) # PATCH requests may not return a body if body: # get required body part content = self.get_data(body, key) if raw: return self.mixin_meta(content, resp) else: return self.resource_class(self, content, resp=resp) else: return resource.StrWithMeta(resp.text, resp)
def test_add_metric_data(self, mocked_create): dimension_1 = "bandwidth_id=775c271a-93f7-4a8c-b8fa-da91a9a0dcd4" dimension_2 = "instance_id=5b4c1602-fb6d-4f1e-87a8-dcf21d9654ba" args = [ "--namespace", "Woo.ECS", "--metric-name", "cpu_util", "--ttl", "604800", "--value", "10", "--unit", "%", "--type", "int", "--collect-time", "2017-02-14T18:00:00", "--dimension", dimension_1, "--dimension", dimension_2 ] verify_args = [ ("namespace", "Woo.ECS"), ("metric_name", "cpu_util"), ("ttl", 604800), ("value", 10), ("unit", "%"), ("type_", "int"), ("collect_time", datetime.datetime(2017, 2, 14, hour=18)), ("dimensions", [dimension_1, dimension_2]), ] parsed_args = self.check_parser(self.cmd, args, verify_args) mocked_create.return_value = base_resource.StrWithMeta( '', 'Fake-Request-Id') data = self.cmd.take_action(parsed_args) json = { "metric": { "namespace": "Woo.ECS", "dimensions": [{ "name": "bandwidth_id", "value": "775c271a-93f7-4a8c-b8fa-da91a9a0dcd4" }, { "name": "instance_id", "value": "5b4c1602-fb6d-4f1e-87a8-dcf21d9654ba" }], "metric_name": "cpu_util" }, "ttl": 604800, "collect_time": 1487066400000, "value": 10, "unit": "%", "type": "int" } mocked_create.assert_called_once_with('/metric-data', json=[json], raw=True) self.assertEqual(data, 'Metric data has been added')
def mixin_meta(item, resp): if isinstance(item, six.string_types): if six.PY2 and isinstance(item, six.text_type): return resource.UnicodeWithMeta(item, resp) else: return resource.StrWithMeta(item, resp) elif isinstance(item, six.binary_type): return resource.BytesWithMeta(item, resp) elif isinstance(item, list): return resource.ListWithMeta(item, resp) elif isinstance(item, tuple): return resource.TupleWithMeta(item, resp) elif item is None: return resource.TupleWithMeta((), resp) else: return resource.DictWithMeta(item, resp)
def _get(self, url, params={}, key=None, raw=False, resource_class=None, headers={}): resp, body = self.http_client.get(url, params=params, headers=headers) # get required body part if body: content = self.get_data(body, key) if raw: return self.mixin_meta(content, resp) else: rc = resource_class if resource_class else self.resource_class return rc(self, content, resp=resp, attached=True) else: return resource.StrWithMeta(resp.text, resp)