def get(self, request, *args, **kwargs): """ Returns a list of pools with updated states of members """ try: pool_ids = kwargs.get('pool_ids').split(';') checkstatus = request.GET.get('checkstatus') or '0' response = dict() server_pools = models_vips.ServerPool.objects.filter( id__in=pool_ids) if checkstatus == '1': serializer_server_pool = serializers.PoolV3Serializer( server_pools, many=True) mbr_state = facade_pool_deploy.get_poolmember_state( serializer_server_pool.data) for server_pool in server_pools: if mbr_state.get(server_pool.id): query_pools = models_vips.ServerPoolMember.objects.filter( server_pool=server_pool) for pm in query_pools: member_checked_status = mbr_state[server_pool.id][ pm.id] pm.member_status = member_checked_status pm.last_status_update = datetime.now() pm.save(request.user) # get pools updated server_pools = models_vips.ServerPool.objects.filter( id__in=pool_ids) serializer_server_pool = serializers.PoolV3Serializer(server_pools, many=True) response['server_pools'] = serializer_server_pool.data return CustomResponse(response, status=status.HTTP_200_OK, request=request) except Exception, exception: log.error(exception) raise rest_exceptions.NetworkAPIException(exception)
def test_task_id_create_in_delete_deploy_one_server_pool_success( self, *args): """Test success of id task generate for server pool delete deploy success.""" mock_get_user = args[1] mock_get_pool = args[2] mock_delete_real_pool = args[3] user = Usuario(id=1, nome='test') divisaodc = DivisaoDc(id=1, nome='test') amblog = AmbienteLogico(id=1, nome='test') gl3 = GrupoL3(id=1, nome='test') ambiente = Ambiente(id=1, grupo_l3=gl3, divisao_dc=divisaodc, ambiente_logico=amblog) optionpool = OptionPool(id=1, type='test', name='test') healthcheck = Healthcheck(id=1) pool = ServerPool(id=1, identifier='test', environment=ambiente, servicedownaction=optionpool, healthcheck=healthcheck) pool_serializer = serializers.PoolV3Serializer(pool) mock_delete_real_pool.return_value = pool mock_get_pool.return_value = pool mock_get_user.return_value = user undeploy(pool.id, user.id) mock_delete_real_pool.assert_called_with([pool_serializer.data], user)
def get(self, request, *args, **kwargs): """ Returns list of pool by environment vip """ try: environment_vip_id = kwargs['environment_vip_id'] pools = facade.get_pool_list_by_environmentvip(environment_vip_id) only_main_property = True # serializer pools pool_serializer = serializers.PoolV3Serializer( pools, many=True, fields=( 'id', 'identifier', ) + self.fields, include=self.include, exclude=self.exclude, kind=self.kind) # prepare serializer with customized properties response = render_to_json(pool_serializer, main_property='server_pools', obj_model=pools, request=request, only_main_property=only_main_property) return CustomResponse(response, status=status.HTTP_200_OK, request=request) except Exception, exception: log.exception(exception) raise rest_exceptions.NetworkAPIException(exception)
def get(self, request, *args, **kwargs): """Return server pools by ids or dict""" if not kwargs.get('obj_ids'): obj_model = facade.get_pool_by_search(self.search) pools = obj_model['query_set'] only_main_property = False else: pool_ids = kwargs['obj_ids'].split(';') pools = facade.get_pool_by_ids(pool_ids) only_main_property = True obj_model = None # serializer pools pool_serializer = serializers.PoolV3Serializer(pools, many=True, fields=self.fields, include=self.include, exclude=self.exclude, kind=self.kind) # prepare serializer with customized properties response = render_to_json(pool_serializer, main_property='server_pools', obj_model=obj_model, request=request, only_main_property=only_main_property) return Response(response, status=status.HTTP_200_OK)
def post(self, request, *args, **kwargs): """ Creates pools by list in equipments """ pool_ids = kwargs['pool_ids'].split(';') pools = facade.get_pool_by_ids(pool_ids) pool_serializer = serializers.PoolV3Serializer(pools, many=True) locks_list = create_lock(pool_serializer.data, LOCK_POOL) try: response = facade_pool_deploy.create_real_pool( pool_serializer.data, request.user) except Exception, exception: log.error(exception) raise rest_exceptions.NetworkAPIException(exception)
def delete(self, request, *args, **kwargs): """ Deletes pools by list in equipments :url /api/v3/pool/deploy/<pool_ids>/ :param pool_ids=<pool_ids> """ pool_ids = kwargs['obj_ids'].split(';') pools = facade.get_pool_by_ids(pool_ids) pool_serializer = serializers.PoolV3Serializer(pools, many=True) locks_list = create_lock(pool_serializer.data, LOCK_POOL) try: response = facade_pool_deploy.delete_real_pool( pool_serializer.data, request.user) except Exception, exception: log.error(exception) raise rest_exceptions.NetworkAPIException(exception)
def get(self, request, *args, **kwargs): """ Return server pools by ids or dict """ try: if not kwargs.get('pool_ids'): obj_model = facade.get_pool_by_search(self.search) pools = obj_model['query_set'] only_main_property = False else: pool_ids = kwargs['pool_ids'].split(';') pools = facade.get_pool_by_ids(pool_ids) only_main_property = True obj_model = None self.include = ( 'servicedownaction__details', 'environment__details', 'groups_permissions__details', ) # serializer pools pool_serializer = serializers.PoolV3Serializer( pools, many=True, fields=self.fields, include=self.include, exclude=self.exclude, kind=self.kind) # prepare serializer with customized properties response = render_to_json(pool_serializer, main_property='server_pools', obj_model=obj_model, request=request, only_main_property=only_main_property) return CustomResponse(response, status=status.HTTP_200_OK, request=request) except Exception, exception: log.exception(exception) raise rest_exceptions.NetworkAPIException(exception)
def undeploy(self, pool_id, user_id): msg = {'object_type': 'pool', 'action': 'undeploy', 'object_id': pool_id} self.update_state(state='PROGRESS', meta=msg) pool_obj = facade.get_pool_by_id(pool_id) pool_serializer = serializers.PoolV3Serializer(pool_obj) locks_list = create_lock([pool_id], LOCK_POOL) user = Usuario.objects.get(id=user_id) try: facade_pool_deploy.delete_real_pool([pool_serializer.data], user) except Exception, exception: msg['message'] = 'Pool {} was not undeployed.'.format(pool_obj) msg['reason'] = str(exception) raise Exception(msg)
member_checked_status = mbr_state[server_pool.id][ pm.id] pm.member_status = member_checked_status pm.last_status_update = datetime.now() pm.save(request.user) # get pools updated server_pools = models_vips.ServerPool.objects.filter( id__in=pool_ids) except Exception, exception: log.error(exception) raise rest_exceptions.NetworkAPIException(exception) finally: destroy_lock(locks_list) serializer_server_pool = serializers.PoolV3Serializer(server_pools, many=True) response['server_pools'] = serializer_server_pool.data return Response(response, status=status.HTTP_200_OK) class PoolDeployView(CustomAPIView): @logs_method_apiview @raise_json_validate('') @permission_classes_apiview((IsAuthenticated, permissions.Write, permissions.ScriptCreatePermission)) @permission_obj_apiview([permissions.deploy_obj_permission]) def post(self, request, *args, **kwargs): """ Creates pools by list in equipments """