Skip to content

Commit

Permalink
enforce collection id for login parameters (#1043)
Browse files Browse the repository at this point in the history
  • Loading branch information
wintonzheng authored Oct 24, 2024
1 parent ae86b45 commit b308c6b
Show file tree
Hide file tree
Showing 3 changed files with 24 additions and 1 deletion.
10 changes: 9 additions & 1 deletion skyvern/forge/sdk/routes/agent_protocol.py
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,11 @@
)
from skyvern.forge.sdk.services import org_auth_service
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 (
RunWorkflowResponse,
Workflow,
Expand Down Expand Up @@ -707,6 +711,8 @@ async def create_workflow(
return await app.WORKFLOW_SERVICE.create_workflow_from_request(
organization=current_org, request=workflow_create_request
)
except WorkflowParameterMissingRequiredValue as e:
raise e
except Exception as e:
LOG.error("Failed to create workflow", exc_info=True, organization_id=current_org.organization_id)
raise FailedToCreateWorkflow(str(e))
Expand Down Expand Up @@ -753,6 +759,8 @@ async def update_workflow(
request=workflow_create_request,
workflow_permanent_id=workflow_permanent_id,
)
except WorkflowParameterMissingRequiredValue as e:
raise e
except Exception as e:
LOG.exception("Failed to update workflow", workflow_permanent_id=workflow_permanent_id)
raise FailedToUpdateWorkflow(workflow_permanent_id, f"<{type(e).__name__}: {str(e)}>")
Expand Down
8 changes: 8 additions & 0 deletions skyvern/forge/sdk/workflow/exceptions.py
Original file line number Diff line number Diff line change
Expand Up @@ -99,3 +99,11 @@ def __init__(self, file_url: str, file_type: str, error: str) -> None:
f"File URL {file_url} is not a valid {file_type} file. Error: {error}",
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,
)
7 changes: 7 additions & 0 deletions skyvern/forge/sdk/workflow/service.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
InvalidWorkflowDefinition,
WorkflowDefinitionHasDuplicateParameterKeys,
WorkflowDefinitionHasReservedParameterKeys,
WorkflowParameterMissingRequiredValue,
)
from skyvern.forge.sdk.workflow.models.block import (
BlockStatus,
Expand Down Expand Up @@ -957,6 +958,12 @@ async def create_workflow_from_request(
description=parameter.description,
)
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(
workflow_id=workflow.workflow_id,
bitwarden_client_id_aws_secret_key=parameter.bitwarden_client_id_aws_secret_key,
Expand Down

0 comments on commit b308c6b

Please sign in to comment.