Beispiel #1
0
class NUMANode(base.ZunObject):
    # Version 1.0: Initial version
    VERSION = '1.0'

    fields = {
        'id': fields.IntegerField(read_only=True),
        'cpuset': fields.SetOfIntegersField(),
        'pinned_cpus': fields.SetOfIntegersField(),
        'mem_total': fields.IntegerField(nullable=True),
        'mem_available': fields.IntegerField(nullable=True),
        }

    @property
    def free_cpus(self):
        return self.cpuset - self.pinned_cpus or set()

    @property
    def avail_cpus(self):
        return len(self.free_cpus)

    def pin_cpus(self, cpus):
        if cpus - self.cpuset:
            raise exception.CPUPinningUnknown(requested=list(cpus),
                                              cpuset=list(self.pinned_cpus))
        if self.pinned_cpus & cpus:
            raise exception.CPUPinningInvalid(requested=list(cpus),
                                              free=list(self.cpuset -
                                                        self.pinned_cpus))
        self.pinned_cpus |= cpus

    def unpin_cpus(self, cpus):
        if cpus - self.cpuset:
            raise exception.CPUUnpinningUnknown(requested=list(cpus),
                                                cpuset=list(self.pinned_cpus))
        if (self.pinned_cpus & cpus) != cpus:
            raise exception.CPUUnpinningInvalid(requested=list(cpus),
                                                pinned=list(self.pinned_cpus))
        self.pinned_cpus -= cpus

    def _to_dict(self):
        return {
            'id': self.id,
            'cpuset': list(self.cpuset),
            'pinned_cpus': list(self.pinned_cpus),
            'mem_total': self.mem_total,
            'mem_available': self.mem_available
            }

    @classmethod
    def _from_dict(cls, data_dict):
        cpuset = set(data_dict.get('cpuset', ''))
        node_id = data_dict.get('id')
        pinned_cpus = set(data_dict.get('pinned_cpus'))
        mem_total = data_dict.get('mem_total')
        mem_available = data_dict.get('mem_available')
        return cls(id=node_id, cpuset=cpuset,
                   pinned_cpus=pinned_cpus,
                   mem_total=mem_total,
                   mem_available=mem_available)
Beispiel #2
0
 def test_repr(self):
     self.assertEqual(
         "Set(default=<class 'oslo_versionedobjects.fields."
         "UnspecifiedDefault'>,nullable=False)", repr(self.field))
     self.assertEqual("Set(default=set([]),nullable=False)",
                      repr(fields.SetOfIntegersField(default=set())))
     self.assertEqual("Set(default=set([1,a]),nullable=False)",
                      repr(fields.SetOfIntegersField(default={1, 'a'})))
 def setUp(self):
     super(TestSetOfIntegers, self).setUp()
     self.field = fields.SetOfIntegersField()
     self.coerce_good_values = [(set(['1', 2]), set([1, 2]))]
     self.coerce_bad_values = [set(['foo'])]
     self.to_primitive_values = [(set([1]), tuple([1]))]
     self.from_primitive_values = [(tuple([1]), set([1]))]
Beispiel #4
0
class Cpuset(base.ZunObject):
    VERSION = '1.0'

    fields = {
        'cpuset_cpus': fields.SetOfIntegersField(nullable=True),
        'cpuset_mems': fields.SetOfIntegersField(nullable=True),
    }

    def _to_dict(self):
        return {
            'cpuset_cpus': self.cpuset_cpus,
            'cpuset_mems': self.cpuset_mems
        }

    @classmethod
    def _from_dict(cls, data_dict):
        if not data_dict:
            obj = cls(cpuset_cpus=None, cpuset_mems=None)
        else:
            cpuset_cpus = data_dict.get('cpuset_cpus')
            cpuset_mems = data_dict.get('cpuset_mems')
            obj = cls(cpuset_cpus=cpuset_cpus, cpuset_mems=cpuset_mems)
        obj.obj_reset_changes()
        return obj
 class ClassWithDefaultedSetField(base.VersionedObject):
     VERSION = 1.0
     fields = {
         'empty_default': fields.SetOfIntegersField(default=set()),
         'non_empty_default': fields.SetOfIntegersField(default={1, 2})
     }