ciocore 9.1.0b2__py2.py3-none-any.whl → 9.1.0rc2__py2.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.
Potentially problematic release.
This version of ciocore might be problematic. Click here for more details.
- ciocore/VERSION +1 -1
- ciocore/api_client.py +10 -6
- ciocore/data.py +4 -2
- ciocore/docsite/apidoc/api_client/index.html +17 -6
- ciocore/docsite/apidoc/data/index.html +11 -3
- ciocore/docsite/apidoc/package_tree/index.html +0 -5
- ciocore/docsite/search/search_index.json +1 -1
- ciocore/docsite/sitemap.xml.gz +0 -0
- ciocore/package_tree.py +0 -4
- ciocore/uploader/_uploader.py +85 -188
- ciocore/worker.py +1 -5
- {ciocore-9.1.0b2.dist-info → ciocore-9.1.0rc2.dist-info}/METADATA +10 -8
- {ciocore-9.1.0b2.dist-info → ciocore-9.1.0rc2.dist-info}/RECORD +22 -26
- tests/test_api_client.py +1 -4
- tests/test_common.py +1 -11
- tests/test_config.py +1 -4
- tests/test_data.py +167 -157
- tests/test_submit.py +1 -4
- tests/test_uploader.py +1 -4
- ciocore/compat.py +0 -15
- ciocore/uploader/thread_queue_job.py +0 -101
- tests/extra_env_fixtures.py +0 -57
- tests/project_fixtures.py +0 -8
- {ciocore-9.1.0b2.dist-info → ciocore-9.1.0rc2.dist-info}/WHEEL +0 -0
- {ciocore-9.1.0b2.dist-info → ciocore-9.1.0rc2.dist-info}/entry_points.txt +0 -0
- {ciocore-9.1.0b2.dist-info → ciocore-9.1.0rc2.dist-info}/top_level.txt +0 -0
ciocore/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
9.1.0-
|
|
1
|
+
9.1.0-rc.2
|
ciocore/api_client.py
CHANGED
|
@@ -445,7 +445,7 @@ def creds_same_domain(creds):
|
|
|
445
445
|
if not token:
|
|
446
446
|
return False
|
|
447
447
|
|
|
448
|
-
decoded = jwt.decode(creds["access_token"],
|
|
448
|
+
decoded = jwt.decode(creds["access_token"], algorithms=["HS256"], options={"verify_signature": False})
|
|
449
449
|
audience_domain = decoded.get("aud")
|
|
450
450
|
return (
|
|
451
451
|
audience_domain
|
|
@@ -463,7 +463,8 @@ def account_id_from_jwt(token):
|
|
|
463
463
|
Returns:
|
|
464
464
|
str: The account id.
|
|
465
465
|
"""
|
|
466
|
-
payload = jwt.decode(token,
|
|
466
|
+
payload = jwt.decode(token, algorithms=["HS256"], options={"verify_signature": False})
|
|
467
|
+
|
|
467
468
|
return payload.get("account")
|
|
468
469
|
|
|
469
470
|
|
|
@@ -488,23 +489,26 @@ def account_name_from_jwt(token):
|
|
|
488
489
|
return None
|
|
489
490
|
|
|
490
491
|
|
|
491
|
-
def request_instance_types(as_dict=False):
|
|
492
|
+
def request_instance_types(as_dict=False, filter_param=""):
|
|
492
493
|
"""
|
|
493
494
|
Get the list of available instances types.
|
|
494
495
|
|
|
495
496
|
Args:
|
|
496
497
|
as_dict (bool): Whether or not to return the instance types as a dictionary.
|
|
498
|
+
filter_param (string): complex RHS string query ex:
|
|
499
|
+
"cpu=gte:8:int,operating_system=ne:windows,gpu.gpu_count=eq:1:int"
|
|
497
500
|
|
|
498
501
|
Returns:
|
|
499
502
|
list: The list of instance types.
|
|
500
503
|
"""
|
|
501
504
|
api = ApiClient()
|
|
502
505
|
response, response_code = api.make_request(
|
|
503
|
-
"api/v1/instance-types", use_api_key=True, raise_on_error=False
|
|
506
|
+
"api/v1/instance-types", use_api_key=True, raise_on_error=False,
|
|
507
|
+
params={"filter":filter_param}
|
|
504
508
|
)
|
|
505
509
|
if response_code not in (200,):
|
|
506
510
|
msg = "Failed to get instance types"
|
|
507
|
-
msg += "\
|
|
511
|
+
msg += "\nAPI responded with status code %s\n" % (response_code)
|
|
508
512
|
raise Exception(msg)
|
|
509
513
|
|
|
510
514
|
instance_types = json.loads(response).get("data", [])
|
|
@@ -554,7 +558,7 @@ def request_projects(statuses=("active",)):
|
|
|
554
558
|
def request_software_packages():
|
|
555
559
|
"""
|
|
556
560
|
Query Conductor for all software packages for the currently available sidecar.
|
|
557
|
-
|
|
561
|
+
|
|
558
562
|
Returns:
|
|
559
563
|
list: The list of software packages.
|
|
560
564
|
"""
|
ciocore/data.py
CHANGED
|
@@ -51,12 +51,14 @@ def init(*products, **kwargs):
|
|
|
51
51
|
|
|
52
52
|
__platforms__ = set(kwargs.get("platforms", ["windows", "linux"]))
|
|
53
53
|
|
|
54
|
-
def data(force=False):
|
|
54
|
+
def data(force=False, instances_filter=""):
|
|
55
55
|
"""
|
|
56
56
|
Provide projects, instance types, and software package data.
|
|
57
57
|
|
|
58
58
|
Keyword Args:
|
|
59
59
|
force: (bool) If `True`, then force the system to fetch fresh data -- Defaults to `False`.
|
|
60
|
+
instances_filter: (str) complex RHS string query ex:
|
|
61
|
+
"cpu=gte:8:int,operating_system=ne:windows,gpu.gpu_count=eq:1:int"
|
|
60
62
|
|
|
61
63
|
Raises:
|
|
62
64
|
ValueError: Module was not initialized with [init()](/data/#ciocore.data.init).
|
|
@@ -118,7 +120,7 @@ def data(force=False):
|
|
|
118
120
|
# PROJECTS
|
|
119
121
|
__data__["projects"] = sorted(api_client.request_projects())
|
|
120
122
|
# INST_TYPES
|
|
121
|
-
instance_types = api_client.request_instance_types()
|
|
123
|
+
instance_types = api_client.request_instance_types(filter_param=instances_filter)
|
|
122
124
|
# SOFTWARE
|
|
123
125
|
software = api_client.request_software_packages()
|
|
124
126
|
|
|
@@ -2227,7 +2227,7 @@ prompt the user to log in. </p>
|
|
|
2227
2227
|
<span class="k">if</span> <span class="ow">not</span> <span class="n">token</span><span class="p">:</span>
|
|
2228
2228
|
<span class="k">return</span> <span class="kc">False</span>
|
|
2229
2229
|
|
|
2230
|
-
<span class="n">decoded</span> <span class="o">=</span> <span class="n">jwt</span><span class="o">.</span><span class="n">decode</span><span class="p">(</span><span class="n">creds</span><span class="p">[</span><span class="s2">"access_token"</span><span class="p">],</span> <span class="n">
|
|
2230
|
+
<span class="n">decoded</span> <span class="o">=</span> <span class="n">jwt</span><span class="o">.</span><span class="n">decode</span><span class="p">(</span><span class="n">creds</span><span class="p">[</span><span class="s2">"access_token"</span><span class="p">],</span> <span class="n">algorithms</span><span class="o">=</span><span class="p">[</span><span class="s2">"HS256"</span><span class="p">],</span> <span class="n">options</span><span class="o">=</span><span class="p">{</span><span class="s2">"verify_signature"</span><span class="p">:</span> <span class="kc">False</span><span class="p">})</span>
|
|
2231
2231
|
<span class="n">audience_domain</span> <span class="o">=</span> <span class="n">decoded</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"aud"</span><span class="p">)</span>
|
|
2232
2232
|
<span class="k">return</span> <span class="p">(</span>
|
|
2233
2233
|
<span class="n">audience_domain</span>
|
|
@@ -2301,7 +2301,8 @@ prompt the user to log in. </p>
|
|
|
2301
2301
|
<span class="sd"> Returns:</span>
|
|
2302
2302
|
<span class="sd"> str: The account id.</span>
|
|
2303
2303
|
<span class="sd"> """</span>
|
|
2304
|
-
<span class="n">payload</span> <span class="o">=</span> <span class="n">jwt</span><span class="o">.</span><span class="n">decode</span><span class="p">(</span><span class="n">token</span><span class="p">,</span> <span class="n">
|
|
2304
|
+
<span class="n">payload</span> <span class="o">=</span> <span class="n">jwt</span><span class="o">.</span><span class="n">decode</span><span class="p">(</span><span class="n">token</span><span class="p">,</span> <span class="n">algorithms</span><span class="o">=</span><span class="p">[</span><span class="s2">"HS256"</span><span class="p">],</span> <span class="n">options</span><span class="o">=</span><span class="p">{</span><span class="s2">"verify_signature"</span><span class="p">:</span> <span class="kc">False</span><span class="p">})</span>
|
|
2305
|
+
|
|
2305
2306
|
<span class="k">return</span> <span class="n">payload</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"account"</span><span class="p">)</span>
|
|
2306
2307
|
</code></pre></div>
|
|
2307
2308
|
</details>
|
|
@@ -2393,7 +2394,7 @@ prompt the user to log in. </p>
|
|
|
2393
2394
|
|
|
2394
2395
|
|
|
2395
2396
|
<h2 id="ciocore.api_client.request_instance_types" class="doc doc-heading">
|
|
2396
|
-
<code class="highlight language-python"><span class="n">request_instance_types</span><span class="p">(</span><span class="n">as_dict</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span></code>
|
|
2397
|
+
<code class="highlight language-python"><span class="n">request_instance_types</span><span class="p">(</span><span class="n">as_dict</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">filter_param</span><span class="o">=</span><span class="s1">''</span><span class="p">)</span></code>
|
|
2397
2398
|
|
|
2398
2399
|
|
|
2399
2400
|
</h2>
|
|
@@ -2419,6 +2420,13 @@ prompt the user to log in. </p>
|
|
|
2419
2420
|
<td><p>Whether or not to return the instance types as a dictionary.</p></td>
|
|
2420
2421
|
<td><code>False</code></td>
|
|
2421
2422
|
</tr>
|
|
2423
|
+
<tr>
|
|
2424
|
+
<td><code>filter_param</code></td>
|
|
2425
|
+
<td><code>string</code></td>
|
|
2426
|
+
<td><p>complex RHS string query ex:
|
|
2427
|
+
"cpu=gte:8:int,operating_system=ne:windows,gpu.gpu_count=eq:1:int"</p></td>
|
|
2428
|
+
<td><code>''</code></td>
|
|
2429
|
+
</tr>
|
|
2422
2430
|
</tbody>
|
|
2423
2431
|
</table>
|
|
2424
2432
|
<p><strong>Returns:</strong></p>
|
|
@@ -2438,23 +2446,26 @@ prompt the user to log in. </p>
|
|
|
2438
2446
|
</table>
|
|
2439
2447
|
<details class="quote">
|
|
2440
2448
|
<summary>Source code in <code>ciocore/api_client.py</code></summary>
|
|
2441
|
-
<div class="highlight"><pre><span></span><code><span class="k">def</span> <span class="nf">request_instance_types</span><span class="p">(</span><span class="n">as_dict</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span>
|
|
2449
|
+
<div class="highlight"><pre><span></span><code><span class="k">def</span> <span class="nf">request_instance_types</span><span class="p">(</span><span class="n">as_dict</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">filter_param</span><span class="o">=</span><span class="s2">""</span><span class="p">):</span>
|
|
2442
2450
|
<span class="w"> </span><span class="sd">"""</span>
|
|
2443
2451
|
<span class="sd"> Get the list of available instances types.</span>
|
|
2444
2452
|
|
|
2445
2453
|
<span class="sd"> Args:</span>
|
|
2446
2454
|
<span class="sd"> as_dict (bool): Whether or not to return the instance types as a dictionary.</span>
|
|
2455
|
+
<span class="sd"> filter_param (string): complex RHS string query ex:</span>
|
|
2456
|
+
<span class="sd"> "cpu=gte:8:int,operating_system=ne:windows,gpu.gpu_count=eq:1:int"</span>
|
|
2447
2457
|
|
|
2448
2458
|
<span class="sd"> Returns:</span>
|
|
2449
2459
|
<span class="sd"> list: The list of instance types.</span>
|
|
2450
2460
|
<span class="sd"> """</span>
|
|
2451
2461
|
<span class="n">api</span> <span class="o">=</span> <span class="n">ApiClient</span><span class="p">()</span>
|
|
2452
2462
|
<span class="n">response</span><span class="p">,</span> <span class="n">response_code</span> <span class="o">=</span> <span class="n">api</span><span class="o">.</span><span class="n">make_request</span><span class="p">(</span>
|
|
2453
|
-
<span class="s2">"api/v1/instance-types"</span><span class="p">,</span> <span class="n">use_api_key</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">raise_on_error</span><span class="o">=</span><span class="kc">False</span>
|
|
2463
|
+
<span class="s2">"api/v1/instance-types"</span><span class="p">,</span> <span class="n">use_api_key</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">raise_on_error</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
|
|
2464
|
+
<span class="n">params</span><span class="o">=</span><span class="p">{</span><span class="s2">"filter"</span><span class="p">:</span><span class="n">filter_param</span><span class="p">}</span>
|
|
2454
2465
|
<span class="p">)</span>
|
|
2455
2466
|
<span class="k">if</span> <span class="n">response_code</span> <span class="ow">not</span> <span class="ow">in</span> <span class="p">(</span><span class="mi">200</span><span class="p">,):</span>
|
|
2456
2467
|
<span class="n">msg</span> <span class="o">=</span> <span class="s2">"Failed to get instance types"</span>
|
|
2457
|
-
<span class="n">msg</span> <span class="o">+=</span> <span class="s2">"</span><span class="se">\n</span><span class="s2">
|
|
2468
|
+
<span class="n">msg</span> <span class="o">+=</span> <span class="s2">"</span><span class="se">\n</span><span class="s2">API responded with status code </span><span class="si">%s</span><span class="se">\n</span><span class="s2">"</span> <span class="o">%</span> <span class="p">(</span><span class="n">response_code</span><span class="p">)</span>
|
|
2458
2469
|
<span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="n">msg</span><span class="p">)</span>
|
|
2459
2470
|
|
|
2460
2471
|
<span class="n">instance_types</span> <span class="o">=</span> <span class="n">json</span><span class="o">.</span><span class="n">loads</span><span class="p">(</span><span class="n">response</span><span class="p">)</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"data"</span><span class="p">,</span> <span class="p">[])</span>
|
|
@@ -984,7 +984,7 @@
|
|
|
984
984
|
|
|
985
985
|
|
|
986
986
|
<h2 id="ciocore.data.data" class="doc doc-heading">
|
|
987
|
-
<code class="highlight language-python"><span class="n">data</span><span class="p">(</span><span class="n">force</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span></code>
|
|
987
|
+
<code class="highlight language-python"><span class="n">data</span><span class="p">(</span><span class="n">force</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">instances_filter</span><span class="o">=</span><span class="s1">''</span><span class="p">)</span></code>
|
|
988
988
|
|
|
989
989
|
|
|
990
990
|
</h2>
|
|
@@ -1008,6 +1008,12 @@
|
|
|
1008
1008
|
<td></td>
|
|
1009
1009
|
<td><p>(bool) If <code>True</code>, then force the system to fetch fresh data -- Defaults to <code>False</code>.</p></td>
|
|
1010
1010
|
</tr>
|
|
1011
|
+
<tr>
|
|
1012
|
+
<td><code>instances_filter</code></td>
|
|
1013
|
+
<td></td>
|
|
1014
|
+
<td><p>(str) complex RHS string query ex:
|
|
1015
|
+
"cpu=gte:8:int,operating_system=ne:windows,gpu.gpu_count=eq:1:int"</p></td>
|
|
1016
|
+
</tr>
|
|
1011
1017
|
</tbody>
|
|
1012
1018
|
</table>
|
|
1013
1019
|
<p><strong>Exceptions:</strong></p>
|
|
@@ -1079,12 +1085,14 @@ the software available at Conductor, or a subset based on specified products.</p
|
|
|
1079
1085
|
|
|
1080
1086
|
<details class="quote">
|
|
1081
1087
|
<summary>Source code in <code>ciocore/data.py</code></summary>
|
|
1082
|
-
<div class="highlight"><pre><span></span><code><span class="k">def</span> <span class="nf">data</span><span class="p">(</span><span class="n">force</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span>
|
|
1088
|
+
<div class="highlight"><pre><span></span><code><span class="k">def</span> <span class="nf">data</span><span class="p">(</span><span class="n">force</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">instances_filter</span><span class="o">=</span><span class="s2">""</span><span class="p">):</span>
|
|
1083
1089
|
<span class="w"> </span><span class="sd">"""</span>
|
|
1084
1090
|
<span class="sd"> Provide projects, instance types, and software package data.</span>
|
|
1085
1091
|
|
|
1086
1092
|
<span class="sd"> Keyword Args:</span>
|
|
1087
1093
|
<span class="sd"> force: (bool) If `True`, then force the system to fetch fresh data -- Defaults to `False`.</span>
|
|
1094
|
+
<span class="sd"> instances_filter: (str) complex RHS string query ex:</span>
|
|
1095
|
+
<span class="sd"> "cpu=gte:8:int,operating_system=ne:windows,gpu.gpu_count=eq:1:int"</span>
|
|
1088
1096
|
|
|
1089
1097
|
<span class="sd"> Raises:</span>
|
|
1090
1098
|
<span class="sd"> ValueError: Module was not initialized with [init()](/data/#ciocore.data.init).</span>
|
|
@@ -1146,7 +1154,7 @@ the software available at Conductor, or a subset based on specified products.</p
|
|
|
1146
1154
|
<span class="c1"># PROJECTS</span>
|
|
1147
1155
|
<span class="n">__data__</span><span class="p">[</span><span class="s2">"projects"</span><span class="p">]</span> <span class="o">=</span> <span class="nb">sorted</span><span class="p">(</span><span class="n">api_client</span><span class="o">.</span><span class="n">request_projects</span><span class="p">())</span>
|
|
1148
1156
|
<span class="c1"># INST_TYPES</span>
|
|
1149
|
-
<span class="n">instance_types</span> <span class="o">=</span> <span class="n">api_client</span><span class="o">.</span><span class="n">request_instance_types</span><span class="p">()</span>
|
|
1157
|
+
<span class="n">instance_types</span> <span class="o">=</span> <span class="n">api_client</span><span class="o">.</span><span class="n">request_instance_types</span><span class="p">(</span><span class="n">filter_param</span><span class="o">=</span><span class="n">instances_filter</span><span class="p">)</span>
|
|
1150
1158
|
<span class="c1"># SOFTWARE</span>
|
|
1151
1159
|
<span class="n">software</span> <span class="o">=</span> <span class="n">api_client</span><span class="o">.</span><span class="n">request_software_packages</span><span class="p">()</span>
|
|
1152
1160
|
|
|
@@ -1233,10 +1233,6 @@ PackageTree </code>
|
|
|
1233
1233
|
<span class="k">def</span> <span class="fm">__bool__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
|
1234
1234
|
<span class="k">return</span> <span class="kc">True</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_tree</span><span class="p">[</span><span class="s2">"children"</span><span class="p">]</span> <span class="k">else</span> <span class="kc">False</span>
|
|
1235
1235
|
|
|
1236
|
-
<span class="k">def</span> <span class="nf">__nonzero__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
|
1237
|
-
<span class="c1"># Python 2.7</span>
|
|
1238
|
-
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="fm">__bool__</span><span class="p">()</span>
|
|
1239
|
-
|
|
1240
1236
|
<span class="k">def</span> <span class="nf">as_dict</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
|
1241
1237
|
<span class="w"> </span><span class="sd">"""</span>
|
|
1242
1238
|
<span class="sd"> Returns:</span>
|
|
@@ -2090,7 +2086,6 @@ appropriate UI.</p>
|
|
|
2090
2086
|
|
|
2091
2087
|
|
|
2092
2088
|
|
|
2093
|
-
|
|
2094
2089
|
<div class="doc doc-object doc-method">
|
|
2095
2090
|
|
|
2096
2091
|
|