Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 12 additions & 0 deletions devservices/commands/down.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
from __future__ import annotations

import concurrent.futures
import logging
import os
import subprocess
from argparse import _SubParsersAction
Expand All @@ -15,6 +16,7 @@
from devservices.constants import DEVSERVICES_DEPENDENCIES_CACHE_DIR
from devservices.constants import DEVSERVICES_DEPENDENCIES_CACHE_DIR_KEY
from devservices.constants import DEVSERVICES_DIR_NAME
from devservices.constants import LOGGER_NAME
from devservices.exceptions import ConfigError
from devservices.exceptions import ConfigNotFoundError
from devservices.exceptions import DependencyError
Expand Down Expand Up @@ -116,6 +118,16 @@ def down(args: Namespace) -> None:
== DependencyType.SUPERVISOR
]

logger = logging.getLogger(LOGGER_NAME)
logger.info(
"Stopping service",
extra={
"service_name": service.name,
"exclude_local": exclude_local,
"mode": list(active_modes),
},
)

with Status(
lambda: console.warning(f"Stopping {service.name}"),
) as status:
Expand Down
13 changes: 13 additions & 0 deletions devservices/commands/up.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
from __future__ import annotations

import concurrent.futures
import logging
import os
import subprocess
from argparse import _SubParsersAction
Expand All @@ -17,6 +18,7 @@
from devservices.constants import DEVSERVICES_DEPENDENCIES_CACHE_DIR
from devservices.constants import DEVSERVICES_DEPENDENCIES_CACHE_DIR_KEY
from devservices.constants import DEVSERVICES_DIR_NAME
from devservices.constants import LOGGER_NAME
from devservices.exceptions import ConfigError
from devservices.exceptions import ConfigNotFoundError
from devservices.exceptions import ContainerHealthcheckFailedError
Expand Down Expand Up @@ -94,6 +96,17 @@ def up(args: Namespace, existing_status: Status | None = None) -> None:
mode = args.mode
exclude_local = getattr(args, "exclude_local", False)

logger = logging.getLogger(LOGGER_NAME)
logger.info(
"Starting service",
extra={
"service_name": service.name,
"mode": mode,
"exclude_local": exclude_local,
"available_modes": list(modes.keys()),
},
)

state = State()

with Status(
Expand Down
7 changes: 6 additions & 1 deletion devservices/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
from sentry_sdk import set_user
from sentry_sdk import start_transaction
from sentry_sdk.integrations.argv import ArgvIntegration
from sentry_sdk.integrations.logging import LoggingIntegration
from sentry_sdk.types import Event
from sentry_sdk.types import Hint

Expand Down Expand Up @@ -79,7 +80,11 @@ def before_send_transaction(event: Event, hint: Hint) -> Event:
dsn="https://56470da7302c16e83141f62f88e46449@o1.ingest.us.sentry.io/4507946704961536",
traces_sample_rate=1.0,
profiles_sample_rate=1.0,
integrations=[ArgvIntegration()],
integrations=[
ArgvIntegration(),
LoggingIntegration(sentry_logs_level=logging.DEBUG),
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

sentry logs integrates directly with the logging library:
https://docs.sentry.io/platforms/python/logs/

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

hmmmm, looks like I'll actually need to instrument the sentry sdk since debug logs only appear when the debug flag is passed in

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done

],
enable_logs=True,
environment=sentry_environment,
before_send=before_send_error,
before_send_transaction=before_send_transaction,
Expand Down
29 changes: 29 additions & 0 deletions devservices/utils/dependencies.py
Original file line number Diff line number Diff line change
Expand Up @@ -411,12 +411,23 @@ def install_dependencies(


def install_dependency(dependency: RemoteConfig) -> set[InstalledRemoteDependency]:
logger = logging.getLogger(LOGGER_NAME)
dependency_repo_dir = os.path.join(
DEVSERVICES_DEPENDENCIES_CACHE_DIR,
DEPENDENCY_CONFIG_VERSION,
dependency.repo_name,
)

logger.info(
"Installing dependency",
extra={
"repo_name": dependency.repo_name,
"repo_link": dependency.repo_link,
"branch": dependency.branch,
"mode": dependency.mode,
},
)

os.makedirs(DEVSERVICES_DEPENDENCIES_CACHE_DIR, exist_ok=True)

# Ensure that only one process is installing a specific dependency at a time
Expand Down Expand Up @@ -498,6 +509,15 @@ def _update_dependency(
dependency: RemoteConfig,
dependency_repo_dir: str,
) -> None:
logger = logging.getLogger(LOGGER_NAME)
logger.info(
"Updating dependency",
extra={
"repo_name": dependency.repo_name,
"repo_link": dependency.repo_link,
"branch": dependency.branch,
},
)
git_config_manager = GitConfigManager(
dependency_repo_dir,
DEPENDENCY_GIT_PARTIAL_CLONE_CONFIG_OPTIONS,
Expand Down Expand Up @@ -580,6 +600,15 @@ def _checkout_dependency(
dependency: RemoteConfig,
dependency_repo_dir: str,
) -> None:
logger = logging.getLogger(LOGGER_NAME)
logger.info(
"Checking out dependency",
extra={
"repo_name": dependency.repo_name,
"repo_link": dependency.repo_link,
"branch": dependency.branch,
},
)
with tempfile.TemporaryDirectory() as temp_dir:
try:
_run_command(
Expand Down
8 changes: 8 additions & 0 deletions devservices/utils/docker_compose.py
Original file line number Diff line number Diff line change
Expand Up @@ -306,6 +306,14 @@ def run_cmd(
console = Console()
cmd_pretty = shlex.join(cmd)

logger.info(
"Running docker compose command",
extra={
"command": cmd_pretty,
"max_retries": retries,
},
)

proc = None
retries += 1 # initial try

Expand Down
Loading