hcs-core 0.1.296__py3-none-any.whl → 0.1.300__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.
- hcs_core/__init__.py +1 -1
- hcs_core/ctxp/built_in_cmds/context.py +15 -1
- hcs_core/ctxp/built_in_cmds/profile.py +15 -7
- hcs_core/ctxp/cli_processor.py +1 -1
- hcs_core/ctxp/context.py +2 -0
- hcs_core/ctxp/jsondot.py +1 -1
- hcs_core/ctxp/profile.py +1 -1
- hcs_core/ctxp/telemetry.py +1 -1
- hcs_core/ctxp/util.py +61 -18
- hcs_core/plan/dag.py +0 -1
- hcs_core/sglib/auth.py +1 -1
- hcs_core/sglib/cli_options.py +13 -1
- hcs_core/sglib/client_util.py +5 -1
- hcs_core/sglib/ez_client.py +3 -3
- hcs_core/sglib/utils.py +4 -1
- hcs_core/util/check_license.py +0 -2
- hcs_core/util/query_util.py +1 -0
- hcs_core/util/versions.py +10 -8
- {hcs_core-0.1.296.dist-info → hcs_core-0.1.300.dist-info}/METADATA +2 -2
- {hcs_core-0.1.296.dist-info → hcs_core-0.1.300.dist-info}/RECORD +21 -21
- {hcs_core-0.1.296.dist-info → hcs_core-0.1.300.dist-info}/WHEEL +0 -0
hcs_core/__init__.py
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
__version__ = "0.1.
|
|
1
|
+
__version__ = "0.1.300"
|
|
@@ -48,7 +48,7 @@ def get(name: str, key: str):
|
|
|
48
48
|
@click.argument("name")
|
|
49
49
|
@click.argument("key_value") # 'key value pair, example: k1=v1'
|
|
50
50
|
def set(name: str, key_value: str):
|
|
51
|
-
"""Set a context
|
|
51
|
+
"""Set a context property by name."""
|
|
52
52
|
parts = key_value.split("=")
|
|
53
53
|
if len(parts) != 2:
|
|
54
54
|
ctxp.panic("Invalid KEY_VALUE format. Valid example: key1=value1")
|
|
@@ -58,6 +58,20 @@ def set(name: str, key_value: str):
|
|
|
58
58
|
ctxp.context.set(name, data)
|
|
59
59
|
|
|
60
60
|
|
|
61
|
+
@context.command()
|
|
62
|
+
@click.argument("name")
|
|
63
|
+
@click.argument("key")
|
|
64
|
+
def unset(name: str, key: str):
|
|
65
|
+
"""Unset a context property by name."""
|
|
66
|
+
data = ctxp.context.get(name, default=None)
|
|
67
|
+
if data is None:
|
|
68
|
+
return
|
|
69
|
+
data.pop(key, None)
|
|
70
|
+
if len(data) == 0:
|
|
71
|
+
return ctxp.context.delete(name)
|
|
72
|
+
return ctxp.context.set(name, data)
|
|
73
|
+
|
|
74
|
+
|
|
61
75
|
@context.command()
|
|
62
76
|
@click.argument("name")
|
|
63
77
|
def delete(name: str):
|
|
@@ -19,7 +19,7 @@ import sys
|
|
|
19
19
|
import click
|
|
20
20
|
import questionary
|
|
21
21
|
|
|
22
|
-
from hcs_core.ctxp import cli_processor, panic, profile, util
|
|
22
|
+
from hcs_core.ctxp import cli_options, cli_processor, panic, profile, util
|
|
23
23
|
|
|
24
24
|
|
|
25
25
|
@click.group(name="profile", cls=cli_processor.LazyGroup)
|
|
@@ -62,8 +62,8 @@ def use(name: str):
|
|
|
62
62
|
@profile_cmd_group.command()
|
|
63
63
|
@click.option("--from-name", "-f", required=False)
|
|
64
64
|
@click.option("--to-name", "-t", required=True)
|
|
65
|
-
@click.option("--edit", "-e", required=False, is_flag=True, help="Edit the profile after copying.")
|
|
66
|
-
def copy(from_name: str, to_name: str,
|
|
65
|
+
@click.option("--no-edit", "-e", required=False, is_flag=True, help="Edit the profile after copying.")
|
|
66
|
+
def copy(from_name: str, to_name: str, no_edit: bool):
|
|
67
67
|
"""Copy profile."""
|
|
68
68
|
|
|
69
69
|
if not from_name:
|
|
@@ -76,10 +76,9 @@ def copy(from_name: str, to_name: str, edit: bool):
|
|
|
76
76
|
panic("Profile already exists: " + to_name)
|
|
77
77
|
data = profile.create(to_name, data, True)
|
|
78
78
|
|
|
79
|
-
if
|
|
80
|
-
util.launch_text_editor(profile.file(to_name))
|
|
81
|
-
else:
|
|
79
|
+
if no_edit:
|
|
82
80
|
return data
|
|
81
|
+
util.launch_text_editor(profile.file(to_name))
|
|
83
82
|
|
|
84
83
|
|
|
85
84
|
@profile_cmd_group.command()
|
|
@@ -101,11 +100,20 @@ def get(name: str):
|
|
|
101
100
|
|
|
102
101
|
|
|
103
102
|
@profile_cmd_group.command()
|
|
103
|
+
@cli_options.confirm
|
|
104
104
|
@click.argument("name", required=False)
|
|
105
|
-
def delete(name: str):
|
|
105
|
+
def delete(confirm: bool, name: str):
|
|
106
106
|
"""Delete a profile by name."""
|
|
107
107
|
if not name:
|
|
108
108
|
name = profile.name()
|
|
109
|
+
|
|
110
|
+
if not profile.exists(name):
|
|
111
|
+
return
|
|
112
|
+
if not confirm:
|
|
113
|
+
question = f"Are you sure to delete profile '{name}'?"
|
|
114
|
+
if not questionary.confirm(question, default=False).ask():
|
|
115
|
+
click.echo("Aborted")
|
|
116
|
+
return
|
|
109
117
|
profile.delete(name)
|
|
110
118
|
|
|
111
119
|
|
hcs_core/ctxp/cli_processor.py
CHANGED
|
@@ -181,7 +181,7 @@ def _default_io(cmd: click.Command):
|
|
|
181
181
|
def inner(*args, **kwargs):
|
|
182
182
|
io_args = {
|
|
183
183
|
"output": kwargs.pop("output"),
|
|
184
|
-
#'verbose': kwargs.pop('verbose'),
|
|
184
|
+
# 'verbose': kwargs.pop('verbose'),
|
|
185
185
|
"field": kwargs.pop("field"),
|
|
186
186
|
"ids": kwargs.pop("ids"),
|
|
187
187
|
"first": kwargs.pop("first"),
|
hcs_core/ctxp/context.py
CHANGED
hcs_core/ctxp/jsondot.py
CHANGED
hcs_core/ctxp/profile.py
CHANGED
|
@@ -20,7 +20,7 @@ from copy import deepcopy
|
|
|
20
20
|
from typing import Any
|
|
21
21
|
|
|
22
22
|
from . import state
|
|
23
|
-
from .data_util import
|
|
23
|
+
from .data_util import deep_set_attr, load_data_file, save_data_file
|
|
24
24
|
from .jsondot import dotdict, dotify
|
|
25
25
|
from .util import CtxpException, panic
|
|
26
26
|
|
hcs_core/ctxp/telemetry.py
CHANGED
|
@@ -132,7 +132,7 @@ def _injest(doc):
|
|
|
132
132
|
|
|
133
133
|
try:
|
|
134
134
|
response = httpx.post(
|
|
135
|
-
|
|
135
|
+
"https://collie.omnissa.com/es/hcs-cli/_doc",
|
|
136
136
|
auth=("append_user", "public"),
|
|
137
137
|
headers={"Content-Type": "application/json"},
|
|
138
138
|
content=json.dumps(doc),
|
hcs_core/ctxp/util.py
CHANGED
|
@@ -125,7 +125,7 @@ def print_output(data: Any, args: dict, file=sys.stdout):
|
|
|
125
125
|
|
|
126
126
|
|
|
127
127
|
def print_error(error):
|
|
128
|
-
critical_errors = [KeyError, TypeError, AttributeError, ValueError]
|
|
128
|
+
critical_errors = [KeyError, TypeError, AttributeError, ValueError, IndentationError, ImportError]
|
|
129
129
|
for ex in critical_errors:
|
|
130
130
|
if isinstance(error, ex):
|
|
131
131
|
traceback.print_exception(type(error), error, error.__traceback__, file=sys.stderr)
|
|
@@ -219,7 +219,11 @@ def choose(prompt: str, items: list, fn_get_text: Callable = None, selected=None
|
|
|
219
219
|
panic(prompt + " ERROR: no item available.")
|
|
220
220
|
|
|
221
221
|
if fn_get_text is None:
|
|
222
|
-
|
|
222
|
+
|
|
223
|
+
def _default_fn_get_text(t):
|
|
224
|
+
return str(t)
|
|
225
|
+
|
|
226
|
+
fn_get_text = _default_fn_get_text
|
|
223
227
|
|
|
224
228
|
if select_by_default and len(items) == 1:
|
|
225
229
|
ret = items[0]
|
|
@@ -258,24 +262,37 @@ def input_array(prompt: str, default: list[str] = None):
|
|
|
258
262
|
return ret
|
|
259
263
|
|
|
260
264
|
|
|
261
|
-
def error_details(
|
|
262
|
-
if isinstance(
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
details = e.__class__.__name__
|
|
267
|
-
msg = str(e)
|
|
268
|
-
if msg:
|
|
269
|
-
details += ": " + msg
|
|
270
|
-
cause = e.__cause__
|
|
271
|
-
if cause and cause != e:
|
|
272
|
-
details += " | Caused by: " + error_details(cause)
|
|
265
|
+
def error_details(ex):
|
|
266
|
+
if not isinstance(ex, Exception):
|
|
267
|
+
return str(ex)
|
|
268
|
+
|
|
269
|
+
collector = []
|
|
273
270
|
|
|
271
|
+
def _collect_details(e):
|
|
272
|
+
if isinstance(e, click.ClickException):
|
|
273
|
+
collector.append(str(e))
|
|
274
|
+
return
|
|
275
|
+
|
|
276
|
+
details = e.__class__.__name__
|
|
277
|
+
msg = str(e)
|
|
278
|
+
if msg:
|
|
279
|
+
details += ": " + msg
|
|
274
280
|
if isinstance(e, httpx.HTTPStatusError):
|
|
275
281
|
details += "\n" + e.response.text
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
282
|
+
collector.append(details)
|
|
283
|
+
|
|
284
|
+
cause = e.__cause__
|
|
285
|
+
if cause and cause != e:
|
|
286
|
+
_collect_details(cause)
|
|
287
|
+
|
|
288
|
+
_collect_details(ex)
|
|
289
|
+
|
|
290
|
+
# remove_consecutive_duplicates
|
|
291
|
+
result = [collector[0]]
|
|
292
|
+
for item in collector[1:]:
|
|
293
|
+
if item != result[-1]:
|
|
294
|
+
result.append(item)
|
|
295
|
+
return " | Caused by: ".join(result)
|
|
279
296
|
|
|
280
297
|
|
|
281
298
|
def avoid_trace_for_ctrl_c():
|
|
@@ -344,7 +361,7 @@ def format_table(data: list, fields_mapping: dict, columns_to_sum: list = None):
|
|
|
344
361
|
table = [[item.get(field) for field in headers] for item in flattened_data]
|
|
345
362
|
|
|
346
363
|
if columns_to_sum:
|
|
347
|
-
columns_to_sum_indices = {col: headers.index(col) for col in columns_to_sum}
|
|
364
|
+
columns_to_sum_indices = {col: headers.index(col) for col in columns_to_sum if col in headers}
|
|
348
365
|
footer = [""] * len(headers)
|
|
349
366
|
footer[0] = "Total"
|
|
350
367
|
for col_name, col_index in columns_to_sum_indices.items():
|
|
@@ -368,3 +385,29 @@ def format_table(data: list, fields_mapping: dict, columns_to_sum: list = None):
|
|
|
368
385
|
traceback.print_exc()
|
|
369
386
|
|
|
370
387
|
return tabulate(table, headers=headers) + "\n"
|
|
388
|
+
|
|
389
|
+
|
|
390
|
+
def colorize(data: dict, name: str, mapping: dict):
|
|
391
|
+
if os.environ.get("TERM_COLOR") == "0":
|
|
392
|
+
return
|
|
393
|
+
|
|
394
|
+
s = data.get(name)
|
|
395
|
+
if not s:
|
|
396
|
+
return
|
|
397
|
+
|
|
398
|
+
if isinstance(mapping, dict):
|
|
399
|
+
c = mapping.get(s)
|
|
400
|
+
if c:
|
|
401
|
+
if isinstance(c, str):
|
|
402
|
+
data[name] = click.style(s, fg=c)
|
|
403
|
+
elif callable(c):
|
|
404
|
+
color = c(data)
|
|
405
|
+
data[name] = click.style(s, fg=color)
|
|
406
|
+
else:
|
|
407
|
+
raise Exception(f"Unexpected color type: {type(c)} {c}")
|
|
408
|
+
elif callable(mapping):
|
|
409
|
+
c = mapping(s)
|
|
410
|
+
if c:
|
|
411
|
+
data[name] = click.style(s, fg=c)
|
|
412
|
+
else:
|
|
413
|
+
raise Exception(f"Unexpected mapping type: {type(mapping)} {mapping}")
|
hcs_core/plan/dag.py
CHANGED
hcs_core/sglib/auth.py
CHANGED
|
@@ -22,7 +22,7 @@ import time
|
|
|
22
22
|
import jwt
|
|
23
23
|
from authlib.integrations.httpx_client import OAuth2Client
|
|
24
24
|
|
|
25
|
-
from hcs_core.ctxp import CtxpException,
|
|
25
|
+
from hcs_core.ctxp import CtxpException, profile
|
|
26
26
|
from hcs_core.ctxp.jsondot import dotdict, dotify
|
|
27
27
|
|
|
28
28
|
from .csp import CspClient
|
hcs_core/sglib/cli_options.py
CHANGED
|
@@ -18,7 +18,19 @@ import os
|
|
|
18
18
|
import click
|
|
19
19
|
|
|
20
20
|
from hcs_core.ctxp import CtxpException, recent
|
|
21
|
-
from hcs_core.ctxp.cli_options import
|
|
21
|
+
from hcs_core.ctxp.cli_options import confirm as confirm
|
|
22
|
+
from hcs_core.ctxp.cli_options import exclude_field as exclude_field
|
|
23
|
+
from hcs_core.ctxp.cli_options import field as field
|
|
24
|
+
from hcs_core.ctxp.cli_options import first as first
|
|
25
|
+
from hcs_core.ctxp.cli_options import force as force
|
|
26
|
+
from hcs_core.ctxp.cli_options import formatter as formatter
|
|
27
|
+
from hcs_core.ctxp.cli_options import ids as ids
|
|
28
|
+
from hcs_core.ctxp.cli_options import limit as limit
|
|
29
|
+
from hcs_core.ctxp.cli_options import output as output
|
|
30
|
+
from hcs_core.ctxp.cli_options import search as search
|
|
31
|
+
from hcs_core.ctxp.cli_options import sort as sort
|
|
32
|
+
from hcs_core.ctxp.cli_options import verbose as verbose
|
|
33
|
+
from hcs_core.ctxp.cli_options import wait as wait
|
|
22
34
|
|
|
23
35
|
org_id = click.option(
|
|
24
36
|
"--org",
|
hcs_core/sglib/client_util.py
CHANGED
|
@@ -261,7 +261,10 @@ class default_crud:
|
|
|
261
261
|
|
|
262
262
|
def wait_for_deleted(self, id: str, org_id: str, timeout: str, fn_is_error: Callable = None):
|
|
263
263
|
name = self._resource_type_name + "/" + id
|
|
264
|
-
|
|
264
|
+
|
|
265
|
+
def fn_get():
|
|
266
|
+
return self.get(id, org_id)
|
|
267
|
+
|
|
265
268
|
return wait_for_res_deleted(name, fn_get, timeout=timeout, fn_is_error=fn_is_error)
|
|
266
269
|
|
|
267
270
|
def update(self, id: str, org_id: str, data: dict, **kwargs):
|
|
@@ -310,6 +313,7 @@ def wait_for_res_deleted(
|
|
|
310
313
|
exit.sleep(sleep_seconds)
|
|
311
314
|
|
|
312
315
|
|
|
316
|
+
# flake8: noqa=E731
|
|
313
317
|
def wait_for_res_status(
|
|
314
318
|
resource_name: str,
|
|
315
319
|
fn_get: Callable,
|
hcs_core/sglib/ez_client.py
CHANGED
|
@@ -19,7 +19,7 @@ import os
|
|
|
19
19
|
import sys
|
|
20
20
|
import threading
|
|
21
21
|
from http.client import HTTPResponse
|
|
22
|
-
from typing import Callable, Optional, Type
|
|
22
|
+
from typing import Callable, Optional, Type
|
|
23
23
|
|
|
24
24
|
import httpx
|
|
25
25
|
from authlib.integrations.httpx_client import OAuth2Client
|
|
@@ -191,7 +191,7 @@ class EzClient:
|
|
|
191
191
|
timeout: float = 30.0,
|
|
192
192
|
):
|
|
193
193
|
# import json as jsonlib
|
|
194
|
-
# print(url, jsonlib.dumps(json, indent=4))
|
|
194
|
+
# print("->", self._client().base_url, url, jsonlib.dumps(json, indent=4))
|
|
195
195
|
try:
|
|
196
196
|
resp = self._client().post(url, json=json, content=text, files=files, headers=headers, timeout=timeout)
|
|
197
197
|
except httpx.HTTPStatusError as e:
|
|
@@ -208,7 +208,7 @@ class EzClient:
|
|
|
208
208
|
|
|
209
209
|
def get(self, url: str, headers: dict = None, raise_on_404: bool = False, type: Optional[Type[BaseModel]] = None):
|
|
210
210
|
try:
|
|
211
|
-
# print("->", url)
|
|
211
|
+
# print("->", self._client().base_url, url)
|
|
212
212
|
resp = self._client().get(url, headers=headers)
|
|
213
213
|
data = _parse_resp(resp)
|
|
214
214
|
if data and type:
|
hcs_core/sglib/utils.py
CHANGED
|
@@ -65,7 +65,10 @@ def run_govc_guest_script(script, args):
|
|
|
65
65
|
|
|
66
66
|
|
|
67
67
|
def waitForVmPowerOff(iPath):
|
|
68
|
-
|
|
68
|
+
|
|
69
|
+
def current_millis():
|
|
70
|
+
return int(round(time.time() * 1000))
|
|
71
|
+
|
|
69
72
|
start_time = current_millis()
|
|
70
73
|
while current_millis() - start_time < 5 * 60 * 1000:
|
|
71
74
|
p = subprocess.run(
|
hcs_core/util/check_license.py
CHANGED
hcs_core/util/query_util.py
CHANGED
hcs_core/util/versions.py
CHANGED
|
@@ -30,14 +30,16 @@ def check_upgrade():
|
|
|
30
30
|
checked_at = hcs_core.ctxp.state.get(last_upgrade_check_at, 0)
|
|
31
31
|
|
|
32
32
|
now = time.time()
|
|
33
|
-
if now - checked_at
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
33
|
+
if now - checked_at < 24 * 60 * 60:
|
|
34
|
+
return
|
|
35
|
+
|
|
36
|
+
try:
|
|
37
|
+
latest = get_latest_version()
|
|
38
|
+
current = Version(get_version())
|
|
39
|
+
if current < latest:
|
|
40
|
+
log.warning(f"New version available: {latest}. Execute 'hcs upgrade' to upgrade.")
|
|
41
|
+
except Exception as e:
|
|
42
|
+
logging.debug(e)
|
|
41
43
|
|
|
42
44
|
hcs_core.ctxp.state.set(last_upgrade_check_at, now)
|
|
43
45
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: hcs-core
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.300
|
|
4
4
|
Summary: Horizon Cloud Service CLI module.
|
|
5
5
|
Project-URL: Homepage, https://github.com/euc-eng/hcs-cli
|
|
6
6
|
Project-URL: Bug Tracker, https://github.com/euc-eng/hcs-cli/issues
|
|
@@ -36,7 +36,7 @@ Requires-Dist: schedule>=1.1.0
|
|
|
36
36
|
Requires-Dist: setuptools>=70.0.0
|
|
37
37
|
Requires-Dist: tabulate>=0.9.0
|
|
38
38
|
Requires-Dist: websocket-client>=1.2.3
|
|
39
|
-
Requires-Dist: yumako>=0.1.
|
|
39
|
+
Requires-Dist: yumako>=0.1.31
|
|
40
40
|
Provides-Extra: dev
|
|
41
41
|
Requires-Dist: bandit; extra == 'dev'
|
|
42
42
|
Requires-Dist: black; extra == 'dev'
|
|
@@ -1,39 +1,39 @@
|
|
|
1
|
-
hcs_core/__init__.py,sha256=
|
|
1
|
+
hcs_core/__init__.py,sha256=TNZMgKvUd6RXn43vMLSSaxkK2iqcmnKyHFCrbCzTF9g,24
|
|
2
2
|
hcs_core/ctxp/__init__.py,sha256=bHVHhJP10Luz1a3Kk3zFx14dAO4SY6Q20Lrv8rNWWGc,1075
|
|
3
3
|
hcs_core/ctxp/_init.py,sha256=fMcRMPfJx-N0c-u0Zj2sFVKQL1-lWQd28gooAZETGUA,2933
|
|
4
4
|
hcs_core/ctxp/cli_options.py,sha256=cwlUgYXzIie9eRcu8fkBo_iFvC8LhflKGblWYtM2Hto,2739
|
|
5
|
-
hcs_core/ctxp/cli_processor.py,sha256=
|
|
5
|
+
hcs_core/ctxp/cli_processor.py,sha256=X4Qg5fXsg1HuDcdFCDZg7bdnxszGMJGdT3MhnP8LmUY,7656
|
|
6
6
|
hcs_core/ctxp/cmd_util.py,sha256=_-VwQSmkfi52qWC3uHQI06mSiIPfsZroDruTDYHXiMA,3119
|
|
7
7
|
hcs_core/ctxp/config.py,sha256=vRdzPxi3Yrt04cnR6b5mJwEOtYBh21qvmlSSsgyGoI4,931
|
|
8
|
-
hcs_core/ctxp/context.py,sha256=
|
|
8
|
+
hcs_core/ctxp/context.py,sha256=LafhucyGRGYLmnXoZLZOKRWXUwJ1KzP-6vjDTTrC8j4,3451
|
|
9
9
|
hcs_core/ctxp/data_util.py,sha256=PECaLaAQoqTyuYILXm1Deg5iL96tBxgiBhggp-f-qVE,14933
|
|
10
10
|
hcs_core/ctxp/dispatcher.py,sha256=GAK-jGXDpyX0C88oRDtDi4yeM0qlvID96k98z_vqJkg,2261
|
|
11
11
|
hcs_core/ctxp/duration.py,sha256=_0mt8Ng5mzNzEdSXkOqExPOzQcw8HkQDUH_hwt5CMLM,2109
|
|
12
12
|
hcs_core/ctxp/extension.py,sha256=UqlDCXJMRKXcoceVak8hVGI_7HggjUWYSgKOFbGVetU,1636
|
|
13
13
|
hcs_core/ctxp/fn_util.py,sha256=bEYmj5WgUkRE5S4oQjT_zutuViXWYU9q5MR-MlTA_bY,1573
|
|
14
14
|
hcs_core/ctxp/fstore.py,sha256=lU6et0-w_QPYpQNjdA0QGEdnn7lsmBVuw9XbDvLjwso,8977
|
|
15
|
-
hcs_core/ctxp/jsondot.py,sha256=
|
|
15
|
+
hcs_core/ctxp/jsondot.py,sha256=LuAejJTW2IJixNl4lLEc47yWX9MMKHgMcZmRugW4ftQ,11363
|
|
16
16
|
hcs_core/ctxp/logger.py,sha256=xujPlxw7JGimI_u_sMXnqTOhOTCtrXzpc7501k3Dgm4,6323
|
|
17
|
-
hcs_core/ctxp/profile.py,sha256=
|
|
17
|
+
hcs_core/ctxp/profile.py,sha256=scPibaqPzCD-wnSQ6nDq55nd4QppvzvVQ431n8kvRUg,7729
|
|
18
18
|
hcs_core/ctxp/profile_store.py,sha256=v4RvKSaKSJhAt5rEGbC6v-NfaI3N67YffPm-qlrQWdg,1566
|
|
19
19
|
hcs_core/ctxp/recent.py,sha256=ER1HASPRm1k_3MIO-WVbj2vGipY565ZpBlmo-_V3vjo,1797
|
|
20
20
|
hcs_core/ctxp/state.py,sha256=gjcMRVONKBq7WiFQo-xca1726ngZe90mnPrF3vbXDrU,1634
|
|
21
21
|
hcs_core/ctxp/task_schd.py,sha256=mvZMeKDSSo2p7VidSoZY1XZj433TQn_YF9SGJEzl9lg,4586
|
|
22
|
-
hcs_core/ctxp/telemetry.py,sha256=
|
|
22
|
+
hcs_core/ctxp/telemetry.py,sha256=tSjI_8OE2Ix3n--YHAO9sPmzi8ETbFHEPxzS52-usmM,3476
|
|
23
23
|
hcs_core/ctxp/template_util.py,sha256=XslvIuRBlTVsUW0Y9M_D8gUPc1jWq6X2p4At2VAe1KU,731
|
|
24
24
|
hcs_core/ctxp/timeutil.py,sha256=RyRrIRdFHbIghdB8wbC8VdABvc7hki2v51b1x2JvHgo,445
|
|
25
|
-
hcs_core/ctxp/util.py,sha256=
|
|
25
|
+
hcs_core/ctxp/util.py,sha256=mzNG99NV_MPIz7TLNCRf3ADOyW680LC4IYIYgvZ4rsM,12730
|
|
26
26
|
hcs_core/ctxp/var_template.py,sha256=cTjj1UJ58ac6s5z4Oh5hSDQwKixq-rdbCF1D8akjAo0,3219
|
|
27
27
|
hcs_core/ctxp/built_in_cmds/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
28
28
|
hcs_core/ctxp/built_in_cmds/_ut.py,sha256=e50XBmPim2qRe0RYk_XAuRz1HWYyLJuMu-6dVxWR_fQ,3356
|
|
29
|
-
hcs_core/ctxp/built_in_cmds/context.py,sha256=
|
|
30
|
-
hcs_core/ctxp/built_in_cmds/profile.py,sha256=
|
|
29
|
+
hcs_core/ctxp/built_in_cmds/context.py,sha256=NbnsAaAkvnascSVqbh7BScXznvfPtTbgQWkU0GLYYGk,2747
|
|
30
|
+
hcs_core/ctxp/built_in_cmds/profile.py,sha256=z9K4o1n7ugducPpOFjaDMS9xA2RVhWcIcgljKOCn200,4667
|
|
31
31
|
hcs_core/plan/__init__.py,sha256=5klVuXXLQLn2Hj6Gz2Hc-1XSyDXKE9o-BjQ82oXekiI,465
|
|
32
32
|
hcs_core/plan/actions.py,sha256=UvCynzApJUxi39HUoPIQ_uownlbvFbJ4aAs6pmulrLY,125
|
|
33
33
|
hcs_core/plan/base_provider.py,sha256=CSJFN8lopWTUblw8CW78Epnef9BbJVLhPLk9bPfZceM,1299
|
|
34
34
|
hcs_core/plan/context.py,sha256=5NI5Otk0jGKtBGvO8Sc1xdOHUCu_lXQYNrSctT3Hyq8,116
|
|
35
35
|
hcs_core/plan/core.py,sha256=HI9uhZBzxngMTvum2GwzgLpx8bEe6M3JgAxl5CiJywU,21622
|
|
36
|
-
hcs_core/plan/dag.py,sha256=
|
|
36
|
+
hcs_core/plan/dag.py,sha256=McvJnOIJOQzfa1TMdG3Nvw2tV12JBhNKaeJ_Fk8iEXA,12909
|
|
37
37
|
hcs_core/plan/helper.py,sha256=__b8tlzLBT1Rm3vgiS-pWnZImaoZbsmKSRJtt_1gj8E,7763
|
|
38
38
|
hcs_core/plan/kop.py,sha256=iDnRbYHFCtS3Rs95UVvRgZdSzs-NMwdyr8SztIQQqyg,5774
|
|
39
39
|
hcs_core/plan/provider/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -42,28 +42,28 @@ hcs_core/plan/provider/dev/_prepare.py,sha256=PvVnheEQwpj8sWYz2lDONQVTs4pHPYuo2c
|
|
|
42
42
|
hcs_core/plan/provider/dev/dummy.py,sha256=zKEr9J4WHhlN5gFdmrFyEfCF0xlQlCJg0CC1dG9VaLA,1958
|
|
43
43
|
hcs_core/plan/provider/dev/fibonacci.py,sha256=8WhDr5c9harNAlVPZomQJEqbWe0hUqbppO6ZkwEUcJ0,1104
|
|
44
44
|
hcs_core/sglib/__init__.py,sha256=oT0etW7vsEbHlXiGL5x23ZXyyFqeLi81RxQQ5lfKSV0,654
|
|
45
|
-
hcs_core/sglib/auth.py,sha256=
|
|
46
|
-
hcs_core/sglib/cli_options.py,sha256=
|
|
47
|
-
hcs_core/sglib/client_util.py,sha256=
|
|
45
|
+
hcs_core/sglib/auth.py,sha256=r9zgLdnybuHsf3_j6nTP4SGoS2dD3keYZ-c25o2Mx64,6766
|
|
46
|
+
hcs_core/sglib/cli_options.py,sha256=dEoUllUs_N97jGtc3mccNgbkVJILfuJR4FHSuVGmSf0,2438
|
|
47
|
+
hcs_core/sglib/client_util.py,sha256=ia4krU7xrMH4G_enOu5xFXIHY8I2besKn6ubayPxi58,14157
|
|
48
48
|
hcs_core/sglib/csp.py,sha256=UcO68YtLOPDQWiTjPVIPwQ2Z-Mywc-154aoIkLdyzwE,10991
|
|
49
|
-
hcs_core/sglib/ez_client.py,sha256=
|
|
49
|
+
hcs_core/sglib/ez_client.py,sha256=dWQx-EMTrySz1EVzsSu4ZezORR3_iEOAcZigtbuvIQ8,8404
|
|
50
50
|
hcs_core/sglib/hcs_client.py,sha256=pjrAVQDEy2tiQMypMpOzODFntT6aNHXjje8or_mkL2U,804
|
|
51
51
|
hcs_core/sglib/init.py,sha256=w_0ZU70Q1TGbSZsqSi7ewKQqpExFlepOT7mIqH0wnho,310
|
|
52
52
|
hcs_core/sglib/login_support.py,sha256=rHKZDAZXlo62IsjETyXxCSPxg1L4nV6ffZM_tulfe0A,7574
|
|
53
53
|
hcs_core/sglib/payload_util.py,sha256=Hnj7rjzrQ1j5gpbrwZX34biN8MIZjy6dOJZ63ulmzdw,685
|
|
54
54
|
hcs_core/sglib/requtil.py,sha256=O37DrD4VVBmmRkkHJLbDtPfFq8l6fLZwYZggt2FTEFc,920
|
|
55
|
-
hcs_core/sglib/utils.py,sha256=
|
|
55
|
+
hcs_core/sglib/utils.py,sha256=8a-e-nUhAbulZtV05CB5loov6Kgq8_Q0TxYwfvu7Bj8,3178
|
|
56
56
|
hcs_core/util/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
57
|
-
hcs_core/util/check_license.py,sha256
|
|
57
|
+
hcs_core/util/check_license.py,sha256=KUPaphuntMhwqcBJ6V2L85ZJZulaz1Yq5Ysurx2Ren8,2498
|
|
58
58
|
hcs_core/util/duration.py,sha256=e7Nw22aYXJK-pLM59QDel5atLZxShKBiVILFgrtLJks,4194
|
|
59
59
|
hcs_core/util/exit.py,sha256=UStMZKlfCFN7GBouc1y3pPFGPFQ66qfcRZ_fYQXFD0E,838
|
|
60
60
|
hcs_core/util/hcs_constants.py,sha256=Ic1Tx_UNJiQchfsdnRDzgiOaCjKHnsWXx997nElppm4,1755
|
|
61
61
|
hcs_core/util/job_view.py,sha256=LpyihmDJLXm4DtTST7Z-WydyWNYCJETT_SxCWunvGOg,8424
|
|
62
62
|
hcs_core/util/pki_util.py,sha256=Lt3-IzIoGcaQKNE7KUszxR7JSZkpXduVZJ262TszsIs,6685
|
|
63
|
-
hcs_core/util/query_util.py,sha256=
|
|
63
|
+
hcs_core/util/query_util.py,sha256=MptaMIVtrLkFn9btmTNTly5bCe6BKRNwcc7YLhoPvhc,3170
|
|
64
64
|
hcs_core/util/scheduler.py,sha256=bPpCmGUL1UctJMfLPAg-h4Hl2YZr96FiI78-G_Usn08,2958
|
|
65
65
|
hcs_core/util/ssl_util.py,sha256=MvU102fGwWWh9hhSmLnn1qQIWuD6TjZnN0iH0MXUtW0,1239
|
|
66
|
-
hcs_core/util/versions.py,sha256=
|
|
67
|
-
hcs_core-0.1.
|
|
68
|
-
hcs_core-0.1.
|
|
69
|
-
hcs_core-0.1.
|
|
66
|
+
hcs_core/util/versions.py,sha256=6nyyZzi3P69WQfioPc2_YWZQcUc13mC1eKoK58b3WUQ,1709
|
|
67
|
+
hcs_core-0.1.300.dist-info/METADATA,sha256=nLXo-jF9INe69gGdZWkpNKbVonBOhkqgja41TMsWmns,1951
|
|
68
|
+
hcs_core-0.1.300.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
|
69
|
+
hcs_core-0.1.300.dist-info/RECORD,,
|
|
File without changes
|