def delete_for_instance(context, **kwargs): expect_keys = [ 'tenant_id', 'instance_uuid', ] utils.check_input_parameters(expect_keys, **kwargs) instance_uuid = kwargs['instance_uuid'] try: load_balancers = db.load_balancer_get_by_instance_uuid(context, instance_uuid) for load_balancer_ref in load_balancers: try: if load_balancer_ref.free: args = { 'tenant_id': context.tenant_id, 'uuid': load_balancer_ref.uuid, } delete_load_balancer(context, **args) elif load_balancer_ref.state != state.DELETING: old_instance_uuids = map(lambda x: x['instance_uuid'], load_balancer_ref.instances) new_instance_uuids = filter(lambda x: x != instance_uuid, old_instance_uuids) args = { 'tenant_id': context.tenant_id, 'user_id': context.user_id, 'protocol': load_balancer_ref.protocol, 'uuid': load_balancer_ref.uuid, 'instance_uuids': new_instance_uuids, } update_load_balancer_instances(context, **args) except Exception, exp: LOG.info('delete_for_instance: failed for %s', str(exp)) except Exception, exp: raise exception.DeleteForInstanceFailed(msg=str(exp))
def update_load_balancer_config(context, **kwargs): expect_keys = [ 'user_id', 'tenant_id', 'protocol', 'uuid', 'config', ] utils.check_input_parameters(expect_keys, **kwargs) config = kwargs['config'] expect_configs = [ 'balancing_method', 'health_check_timeout_ms', 'health_check_interval_ms', 'health_check_target_path', ] config = kwargs['config'] utils.check_input_parameters(expect_configs, **config) if config['balancing_method'] not in ['round_robin', 'source_binding']: raise exception.InvalidParameter( msg='invalid balancing method, round_robin or source_binding') if not 100 <= config['health_check_timeout_ms']: raise exception.InvalidParameter( msg='healthy check timeout out of range, 100ms~120s') if not 100 <= config['health_check_interval_ms']: raise exception.InvalidParameter( msg='Healthy check interval out of rage, 100ms~10m') if not config['health_check_target_path']: raise exception.InvalidParameter( msg='health check path could not be null') uuid = kwargs['uuid'] try: load_balancer_ref = db.load_balancer_get_by_uuid(context, uuid) except Exception, exp: raise exception.UpdateLoadBalancerFailed(msg=str(exp))
def update_load_balancer(context, **kwargs): expect_keys = [ 'tenant_id', 'uuid', ] utils.check_input_parameters(expect_keys, **kwargs) uuid = kwargs['uuid'] try: load_balancer_ref = db.load_balancer_get_by_uuid(context, uuid) except Exception, exp: raise exception.UpdateLoadBalancerFailed(msg=str(exp))
def get_all_http_servers(context, **kwargs): expect_keys = [ 'user_id', 'tenant_id', ] utils.check_input_parameters(expect_keys, **kwargs) result = None try: context = context.elevated(read_deleted='no') all_domains = db.load_balancer_domain_get_all(context) result = map(lambda x: x['name'], all_domains) except Exception, exp: raise exception.GetAllHttpServersFailed(msg=str(exp))
def get_load_balancer_by_instance_uuid(context, **kwargs): expect_keys = [ 'tenant_id', 'instance_uuid', ] utils.check_input_parameters(expect_keys, **kwargs) result = None uuid = kwargs['instance_uuid'] try: load_balancer_ref = db.load_balancer_get_by_instance_uuid(context, uuid) result = format_msg_to_client(load_balancer_ref) except Exception, exp: raise exception.GetLoadBalancerFailed(msg=str(exp))
def delete_load_balancer(context, **kwargs): expect_keys = [ 'tenant_id', 'uuid', ] utils.check_input_parameters(expect_keys, **kwargs) uuid = kwargs['uuid'] try: load_balancer_ref = db.load_balancer_get_by_uuid(context, uuid) db.load_balancer_update_state(context, uuid, state.DELETING) notify(context, load_balancer_ref, 'loadbalancer.delete.start') except Exception, exp: raise exception.DeleteLoadBalancerFailed(msg=str(exp))
def update_load_balancer_instances(context, **kwargs): expect_keys = [ 'user_id', 'tenant_id', 'protocol', 'uuid', 'instance_uuids', ] utils.check_input_parameters(expect_keys, **kwargs) new_instance_uuids = kwargs['instance_uuids'] if not new_instance_uuids: raise exception.InvalidParameter( msg='instance_uuids can not be null') uuid = kwargs['uuid'] try: load_balancer_ref = db.load_balancer_get_by_uuid(context, uuid) except Exception, exp: raise exception.UpdateLoadBalancerFailed(msg=str(exp))
def create_for_instance(context, **kwargs): expect_keys = [ 'user_id', 'tenant_id', 'instance_uuid', 'instance_port', ] utils.check_input_parameters(expect_keys, **kwargs) instance_uuid = kwargs['instance_uuid'] instance_port = kwargs['instance_port'] try: load_balancers = db.load_balancer_get_by_instance_uuid(context, instance_uuid) for load_balancer_ref in load_balancers: if load_balancer_ref.free: break result = format_msg_to_client(load_balancer_ref) except exception.LoadBalancerNotFoundByInstanceUUID, exp: pass
def get_all_load_balancers(context, **kwargs): expect_keys = [ 'user_id', 'tenant_id', 'all_tenants', ] utils.check_input_parameters(expect_keys, **kwargs) result = [] try: all_tenants = int(kwargs['all_tenants']) if context.is_admin and all_tenants: filters = {} else: filters = {'project_id': kwargs['tenant_id']} context = context.elevated(read_deleted='no') all_load_balancers = db.load_balancer_get_all(context, filters=filters) for load_balancer_ref in all_load_balancers: result.append(format_msg_to_client(load_balancer_ref)) except Exception, exp: raise exception.GetAllLoadBalancerFailed(msg=str(exp))
def create_load_balancer(context, **kwargs): expect_keys = [ 'user_id', 'tenant_id', 'protocol', 'name', 'instance_port', 'instance_uuids', 'config', ] utils.check_input_parameters(expect_keys, **kwargs) expect_configs = [ 'balancing_method', 'health_check_timeout_ms', 'health_check_interval_ms', 'health_check_healthy_threshold', 'health_check_unhealthy_threshold', ] config = kwargs['config'] utils.check_input_parameters(expect_configs, **config) if not 1 <= kwargs['instance_port'] <= 65535: raise exception.InvalidParameter( msg='invalid instance port, should between 1~65535') if config['balancing_method'] not in ['round_robin', 'source_binding']: raise exception.InvalidParameter( msg='invalid balancing method, round_robin or source_binding') if not 100 <= config['health_check_timeout_ms']: raise exception.InvalidParameter( msg='healthy check timeout out of range, 100ms~120s') if not 100 <= config['health_check_interval_ms']: raise exception.InvalidParameter( msg='Healthy check interval out of rage, 100ms~10m') if not 1 <= config['health_check_healthy_threshold'] <= 10: raise exception.InvalidParameter( msg='Healthy check healthy threshold out of rage, 1~10') if not 1 <= config['health_check_unhealthy_threshold'] <= 10: raise exception.InvalidParameter( msg='Healthy check unhealthy threshold out of rage, 1~10') try: free = kwargs['free'] except KeyError: kwargs['free'] = False except Exception, e: raise exception.CreateLoadBalancerFailed(msg='unknown error!')