Example #1
0
def create_lb(conf, **params):
    balancer_instance = vserver.Balancer(conf)

    #Step 1. Parse parameters came from request
    balancer_instance.parseParams(params)
    device = scheduller.schedule_loadbalancer(conf, balancer_instance.lb)

    lb = balancer_instance.getLB()
    lb['device_id'] = device['id']

    #Step 2. Save config in DB
    balancer_instance.savetoDB()

    #Step 3. Deploy config to device
    device_driver = drivers.get_device_driver(conf, device['id'])
    try:
        with device_driver.request_context() as ctx:
            commands.create_loadbalancer(ctx, balancer_instance)
    except (exception.Error, exception.Invalid):
        balancer_instance.lb.status = lb_status.ERROR
    else:
        balancer_instance.lb.status = lb_status.ACTIVE
    balancer_instance.update()

    #balancer_instance.lb.status = \
    #   balancer.loadbalancers.loadbalancer.LB_ACTIVE_STATUS
    #balancer_instance.update()
    #self._task.status = STATUS_DONE
    return lb['id']
 def test_scheduler_no_cfg(self, dev_get_all):
     conf = cfg.ConfigOpts(default_config_files=[])
     conf._oparser = mock.Mock()
     conf._oparser.parse_args.return_value = mock.Mock(), None
     conf._oparser.parse_args.return_value[0].__dict__ = self.attrs
     conf()
     dev_get_all.return_value = ["a", "b", "c", "d"]
     res = schedull.schedule_loadbalancer(conf, self.lb_ref)
     self.assertTrue(dev_get_all.called)
     self.assertEqual("c", res)
 def test_scheduler_with_proper_devs(self, dev_get_all):
     dev_get_all.return_value = ["a", "b", "c", "d"]
     res = schedull.schedule_loadbalancer(self.conf, self.lb_ref)
     self.assertTrue(dev_get_all.called)
     self.assertEqual("c", res)
 def test_scheduler_without_devices(self, dev_get_all):
     dev_get_all.return_value = []
     with self.assertRaises(exp.DeviceNotFound):
         schedull.schedule_loadbalancer(self.conf, self.lb_ref)
         self.assertTrue(dev_get_all.called)
 def test_scheduler_no_proper_devs(self, dev_get_all):
     dev_get_all.return_value = ["a", "b"]
     with self.assertRaises(exp.NoValidDevice):
         schedull.schedule_loadbalancer(self.conf, self.lb_ref)
         self.assertTrue(dev_get_all.called)