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)