diff options
| author | Zhiteng Huang <zhiteng.huang@intel.com> | 2012-12-10 15:33:30 +0800 |
|---|---|---|
| committer | Zhiteng Huang <zhiteng.huang@intel.com> | 2013-01-04 11:56:04 +0800 |
| commit | 629bfd53dab67afbe6d70b010b7df0d0c57d39fe (patch) | |
| tree | e9d46fd19182153670e92b428030a97eda7de57a /openstack/common/scheduler/weights | |
| parent | 5177c7918b4d48645071234f8474b824759d71ef (diff) | |
| download | oslo-629bfd53dab67afbe6d70b010b7df0d0c57d39fe.tar.gz oslo-629bfd53dab67afbe6d70b010b7df0d0c57d39fe.tar.xz oslo-629bfd53dab67afbe6d70b010b7df0d0c57d39fe.zip | |
Add common base weigher/weigher handler for filter scheduler
Filter scheduler is being used for more than one core projects (Nova
and Cinder as of writing), the implementation shared a lot of common
code. This patch is to move base weigher (weighing function), weigher
handler for filter scheduler into oslo to reduce possible porting.
implement bp: common-weights
Change-Id: I2d1b37438663b53e035cc262875a283e5e2ee970
Diffstat (limited to 'openstack/common/scheduler/weights')
| -rw-r--r-- | openstack/common/scheduler/weights/__init__.py | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/openstack/common/scheduler/weights/__init__.py b/openstack/common/scheduler/weights/__init__.py new file mode 100644 index 0000000..476ff8c --- /dev/null +++ b/openstack/common/scheduler/weights/__init__.py @@ -0,0 +1,45 @@ +# Copyright (c) 2011 OpenStack, LLC. +# All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. + +""" +Scheduler host weights +""" + + +from openstack.common.scheduler import weight + + +class WeighedHost(weight.WeighedObject): + def to_dict(self): + return { + 'weight': self.weight, + 'host': self.obj.host, + } + + def __repr__(self): + return ("WeighedHost [host: %s, weight: %s]" % + (self.obj.host, self.weight)) + + +class BaseHostWeigher(weight.BaseWeigher): + """Base class for host weights.""" + pass + + +class HostWeightHandler(weight.BaseWeightHandler): + object_class = WeighedHost + + def __init__(self, namespace): + super(HostWeightHandler, self).__init__(BaseHostWeigher, namespace) |
