コード例 #1
0
 def set_fields(self, **kwargs):
     """
     Universal integer setter for all fields.
     Values should be non-negative integers. Throws a RuntimeError
     if you try to set a non-existent field.
     :param kwargs:
     :return: self to support call chaining
     """
     for k, v in kwargs.items():
         try:
             # will toss an exception if field is not defined
             self.__getattribute__(k)
             if k == Constants.PROP_CAPACITIES or k == Constants.PROP_ALLOCATED_CAPACITIES:
                 c = Capacities()
                 v = c.from_json(json_string=v)
             elif k == Constants.PROP_LABELS or k == Constants.PROP_ALLOCATED_LABELS:
                 l = Labels()
                 v = l.from_json(json_string=v)
             elif k == Constants.PROP_CAPACITY_HINTS:
                 ch = CapacityHints()
                 v = ch.from_json(json_string=v)
             self.__setattr__(k, v)
         except AttributeError:
             raise RuntimeError(
                 f"Unable to set field {k} of reservation, no such field available"
             )
     return self
コード例 #2
0
    def testLabelAssignment(self):
        c = Labels(mac=['0C:42:A1:BE:8F:D5', '0C:42:A1:BE:8F:E9'],
                   bdf=['0000:41:00.0', '0000:41:00.1'])

        self.assertEqual(c.bdf, ['0000:41:00.0', '0000:41:00.1'])
        s = '{"bdf": ["0000:41:00.0", "0000:41:00.1"], ' \
            '"ipv4": ["192.168.1.1", "192.168.1.2"], ' \
            '"vlan": ["100", "101", "102"]}'
        l1 = Labels.from_json(s)
        self.assertEqual(l1.vlan, ["100", "101", "102"])
        print(s)
        print(l1.to_json())
        self.assertEqual(l1.to_json(), s)
コード例 #3
0
 def from_json(cls, json_string: str):
     return Gateway(Labels.from_json(json_string))