Пример #1
0
async def update_status(automation_result,
                        stack_instance,
                        action,
                        to_be_deleted=None):
    """Updates the status of a functional requirement in a stack instance"""
    document_manager = get_document_manager()
    stack_instance = document_manager.get_stack_instance(stack_instance.name)
    status_to_be_deleted = None
    for status in stack_instance.status:
        if status.functional_requirement == automation_result[
            "functional_requirement"] and automation_result[
            "infrastructure_target"] in status.infrastructure_target \
                and status.service == automation_result["service"]:
            status.service = automation_result["service"]
            status.functional_requirement = automation_result[
                "functional_requirement"]
            if 'error_message' in automation_result:
                error_message = automation_result["error_message"]
            else:
                error_message = ""
            if action == "delete" and automation_result["status"] == "READY":
                status_to_be_deleted = status
            status.status = automation_result["status"]
            status.error_message = error_message
            break

    if action == "delete":
        if status_to_be_deleted:
            stack_instance.status.remove(status_to_be_deleted)
        if to_be_deleted:
            delete_services(to_be_deleted, stack_instance)

    document_manager.write_stack_instance(stack_instance)
Пример #2
0
async def put_stack_instance(
    background_tasks: BackgroundTasks,
    stack_instance_update: StackInstanceUpdate,
    document_manager: DocumentManager = Depends(get_document_manager),
    stack_manager: StackManager = Depends(get_stack_manager),
    redis=Depends(get_redis)):
    """
    Updates a stack instance by using a StackInstanceUpdate object
    """
    logger.info("[StackInstances PUT] Received PUT request")
    to_be_deleted = stack_manager.check_delete_services(stack_instance_update)
    (stack_instance, return_result) = stack_manager.process_stack_request(
        stack_instance_update, "update")
    if stack_instance is None:
        return HTTPException(422, return_result)

    # Perform invocations
    if not stack_instance_update.disable_invocation:
        for service in to_be_deleted:
            background_tasks.add_task(create_job_per_service, service,
                                      document_manager, "delete", redis,
                                      stack_instance, to_be_deleted)
        copy_stack_instance = stack_instance.copy(deep=True)
        delete_services(to_be_deleted, copy_stack_instance)
        background_tasks.add_task(create_job_for_agent, copy_stack_instance,
                                  "update", redis)

    document_manager.write_stack_instance(stack_instance)

    return return_result