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)
Exemple #2
0
 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)
Exemple #3
0
 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')
Exemple #5
0
 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)
Exemple #6
0
 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)