Skip to content

Commit de14d45

Browse files
committed
devmate/cli: Add support for self-signed certificates in CLI.
- Imported `warnings` and `urllib3` to suppress SSL warnings for self-signed certificates. - Introduced `do_api_call` function to handle API calls and manage SSL verification. - Replaced direct `requests` calls with `do_api_call` across various CLI commands for a consistent approach to handling self-signed certificates. Signed-off-by: Nikolay Martyanov <nikolay@zededa.com>
1 parent ea15b80 commit de14d45

1 file changed

Lines changed: 25 additions & 8 deletions

File tree

client/devmatecli/client.py

Lines changed: 25 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66
from datetime import datetime, timezone
77
import humanize
88
from prettytable import PrettyTable
9+
import warnings
10+
import urllib3
911

1012

1113
# Class to handle the server address and port
@@ -61,9 +63,24 @@ def handle_unexpected_status(response):
6163
print(f"Unexpected status code {response.status_code}")
6264

6365

66+
def do_api_call(method, endpoint, payload=None):
67+
warnings.filterwarnings("ignore", category=urllib3.exceptions.InsecureRequestWarning)
68+
try:
69+
if method == 'get':
70+
return requests.get(f"{devmate_server.base_url}/{endpoint}", verify=False)
71+
elif method == 'post':
72+
return requests.post(f"{devmate_server.base_url}/{endpoint}", json=payload, verify=False)
73+
elif method == 'delete':
74+
return requests.delete(f"{devmate_server.base_url}/{endpoint}", verify=False)
75+
else:
76+
raise ValueError(f"Invalid method {method}")
77+
finally:
78+
warnings.resetwarnings()
79+
80+
6481
def check_server_accessibility():
6582
try:
66-
response = requests.get(f"{devmate_server.base_url}/health")
83+
response = do_api_call('get', 'health')
6784
if response.status_code != 200:
6885
# Check that it's not one of 5** errors
6986
if response.status_code // 100 == 5:
@@ -82,7 +99,7 @@ def datetime_now():
8299

83100

84101
def list_devices():
85-
response = requests.get(f"{devmate_server.base_url}/devices/list")
102+
response = do_api_call('get', 'devices/list')
86103
if response.status_code == 200:
87104
devices = response.json().get('devices', [])
88105

@@ -118,7 +135,7 @@ def list_devices():
118135

119136
def reserve_device(device_name, username):
120137
payload = {'device': device_name, 'username': username}
121-
response = requests.post(f"{devmate_server.base_url}/devices/reserve", json=payload)
138+
response = do_api_call('post', 'devices/reserve', payload=payload)
122139
if response.status_code == 200:
123140
print("Device successfully reserved.")
124141
elif response.status_code == 409:
@@ -133,7 +150,7 @@ def reserve_device(device_name, username):
133150

134151
def release_device(device_name):
135152
payload = {'device': device_name}
136-
response = requests.post(f"{devmate_server.base_url}/devices/release", json=payload)
153+
response = do_api_call('post', 'devices/release', payload=payload)
137154
if response.status_code == 200:
138155
print("Device successfully released.")
139156
elif response.status_code == 304:
@@ -148,7 +165,7 @@ def release_device(device_name):
148165

149166
def add_device(device_name, model):
150167
payload = {'device': device_name, 'model': model}
151-
response = requests.post(f"{devmate_server.base_url}/devices/add", json=payload)
168+
response = do_api_call('post', 'devices/add', payload=payload)
152169
if response.status_code == 201:
153170
print("Device successfully added.")
154171
elif response.status_code == 409:
@@ -161,7 +178,7 @@ def add_device(device_name, model):
161178

162179
def set_device_offline(device_name):
163180
payload = {'device': device_name}
164-
response = requests.post(f"{devmate_server.base_url}/devices/offline", json=payload)
181+
response = do_api_call('post', 'devices/offline', payload=payload)
165182
if response.status_code == 200:
166183
print("Device successfully set to offline.")
167184
elif response.status_code == 304:
@@ -176,7 +193,7 @@ def set_device_offline(device_name):
176193

177194
def set_device_online(device_name):
178195
payload = {'device': device_name}
179-
response = requests.post(f"{devmate_server.base_url}/devices/online", json=payload)
196+
response = do_api_call('post', 'devices/online', payload=payload)
180197
if response.status_code == 200:
181198
print("Device successfully set to online.")
182199
elif response.status_code == 304:
@@ -190,7 +207,7 @@ def set_device_online(device_name):
190207

191208

192209
def delete_device(device_name):
193-
response = requests.delete(f"{devmate_server.base_url}/devices/delete/{device_name}")
210+
response = do_api_call('delete', f'devices/delete/{device_name}')
194211
if response.status_code == 204:
195212
print("Device successfully deleted.")
196213
elif response.status_code == 404:

0 commit comments

Comments
 (0)