Esempio n. 1
0
def value2key(keys, val):
    if len(keys) == 1:
        if is_data(val):
            return val[keys[0]]
        elif is_sequence(val):
            return val[0]
        else:
            return val
    else:
        if is_data(val):
            return datawrap({k: val[k] for k in keys})
        elif is_sequence(val):
            return datawrap(dict(zip(keys, val)))
        else:
            Log.error("do not know what to do here")
Esempio n. 2
0
def value2key(keys, val):
    if len(keys) == 1:
        if isinstance(val, Mapping):
            return val[keys[0]]
        elif isinstance(val, (list, tuple)):
            return val[0]
        else:
            return val
    else:
        if isinstance(val, Mapping):
            return datawrap({k: val[k] for k in keys})
        elif isinstance(val, (list, tuple)):
            return datawrap(dict(zip(keys, val)))
        else:
            Log.error("do not know what to do here")
Esempio n. 3
0
def value2key(keys, val):
    if len(keys) == 1:
        if isinstance(val, Mapping):
            return val[keys[0]]
        elif isinstance(val, (list, tuple)):
            return val[0]
        else:
            return val
    else:
        if isinstance(val, Mapping):
            return datawrap({k: val[k] for k in keys})
        elif isinstance(val, (list, tuple)):
            return datawrap(dict(zip(keys, val)))
        else:
            Log.error("do not know what to do here")
Esempio n. 4
0
    def test_object_wrap_w_deep_path(self):
        d = SampleData()
        d.a = Data(c=3)
        dd = datawrap(d)

        self.assertEqual(dd["a.c"], 3)
        self.assertEqual(dd, {"a": {"c": 3}, "b": 30})
Esempio n. 5
0
    def add(self, val):
        val = datawrap(val)
        key = value2key(self._keys, val)
        if key == None:
            Log.error("Expecting key to be not None")

        try:
            d = self._data.get(key)
        except Exception as e:
            key = value2key(self._keys, val)

        if d is None:
            self._data[key] = unwrap(val)
            self.count += 1
        elif d is not val:
            if self.fail_on_dup:
                Log.error(
                    "{{new|json}} with key {{key|json}} already filled with {{old|json}}",
                    key=key,
                    new=val,
                    old=self[val])
            elif DEBUG:
                Log.warning(
                    "key {{key|json}} already filled\nExisting\n{{existing|json|indent}}\nValue\n{{value|json|indent}}",
                    key=key,
                    existing=d,
                    value=val)
Esempio n. 6
0
    def test_object_wrap(self):
        d = SampleData()
        dd = datawrap(d)

        self.assertEqual(dd["a"], 20)
        self.assertEqual(dd, {"a": 20, "b": 30})
        self.assertIs(from_data(dd), dd)
 def _get_managed_spot_requests(self):
     output = wrap([
         datawrap(r)
         for r in self.ec2_conn.get_all_spot_instance_requests()
         if not r.tags.get("Name")
         or r.tags.get("Name").startswith(self.settings.ec2.instance.name)
     ])
     return output
Esempio n. 8
0
    def _get_managed_instances(self):
        requests = UniqueIndex(["instance_id"], data=self._get_managed_spot_requests().filter(lambda r: r.instance_id!=None))
        reservations = self.ec2_conn.get_all_instances()

        output = []
        for res in reservations:
            for instance in res.instances:
                if instance.tags.get('Name', '').startswith(self.settings.ec2.instance.name) and instance._state.name == "running":
                    instance.request = requests[instance.id]
                    output.append(datawrap(instance))
        return wrap(output)
Esempio n. 9
0
    def remove(self, val):
        key = value2key(self._keys, datawrap(val))
        if key == None:
            Log.error("Expecting key to not be None")

        d = self._data.get(key)
        if d is None:
            # ALREADY GONE
            return
        else:
            del self._data[key]
            self.count -= 1
Esempio n. 10
0
    def remove(self, val):
        key = value2key(self._keys, datawrap(val))
        if key == None:
            Log.error("Expecting key to not be None")

        d = self._data.get(key)
        if d is None:
            # ALREADY GONE
            return
        else:
            del self._data[key]
            self.count -= 1
    def _get_managed_instances(self):
        requests = UniqueIndex(["instance_id"],
                               data=self._get_managed_spot_requests().filter(
                                   lambda r: r.instance_id != None))
        reservations = self.ec2_conn.get_all_instances()

        output = []
        for res in reservations:
            for instance in res.instances:
                if instance.tags.get('Name', '').startswith(
                        self.settings.ec2.instance.name
                ) and instance._state.name == "running":
                    instance.request = requests[instance.id]
                    output.append(datawrap(instance))
        return wrap(output)
Esempio n. 12
0
    def add(self, val):
        val = datawrap(val)
        key = value2key(self._keys, val)
        if key == None:
            Log.error("Expecting key to be not None")

        d = self._data.get(key)
        if d is None:
            self._data[key] = unwrap(val)
            self.count += 1
        elif d is not val:
            if self.fail_on_dup:
                Log.error("{{new|json}} with key {{key|json}} already filled with {{old|json}}", key=key, new=val, old=self[val])
            elif DEBUG:
                Log.warning("key {{key|json}} already filled\nExisting\n{{existing|json|indent}}\nValue\n{{value|json|indent}}",
                    key=key,
                    existing=d,
                    value=val
                )
Esempio n. 13
0
 def _get_managed_spot_requests(self):
     output = wrap([datawrap(r) for r in self.ec2_conn.get_all_spot_instance_requests() if not r.tags.get("Name") or r.tags.get("Name").startswith(self.settings.ec2.instance.name)])
     return output