Skip to content

Commit 3ced6d2

Browse files
committed
fix: Refactor settings
1 parent 723841e commit 3ced6d2

4 files changed

Lines changed: 31 additions & 25 deletions

File tree

src/settings.py

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -5,19 +5,21 @@
55
from pydantic import BaseSettings, HttpUrl
66

77

8-
# (fixme) Move all settings to read from here.
9-
class Settings(BaseSettings):
8+
class AggregatorSettings(BaseSettings):
109
"""Create Settings from env."""
1110

12-
snyk_package_url_format: HttpUrl = 'https://snyk.io/vuln/{ecosystem}:{package}'
13-
snyk_signin_url: HttpUrl = 'https://snyk.io/login'
14-
snyk_ecosystem_map: Dict[str, str] = {'pypi': 'pip'}
11+
snyk_package_url_format: HttpUrl = "https://snyk.io/vuln/{ecosystem}:{package}"
12+
snyk_signin_url: HttpUrl = "https://snyk.io/login"
13+
snyk_ecosystem_map: Dict[str, str] = {"pypi": "pip"}
1514
disable_unknown_package_flow: bool = False
16-
chester_service_host: str = 'not_set'
17-
pypi_service_host: str = 'not_set'
18-
golang_service_host: str = 'not_set'
19-
hpf_service_host: str = 'not_set'
20-
maven_service_host: str = 'not_set'
15+
16+
17+
class RecommenderSettings(BaseSettings):
18+
"""Create Recommender Settings from env."""
19+
20+
chester_service_host: str = "notset"
21+
pypi_service_host: str = "notset"
22+
maven_service_host: str = "notset"
2123
service_port: int = 6006
2224
unknown_packages_threshold: float = 0.3
2325
max_companion_packages: int = 5

src/stack_aggregator.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
import requests
1313
import copy
1414
from collections import defaultdict
15-
from src.settings import Settings
15+
from src.settings import AggregatorSettings
1616
from src.utils import (select_latest_version, server_create_analysis, LICENSE_SCORING_URL_REST,
1717
post_http_request, GREMLIN_SERVER_URL_REST, persist_data_in_db,
1818
GREMLIN_QUERY_SIZE, format_date)
@@ -663,7 +663,7 @@ def execute(aggregated=None, persist=True):
663663
'result': stack_data}
664664
# Ingestion of Unknown dependencies
665665
logger.info("Unknown ingestion flow process initiated.")
666-
if Settings().disable_unknown_package_flow:
666+
if AggregatorSettings().disable_unknown_package_flow:
667667
logger.warning('Skipping unknown flow %s', unknown_dep_list)
668668
else:
669669
try:

src/v2/recommender.py

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
from src.utils import get_session_retry, persist_data_in_db, post_gremlin
1515
from src.v2.stack_aggregator import get_github_details, get_snyk_package_link
1616
from src.v2.normalized_packages import NormalizedPackages
17-
from src.settings import Settings
17+
from src.settings import RecommenderSettings
1818

1919
from src.v2.models import (
2020
RecommenderRequest,
@@ -32,8 +32,10 @@ class InsightsRequest(BaseModel):
3232
ecosystem: Ecosystem
3333
transitive_stack: List[str] = []
3434
package_list: List[str]
35-
unknown_packages_ratio_threshold: float = Settings().unknown_packages_threshold
36-
comp_package_count_threshold: int = Settings().max_companion_packages
35+
unknown_packages_ratio_threshold: float = (
36+
RecommenderSettings().unknown_packages_threshold
37+
)
38+
comp_package_count_threshold: int = RecommenderSettings().max_companion_packages
3739

3840

3941
class InsightsCallException(Exception):
@@ -46,15 +48,17 @@ class InsightsWithEmptyPackageException(Exception):
4648

4749
def _prepare_insights_url(host: str) -> str:
4850
assert host
49-
url = "http://{host}:{port}".format(host=host, port=Settings().service_port)
51+
url = "http://{host}:{port}".format(
52+
host=host, port=RecommenderSettings().service_port
53+
)
5054
endpoint = "{url}/api/v1/companion_recommendation".format(url=url)
5155
return endpoint
5256

5357

5458
ECOSYSTEM_TO_INSIGHTS_URL = {
55-
"pypi": _prepare_insights_url(Settings().pypi_service_host),
56-
"npm": _prepare_insights_url(Settings().chester_service_host),
57-
"maven": _prepare_insights_url(Settings().maven_service_host),
59+
"pypi": _prepare_insights_url(RecommenderSettings().pypi_service_host),
60+
"npm": _prepare_insights_url(RecommenderSettings().chester_service_host),
61+
"maven": _prepare_insights_url(RecommenderSettings().maven_service_host),
5862
}
5963

6064

src/v2/stack_aggregator.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
from typing import Dict, List, Tuple, Set
1515
from f8a_utils.gh_utils import GithubUtils
1616

17-
from src.settings import Settings
17+
from src.settings import AggregatorSettings
1818
from src.utils import (select_latest_version, server_create_analysis,
1919
persist_data_in_db, post_gremlin, GREMLIN_QUERY_SIZE,
2020
format_date)
@@ -171,8 +171,8 @@ def _has_vulnerability(pkg: PackageDetails) -> bool:
171171
# (fixme) link to snyk package should be identified during ingestion.
172172
def get_snyk_package_link(ecosystem: str, package: str) -> str:
173173
"""Prepare snyk package link based on ecosystem and package name."""
174-
ecosystem = Settings().snyk_ecosystem_map.get(ecosystem, ecosystem)
175-
return Settings().snyk_package_url_format.format(ecosystem=ecosystem,
174+
ecosystem = AggregatorSettings().snyk_ecosystem_map.get(ecosystem, ecosystem)
175+
return AggregatorSettings().snyk_package_url_format.format(ecosystem=ecosystem,
176176
package=quote(package, safe=''))
177177

178178

@@ -302,11 +302,11 @@ def get_result(self) -> StackAggregatorResult:
302302
analyzed_dependencies=package_details,
303303
unknown_dependencies=unknown_dependencies,
304304
license_analysis=license_analysis,
305-
registration_link=Settings().snyk_signin_url)
305+
registration_link=AggregatorSettings().snyk_signin_url)
306306

307307
def initiate_unknown_package_ingestion(self):
308308
"""Ingestion of Unknown dependencies."""
309-
if Settings().disable_unknown_package_flow:
309+
if AggregatorSettings().disable_unknown_package_flow:
310310
logger.warning('Skipping unknown flow %s', self.get_all_unknown_packages())
311311
return
312312

@@ -383,7 +383,7 @@ def __init__(self, request: StackAggregatorRequest = None,
383383

384384
def initiate_unknown_package_ingestion(self):
385385
"""Ingestion of Unknown dependencies."""
386-
if Settings().disable_unknown_package_flow:
386+
if AggregatorSettings().disable_unknown_package_flow:
387387
logger.warning('Skipping unknown flow %s', self.get_all_unknown_packages())
388388
return
389389
logger.error('Ingestion is Not active for Golang.')

0 commit comments

Comments
 (0)