cgcsdk 1.0.13__py3-none-any.whl → 1.0.14__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
cgc/.env CHANGED
@@ -6,4 +6,4 @@ CONFIG_FILE_NAME = cfg.json
6
6
  TMP_DIR = .tmp
7
7
  RELEASE = 1
8
8
  MAJOR_VERSION = 0
9
- MINOR_VERSION = 13
9
+ MINOR_VERSION = 14
cgc/CHANGELOG.md CHANGED
@@ -1,5 +1,12 @@
1
1
  # Change Log
2
2
 
3
+ ## 1.0.14
4
+
5
+ Release on June 13, 2024
6
+
7
+ * fixed DB creation issue with a client
8
+ * fixed client handling when your context server is not available
9
+
3
10
  ## 1.0.13
4
11
 
5
12
  Release on June 05, 2024
@@ -1,16 +1,15 @@
1
1
  import click
2
- import os
3
2
  from cgc.commands.auth.auth_responses import (
4
3
  auth_register_response,
5
4
  login_successful_response,
6
5
  )
7
- from cgc.commands.auth.auth_utils import (
6
+ from cgc.commands.auth.auth_logic import (
8
7
  auth_create_api_key_with_save,
9
8
  auth_delete_api_key,
10
9
  auth_list_api_keys,
11
10
  )
12
- from cgc.utils.prepare_headers import (
13
- get_url_and_prepare_headers_register,
11
+ from cgc.utils.prepare_headers import get_url_and_prepare_headers_register
12
+ from cgc.utils.get_headers_data import (
14
13
  load_user_api_url,
15
14
  load_user_cgc_secret,
16
15
  )
@@ -0,0 +1,61 @@
1
+ import os
2
+ from cgc.utils.config_utils import get_config_path
3
+
4
+
5
+ from cgc.utils import get_headers_data, prepare_headers
6
+ from cgc.utils.consts.env_consts import TMP_DIR
7
+ from cgc.utils.requests_helper import call_api, EndpointTypes
8
+ from cgc.utils.response_utils import retrieve_and_validate_response_send_metric
9
+ from cgc.utils.config_utils import save_to_config
10
+
11
+ TMP_DIR_PATH = os.path.join(get_config_path(), TMP_DIR)
12
+
13
+
14
+ def auth_delete_api_key(api_key: str, user_id: str = None, password: str = None):
15
+ """Function to delete API key."""
16
+ url = f"{get_headers_data.load_user_api_url()}/v1/api/user/delete/api-key?api_key={api_key}"
17
+ headers = prepare_headers.prepare_headers_api_key(user_id, password)
18
+ metric = "auth.api-key"
19
+ __res = call_api(
20
+ request=EndpointTypes.delete,
21
+ url=url,
22
+ headers=headers,
23
+ )
24
+
25
+ json_data = retrieve_and_validate_response_send_metric(__res, metric)
26
+ return json_data["details"]
27
+
28
+
29
+ def auth_list_api_keys(user_id: str = None, password: str = None):
30
+ """Function to list API keys."""
31
+ url = f"{get_headers_data.load_user_api_url()}/v1/api/user/list/api-key"
32
+ headers = prepare_headers.prepare_headers_api_key(user_id, password)
33
+ metric = "auth.api-key"
34
+ __res = call_api(
35
+ request=EndpointTypes.get,
36
+ url=url,
37
+ headers=headers,
38
+ )
39
+
40
+ json_data = retrieve_and_validate_response_send_metric(__res, metric)
41
+ return json_data["details"].get("api_keys")
42
+
43
+
44
+ def auth_create_api_key_with_save(user_id: str = None, password: str = None):
45
+ """Function to create API key and API secret for user and save it to config file."""
46
+ url = f"{get_headers_data.load_user_api_url()}/v1/api/user/create/api-key"
47
+ headers = prepare_headers.prepare_headers_api_key(user_id, password)
48
+ metric = "auth.api-key"
49
+ __res = call_api(
50
+ request=EndpointTypes.post,
51
+ url=url,
52
+ headers=headers,
53
+ )
54
+
55
+ json_data = retrieve_and_validate_response_send_metric(__res, metric)
56
+ api_key = json_data["details"].get("_id")
57
+ secret = json_data["details"].get("secret")
58
+ save_to_config(api_key=api_key, api_secret=secret)
59
+ if user_id is not None and password is not None:
60
+ save_to_config(user_id=user_id, password=password)
61
+ return api_key, secret
@@ -2,6 +2,7 @@ import shutil
2
2
  import os
3
3
 
4
4
  from cgc.commands.auth import auth_utils
5
+ from cgc.commands.auth import auth_logic
5
6
  from cgc.utils.consts.env_consts import TMP_DIR, get_config_file_name
6
7
  from cgc.utils.config_utils import get_config_path, save_to_config
7
8
  from cgc.utils.message_utils import key_error_decorator_for_helpers
@@ -24,7 +25,7 @@ def auth_register_response(
24
25
  cgc_api_url=cgc_api_url,
25
26
  cgc_secret=cgc_secret,
26
27
  )
27
- auth_utils.auth_create_api_key_with_save()
28
+ auth_logic.auth_create_api_key_with_save()
28
29
  shutil.rmtree(TMP_DIR_PATH)
29
30
  # config.json
30
31
  if config_filename == "config.json":
@@ -6,10 +6,9 @@ import urllib
6
6
  import requests
7
7
 
8
8
  from cgc.utils.config_utils import get_config_path
9
- from cgc.utils.config_utils import save_to_config
10
9
  from cgc.utils.config_utils import read_from_cfg
11
10
  from cgc.utils.cryptography import rsa_crypto
12
- from cgc.utils import prepare_headers
11
+ from cgc.utils import get_headers_data
13
12
  from cgc.utils.consts.env_consts import TMP_DIR
14
13
 
15
14
  from cgc.utils.requests_helper import call_api, EndpointTypes
@@ -32,7 +31,7 @@ def _get_jwt_from_server(user_id: str = None, password: str = None) -> str:
32
31
  if user_id is None and password is None:
33
32
  user_id = urllib.parse.quote(read_from_cfg("user_id"))
34
33
  password = urllib.parse.quote(read_from_cfg("password"))
35
- url = f"{prepare_headers.load_user_api_url()}/v1/api/user/create/token"
34
+ url = f"{get_headers_data.load_user_api_url()}/v1/api/user/create/token"
36
35
  headers = {
37
36
  "accept": "application/json",
38
37
  "Content-Type": "application/x-www-form-urlencoded",
@@ -53,56 +52,6 @@ def get_jwt(user_id: str = None, password: str = None) -> str:
53
52
  return json_data["access_token"]
54
53
 
55
54
 
56
- def auth_create_api_key_with_save(user_id: str = None, password: str = None):
57
- """Function to create API key and API secret for user and save it to config file."""
58
- url = f"{prepare_headers.load_user_api_url()}/v1/api/user/create/api-key"
59
- headers = prepare_headers.prepare_headers_api_key(user_id, password)
60
- metric = "auth.api-key"
61
- __res = call_api(
62
- request=EndpointTypes.post,
63
- url=url,
64
- headers=headers,
65
- )
66
-
67
- json_data = retrieve_and_validate_response_send_metric(__res, metric)
68
- api_key = json_data["details"].get("_id")
69
- secret = json_data["details"].get("secret")
70
- save_to_config(api_key=api_key, api_secret=secret)
71
- if user_id is not None and password is not None:
72
- save_to_config(user_id=user_id, password=password)
73
- return api_key, secret
74
-
75
-
76
- def auth_delete_api_key(api_key: str, user_id: str = None, password: str = None):
77
- """Function to delete API key."""
78
- url = f"{prepare_headers.load_user_api_url()}/v1/api/user/delete/api-key?api_key={api_key}"
79
- headers = prepare_headers.prepare_headers_api_key(user_id, password)
80
- metric = "auth.api-key"
81
- __res = call_api(
82
- request=EndpointTypes.delete,
83
- url=url,
84
- headers=headers,
85
- )
86
-
87
- json_data = retrieve_and_validate_response_send_metric(__res, metric)
88
- return json_data["details"]
89
-
90
-
91
- def auth_list_api_keys(user_id: str = None, password: str = None):
92
- """Function to list API keys."""
93
- url = f"{prepare_headers.load_user_api_url()}/v1/api/user/list/api-key"
94
- headers = prepare_headers.prepare_headers_api_key(user_id, password)
95
- metric = "auth.api-key"
96
- __res = call_api(
97
- request=EndpointTypes.get,
98
- url=url,
99
- headers=headers,
100
- )
101
-
102
- json_data = retrieve_and_validate_response_send_metric(__res, metric)
103
- return json_data["details"].get("api_keys")
104
-
105
-
106
55
  def save_and_unzip_file(res: requests.Response) -> str:
107
56
  """Function to save file, unzip it and return path to its directory.
108
57
 
@@ -1,4 +1,6 @@
1
+ from typing import Optional
1
2
  import cgc.utils.consts.env_consts as env_consts
3
+ from cgc.utils.get_headers_data import load_user_api_url
2
4
 
3
5
 
4
6
  def list_get_mounted_volumes_paths(volume_list: list) -> str:
@@ -172,7 +174,7 @@ def compute_create_payload(
172
174
  cpu,
173
175
  memory,
174
176
  volumes: list,
175
- volume_full_path: str,
177
+ volume_full_path: Optional[str] = None,
176
178
  resource_data: list = [],
177
179
  config_maps_data: list = [],
178
180
  gpu: int = 0,
@@ -186,9 +188,12 @@ def compute_create_payload(
186
188
  """
187
189
  Create payload for app creation.
188
190
  """
189
- shm_payload = {}
191
+ extra_payload = {}
190
192
  if shm_size is not None and shm_size != 0:
191
- shm_payload = {"shared_memory": shm_size}
193
+ extra_payload["shared_memory"] = shm_size
194
+
195
+ if volume_full_path is not None:
196
+ extra_payload["full_mount_path"] = volume_full_path
192
197
 
193
198
  payload = {
194
199
  "resource_data": {
@@ -198,15 +203,16 @@ def compute_create_payload(
198
203
  "gpu": gpu,
199
204
  "memory": memory,
200
205
  "gpu_type": gpu_type,
201
- "full_mount_path": volume_full_path,
202
- **shm_payload,
206
+ **extra_payload,
203
207
  }
204
208
  }
205
209
  try:
206
210
  if len(volumes) != 0:
207
- if not volume_full_path:
211
+ if volume_full_path is not None and not volume_full_path:
208
212
  payload["resource_data"]["pv_volume"] = volumes
209
- elif volume_full_path and len(volumes) != 1:
213
+ elif (
214
+ volume_full_path is not None and volume_full_path and len(volumes) != 1
215
+ ):
210
216
  raise Exception(
211
217
  "Volume full path can only be used with a single volume"
212
218
  )
@@ -216,12 +222,6 @@ def compute_create_payload(
216
222
  pass
217
223
  try:
218
224
  resource_data_dict = {"resource_data": {}}
219
- if node_port_enabled:
220
- if not env_consts.ON_PREMISES:
221
- raise Exception(
222
- "NodePort is supported in on-premises environments only."
223
- )
224
- resource_data_dict["resource_data"]["node_port_enabled"] = True
225
225
  if len(resource_data) != 0:
226
226
  for resource in resource_data:
227
227
  try:
@@ -231,6 +231,15 @@ def compute_create_payload(
231
231
  raise Exception(
232
232
  "Invalid resource data format. Use key=value format"
233
233
  )
234
+ if (
235
+ node_port_enabled
236
+ or "node_port_enabled" in resource_data_dict["resource_data"]
237
+ ):
238
+ if env_consts.CGC_API_URL != load_user_api_url():
239
+ raise Exception(
240
+ "NodePort is supported in on-premises environments only."
241
+ )
242
+ resource_data_dict["resource_data"]["node_port_enabled"] = True
234
243
  if image_name:
235
244
  resource_data_dict["resource_data"]["custom_image"] = image_name
236
245
  if startup_command:
@@ -54,7 +54,7 @@ def volume_list():
54
54
  "--size",
55
55
  "size",
56
56
  help="Volume size in GiB",
57
- type=click.IntRange(1, 4000),
57
+ type=click.IntRange(1, 4096),
58
58
  required=True,
59
59
  )
60
60
  @click.option(
@@ -38,7 +38,6 @@ TMP_DIR = os.getenv("TMP_DIR")
38
38
  RELEASE = int(os.getenv("RELEASE"))
39
39
  MAJOR_VERSION = int(os.getenv("MAJOR_VERSION"))
40
40
  MINOR_VERSION = int(os.getenv("MINOR_VERSION"))
41
- ON_PREMISES = True if os.getenv("ON_PREMISES") == "1" else False
42
41
 
43
42
 
44
43
  def get_config_file_name():
@@ -0,0 +1,18 @@
1
+ from cgc.utils.config_utils import read_from_cfg
2
+
3
+
4
+ def load_user_api_keys():
5
+ """Based on configuration getter creates pair of API keys
6
+
7
+ :return: api_key and api_secret
8
+ :rtype: list of strings
9
+ """
10
+ return read_from_cfg("api_key"), read_from_cfg("api_secret")
11
+
12
+
13
+ def load_user_cgc_secret():
14
+ return read_from_cfg("cgc_secret")
15
+
16
+
17
+ def load_user_api_url():
18
+ return read_from_cfg("cgc_api_url")
@@ -1,23 +1,6 @@
1
- from cgc.utils.config_utils import read_from_cfg
2
1
  from cgc.commands.auth import auth_utils
3
2
  from cgc.utils.message_utils import key_error_decorator_for_helpers
4
-
5
-
6
- def load_user_api_keys():
7
- """Based on configuration getter creates pair of API keys
8
-
9
- :return: api_key and api_secret
10
- :rtype: list of strings
11
- """
12
- return read_from_cfg("api_key"), read_from_cfg("api_secret")
13
-
14
-
15
- def load_user_cgc_secret():
16
- return read_from_cfg("cgc_secret")
17
-
18
-
19
- def load_user_api_url():
20
- return read_from_cfg("cgc_api_url")
3
+ import cgc.utils.get_headers_data as get_headers_data
21
4
 
22
5
 
23
6
  @key_error_decorator_for_helpers
@@ -27,15 +10,15 @@ def get_api_url_and_prepare_headers():
27
10
  :return: CGC_API_URL and headers
28
11
  :rtype: string and dict
29
12
  """
30
- api_key, api_secret = load_user_api_keys()
13
+ api_key, api_secret = get_headers_data.load_user_api_keys()
31
14
  headers = {
32
15
  "accept": "application/json",
33
16
  "Content-Type": "application/json; charset=UTF-8",
34
- "comtegra-cgc": load_user_cgc_secret(),
17
+ "comtegra-cgc": get_headers_data.load_user_cgc_secret(),
35
18
  "api-key": api_key,
36
19
  "api-secret": api_secret,
37
20
  }
38
- return load_user_api_url(), headers
21
+ return get_headers_data.load_user_api_url(), headers
39
22
 
40
23
 
41
24
  def get_url_and_prepare_headers_register(
@@ -46,17 +29,19 @@ def get_url_and_prepare_headers_register(
46
29
  :return: url, headers
47
30
  :rtype: string and dict
48
31
  """
49
- url = f"{load_user_api_url() if url is None else url}/v1/api/user/register?user_id={user_id}&access_key={access_key}"
32
+ url = f"{get_headers_data.load_user_api_url() if url is None else url}/v1/api/user/register?user_id={user_id}&access_key={access_key}"
50
33
  headers = {
51
34
  "accept": "application/json",
52
35
  "Content-Type": "octet-stream",
53
- "comtegra-cgc": load_user_cgc_secret() if secret is None else secret,
36
+ "comtegra-cgc": (
37
+ get_headers_data.load_user_cgc_secret() if secret is None else secret
38
+ ),
54
39
  }
55
40
  return url, headers
56
41
 
57
42
 
58
43
  def get_url_and_headers_jwt_token():
59
- url = f"{load_user_api_url()}/v1/api/user/create/token"
44
+ url = f"{get_headers_data.load_user_api_url()}/v1/api/user/create/token"
60
45
  headers = {
61
46
  "accept": "application/json",
62
47
  "Content-Type": "application/x-www-form-urlencoded",
@@ -74,7 +59,7 @@ def prepare_headers_api_key(user_id: str = None, password: str = None):
74
59
  headers = {
75
60
  "accept": "application/json",
76
61
  "Authorization": f"Bearer {auth_utils.get_jwt(user_id, password)}",
77
- "comtegra-cgc": load_user_cgc_secret(),
62
+ "comtegra-cgc": get_headers_data.load_user_cgc_secret(),
78
63
  }
79
64
  return headers
80
65
 
@@ -85,10 +70,10 @@ def get_api_url_and_prepare_headers_version_control():
85
70
  :return: url and headers in a for of dictionary
86
71
  :rtype: string, dict
87
72
  """
88
- url = f"{load_user_api_url()}/v1/api/info/version"
73
+ url = f"{get_headers_data.load_user_api_url()}/v1/api/info/version"
89
74
  headers = {
90
75
  "accept": "application/json",
91
76
  "Content-Type": "application/json",
92
- "comtegra-cgc": load_user_cgc_secret(),
77
+ "comtegra-cgc": get_headers_data.load_user_cgc_secret(),
93
78
  }
94
79
  return url, headers
@@ -53,16 +53,12 @@ def call_api(request: EndpointTypes, **kwargs):
53
53
  except requests.exceptions.ReadTimeout:
54
54
  increment_metric(metric="client.timeout", is_error=True)
55
55
  click.echo(prepare_error_message(TIMEOUT_ERROR))
56
- sys.exit()
57
-
58
56
  except requests.exceptions.ConnectionError:
59
57
  increment_metric(metric="client.connection", is_error=True)
60
58
  click.echo(prepare_error_message(CONNECTION_ERROR))
61
- sys.exit()
62
59
  except OSError:
63
60
  increment_metric(metric="client.certificate", is_error=True)
64
61
  click.echo(prepare_error_message(CERTIFICATE_ERROR))
65
- sys.exit()
66
62
  except:
67
63
  increment_metric(metric="client.unhandled", is_error=True)
68
64
  click.echo(prepare_error_message(UNKNOWN_ERROR))
@@ -31,9 +31,10 @@ def get_server_version():
31
31
  except Exception:
32
32
  click.echo(
33
33
  "Your current context server is not available, cannot check server version.",
34
- color="yellow",
34
+ color="red",
35
35
  )
36
- return __res.json()
36
+ else:
37
+ return __res.json()
37
38
 
38
39
 
39
40
  def print_compare_versions(server_version: str, client_version: str):
@@ -47,6 +48,8 @@ def check_version():
47
48
  if not is_config_file_present():
48
49
  return
49
50
  data = get_server_version()
51
+ if data is None:
52
+ return
50
53
  server_release, server_major, server_minor = (
51
54
  data["server_version"]["release"],
52
55
  data["server_version"]["major"],
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: cgcsdk
3
- Version: 1.0.13
3
+ Version: 1.0.14
4
4
  Summary: Comtegra GPU Cloud REST API client
5
5
  Home-page: https://git.comtegra.pl/
6
6
  Author: Comtegra AI Team
@@ -1,5 +1,5 @@
1
- cgc/.env,sha256=qjUqdM59LavIOj9PI4Yp6IY-GenzQ-GjKMoSsbzSbAY,210
2
- cgc/CHANGELOG.md,sha256=EGVriqZcu86Vjgk7htQNlJybvKrs5mf-dtjFerLcqWk,8880
1
+ cgc/.env,sha256=C_RaN_SqTDvKhLL3epnhR5d2Y_0V8Uw-fEEGTkOlS1Q,210
2
+ cgc/CHANGELOG.md,sha256=a7qt1BD65-gg2BeD6Uk46lXosgfcJjqE8LvBaLuFe5M,9024
3
3
  cgc/__init__.py,sha256=d03Xv8Pw4ktNyUHfmicP6XfxYPXnVYLaCZPyUlg_RNQ,326
4
4
  cgc/cgc.py,sha256=3I_Ef0ggX9caaJKJkhfGYSe8XwkHzSWxwGAClMHDnUs,1663
5
5
  cgc/config.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -10,14 +10,15 @@ cgc/commands/cgc_helpers.py,sha256=ngArFjVw-8P_2g7J8k3b9xgDxfJw7JeaOtkhTySMSGU,1
10
10
  cgc/commands/cgc_models.py,sha256=T4eCMO5AO2kZpIRqpZ7ZfgO9gxCo_MLlY33msCzrLvA,182
11
11
  cgc/commands/exceptions.py,sha256=kVCWEdcqmkLO5QVIINdEXQw29_glyX2C11ZMFgT7b8E,155
12
12
  cgc/commands/auth/__init__.py,sha256=JnqNezSEUEVVPQIymya4llXr8LIug2vymQSAGBr4Ovg,397
13
- cgc/commands/auth/auth_cmd.py,sha256=FiRM16RGtP1zoJ9InbFAa-3W-EkJQbzBDxF0AmZa1JA,4196
14
- cgc/commands/auth/auth_responses.py,sha256=oZ1aC7tyrT43imF2iMaL0u1jTJzuGLEmCN8RBeMxpf4,1959
15
- cgc/commands/auth/auth_utils.py,sha256=-diCsKuF5UcQZoq962RuLktrG6sRmipJrDkm9Sf3wbg,5507
13
+ cgc/commands/auth/auth_cmd.py,sha256=f8_2oIlFQ1k0zvJXGfrwkdVoK5EJBwWesNdOcjtY_uM,4220
14
+ cgc/commands/auth/auth_logic.py,sha256=PzEyC6OBRSne_5dQT-cq69J0i8BqfGL0MIoXW-yM8qE,2281
15
+ cgc/commands/auth/auth_responses.py,sha256=yMGQzggdRkO3hYgXiy6DAFqmVw4lkgfd12g1qQx-CBc,2000
16
+ cgc/commands/auth/auth_utils.py,sha256=8NZQQuR0JDCxRkNOHy8nRLDpeT3W87iNyaBI1owj79c,3597
16
17
  cgc/commands/compute/__init__.py,sha256=lCdLfZ0ECSHtXEUSwq5YRHH85yXHchSsz8ZJvmClPtI,239
17
18
  cgc/commands/compute/compute_cmd.py,sha256=eXKeoOV3DsOypuxzKMa3MpITOKKbF2cZjy30iofHHG8,15489
18
19
  cgc/commands/compute/compute_models.py,sha256=yse6mCEhhE2RdWIO7EHx4r5Y-350gWWy4UWFsdltNNg,778
19
20
  cgc/commands/compute/compute_responses.py,sha256=DnRIZC_F1ZE887fMOXXYGYuYmB9n5x63sf8Ga_TL4Ww,5806
20
- cgc/commands/compute/compute_utils.py,sha256=XXnd_EuF9vCmW14r0ThlN98ScKSx3KAeqFbWy2g2mlk,8812
21
+ cgc/commands/compute/compute_utils.py,sha256=Pj4xa-C8-MzXF-CCnnHNXn0sXjHy_t-N7c-eig-vF1Y,9182
21
22
  cgc/commands/compute/billing/__init__.py,sha256=ccjz-AzBCROjuR11qZRM4_62slI9ErmLi27xPUoRPHM,752
22
23
  cgc/commands/compute/billing/billing_cmd.py,sha256=8lGf2GPyr09ZmqkRshmgfSPQgXa9o_IDSfwZgMfBE4k,4156
23
24
  cgc/commands/compute/billing/billing_responses.py,sha256=5vQSR_d41uizengzfXlHXL7XivO_73PpWdKmoUgqYNw,1965
@@ -45,7 +46,7 @@ cgc/commands/user/secret_responses.py,sha256=sg7HP5a0LnUvlo9w8oOcYASwI2cPeRnecjT
45
46
  cgc/commands/user/secret_utils.py,sha256=70dn937rzecQ0eE-8zb9fLnBDWtjWjdQY1LJvHv3NzM,1623
46
47
  cgc/commands/volume/__init__.py,sha256=Ou3kyb72aaXkrVCfQCVdniA65R2xHsRFgebooG1gflA,384
47
48
  cgc/commands/volume/data_model.py,sha256=meprXdaXLo3mMTZta1ks1-BJ7G0rO16qi_ycH-sXJpY,1295
48
- cgc/commands/volume/volume_cmd.py,sha256=swT-U7zUGjXsItK-Esl7XUKtvOCHulLykJR0w15StJc,7673
49
+ cgc/commands/volume/volume_cmd.py,sha256=bKXEdlxcL1gmVYeRXQeVY463IMHO-So4PWPBRXL6O4Y,7673
49
50
  cgc/commands/volume/volume_responses.py,sha256=PqYe5HVbClkCMIuXWn_FDvPUNxsJW8M_hFIB0lf40bo,3213
50
51
  cgc/commands/volume/volume_utils.py,sha256=6IuDCNT-KAvUUF_EDg5cL9JewTGsbBsZlYd_zKHowCU,1973
51
52
  cgc/sdk/__init__.py,sha256=m8uAD2e_ADbHC4_kaOpLrUk_bHy7wC56rPjhcttclCs,177
@@ -69,22 +70,23 @@ cgc/utils/__init__.py,sha256=JOvbqyGdFtswXE1TntOqM7XuIg5-t042WzAzvmX7Xtk,3661
69
70
  cgc/utils/click_group.py,sha256=Scfw8eMIyt2dE1ezUq2JuiI-E_LklqXQXJEr7L-EG6A,633
70
71
  cgc/utils/config_utils.py,sha256=-DkUBncq_nTUIbxnF9vTiibZHgJ6Beomzk7fg7zQJVA,3465
71
72
  cgc/utils/custom_exceptions.py,sha256=qvHdzaunZswZgN96iOHZIfLjehlJ79mcjqoMoW-tqEM,2628
73
+ cgc/utils/get_headers_data.py,sha256=JdEg5vrAHcWfsSJ7poYk3sNIY10OxX7YGVcmua-37lY,413
72
74
  cgc/utils/message_utils.py,sha256=FAiUC-0zJiMhfPQAQC0ki1ZUs1vI_QqHwLmfoCDbLeU,1790
73
- cgc/utils/prepare_headers.py,sha256=67YMPogNoGbKnHQmGFc3iJCbsDZbRVjAIe3kBY-Dq98,2838
74
- cgc/utils/requests_helper.py,sha256=vM1b3sBF56HhiowrRFo6piEZ8lFbFSD9ZUF93OMFaYE,2104
75
+ cgc/utils/prepare_headers.py,sha256=Hi3WNqtqydW56tNTLZmpfMTpu4aKCoDrLx4OcCGH9_U,2656
76
+ cgc/utils/requests_helper.py,sha256=Z89dTOTbSSi1xmtNPmAdJpduR9-DC12WEQsHYeuM9a0,2046
75
77
  cgc/utils/response_utils.py,sha256=9vJqAt2UFJ1n-oesFPe6CB_ooGoStjl-twY_31Jt4_I,7374
76
78
  cgc/utils/update.py,sha256=AsQwhcBqsjgNPKn6AN6ojt0Ew5otvJXyshys6bjr7DQ,413
77
- cgc/utils/version_control.py,sha256=PeoLhA3045dZofFh5yvcqGt1NAVnRaZ_AK-e-HpGd7o,3468
79
+ cgc/utils/version_control.py,sha256=jYm_XYHzM61DR8aJlwDLAB6psOGLjOiXR6zTOEfv57A,3515
78
80
  cgc/utils/consts/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
79
- cgc/utils/consts/env_consts.py,sha256=8huPDBkbNEXoPHskFhYwiRi6TTw0_e9ylClpgh1NF2E,1290
81
+ cgc/utils/consts/env_consts.py,sha256=3MaR8sMlQyGWP6sBWajhVbnzhDovD2ZQjKYeQ27e-1w,1225
80
82
  cgc/utils/consts/message_consts.py,sha256=8CIe3N_HL6Pj-gSArkPkpegsvm-QMWxqqnSgtzG08Qw,1218
81
83
  cgc/utils/cryptography/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
82
84
  cgc/utils/cryptography/aes_crypto.py,sha256=S0rKg38oy7rM5lTrP6DDpjLA-XRxuZggAXyxMFHtyzY,3333
83
85
  cgc/utils/cryptography/encryption_module.py,sha256=rbblBBorHYPGl-iKblyZX3_NuPEvUTpnH1l_RgNGCbA,1958
84
86
  cgc/utils/cryptography/rsa_crypto.py,sha256=h3jU5qPpj9uVjP1rTqZJTdYB5yjhD9HZpr_nD439h9Q,4180
85
- cgcsdk-1.0.13.dist-info/LICENSE,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
86
- cgcsdk-1.0.13.dist-info/METADATA,sha256=xxo5AMMCHkob54TrssRPxCEaHHZW2C-J9qBqgTDwBtk,3091
87
- cgcsdk-1.0.13.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
88
- cgcsdk-1.0.13.dist-info/entry_points.txt,sha256=bdfIHeJ6Y-BBr5yupCVoK7SUrJj1yNdew8OtIOg_3No,36
89
- cgcsdk-1.0.13.dist-info/top_level.txt,sha256=nqW9tqcIcCXFigQT69AuOk7XHKc4pCuv4HGJQGXb6iA,12
90
- cgcsdk-1.0.13.dist-info/RECORD,,
87
+ cgcsdk-1.0.14.dist-info/LICENSE,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
88
+ cgcsdk-1.0.14.dist-info/METADATA,sha256=9bvU67kTs5GpfGtnmy7FWIifW4aJmOwSiMEwYO4iKH0,3091
89
+ cgcsdk-1.0.14.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
90
+ cgcsdk-1.0.14.dist-info/entry_points.txt,sha256=bdfIHeJ6Y-BBr5yupCVoK7SUrJj1yNdew8OtIOg_3No,36
91
+ cgcsdk-1.0.14.dist-info/top_level.txt,sha256=nqW9tqcIcCXFigQT69AuOk7XHKc4pCuv4HGJQGXb6iA,12
92
+ cgcsdk-1.0.14.dist-info/RECORD,,