Skip to content
Merged
Changes from all commits
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
84 changes: 51 additions & 33 deletions apiserver/dora/service/deployments/analytics.py
Original file line number Diff line number Diff line change
Expand Up @@ -97,39 +97,8 @@ def get_team_deployment_frequency_metrics(
)
)

team_daily_deployments = generate_expanded_buckets(
team_successful_deployments, interval, "conducted_at", "daily"
)
team_weekly_deployments = generate_expanded_buckets(
team_successful_deployments, interval, "conducted_at", "weekly"
)
team_monthly_deployments = generate_expanded_buckets(
team_successful_deployments, interval, "conducted_at", "monthly"
)

daily_deployment_frequency = (
self._get_deployment_frequency_from_date_to_deployment_map(
team_daily_deployments
)
)

weekly_deployment_frequency = (
self._get_deployment_frequency_from_date_to_deployment_map(
team_weekly_deployments
)
)

monthly_deployment_frequency = (
self._get_deployment_frequency_from_date_to_deployment_map(
team_monthly_deployments
)
)

return DeploymentFrequencyMetrics(
len(team_successful_deployments),
daily_deployment_frequency,
weekly_deployment_frequency,
monthly_deployment_frequency,
return self._get_deployment_frequency_metrics(
team_successful_deployments, interval
)

def get_weekly_deployment_frequency_trends(
Expand Down Expand Up @@ -218,6 +187,55 @@ def _get_deployment_frequency_from_date_to_deployment_map(

return get_average_of_dict_values(date_to_deployment_count_map)

def _get_deployment_frequency_metrics(
self, successful_deployments: List[Deployment], interval: Interval
) -> DeploymentFrequencyMetrics:

team_daily_deployments = generate_expanded_buckets(
successful_deployments, interval, "conducted_at", "daily"
)
team_weekly_deployments = generate_expanded_buckets(
successful_deployments, interval, "conducted_at", "weekly"
)
team_monthly_deployments = generate_expanded_buckets(
successful_deployments, interval, "conducted_at", "monthly"
)

daily_deployment_frequency = (
self._get_deployment_frequency_from_date_to_deployment_map(
team_daily_deployments
)
)

weekly_deployment_frequency = (
self._get_deployment_frequency_from_date_to_deployment_map(
team_weekly_deployments
)
)

monthly_deployment_frequency = (
self._get_deployment_frequency_from_date_to_deployment_map(
team_monthly_deployments
)
)

return DeploymentFrequencyMetrics(
len(successful_deployments),
daily_deployment_frequency,
weekly_deployment_frequency,
monthly_deployment_frequency,
)

def _get_weekly_deployment_frequency_trends(
self, successful_deployments: List[Deployment], interval: Interval
) -> Dict[datetime, int]:

team_weekly_deployments = generate_expanded_buckets(
successful_deployments, interval, "conducted_at", "weekly"
)

return get_key_to_count_map_from_key_to_list_map(team_weekly_deployments)


def get_deployment_analytics_service() -> DeploymentAnalyticsService:
return DeploymentAnalyticsService(get_deployments_service(), CodeRepoService())