Esempio n. 1
0
def post_datastore_actions(datastore):
    """ :type datastore: dart.model.datastore.Datastore """
    request_json = request.get_json()
    if not isinstance(request_json, list):
        request_json = [request_json]

    actions = []
    for action_json in request_json:
        action = Action.from_dict(action_json)
        action.data.datastore_id = datastore.id
        action.data.state = ActionState.HAS_NEVER_RUN
        actions.append(action)

    engine_name = datastore.data.engine_name
    saved_actions = [
        a.to_dict() for a in action_service().save_actions(
            actions, engine_name, datastore=datastore)
    ]
    trigger_proxy().try_next_action({
        'datastore_id': datastore.id,
        'log_info': {
            'user_id': current_user.email
        }
    })
    return {'results': saved_actions}
Esempio n. 2
0
def patch_action(action):
    """ :type action: dart.model.action.Action """
    p = JsonPatch(request.get_json())
    sanitized_action = action.copy()
    patched_action = Action.from_dict(p.apply(action.to_dict()))

    # only allow updating fields that are editable
    sanitized_action.data.name = patched_action.data.name
    sanitized_action.data.args = patched_action.data.args
    sanitized_action.data.tags = patched_action.data.tags
    sanitized_action.data.progress = patched_action.data.progress
    sanitized_action.data.order_idx = patched_action.data.order_idx
    sanitized_action.data.on_failure = patched_action.data.on_failure
    sanitized_action.data.on_failure_email = patched_action.data.on_failure_email
    sanitized_action.data.on_success_email = patched_action.data.on_success_email
    sanitized_action.data.extra_data = patched_action.data.extra_data

    # revalidate
    sanitized_action = action_service().default_and_validate_action(
        sanitized_action)

    return {
        'results':
        action_service().patch_action(action, sanitized_action).to_dict()
    }
Esempio n. 3
0
def post_workflow_actions(workflow):
    """ :type workflow: dart.model.workflow.Workflow """
    request_json = request.get_json()
    if not isinstance(request_json, list):
        request_json = [request_json]

    actions = []
    for action_json in request_json:
        action = Action.from_dict(action_json)
        action.data.workflow_id = workflow.id
        action.data.state = ActionState.TEMPLATE
        actions.append(action)

    datastore = datastore_service().get_datastore(workflow.data.datastore_id)
    engine_name = datastore.data.engine_name
    saved_actions = [a.to_dict() for a in action_service().save_actions(actions, engine_name)]
    return {'results': saved_actions}
Esempio n. 4
0
def post_datastore_actions(datastore):
    """ :type datastore: dart.model.datastore.Datastore """
    request_json = request.get_json()
    if not isinstance(request_json, list):
        request_json = [request_json]

    actions = []
    for action_json in request_json:
        action = Action.from_dict(action_json)
        action.data.datastore_id = datastore.id
        action.data.state = ActionState.HAS_NEVER_RUN
        actions.append(action)

    engine_name = datastore.data.engine_name
    saved_actions = [a.to_dict() for a in action_service().save_actions(actions, engine_name, datastore=datastore)]
    trigger_proxy().try_next_action({'datastore_id':datastore.id, 'log_info':{'user_id': current_user.email}})
    return {'results': saved_actions}
Esempio n. 5
0
def post_workflow_actions(workflow):
    """ :type workflow: dart.model.workflow.Workflow """
    request_json = request.get_json()
    if not isinstance(request_json, list):
        request_json = [request_json]

    actions = []
    for action_json in request_json:
        action = Action.from_dict(action_json)
        action.data.workflow_id = workflow.id
        action.data.state = ActionState.TEMPLATE
        actions.append(action)

    datastore = datastore_service().get_datastore(workflow.data.datastore_id)
    engine_name = datastore.data.engine_name
    saved_actions = [a.to_dict() for a in action_service().save_actions(actions, engine_name)]
    return {'results': saved_actions}
