enforce collection id for login parameters (#1043)
This commit is contained in:
@@ -51,7 +51,11 @@ from skyvern.forge.sdk.schemas.tasks import (
|
|||||||
)
|
)
|
||||||
from skyvern.forge.sdk.services import org_auth_service
|
from skyvern.forge.sdk.services import org_auth_service
|
||||||
from skyvern.forge.sdk.settings_manager import SettingsManager
|
from skyvern.forge.sdk.settings_manager import SettingsManager
|
||||||
from skyvern.forge.sdk.workflow.exceptions import FailedToCreateWorkflow, FailedToUpdateWorkflow
|
from skyvern.forge.sdk.workflow.exceptions import (
|
||||||
|
FailedToCreateWorkflow,
|
||||||
|
FailedToUpdateWorkflow,
|
||||||
|
WorkflowParameterMissingRequiredValue,
|
||||||
|
)
|
||||||
from skyvern.forge.sdk.workflow.models.workflow import (
|
from skyvern.forge.sdk.workflow.models.workflow import (
|
||||||
RunWorkflowResponse,
|
RunWorkflowResponse,
|
||||||
Workflow,
|
Workflow,
|
||||||
@@ -707,6 +711,8 @@ async def create_workflow(
|
|||||||
return await app.WORKFLOW_SERVICE.create_workflow_from_request(
|
return await app.WORKFLOW_SERVICE.create_workflow_from_request(
|
||||||
organization=current_org, request=workflow_create_request
|
organization=current_org, request=workflow_create_request
|
||||||
)
|
)
|
||||||
|
except WorkflowParameterMissingRequiredValue as e:
|
||||||
|
raise e
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
LOG.error("Failed to create workflow", exc_info=True, organization_id=current_org.organization_id)
|
LOG.error("Failed to create workflow", exc_info=True, organization_id=current_org.organization_id)
|
||||||
raise FailedToCreateWorkflow(str(e))
|
raise FailedToCreateWorkflow(str(e))
|
||||||
@@ -753,6 +759,8 @@ async def update_workflow(
|
|||||||
request=workflow_create_request,
|
request=workflow_create_request,
|
||||||
workflow_permanent_id=workflow_permanent_id,
|
workflow_permanent_id=workflow_permanent_id,
|
||||||
)
|
)
|
||||||
|
except WorkflowParameterMissingRequiredValue as e:
|
||||||
|
raise e
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
LOG.exception("Failed to update workflow", workflow_permanent_id=workflow_permanent_id)
|
LOG.exception("Failed to update workflow", workflow_permanent_id=workflow_permanent_id)
|
||||||
raise FailedToUpdateWorkflow(workflow_permanent_id, f"<{type(e).__name__}: {str(e)}>")
|
raise FailedToUpdateWorkflow(workflow_permanent_id, f"<{type(e).__name__}: {str(e)}>")
|
||||||
|
|||||||
@@ -99,3 +99,11 @@ class InvalidFileType(BaseWorkflowHTTPException):
|
|||||||
f"File URL {file_url} is not a valid {file_type} file. Error: {error}",
|
f"File URL {file_url} is not a valid {file_type} file. Error: {error}",
|
||||||
status_code=status.HTTP_422_UNPROCESSABLE_ENTITY,
|
status_code=status.HTTP_422_UNPROCESSABLE_ENTITY,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
class WorkflowParameterMissingRequiredValue(BaseWorkflowHTTPException):
|
||||||
|
def __init__(self, workflow_parameter_type: str, workflow_parameter_key: str, required_value: str) -> None:
|
||||||
|
super().__init__(
|
||||||
|
f"Missing required value for workflow parameter. Workflow parameter type: {workflow_parameter_type}. workflow_parameter_key: {workflow_parameter_key}. Required value: {required_value}",
|
||||||
|
status_code=status.HTTP_400_BAD_REQUEST,
|
||||||
|
)
|
||||||
|
|||||||
@@ -19,6 +19,7 @@ from skyvern.forge.sdk.workflow.exceptions import (
|
|||||||
InvalidWorkflowDefinition,
|
InvalidWorkflowDefinition,
|
||||||
WorkflowDefinitionHasDuplicateParameterKeys,
|
WorkflowDefinitionHasDuplicateParameterKeys,
|
||||||
WorkflowDefinitionHasReservedParameterKeys,
|
WorkflowDefinitionHasReservedParameterKeys,
|
||||||
|
WorkflowParameterMissingRequiredValue,
|
||||||
)
|
)
|
||||||
from skyvern.forge.sdk.workflow.models.block import (
|
from skyvern.forge.sdk.workflow.models.block import (
|
||||||
BlockStatus,
|
BlockStatus,
|
||||||
@@ -957,6 +958,12 @@ class WorkflowService:
|
|||||||
description=parameter.description,
|
description=parameter.description,
|
||||||
)
|
)
|
||||||
elif parameter.parameter_type == ParameterType.BITWARDEN_LOGIN_CREDENTIAL:
|
elif parameter.parameter_type == ParameterType.BITWARDEN_LOGIN_CREDENTIAL:
|
||||||
|
if not parameter.bitwarden_collection_id:
|
||||||
|
raise WorkflowParameterMissingRequiredValue(
|
||||||
|
workflow_parameter_type=ParameterType.BITWARDEN_LOGIN_CREDENTIAL,
|
||||||
|
workflow_parameter_key=parameter.key,
|
||||||
|
required_value="bitwarden_collection_id",
|
||||||
|
)
|
||||||
parameters[parameter.key] = await self.create_bitwarden_login_credential_parameter(
|
parameters[parameter.key] = await self.create_bitwarden_login_credential_parameter(
|
||||||
workflow_id=workflow.workflow_id,
|
workflow_id=workflow.workflow_id,
|
||||||
bitwarden_client_id_aws_secret_key=parameter.bitwarden_client_id_aws_secret_key,
|
bitwarden_client_id_aws_secret_key=parameter.bitwarden_client_id_aws_secret_key,
|
||||||
|
|||||||
Reference in New Issue
Block a user