Update Bitwarden code to use env instead of secret manager if env is present (#1592)

Co-authored-by: Suchintan <suchintan@users.noreply.github.com>
This commit is contained in:
Shuchang Zheng
2025-01-17 14:13:24 -08:00
committed by GitHub
parent 09a4f4d1ef
commit 74271803ec
2 changed files with 33 additions and 10 deletions

View File

@@ -134,6 +134,11 @@ class Settings(BaseSettings):
VERIFICATION_CODE_INITIAL_WAIT_TIME_SECS: int = 40 VERIFICATION_CODE_INITIAL_WAIT_TIME_SECS: int = 40
VERIFICATION_CODE_POLLING_TIMEOUT_MINS: int = 5 VERIFICATION_CODE_POLLING_TIMEOUT_MINS: int = 5
# Bitwarden Settings
BITWARDEN_CLIENT_ID: str | None = None
BITWARDEN_CLIENT_SECRET: str | None = None
BITWARDEN_MASTER_PASSWORD: str | None = None
SVG_MAX_LENGTH: int = 100000 SVG_MAX_LENGTH: int = 100000
ENABLE_LOG_ARTIFACTS: bool = False ENABLE_LOG_ARTIFACTS: bool = False

View File

@@ -3,6 +3,7 @@ from typing import TYPE_CHECKING, Any
import structlog import structlog
from skyvern.config import settings
from skyvern.exceptions import BitwardenBaseError, SkyvernException, WorkflowRunContextNotInitialized from skyvern.exceptions import BitwardenBaseError, SkyvernException, WorkflowRunContextNotInitialized
from skyvern.forge.sdk.api.aws import AsyncAWSClient from skyvern.forge.sdk.api.aws import AsyncAWSClient
from skyvern.forge.sdk.schemas.organizations import Organization from skyvern.forge.sdk.schemas.organizations import Organization
@@ -24,7 +25,6 @@ if TYPE_CHECKING:
LOG = structlog.get_logger() LOG = structlog.get_logger()
BlockMetadata = dict[str, str | int | float | bool | dict | list] BlockMetadata = dict[str, str | int | float | bool | dict | list]
@@ -159,9 +159,15 @@ class WorkflowRunContext:
elif parameter.parameter_type == ParameterType.BITWARDEN_LOGIN_CREDENTIAL: elif parameter.parameter_type == ParameterType.BITWARDEN_LOGIN_CREDENTIAL:
try: try:
# Get the Bitwarden login credentials from AWS secrets # Get the Bitwarden login credentials from AWS secrets
client_id = await aws_client.get_secret(parameter.bitwarden_client_id_aws_secret_key) client_id = settings.BITWARDEN_CLIENT_ID or await aws_client.get_secret(
client_secret = await aws_client.get_secret(parameter.bitwarden_client_secret_aws_secret_key) parameter.bitwarden_client_id_aws_secret_key
master_password = await aws_client.get_secret(parameter.bitwarden_master_password_aws_secret_key) )
client_secret = settings.BITWARDEN_CLIENT_SECRET or await aws_client.get_secret(
parameter.bitwarden_client_secret_aws_secret_key
)
master_password = settings.BITWARDEN_MASTER_PASSWORD or await aws_client.get_secret(
parameter.bitwarden_master_password_aws_secret_key
)
except Exception as e: except Exception as e:
LOG.error(f"Failed to get Bitwarden login credentials from AWS secrets. Error: {e}") LOG.error(f"Failed to get Bitwarden login credentials from AWS secrets. Error: {e}")
raise e raise e
@@ -228,9 +234,15 @@ class WorkflowRunContext:
elif parameter.parameter_type == ParameterType.BITWARDEN_SENSITIVE_INFORMATION: elif parameter.parameter_type == ParameterType.BITWARDEN_SENSITIVE_INFORMATION:
try: try:
# Get the Bitwarden login credentials from AWS secrets # Get the Bitwarden login credentials from AWS secrets
client_id = await aws_client.get_secret(parameter.bitwarden_client_id_aws_secret_key) client_id = settings.BITWARDEN_CLIENT_ID or await aws_client.get_secret(
client_secret = await aws_client.get_secret(parameter.bitwarden_client_secret_aws_secret_key) parameter.bitwarden_client_id_aws_secret_key
master_password = await aws_client.get_secret(parameter.bitwarden_master_password_aws_secret_key) )
client_secret = settings.BITWARDEN_CLIENT_SECRET or await aws_client.get_secret(
parameter.bitwarden_client_secret_aws_secret_key
)
master_password = settings.BITWARDEN_MASTER_PASSWORD or await aws_client.get_secret(
parameter.bitwarden_master_password_aws_secret_key
)
except Exception as e: except Exception as e:
LOG.error(f"Failed to get Bitwarden login credentials from AWS secrets. Error: {e}") LOG.error(f"Failed to get Bitwarden login credentials from AWS secrets. Error: {e}")
raise e raise e
@@ -280,9 +292,15 @@ class WorkflowRunContext:
elif parameter.parameter_type == ParameterType.BITWARDEN_CREDIT_CARD_DATA: elif parameter.parameter_type == ParameterType.BITWARDEN_CREDIT_CARD_DATA:
try: try:
# Get the Bitwarden login credentials from AWS secrets # Get the Bitwarden login credentials from AWS secrets
client_id = await aws_client.get_secret(parameter.bitwarden_client_id_aws_secret_key) client_id = settings.BITWARDEN_CLIENT_ID or await aws_client.get_secret(
client_secret = await aws_client.get_secret(parameter.bitwarden_client_secret_aws_secret_key) parameter.bitwarden_client_id_aws_secret_key
master_password = await aws_client.get_secret(parameter.bitwarden_master_password_aws_secret_key) )
client_secret = settings.BITWARDEN_CLIENT_SECRET or await aws_client.get_secret(
parameter.bitwarden_client_secret_aws_secret_key
)
master_password = settings.BITWARDEN_MASTER_PASSWORD or await aws_client.get_secret(
parameter.bitwarden_master_password_aws_secret_key
)
except Exception as e: except Exception as e:
LOG.error(f"Failed to get Bitwarden login credentials from AWS secrets. Error: {e}") LOG.error(f"Failed to get Bitwarden login credentials from AWS secrets. Error: {e}")
raise e raise e