Esempio n. 6
0
 def _resolve_and_save_action(self, entity_id, entity_map, actual_entities_by_node_id, actual_entities_by_unsaved_id):
     actual_id, unsaved_id = self._resolve(EntityType.action, entity_id, entity_map, actual_entities_by_unsaved_id)
     if actual_id:
         return actual_id
     node_id = self._node_id(EntityType.action, unsaved_id)
     action = Action.from_dict(entity_map['unsaved_entities'][node_id])
     assert isinstance(action, Action)
     if action.data.datastore_id:
         action.data.datastore_id = self._resolve_and_save_datastore(action.data.datastore_id, entity_map, actual_entities_by_node_id, actual_entities_by_unsaved_id)
     if action.data.workflow_id:
         action.data.workflow_id = self._resolve_and_save_workflow(action.data.workflow_id, entity_map, actual_entities_by_node_id, actual_entities_by_unsaved_id)
     if action.data.args and action.data.args.get('subscription_id'):
         action.data.args['subscription_id'] = self._resolve_and_save_subscription(action.data.args['subscription_id'], entity_map, actual_entities_by_node_id, actual_entities_by_unsaved_id)
     if action.data.args and action.data.args.get('dataset_id'):
         action.data.args['dataset_id'] = self._resolve_and_save_dataset(action.data.args['dataset_id'], entity_map, actual_entities_by_node_id, actual_entities_by_unsaved_id)
     engine_name, datastore = self._find_engine_name_and_datastore(action)
     action = self._action_service.save_actions([action], engine_name, datastore, commit=False, flush=True)[0]
     actual_entities_by_node_id[node_id] = action
     actual_entities_by_unsaved_id[unsaved_id] = action
     return action.id
Esempio n. 7
0
 def _resolve_and_save_action(self, entity_id, entity_map, actual_entities_by_node_id, actual_entities_by_unsaved_id):
     actual_id, unsaved_id = self._resolve(EntityType.action, entity_id, entity_map, actual_entities_by_unsaved_id)
     if actual_id:
         return actual_id
     node_id = self._node_id(EntityType.action, unsaved_id)
     action = Action.from_dict(entity_map['unsaved_entities'][node_id])
     assert isinstance(action, Action)
     if action.data.datastore_id:
         action.data.datastore_id = self._resolve_and_save_datastore(action.data.datastore_id, entity_map, actual_entities_by_node_id, actual_entities_by_unsaved_id)
     if action.data.workflow_id:
         action.data.workflow_id = self._resolve_and_save_workflow(action.data.workflow_id, entity_map, actual_entities_by_node_id, actual_entities_by_unsaved_id)
     if action.data.args and action.data.args.get('subscription_id'):
         action.data.args['subscription_id'] = self._resolve_and_save_subscription(action.data.args['subscription_id'], entity_map, actual_entities_by_node_id, actual_entities_by_unsaved_id)
     if action.data.args and action.data.args.get('dataset_id'):
         action.data.args['dataset_id'] = self._resolve_and_save_dataset(action.data.args['dataset_id'], entity_map, actual_entities_by_node_id, actual_entities_by_unsaved_id)
     engine_name, datastore = self._find_engine_name_and_datastore(action)
     action = self._action_service.save_actions([action], engine_name, datastore, commit=False, flush=True)[0]
     actual_entities_by_node_id[node_id] = action
     actual_entities_by_unsaved_id[unsaved_id] = action
     return action.id
Esempio n. 8
0
def patch_action(action):
    """ :type action: dart.model.action.Action """
    p = JsonPatch(request.get_json())
    return update_action(action, Action.from_dict(p.apply(action.to_dict())))
Esempio n. 9
0
def put_action(action):
    """ :type action: dart.model.action.Action """
    return update_action(action, Action.from_dict(request.get_json()))
Esempio n. 10
0
def patch_action(action):
    """ :type action: dart.model.action.Action """
    p = JsonPatch(request.get_json())
    return update_action(action, Action.from_dict(p.apply(action.to_dict())))
Esempio n. 11
0
def put_action(action):
    """ :type action: dart.model.action.Action """
    return update_action(action, Action.from_dict(request.get_json()))