def delete_load_balancer_hard(context, load_balancer_ref): try: for association_ref in load_balancer_ref.instances: db.load_balancer_instance_association_destroy( context, load_balancer_ref.id, association_ref.instance_uuid) for domain_ref in load_balancer_ref.domains: db.load_balancer_domain_destroy(context, domain_ref.id) db.load_balancer_config_destroy(context, load_balancer_ref.config.id) db.load_balancer_destroy(context, load_balancer_ref.id) except Exception, exp: raise exception.DeleteLoadBalancerFailed(msg=str(exp))
def test_update_load_balancer_http_servers(self): kwargs = copy.deepcopy(self.delete_kwargs) new_http_servers = ['www.abc.com', 'www.123.com'] kwargs['http_server_names'] = new_http_servers self.mox.StubOutWithMock(utils, 'get_all_domain_names') self.mox.StubOutWithMock(db, 'load_balancer_get_by_uuid') self.mox.StubOutWithMock(db, 'load_balancer_domain_create') self.mox.StubOutWithMock(db, 'load_balancer_domain_destroy') self.mox.StubOutWithMock(db, 'load_balancer_update_state') load_balancer_ref = self.lb_ref for index, domain in enumerate(self.http_server_names): domain_values = { 'id': index + 1, 'load_balancer_id': load_balancer_ref.id, 'name': domain, } domain_ref = models.LoadBalancerDomain() domain_ref.update(domain_values) load_balancer_ref.domains.append(domain_ref) db.load_balancer_get_by_uuid( self.ctxt, self.uuid).AndReturn(load_balancer_ref) utils.get_all_domain_names().AndReturn(list()) old_http_servers = map(lambda x: x['name'], load_balancer_ref.domains) need_deleted_domains = filter(lambda x: x not in new_http_servers, old_http_servers) need_created_domains = filter(lambda x: x not in old_http_servers, new_http_servers) for domain in load_balancer_ref.domains: if domain.name in need_deleted_domains: db.load_balancer_domain_destroy( self.ctxt, domain.id).AndReturn(None) for domain in need_created_domains: domain_values = { 'load_balancer_id': load_balancer_ref.id, 'name': domain, } db.load_balancer_domain_create( self.ctxt, domain_values).AndReturn(None) db.load_balancer_update_state( self.ctxt, self.uuid, state.UPDATING).AndReturn(None) self.mox.ReplayAll() r = http.update_load_balancer_http_servers(self.ctxt, **kwargs) self.mox.VerifyAll() self.assertRaises(r, None)
inserted_domains.append(domain_ref.id) # binding instances for uuid in kwargs['instance_uuids']: association = { 'load_balancer_id': load_balancer_ref.id, 'instance_uuid': uuid, } db.load_balancer_instance_association_create(context, association) associated_instances.append(uuid) except Exception, exp: if load_balancer_ref: for instance_uuid in associated_instances: db.load_balancer_instance_association_destroy( context, load_balancer_ref.id, instance_uuid) for domain_id in inserted_domains: db.load_balancer_domain_destroy(context, domain_id) if config_ref: db.load_balancer_config_destroy(context, config_ref.id) if load_balancer_ref: db.load_balancer_destroy(context, load_balancer_ref.id) raise exception.CreateLoadBalancerFailed(msg=str(exp)) return {'data': {'uuid': load_balancer_ref.uuid}} def update_load_balancer_config(context, **kwargs): expect_keys = [ 'user_id', 'tenant_id', 'protocol', 'uuid', 'config', ] utils.check_input_parameters(expect_keys, **kwargs)