예제 #1
0
class BalancerScheduler(object):

    def __init__(self):
        self.dev_manager = BalancerDeviceManager()
        self.algorithm = SchedulingAlgorithm()

    def _get_default_device(self, resource):
        # no management since it's unknown at the moment
        device = {
            "name": uuidutils.generate_uuid(),
            "type": HAPROXY,
            "version": HAPROXY_VERSION,
            "management": "",
            "tenant_id": resource["tenant_id"],
            "subnet_id": resource["subnet_id"],
            "status": constants.PENDING_CREATE,
        }
        return device

    def _create_default(self, context, resource):
        dev_info = self._get_default_device(resource)
        return self.dev_manager.create_device(context, dev_info)

    def add_resource_association(self, context, resource):
        LOG.debug(_("Going to schedule resource %s"), resource)
        devices = self.dev_manager.get_device_list(context)
        try:
            device = self.algorithm(resource, devices)
        except NoValidDevice, e:
            LOG.info(_("No valid device was found, "
                       "creating haproxy vm device"))
            # create device object in DB
            device = self._create_default(context, resource)

        self.dev_manager.add_association(context, device, resource)
        return device
예제 #2
0
 def __init__(self):
     self.dev_manager = BalancerDeviceManager()
     self.algorithm = SchedulingAlgorithm()