Skip to content

Commit 7d6c2fd

Browse files
authored
Merge pull request #265 from bhcopeland/add-user-agent-header
Add User agent
2 parents 184905e + b5cebe9 commit 7d6c2fd

File tree

8 files changed

+33
-10
lines changed

8 files changed

+33
-10
lines changed

kcidev/libs/common.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,24 @@
55
import logging
66
import os
77
import sys
8+
from importlib.metadata import PackageNotFoundError, version
89

910
import click
11+
import requests
1012

1113
if sys.version_info >= (3, 11):
1214
import tomllib
1315
else:
1416
import tomli as tomllib
1517

18+
try:
19+
kcidev_version = version("kci-dev")
20+
except PackageNotFoundError:
21+
kcidev_version = "unknown"
22+
23+
kcidev_session = requests.Session()
24+
kcidev_session.headers["User-Agent"] = f"kci-dev/{kcidev_version}"
25+
1626

1727
def load_toml(settings, subcommand):
1828
fname = "kci-dev.toml"

kcidev/libs/dashboard.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -83,12 +83,12 @@ def wrapper(
8383

8484
@_dashboard_request
8585
def dashboard_api_post(endpoint, params, use_json, body, max_retries=3):
86-
return requests.post(endpoint, json=body)
86+
return kcidev_session.post(endpoint, json=body)
8787

8888

8989
@_dashboard_request
9090
def dashboard_api_fetch(endpoint, params, use_json, max_retries=3, error_verbose=True):
91-
return requests.get(endpoint)
91+
return kcidev_session.get(endpoint)
9292

9393

9494
def dashboard_fetch_summary(origin, giturl, branch, commit, arch, use_json):

kcidev/libs/files.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
import requests
77

8-
from kcidev.libs.common import kci_err
8+
from kcidev.libs.common import kci_err, kcidev_session
99

1010
INVALID_FILE_CHARS = re.compile(r'[\\/:"*?<>|]+')
1111

@@ -23,7 +23,7 @@ def download_logs_to_file(log_url, log_file):
2323
try:
2424
# Download compressed log
2525
logging.debug("Fetching compressed log file")
26-
response = requests.get(log_url)
26+
response = kcidev_session.get(log_url)
2727
response.raise_for_status()
2828

2929
# Decompress log

kcidev/libs/maestro_common.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ def maestro_get_node(url, nodeid):
6161
maestro_print_api_call(url)
6262

6363
try:
64-
response = requests.get(url, headers=headers)
64+
response = kcidev_session.get(url, headers=headers)
6565
logging.debug(f"Node request status: {response.status_code}")
6666
response.raise_for_status()
6767
except requests.exceptions.HTTPError as ex:
@@ -107,7 +107,7 @@ def maestro_get_nodes(url, limit, offset, filter, paginate):
107107
maestro_print_api_call(url)
108108

109109
try:
110-
response = requests.get(url, headers=headers)
110+
response = kcidev_session.get(url, headers=headers)
111111
logging.debug(f"Nodes request status: {response.status_code}")
112112
response.raise_for_status()
113113
except requests.exceptions.HTTPError as ex:
@@ -169,7 +169,7 @@ def maestro_retrieve_treeid_nodes(baseurl, token, treeid):
169169
logging.debug(f"Tree nodes URL: {url}")
170170

171171
try:
172-
response = requests.get(url, headers=headers, timeout=30)
172+
response = kcidev_session.get(url, headers=headers, timeout=30)
173173
logging.debug(f"Tree nodes request status: {response.status_code}")
174174
except requests.exceptions.RequestException as e:
175175
logging.warning(f"Request exception retrieving tree nodes: {e}")

kcidev/main.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
@click.group(
2222
help="Stand alone tool for Linux Kernel developers and maintainers to interact with KernelCI."
2323
)
24-
@click.version_option("0.1.10", prog_name="kci-dev")
24+
@click.version_option(kcidev_version, prog_name="kci-dev")
2525
@click.option(
2626
"--settings",
2727
default=".kci-dev.toml",

kcidev/subcommands/checkout.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ def send_checkout_full(baseurl, token, **kwargs):
4141
maestro_print_api_call(url, data)
4242
try:
4343
logging.debug(f"POST request to: {url}")
44-
response = requests.post(url, headers=headers, data=jdata, timeout=30)
44+
response = kcidev_session.post(url, headers=headers, data=jdata, timeout=30)
4545
logging.debug(f"Checkout response status: {response.status_code}")
4646
except requests.exceptions.RequestException as e:
4747
logging.error(f"Checkout API request failed: {e}")

kcidev/subcommands/testretry.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ def send_jobretry(baseurl, jobid, token):
2727

2828
try:
2929
logging.debug("Sending POST request for job retry")
30-
response = requests.post(url, headers=headers, data=jdata)
30+
response = kcidev_session.post(url, headers=headers, data=jdata)
3131
logging.debug(f"Response status: {response.status_code}")
3232
except requests.exceptions.RequestException as e:
3333
logging.error(f"Failed to send job retry request: {e}")

tests/test_kcidev.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11
import os
2+
import re
23
import shutil
34
from subprocess import PIPE, run
45

56
import git
67
import pytest
78

9+
from kcidev.libs.common import kcidev_session, kcidev_version
810
from kcidev.subcommands.config import add_config
911

1012

@@ -918,6 +920,17 @@ def test_kcidev_results_build_with_real_id():
918920
pass
919921

920922

923+
def test_kcidev_session_user_agent():
924+
ua = kcidev_session.headers["User-Agent"]
925+
assert ua == f"kci-dev/{kcidev_version}"
926+
assert kcidev_version != "unknown"
927+
928+
929+
def test_kcidev_version_from_metadata():
930+
assert isinstance(kcidev_version, str)
931+
assert re.match(r"^\d+\.\d+\.\d+", kcidev_version)
932+
933+
921934
def test_clean():
922935
# clean enviroment
923936
shutil.rmtree("my-new-repo/")

0 commit comments

Comments
 (0)