ciocore 6.3.2rc1__py2.py3-none-any.whl → 6.4.0__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/__about__.py +3 -20
- ciocore/api_client.py +116 -236
- ciocore/cli/__init__.py +3 -0
- ciocore/cli/conductor.py +206 -0
- ciocore/config.py +44 -50
- ciocore/data.py +131 -85
- ciocore/downloader.py +64 -46
- ciocore/hardware_set.py +99 -326
- ciocore/package_environment.py +74 -48
- ciocore/package_tree.py +377 -300
- ciocore/uploader/_uploader.py +2 -6
- ciocore-6.4.0.data/scripts/conductor +19 -0
- ciocore-6.4.0.data/scripts/conductor.bat +13 -0
- {ciocore-6.3.2rc1.dist-info → ciocore-6.4.0.dist-info}/METADATA +12 -35
- ciocore-6.4.0.dist-info/RECORD +51 -0
- {ciocore-6.3.2rc1.dist-info → ciocore-6.4.0.dist-info}/WHEEL +1 -1
- tests/instance_type_fixtures.py +9 -43
- tests/mocks/api_client_mock.py +31 -0
- tests/test_hardware_set.py +4 -50
- ciocore/cli.py +0 -336
- ciocore/dev_inst_tagger.py +0 -120
- ciocore/docsite/404.html +0 -723
- ciocore/docsite/apidoc/api_client/index.html +0 -2590
- ciocore/docsite/apidoc/apidoc/index.html +0 -868
- ciocore/docsite/apidoc/config/index.html +0 -1562
- ciocore/docsite/apidoc/data/index.html +0 -1550
- ciocore/docsite/apidoc/hardware_set/index.html +0 -2324
- ciocore/docsite/apidoc/package_environment/index.html +0 -1430
- ciocore/docsite/apidoc/package_tree/index.html +0 -2310
- ciocore/docsite/assets/_mkdocstrings.css +0 -16
- ciocore/docsite/assets/images/favicon.png +0 -0
- ciocore/docsite/assets/javascripts/bundle.4e31edb1.min.js +0 -29
- ciocore/docsite/assets/javascripts/bundle.4e31edb1.min.js.map +0 -8
- ciocore/docsite/assets/javascripts/lunr/min/lunr.ar.min.js +0 -1
- ciocore/docsite/assets/javascripts/lunr/min/lunr.da.min.js +0 -18
- ciocore/docsite/assets/javascripts/lunr/min/lunr.de.min.js +0 -18
- ciocore/docsite/assets/javascripts/lunr/min/lunr.du.min.js +0 -18
- ciocore/docsite/assets/javascripts/lunr/min/lunr.es.min.js +0 -18
- ciocore/docsite/assets/javascripts/lunr/min/lunr.fi.min.js +0 -18
- ciocore/docsite/assets/javascripts/lunr/min/lunr.fr.min.js +0 -18
- ciocore/docsite/assets/javascripts/lunr/min/lunr.hi.min.js +0 -1
- ciocore/docsite/assets/javascripts/lunr/min/lunr.hu.min.js +0 -18
- ciocore/docsite/assets/javascripts/lunr/min/lunr.hy.min.js +0 -1
- ciocore/docsite/assets/javascripts/lunr/min/lunr.it.min.js +0 -18
- ciocore/docsite/assets/javascripts/lunr/min/lunr.ja.min.js +0 -1
- ciocore/docsite/assets/javascripts/lunr/min/lunr.jp.min.js +0 -1
- ciocore/docsite/assets/javascripts/lunr/min/lunr.kn.min.js +0 -1
- ciocore/docsite/assets/javascripts/lunr/min/lunr.ko.min.js +0 -1
- ciocore/docsite/assets/javascripts/lunr/min/lunr.multi.min.js +0 -1
- ciocore/docsite/assets/javascripts/lunr/min/lunr.nl.min.js +0 -18
- ciocore/docsite/assets/javascripts/lunr/min/lunr.no.min.js +0 -18
- ciocore/docsite/assets/javascripts/lunr/min/lunr.pt.min.js +0 -18
- ciocore/docsite/assets/javascripts/lunr/min/lunr.ro.min.js +0 -18
- ciocore/docsite/assets/javascripts/lunr/min/lunr.ru.min.js +0 -18
- ciocore/docsite/assets/javascripts/lunr/min/lunr.sa.min.js +0 -1
- ciocore/docsite/assets/javascripts/lunr/min/lunr.stemmer.support.min.js +0 -1
- ciocore/docsite/assets/javascripts/lunr/min/lunr.sv.min.js +0 -18
- ciocore/docsite/assets/javascripts/lunr/min/lunr.ta.min.js +0 -1
- ciocore/docsite/assets/javascripts/lunr/min/lunr.te.min.js +0 -1
- ciocore/docsite/assets/javascripts/lunr/min/lunr.th.min.js +0 -1
- ciocore/docsite/assets/javascripts/lunr/min/lunr.tr.min.js +0 -18
- ciocore/docsite/assets/javascripts/lunr/min/lunr.vi.min.js +0 -1
- ciocore/docsite/assets/javascripts/lunr/min/lunr.zh.min.js +0 -1
- ciocore/docsite/assets/javascripts/lunr/tinyseg.js +0 -206
- ciocore/docsite/assets/javascripts/lunr/wordcut.js +0 -6708
- ciocore/docsite/assets/javascripts/workers/search.dfff1995.min.js +0 -42
- ciocore/docsite/assets/javascripts/workers/search.dfff1995.min.js.map +0 -8
- ciocore/docsite/assets/stylesheets/main.83068744.min.css +0 -1
- ciocore/docsite/assets/stylesheets/main.83068744.min.css.map +0 -1
- ciocore/docsite/assets/stylesheets/palette.ecc896b0.min.css +0 -1
- ciocore/docsite/assets/stylesheets/palette.ecc896b0.min.css.map +0 -1
- ciocore/docsite/cmdline/docs/index.html +0 -834
- ciocore/docsite/cmdline/downloader/index.html +0 -897
- ciocore/docsite/cmdline/packages/index.html +0 -841
- ciocore/docsite/cmdline/uploader/index.html +0 -950
- ciocore/docsite/how-to-guides/index.html +0 -831
- ciocore/docsite/index.html +0 -853
- ciocore/docsite/logo.png +0 -0
- ciocore/docsite/objects.inv +0 -0
- ciocore/docsite/search/search_index.json +0 -1
- ciocore/docsite/sitemap.xml +0 -3
- ciocore/docsite/sitemap.xml.gz +0 -0
- ciocore/docsite/stylesheets/extra.css +0 -26
- ciocore/docsite/stylesheets/tables.css +0 -170
- ciocore/package_query.py +0 -171
- ciocore-6.3.2rc1.dist-info/RECORD +0 -115
- ciocore-6.3.2rc1.dist-info/entry_points.txt +0 -2
- tests/test_cli.py +0 -161
- tests/test_downloader.py +0 -56
- {ciocore-6.3.2rc1.dist-info → ciocore-6.4.0.dist-info}/top_level.txt +0 -0
|
@@ -1,2590 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
<!doctype html>
|
|
3
|
-
<html lang="en" class="no-js">
|
|
4
|
-
<head>
|
|
5
|
-
|
|
6
|
-
<meta charset="utf-8">
|
|
7
|
-
<meta name="viewport" content="width=device-width,initial-scale=1">
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
<meta name="author" content="Conductor Developers">
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
<link rel="prev" href="../apidoc/">
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
<link rel="next" href="../config/">
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
<link rel="icon" href="../../assets/images/favicon.png">
|
|
21
|
-
<meta name="generator" content="mkdocs-1.5.2, mkdocs-material-9.2.0-b2">
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
<title>ciocore.api_client - Conductor Core</title>
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
<link rel="stylesheet" href="../../assets/stylesheets/main.83068744.min.css">
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
<link rel="stylesheet" href="../../assets/stylesheets/palette.ecc896b0.min.css">
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
|
46
|
-
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Raleway:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback">
|
|
47
|
-
<style>:root{--md-text-font:"Raleway";--md-code-font:"Roboto Mono"}</style>
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
<link rel="stylesheet" href="../../assets/_mkdocstrings.css">
|
|
52
|
-
|
|
53
|
-
<link rel="stylesheet" href="../../stylesheets/extra.css">
|
|
54
|
-
|
|
55
|
-
<link rel="stylesheet" href="../../stylesheets/tables.css">
|
|
56
|
-
|
|
57
|
-
<script>__md_scope=new URL("../..",location),__md_hash=e=>[...e].reduce((e,_)=>(e<<5)-e+_.charCodeAt(0),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
</head>
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
<body dir="ltr" data-md-color-scheme="slate" data-md-color-primary="custom" data-md-color-accent="custom">
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
<script>var palette=__md_get("__palette");if(palette&&"object"==typeof palette.color)for(var key of Object.keys(palette.color))document.body.setAttribute("data-md-color-"+key,palette.color[key])</script>
|
|
79
|
-
|
|
80
|
-
<input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
|
|
81
|
-
<input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
|
|
82
|
-
<label class="md-overlay" for="__drawer"></label>
|
|
83
|
-
<div data-md-component="skip">
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
<a href="#ciocoreapi_client" class="md-skip">
|
|
87
|
-
Skip to content
|
|
88
|
-
</a>
|
|
89
|
-
|
|
90
|
-
</div>
|
|
91
|
-
<div data-md-component="announce">
|
|
92
|
-
|
|
93
|
-
</div>
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
<header class="md-header md-header--shadow md-header--lifted" data-md-component="header">
|
|
101
|
-
<nav class="md-header__inner md-grid" aria-label="Header">
|
|
102
|
-
<a href="https://www.conductortech.com" title="Conductor Core" class="md-header__button md-logo" aria-label="Conductor Core" data-md-component="logo">
|
|
103
|
-
|
|
104
|
-
<img src="../../logo.png" alt="logo">
|
|
105
|
-
|
|
106
|
-
</a>
|
|
107
|
-
<label class="md-header__button md-icon" for="__drawer">
|
|
108
|
-
|
|
109
|
-
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2Z"/></svg>
|
|
110
|
-
</label>
|
|
111
|
-
<div class="md-header__title" data-md-component="header-title">
|
|
112
|
-
<div class="md-header__ellipsis">
|
|
113
|
-
<div class="md-header__topic">
|
|
114
|
-
<span class="md-ellipsis">
|
|
115
|
-
Conductor Core
|
|
116
|
-
</span>
|
|
117
|
-
</div>
|
|
118
|
-
<div class="md-header__topic" data-md-component="header-topic">
|
|
119
|
-
<span class="md-ellipsis">
|
|
120
|
-
|
|
121
|
-
ciocore.api_client
|
|
122
|
-
|
|
123
|
-
</span>
|
|
124
|
-
</div>
|
|
125
|
-
</div>
|
|
126
|
-
</div>
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
<form class="md-header__option" data-md-component="palette">
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
<input class="md-option" data-md-color-media="" data-md-color-scheme="slate" data-md-color-primary="custom" data-md-color-accent="custom" aria-label="Switch to light mode" type="radio" name="__palette" id="__palette_1">
|
|
135
|
-
|
|
136
|
-
<label class="md-header__button md-icon" title="Switch to light mode" for="__palette_2" hidden>
|
|
137
|
-
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="m17.75 4.09-2.53 1.94.91 3.06-2.63-1.81-2.63 1.81.91-3.06-2.53-1.94L12.44 4l1.06-3 1.06 3 3.19.09m3.5 6.91-1.64 1.25.59 1.98-1.7-1.17-1.7 1.17.59-1.98L15.75 11l2.06-.05L18.5 9l.69 1.95 2.06.05m-2.28 4.95c.83-.08 1.72 1.1 1.19 1.85-.32.45-.66.87-1.08 1.27C15.17 23 8.84 23 4.94 19.07c-3.91-3.9-3.91-10.24 0-14.14.4-.4.82-.76 1.27-1.08.75-.53 1.93.36 1.85 1.19-.27 2.86.69 5.83 2.89 8.02a9.96 9.96 0 0 0 8.02 2.89m-1.64 2.02a12.08 12.08 0 0 1-7.8-3.47c-2.17-2.19-3.33-5-3.49-7.82-2.81 3.14-2.7 7.96.31 10.98 3.02 3.01 7.84 3.12 10.98.31Z"/></svg>
|
|
138
|
-
</label>
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
<input class="md-option" data-md-color-media="" data-md-color-scheme="default" data-md-color-primary="custom" data-md-color-accent="custom" aria-label="Switch to dark mode" type="radio" name="__palette" id="__palette_2">
|
|
145
|
-
|
|
146
|
-
<label class="md-header__button md-icon" title="Switch to dark mode" for="__palette_1" hidden>
|
|
147
|
-
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 7a5 5 0 0 1 5 5 5 5 0 0 1-5 5 5 5 0 0 1-5-5 5 5 0 0 1 5-5m0 2a3 3 0 0 0-3 3 3 3 0 0 0 3 3 3 3 0 0 0 3-3 3 3 0 0 0-3-3m0-7 2.39 3.42C13.65 5.15 12.84 5 12 5c-.84 0-1.65.15-2.39.42L12 2M3.34 7l4.16-.35A7.2 7.2 0 0 0 5.94 8.5c-.44.74-.69 1.5-.83 2.29L3.34 7m.02 10 1.76-3.77a7.131 7.131 0 0 0 2.38 4.14L3.36 17M20.65 7l-1.77 3.79a7.023 7.023 0 0 0-2.38-4.15l4.15.36m-.01 10-4.14.36c.59-.51 1.12-1.14 1.54-1.86.42-.73.69-1.5.83-2.29L20.64 17M12 22l-2.41-3.44c.74.27 1.55.44 2.41.44.82 0 1.63-.17 2.37-.44L12 22Z"/></svg>
|
|
148
|
-
</label>
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
</form>
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
<label class="md-header__button md-icon" for="__search">
|
|
157
|
-
|
|
158
|
-
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg>
|
|
159
|
-
</label>
|
|
160
|
-
<div class="md-search" data-md-component="search" role="dialog">
|
|
161
|
-
<label class="md-search__overlay" for="__search"></label>
|
|
162
|
-
<div class="md-search__inner" role="search">
|
|
163
|
-
<form class="md-search__form" name="search">
|
|
164
|
-
<input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required>
|
|
165
|
-
<label class="md-search__icon md-icon" for="__search">
|
|
166
|
-
|
|
167
|
-
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg>
|
|
168
|
-
|
|
169
|
-
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12Z"/></svg>
|
|
170
|
-
</label>
|
|
171
|
-
<nav class="md-search__options" aria-label="Search">
|
|
172
|
-
|
|
173
|
-
<button type="reset" class="md-search__icon md-icon" title="Clear" aria-label="Clear" tabindex="-1">
|
|
174
|
-
|
|
175
|
-
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41Z"/></svg>
|
|
176
|
-
</button>
|
|
177
|
-
</nav>
|
|
178
|
-
|
|
179
|
-
</form>
|
|
180
|
-
<div class="md-search__output">
|
|
181
|
-
<div class="md-search__scrollwrap" data-md-scrollfix>
|
|
182
|
-
<div class="md-search-result" data-md-component="search-result">
|
|
183
|
-
<div class="md-search-result__meta">
|
|
184
|
-
Initializing search
|
|
185
|
-
</div>
|
|
186
|
-
<ol class="md-search-result__list" role="presentation"></ol>
|
|
187
|
-
</div>
|
|
188
|
-
</div>
|
|
189
|
-
</div>
|
|
190
|
-
</div>
|
|
191
|
-
</div>
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
</nav>
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
<nav class="md-tabs" aria-label="Tabs" data-md-component="tabs">
|
|
199
|
-
<div class="md-grid">
|
|
200
|
-
<ul class="md-tabs__list">
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
<li class="md-tabs__item">
|
|
207
|
-
<a href="../.." class="md-tabs__link">
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
Overview
|
|
213
|
-
|
|
214
|
-
</a>
|
|
215
|
-
</li>
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
<li class="md-tabs__item">
|
|
226
|
-
<a href="../../cmdline/uploader/" class="md-tabs__link">
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
CLI
|
|
230
|
-
|
|
231
|
-
</a>
|
|
232
|
-
</li>
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
<li class="md-tabs__item md-tabs__item--active">
|
|
246
|
-
<a href="../apidoc/" class="md-tabs__link">
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
API
|
|
250
|
-
|
|
251
|
-
</a>
|
|
252
|
-
</li>
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
<li class="md-tabs__item">
|
|
262
|
-
<a href="../../how-to-guides/" class="md-tabs__link">
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
How to
|
|
268
|
-
|
|
269
|
-
</a>
|
|
270
|
-
</li>
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
</ul>
|
|
275
|
-
</div>
|
|
276
|
-
</nav>
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
</header>
|
|
280
|
-
|
|
281
|
-
<div class="md-container" data-md-component="container">
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
<main class="md-main" data-md-component="main">
|
|
287
|
-
<div class="md-main__inner md-grid">
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
<div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" >
|
|
292
|
-
<div class="md-sidebar__scrollwrap">
|
|
293
|
-
<div class="md-sidebar__inner">
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
<nav class="md-nav md-nav--primary md-nav--lifted" aria-label="Navigation" data-md-level="0">
|
|
301
|
-
<label class="md-nav__title" for="__drawer">
|
|
302
|
-
<a href="https://www.conductortech.com" title="Conductor Core" class="md-nav__button md-logo" aria-label="Conductor Core" data-md-component="logo">
|
|
303
|
-
|
|
304
|
-
<img src="../../logo.png" alt="logo">
|
|
305
|
-
|
|
306
|
-
</a>
|
|
307
|
-
Conductor Core
|
|
308
|
-
</label>
|
|
309
|
-
|
|
310
|
-
<ul class="md-nav__list" data-md-scrollfix>
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
<li class="md-nav__item">
|
|
318
|
-
<a href="../.." class="md-nav__link">
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
<span class="md-ellipsis">
|
|
322
|
-
Overview
|
|
323
|
-
</span>
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
</a>
|
|
327
|
-
</li>
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
<li class="md-nav__item md-nav__item--nested">
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
<input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_2" >
|
|
348
|
-
|
|
349
|
-
<label class="md-nav__link" for="__nav_2" id="__nav_2_label" tabindex="0">
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
<span class="md-ellipsis">
|
|
353
|
-
CLI
|
|
354
|
-
</span>
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
<span class="md-nav__icon md-icon"></span>
|
|
358
|
-
</label>
|
|
359
|
-
|
|
360
|
-
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_2_label" aria-expanded="false">
|
|
361
|
-
<label class="md-nav__title" for="__nav_2">
|
|
362
|
-
<span class="md-nav__icon md-icon"></span>
|
|
363
|
-
CLI
|
|
364
|
-
</label>
|
|
365
|
-
<ul class="md-nav__list" data-md-scrollfix>
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
<li class="md-nav__item">
|
|
373
|
-
<a href="../../cmdline/uploader/" class="md-nav__link">
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
<span class="md-ellipsis">
|
|
377
|
-
Uploader
|
|
378
|
-
</span>
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
</a>
|
|
382
|
-
</li>
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
<li class="md-nav__item">
|
|
393
|
-
<a href="../../cmdline/downloader/" class="md-nav__link">
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
<span class="md-ellipsis">
|
|
397
|
-
Downloader
|
|
398
|
-
</span>
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
</a>
|
|
402
|
-
</li>
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
<li class="md-nav__item">
|
|
413
|
-
<a href="../../cmdline/packages/" class="md-nav__link">
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
<span class="md-ellipsis">
|
|
417
|
-
Packages
|
|
418
|
-
</span>
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
</a>
|
|
422
|
-
</li>
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
<li class="md-nav__item">
|
|
433
|
-
<a href="../../cmdline/docs/" class="md-nav__link">
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
<span class="md-ellipsis">
|
|
437
|
-
Docs
|
|
438
|
-
</span>
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
</a>
|
|
442
|
-
</li>
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
</ul>
|
|
448
|
-
</nav>
|
|
449
|
-
|
|
450
|
-
</li>
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
<li class="md-nav__item md-nav__item--active md-nav__item--nested">
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3" checked>
|
|
471
|
-
|
|
472
|
-
<label class="md-nav__link" for="__nav_3" id="__nav_3_label" tabindex="0">
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
<span class="md-ellipsis">
|
|
476
|
-
API
|
|
477
|
-
</span>
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
<span class="md-nav__icon md-icon"></span>
|
|
481
|
-
</label>
|
|
482
|
-
|
|
483
|
-
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_3_label" aria-expanded="true">
|
|
484
|
-
<label class="md-nav__title" for="__nav_3">
|
|
485
|
-
<span class="md-nav__icon md-icon"></span>
|
|
486
|
-
API
|
|
487
|
-
</label>
|
|
488
|
-
<ul class="md-nav__list" data-md-scrollfix>
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
<li class="md-nav__item">
|
|
496
|
-
<a href="../apidoc/" class="md-nav__link">
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
<span class="md-ellipsis">
|
|
500
|
-
Api Overview
|
|
501
|
-
</span>
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
</a>
|
|
505
|
-
</li>
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
<li class="md-nav__item md-nav__item--active">
|
|
518
|
-
|
|
519
|
-
<input class="md-nav__toggle md-toggle" type="checkbox" id="__toc">
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
<label class="md-nav__link md-nav__link--active" for="__toc">
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
<span class="md-ellipsis">
|
|
529
|
-
ciocore.api_client
|
|
530
|
-
</span>
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
<span class="md-nav__icon md-icon"></span>
|
|
534
|
-
</label>
|
|
535
|
-
|
|
536
|
-
<a href="./" class="md-nav__link md-nav__link--active">
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
<span class="md-ellipsis">
|
|
540
|
-
ciocore.api_client
|
|
541
|
-
</span>
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
</a>
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
<label class="md-nav__title" for="__toc">
|
|
556
|
-
<span class="md-nav__icon md-icon"></span>
|
|
557
|
-
Table of contents
|
|
558
|
-
</label>
|
|
559
|
-
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
|
|
560
|
-
|
|
561
|
-
<li class="md-nav__item">
|
|
562
|
-
<a href="#ciocore.api_client" class="md-nav__link">
|
|
563
|
-
ciocore.api_client
|
|
564
|
-
</a>
|
|
565
|
-
|
|
566
|
-
</li>
|
|
567
|
-
|
|
568
|
-
<li class="md-nav__item">
|
|
569
|
-
<a href="#ciocore.api_client.ApiClient" class="md-nav__link">
|
|
570
|
-
ApiClient
|
|
571
|
-
</a>
|
|
572
|
-
|
|
573
|
-
<nav class="md-nav" aria-label="ApiClient">
|
|
574
|
-
<ul class="md-nav__list">
|
|
575
|
-
|
|
576
|
-
<li class="md-nav__item">
|
|
577
|
-
<a href="#ciocore.api_client.ApiClient.__init__" class="md-nav__link">
|
|
578
|
-
__init__()
|
|
579
|
-
</a>
|
|
580
|
-
|
|
581
|
-
</li>
|
|
582
|
-
|
|
583
|
-
<li class="md-nav__item">
|
|
584
|
-
<a href="#ciocore.api_client.ApiClient.make_prepared_request" class="md-nav__link">
|
|
585
|
-
make_prepared_request()
|
|
586
|
-
</a>
|
|
587
|
-
|
|
588
|
-
</li>
|
|
589
|
-
|
|
590
|
-
<li class="md-nav__item">
|
|
591
|
-
<a href="#ciocore.api_client.ApiClient.make_request" class="md-nav__link">
|
|
592
|
-
make_request()
|
|
593
|
-
</a>
|
|
594
|
-
|
|
595
|
-
</li>
|
|
596
|
-
|
|
597
|
-
</ul>
|
|
598
|
-
</nav>
|
|
599
|
-
|
|
600
|
-
</li>
|
|
601
|
-
|
|
602
|
-
<li class="md-nav__item">
|
|
603
|
-
<a href="#ciocore.api_client.read_conductor_credentials" class="md-nav__link">
|
|
604
|
-
read_conductor_credentials()
|
|
605
|
-
</a>
|
|
606
|
-
|
|
607
|
-
</li>
|
|
608
|
-
|
|
609
|
-
<li class="md-nav__item">
|
|
610
|
-
<a href="#ciocore.api_client.get_api_key_bearer_token" class="md-nav__link">
|
|
611
|
-
get_api_key_bearer_token()
|
|
612
|
-
</a>
|
|
613
|
-
|
|
614
|
-
</li>
|
|
615
|
-
|
|
616
|
-
<li class="md-nav__item">
|
|
617
|
-
<a href="#ciocore.api_client.get_creds_path" class="md-nav__link">
|
|
618
|
-
get_creds_path()
|
|
619
|
-
</a>
|
|
620
|
-
|
|
621
|
-
</li>
|
|
622
|
-
|
|
623
|
-
<li class="md-nav__item">
|
|
624
|
-
<a href="#ciocore.api_client.get_bearer_token" class="md-nav__link">
|
|
625
|
-
get_bearer_token()
|
|
626
|
-
</a>
|
|
627
|
-
|
|
628
|
-
</li>
|
|
629
|
-
|
|
630
|
-
<li class="md-nav__item">
|
|
631
|
-
<a href="#ciocore.api_client.creds_same_domain" class="md-nav__link">
|
|
632
|
-
creds_same_domain()
|
|
633
|
-
</a>
|
|
634
|
-
|
|
635
|
-
</li>
|
|
636
|
-
|
|
637
|
-
<li class="md-nav__item">
|
|
638
|
-
<a href="#ciocore.api_client.account_id_from_jwt" class="md-nav__link">
|
|
639
|
-
account_id_from_jwt()
|
|
640
|
-
</a>
|
|
641
|
-
|
|
642
|
-
</li>
|
|
643
|
-
|
|
644
|
-
<li class="md-nav__item">
|
|
645
|
-
<a href="#ciocore.api_client.account_name_from_jwt" class="md-nav__link">
|
|
646
|
-
account_name_from_jwt()
|
|
647
|
-
</a>
|
|
648
|
-
|
|
649
|
-
</li>
|
|
650
|
-
|
|
651
|
-
<li class="md-nav__item">
|
|
652
|
-
<a href="#ciocore.api_client.request_instance_types" class="md-nav__link">
|
|
653
|
-
request_instance_types()
|
|
654
|
-
</a>
|
|
655
|
-
|
|
656
|
-
</li>
|
|
657
|
-
|
|
658
|
-
<li class="md-nav__item">
|
|
659
|
-
<a href="#ciocore.api_client.request_projects" class="md-nav__link">
|
|
660
|
-
request_projects()
|
|
661
|
-
</a>
|
|
662
|
-
|
|
663
|
-
</li>
|
|
664
|
-
|
|
665
|
-
<li class="md-nav__item">
|
|
666
|
-
<a href="#ciocore.api_client.request_software_packages" class="md-nav__link">
|
|
667
|
-
request_software_packages()
|
|
668
|
-
</a>
|
|
669
|
-
|
|
670
|
-
</li>
|
|
671
|
-
|
|
672
|
-
</ul>
|
|
673
|
-
|
|
674
|
-
</nav>
|
|
675
|
-
|
|
676
|
-
</li>
|
|
677
|
-
|
|
678
|
-
|
|
679
|
-
|
|
680
|
-
|
|
681
|
-
|
|
682
|
-
|
|
683
|
-
|
|
684
|
-
|
|
685
|
-
|
|
686
|
-
<li class="md-nav__item">
|
|
687
|
-
<a href="../config/" class="md-nav__link">
|
|
688
|
-
|
|
689
|
-
|
|
690
|
-
<span class="md-ellipsis">
|
|
691
|
-
ciocore.config
|
|
692
|
-
</span>
|
|
693
|
-
|
|
694
|
-
|
|
695
|
-
</a>
|
|
696
|
-
</li>
|
|
697
|
-
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
|
|
704
|
-
|
|
705
|
-
|
|
706
|
-
<li class="md-nav__item">
|
|
707
|
-
<a href="../data/" class="md-nav__link">
|
|
708
|
-
|
|
709
|
-
|
|
710
|
-
<span class="md-ellipsis">
|
|
711
|
-
ciocore.data
|
|
712
|
-
</span>
|
|
713
|
-
|
|
714
|
-
|
|
715
|
-
</a>
|
|
716
|
-
</li>
|
|
717
|
-
|
|
718
|
-
|
|
719
|
-
|
|
720
|
-
|
|
721
|
-
|
|
722
|
-
|
|
723
|
-
|
|
724
|
-
|
|
725
|
-
|
|
726
|
-
<li class="md-nav__item">
|
|
727
|
-
<a href="../hardware_set/" class="md-nav__link">
|
|
728
|
-
|
|
729
|
-
|
|
730
|
-
<span class="md-ellipsis">
|
|
731
|
-
ciocore.hardware_set
|
|
732
|
-
</span>
|
|
733
|
-
|
|
734
|
-
|
|
735
|
-
</a>
|
|
736
|
-
</li>
|
|
737
|
-
|
|
738
|
-
|
|
739
|
-
|
|
740
|
-
|
|
741
|
-
|
|
742
|
-
|
|
743
|
-
|
|
744
|
-
|
|
745
|
-
|
|
746
|
-
<li class="md-nav__item">
|
|
747
|
-
<a href="../package_tree/" class="md-nav__link">
|
|
748
|
-
|
|
749
|
-
|
|
750
|
-
<span class="md-ellipsis">
|
|
751
|
-
ciocore.package_tree
|
|
752
|
-
</span>
|
|
753
|
-
|
|
754
|
-
|
|
755
|
-
</a>
|
|
756
|
-
</li>
|
|
757
|
-
|
|
758
|
-
|
|
759
|
-
|
|
760
|
-
|
|
761
|
-
|
|
762
|
-
|
|
763
|
-
|
|
764
|
-
|
|
765
|
-
|
|
766
|
-
<li class="md-nav__item">
|
|
767
|
-
<a href="../package_environment/" class="md-nav__link">
|
|
768
|
-
|
|
769
|
-
|
|
770
|
-
<span class="md-ellipsis">
|
|
771
|
-
ciocore.package_environment
|
|
772
|
-
</span>
|
|
773
|
-
|
|
774
|
-
|
|
775
|
-
</a>
|
|
776
|
-
</li>
|
|
777
|
-
|
|
778
|
-
|
|
779
|
-
|
|
780
|
-
|
|
781
|
-
</ul>
|
|
782
|
-
</nav>
|
|
783
|
-
|
|
784
|
-
</li>
|
|
785
|
-
|
|
786
|
-
|
|
787
|
-
|
|
788
|
-
|
|
789
|
-
|
|
790
|
-
|
|
791
|
-
|
|
792
|
-
|
|
793
|
-
<li class="md-nav__item">
|
|
794
|
-
<a href="../../how-to-guides/" class="md-nav__link">
|
|
795
|
-
|
|
796
|
-
|
|
797
|
-
<span class="md-ellipsis">
|
|
798
|
-
How to
|
|
799
|
-
</span>
|
|
800
|
-
|
|
801
|
-
|
|
802
|
-
</a>
|
|
803
|
-
</li>
|
|
804
|
-
|
|
805
|
-
|
|
806
|
-
|
|
807
|
-
</ul>
|
|
808
|
-
</nav>
|
|
809
|
-
</div>
|
|
810
|
-
</div>
|
|
811
|
-
</div>
|
|
812
|
-
|
|
813
|
-
|
|
814
|
-
|
|
815
|
-
<div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" >
|
|
816
|
-
<div class="md-sidebar__scrollwrap">
|
|
817
|
-
<div class="md-sidebar__inner">
|
|
818
|
-
|
|
819
|
-
|
|
820
|
-
<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
|
|
821
|
-
|
|
822
|
-
|
|
823
|
-
|
|
824
|
-
|
|
825
|
-
|
|
826
|
-
|
|
827
|
-
<label class="md-nav__title" for="__toc">
|
|
828
|
-
<span class="md-nav__icon md-icon"></span>
|
|
829
|
-
Table of contents
|
|
830
|
-
</label>
|
|
831
|
-
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
|
|
832
|
-
|
|
833
|
-
<li class="md-nav__item">
|
|
834
|
-
<a href="#ciocore.api_client" class="md-nav__link">
|
|
835
|
-
ciocore.api_client
|
|
836
|
-
</a>
|
|
837
|
-
|
|
838
|
-
</li>
|
|
839
|
-
|
|
840
|
-
<li class="md-nav__item">
|
|
841
|
-
<a href="#ciocore.api_client.ApiClient" class="md-nav__link">
|
|
842
|
-
ApiClient
|
|
843
|
-
</a>
|
|
844
|
-
|
|
845
|
-
<nav class="md-nav" aria-label="ApiClient">
|
|
846
|
-
<ul class="md-nav__list">
|
|
847
|
-
|
|
848
|
-
<li class="md-nav__item">
|
|
849
|
-
<a href="#ciocore.api_client.ApiClient.__init__" class="md-nav__link">
|
|
850
|
-
__init__()
|
|
851
|
-
</a>
|
|
852
|
-
|
|
853
|
-
</li>
|
|
854
|
-
|
|
855
|
-
<li class="md-nav__item">
|
|
856
|
-
<a href="#ciocore.api_client.ApiClient.make_prepared_request" class="md-nav__link">
|
|
857
|
-
make_prepared_request()
|
|
858
|
-
</a>
|
|
859
|
-
|
|
860
|
-
</li>
|
|
861
|
-
|
|
862
|
-
<li class="md-nav__item">
|
|
863
|
-
<a href="#ciocore.api_client.ApiClient.make_request" class="md-nav__link">
|
|
864
|
-
make_request()
|
|
865
|
-
</a>
|
|
866
|
-
|
|
867
|
-
</li>
|
|
868
|
-
|
|
869
|
-
</ul>
|
|
870
|
-
</nav>
|
|
871
|
-
|
|
872
|
-
</li>
|
|
873
|
-
|
|
874
|
-
<li class="md-nav__item">
|
|
875
|
-
<a href="#ciocore.api_client.read_conductor_credentials" class="md-nav__link">
|
|
876
|
-
read_conductor_credentials()
|
|
877
|
-
</a>
|
|
878
|
-
|
|
879
|
-
</li>
|
|
880
|
-
|
|
881
|
-
<li class="md-nav__item">
|
|
882
|
-
<a href="#ciocore.api_client.get_api_key_bearer_token" class="md-nav__link">
|
|
883
|
-
get_api_key_bearer_token()
|
|
884
|
-
</a>
|
|
885
|
-
|
|
886
|
-
</li>
|
|
887
|
-
|
|
888
|
-
<li class="md-nav__item">
|
|
889
|
-
<a href="#ciocore.api_client.get_creds_path" class="md-nav__link">
|
|
890
|
-
get_creds_path()
|
|
891
|
-
</a>
|
|
892
|
-
|
|
893
|
-
</li>
|
|
894
|
-
|
|
895
|
-
<li class="md-nav__item">
|
|
896
|
-
<a href="#ciocore.api_client.get_bearer_token" class="md-nav__link">
|
|
897
|
-
get_bearer_token()
|
|
898
|
-
</a>
|
|
899
|
-
|
|
900
|
-
</li>
|
|
901
|
-
|
|
902
|
-
<li class="md-nav__item">
|
|
903
|
-
<a href="#ciocore.api_client.creds_same_domain" class="md-nav__link">
|
|
904
|
-
creds_same_domain()
|
|
905
|
-
</a>
|
|
906
|
-
|
|
907
|
-
</li>
|
|
908
|
-
|
|
909
|
-
<li class="md-nav__item">
|
|
910
|
-
<a href="#ciocore.api_client.account_id_from_jwt" class="md-nav__link">
|
|
911
|
-
account_id_from_jwt()
|
|
912
|
-
</a>
|
|
913
|
-
|
|
914
|
-
</li>
|
|
915
|
-
|
|
916
|
-
<li class="md-nav__item">
|
|
917
|
-
<a href="#ciocore.api_client.account_name_from_jwt" class="md-nav__link">
|
|
918
|
-
account_name_from_jwt()
|
|
919
|
-
</a>
|
|
920
|
-
|
|
921
|
-
</li>
|
|
922
|
-
|
|
923
|
-
<li class="md-nav__item">
|
|
924
|
-
<a href="#ciocore.api_client.request_instance_types" class="md-nav__link">
|
|
925
|
-
request_instance_types()
|
|
926
|
-
</a>
|
|
927
|
-
|
|
928
|
-
</li>
|
|
929
|
-
|
|
930
|
-
<li class="md-nav__item">
|
|
931
|
-
<a href="#ciocore.api_client.request_projects" class="md-nav__link">
|
|
932
|
-
request_projects()
|
|
933
|
-
</a>
|
|
934
|
-
|
|
935
|
-
</li>
|
|
936
|
-
|
|
937
|
-
<li class="md-nav__item">
|
|
938
|
-
<a href="#ciocore.api_client.request_software_packages" class="md-nav__link">
|
|
939
|
-
request_software_packages()
|
|
940
|
-
</a>
|
|
941
|
-
|
|
942
|
-
</li>
|
|
943
|
-
|
|
944
|
-
</ul>
|
|
945
|
-
|
|
946
|
-
</nav>
|
|
947
|
-
</div>
|
|
948
|
-
</div>
|
|
949
|
-
</div>
|
|
950
|
-
|
|
951
|
-
|
|
952
|
-
|
|
953
|
-
<div class="md-content" data-md-component="content">
|
|
954
|
-
<article class="md-content__inner md-typeset">
|
|
955
|
-
|
|
956
|
-
|
|
957
|
-
|
|
958
|
-
|
|
959
|
-
<h1 id="ciocoreapi_client">ciocore.api_client</h1>
|
|
960
|
-
|
|
961
|
-
|
|
962
|
-
<div class="doc doc-object doc-module">
|
|
963
|
-
|
|
964
|
-
<a id="ciocore.api_client"></a>
|
|
965
|
-
<div class="doc doc-contents first">
|
|
966
|
-
|
|
967
|
-
<p>The api_client module is used to make requests to the Conductor API.</p>
|
|
968
|
-
|
|
969
|
-
|
|
970
|
-
|
|
971
|
-
<div class="doc doc-children">
|
|
972
|
-
|
|
973
|
-
|
|
974
|
-
|
|
975
|
-
|
|
976
|
-
|
|
977
|
-
|
|
978
|
-
|
|
979
|
-
|
|
980
|
-
<div class="doc doc-object doc-class">
|
|
981
|
-
|
|
982
|
-
|
|
983
|
-
|
|
984
|
-
<h2 id="ciocore.api_client.ApiClient" class="doc doc-heading">
|
|
985
|
-
<code>
|
|
986
|
-
ApiClient </code>
|
|
987
|
-
|
|
988
|
-
|
|
989
|
-
|
|
990
|
-
</h2>
|
|
991
|
-
|
|
992
|
-
<div class="doc doc-contents ">
|
|
993
|
-
|
|
994
|
-
<p>The ApiClient class is a wrapper around the requests library that handles authentication and retries.</p>
|
|
995
|
-
|
|
996
|
-
<details class="quote">
|
|
997
|
-
<summary>Source code in <code>ciocore/api_client.py</code></summary>
|
|
998
|
-
<div class="highlight"><pre><span></span><code><span class="k">class</span> <span class="nc">ApiClient</span><span class="p">:</span>
|
|
999
|
-
<span class="w"> </span><span class="sd">"""</span>
|
|
1000
|
-
<span class="sd"> The ApiClient class is a wrapper around the requests library that handles authentication and retries.</span>
|
|
1001
|
-
<span class="sd"> """</span>
|
|
1002
|
-
|
|
1003
|
-
<span class="n">http_verbs</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"PUT"</span><span class="p">,</span> <span class="s2">"POST"</span><span class="p">,</span> <span class="s2">"GET"</span><span class="p">,</span> <span class="s2">"DELETE"</span><span class="p">,</span> <span class="s2">"HEAD"</span><span class="p">,</span> <span class="s2">"PATCH"</span><span class="p">]</span>
|
|
1004
|
-
|
|
1005
|
-
<span class="n">USER_AGENT_TEMPLATE</span> <span class="o">=</span> <span class="s2">"client </span><span class="si">{client_name}</span><span class="s2">/</span><span class="si">{client_version}</span><span class="s2"> (ciocore </span><span class="si">{ciocore_version}</span><span class="s2">; </span><span class="si">{runtime}</span><span class="s2"> </span><span class="si">{runtime_version}</span><span class="s2">; </span><span class="si">{platform}</span><span class="s2"> </span><span class="si">{platform_details}</span><span class="s2">; </span><span class="si">{hostname}</span><span class="s2"> </span><span class="si">{pid}</span><span class="s2">; </span><span class="si">{python_path}</span><span class="s2">)"</span>
|
|
1006
|
-
<span class="n">USER_AGENT_MAX_PATH_LENGTH</span> <span class="o">=</span> <span class="mi">1024</span>
|
|
1007
|
-
|
|
1008
|
-
<span class="n">user_agent_header</span> <span class="o">=</span> <span class="kc">None</span>
|
|
1009
|
-
|
|
1010
|
-
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
|
1011
|
-
<span class="w"> </span><span class="sd">"""</span>
|
|
1012
|
-
<span class="sd"> Initialize the ApiClient object.</span>
|
|
1013
|
-
<span class="sd"> """</span>
|
|
1014
|
-
<span class="n">logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s2">""</span><span class="p">)</span>
|
|
1015
|
-
|
|
1016
|
-
<span class="k">def</span> <span class="nf">make_prepared_request</span><span class="p">(</span>
|
|
1017
|
-
<span class="bp">self</span><span class="p">,</span>
|
|
1018
|
-
<span class="n">verb</span><span class="p">,</span>
|
|
1019
|
-
<span class="n">url</span><span class="p">,</span>
|
|
1020
|
-
<span class="n">headers</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
|
|
1021
|
-
<span class="n">params</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
|
|
1022
|
-
<span class="n">json</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
|
|
1023
|
-
<span class="n">data</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
|
|
1024
|
-
<span class="n">stream</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
|
|
1025
|
-
<span class="n">remove_headers_list</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
|
|
1026
|
-
<span class="n">raise_on_error</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span>
|
|
1027
|
-
<span class="n">tries</span><span class="o">=</span><span class="mi">5</span><span class="p">,</span>
|
|
1028
|
-
<span class="p">):</span>
|
|
1029
|
-
<span class="w"> </span><span class="sd">"""</span>
|
|
1030
|
-
<span class="sd"> Make a request to the Conductor API.</span>
|
|
1031
|
-
|
|
1032
|
-
<span class="sd"> Deprecated:</span>
|
|
1033
|
-
<span class="sd"> Primarily used to removed enforced headers by requests.Request. Requests 2.x will add</span>
|
|
1034
|
-
<span class="sd"> Transfer-Encoding: chunked with file like object that is 0 bytes, causing s3 failures (501)</span>
|
|
1035
|
-
<span class="sd"> - https://github.com/psf/requests/issues/4215#issuecomment-319521235</span>
|
|
1036
|
-
|
|
1037
|
-
<span class="sd"> To get around this bug make_prepared_request has functionality to remove the enforced header</span>
|
|
1038
|
-
<span class="sd"> that would occur when using requests.request(...). Requests 3.x resolves this issue, when</span>
|
|
1039
|
-
<span class="sd"> client is built to use Requests 3.x this function can be removed.</span>
|
|
1040
|
-
|
|
1041
|
-
<span class="sd"> Returns:</span>
|
|
1042
|
-
<span class="sd"> requests.Response: The response object.</span>
|
|
1043
|
-
|
|
1044
|
-
<span class="sd"> Args:</span>
|
|
1045
|
-
<span class="sd"> verb (str): The HTTP verb to use.</span>
|
|
1046
|
-
<span class="sd"> url (str): The URL to make the request to.</span>
|
|
1047
|
-
<span class="sd"> headers (dict): A dictionary of headers to send with the request.</span>
|
|
1048
|
-
<span class="sd"> params (dict): A dictionary of query parameters to send with the request.</span>
|
|
1049
|
-
<span class="sd"> json (dict): A JSON payload to send with the request.</span>
|
|
1050
|
-
<span class="sd"> stream (bool): Whether or not to stream the response.</span>
|
|
1051
|
-
<span class="sd"> remove_headers_list (list): A list of headers to remove from the request.</span>
|
|
1052
|
-
<span class="sd"> raise_on_error (bool): Whether or not to raise an exception if the request fails.</span>
|
|
1053
|
-
<span class="sd"> tries (int): The number of times to retry the request.</span>
|
|
1054
|
-
<span class="sd"> """</span>
|
|
1055
|
-
|
|
1056
|
-
<span class="n">req</span> <span class="o">=</span> <span class="n">requests</span><span class="o">.</span><span class="n">Request</span><span class="p">(</span>
|
|
1057
|
-
<span class="n">method</span><span class="o">=</span><span class="n">verb</span><span class="p">,</span>
|
|
1058
|
-
<span class="n">url</span><span class="o">=</span><span class="n">url</span><span class="p">,</span>
|
|
1059
|
-
<span class="n">headers</span><span class="o">=</span><span class="n">headers</span><span class="p">,</span>
|
|
1060
|
-
<span class="n">params</span><span class="o">=</span><span class="n">params</span><span class="p">,</span>
|
|
1061
|
-
<span class="n">json</span><span class="o">=</span><span class="n">json</span><span class="p">,</span>
|
|
1062
|
-
<span class="n">data</span><span class="o">=</span><span class="n">data</span><span class="p">,</span>
|
|
1063
|
-
<span class="p">)</span>
|
|
1064
|
-
<span class="n">prepped</span> <span class="o">=</span> <span class="n">req</span><span class="o">.</span><span class="n">prepare</span><span class="p">()</span>
|
|
1065
|
-
|
|
1066
|
-
<span class="k">if</span> <span class="n">remove_headers_list</span><span class="p">:</span>
|
|
1067
|
-
<span class="k">for</span> <span class="n">header</span> <span class="ow">in</span> <span class="n">remove_headers_list</span><span class="p">:</span>
|
|
1068
|
-
<span class="n">prepped</span><span class="o">.</span><span class="n">headers</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="n">header</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span>
|
|
1069
|
-
|
|
1070
|
-
<span class="c1"># Create a retry wrapper function</span>
|
|
1071
|
-
<span class="n">retry_wrapper</span> <span class="o">=</span> <span class="n">common</span><span class="o">.</span><span class="n">DecRetry</span><span class="p">(</span>
|
|
1072
|
-
<span class="n">retry_exceptions</span><span class="o">=</span><span class="n">CONNECTION_EXCEPTIONS</span><span class="p">,</span> <span class="n">tries</span><span class="o">=</span><span class="n">tries</span>
|
|
1073
|
-
<span class="p">)</span>
|
|
1074
|
-
|
|
1075
|
-
<span class="c1"># requests sessions potentially not thread-safe, but need to removed enforced</span>
|
|
1076
|
-
<span class="c1"># headers by using a prepared request.create which can only be done through an</span>
|
|
1077
|
-
<span class="c1"># request.Session object. Create Session object per call of make_prepared_request, it will</span>
|
|
1078
|
-
<span class="c1"># not benefit from connection pooling reuse. https://github.com/psf/requests/issues/1871</span>
|
|
1079
|
-
<span class="n">session</span> <span class="o">=</span> <span class="n">requests</span><span class="o">.</span><span class="n">Session</span><span class="p">()</span>
|
|
1080
|
-
|
|
1081
|
-
<span class="c1"># wrap the request function with the retry wrapper</span>
|
|
1082
|
-
<span class="n">wrapped_func</span> <span class="o">=</span> <span class="n">retry_wrapper</span><span class="p">(</span><span class="n">session</span><span class="o">.</span><span class="n">send</span><span class="p">)</span>
|
|
1083
|
-
|
|
1084
|
-
<span class="c1"># call the wrapped request function</span>
|
|
1085
|
-
<span class="n">response</span> <span class="o">=</span> <span class="n">wrapped_func</span><span class="p">(</span><span class="n">prepped</span><span class="p">,</span> <span class="n">stream</span><span class="o">=</span><span class="n">stream</span><span class="p">)</span>
|
|
1086
|
-
|
|
1087
|
-
<span class="n">logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s2">"verb: </span><span class="si">%s</span><span class="s2">"</span><span class="p">,</span> <span class="n">prepped</span><span class="o">.</span><span class="n">method</span><span class="p">)</span>
|
|
1088
|
-
<span class="n">logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s2">"url: </span><span class="si">%s</span><span class="s2">"</span><span class="p">,</span> <span class="n">prepped</span><span class="o">.</span><span class="n">url</span><span class="p">)</span>
|
|
1089
|
-
<span class="n">logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s2">"headers: </span><span class="si">%s</span><span class="s2">"</span><span class="p">,</span> <span class="n">prepped</span><span class="o">.</span><span class="n">headers</span><span class="p">)</span>
|
|
1090
|
-
<span class="n">logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s2">"params: </span><span class="si">%s</span><span class="s2">"</span><span class="p">,</span> <span class="n">req</span><span class="o">.</span><span class="n">params</span><span class="p">)</span>
|
|
1091
|
-
|
|
1092
|
-
<span class="c1"># trigger an exception to be raised for 4XX or 5XX http responses</span>
|
|
1093
|
-
<span class="k">if</span> <span class="n">raise_on_error</span><span class="p">:</span>
|
|
1094
|
-
<span class="n">response</span><span class="o">.</span><span class="n">raise_for_status</span><span class="p">()</span>
|
|
1095
|
-
|
|
1096
|
-
<span class="k">return</span> <span class="n">response</span>
|
|
1097
|
-
|
|
1098
|
-
<span class="k">def</span> <span class="nf">make_request</span><span class="p">(</span>
|
|
1099
|
-
<span class="bp">self</span><span class="p">,</span>
|
|
1100
|
-
<span class="n">uri_path</span><span class="o">=</span><span class="s2">"/"</span><span class="p">,</span>
|
|
1101
|
-
<span class="n">headers</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
|
|
1102
|
-
<span class="n">params</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
|
|
1103
|
-
<span class="n">data</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
|
|
1104
|
-
<span class="n">verb</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
|
|
1105
|
-
<span class="n">conductor_url</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
|
|
1106
|
-
<span class="n">raise_on_error</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span>
|
|
1107
|
-
<span class="n">tries</span><span class="o">=</span><span class="mi">5</span><span class="p">,</span>
|
|
1108
|
-
<span class="n">use_api_key</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
|
|
1109
|
-
<span class="p">):</span>
|
|
1110
|
-
<span class="w"> </span><span class="sd">"""</span>
|
|
1111
|
-
<span class="sd"> Make a request to the Conductor API.</span>
|
|
1112
|
-
|
|
1113
|
-
<span class="sd"> Args:</span>
|
|
1114
|
-
<span class="sd"> uri_path (str): The path to the resource to request.</span>
|
|
1115
|
-
<span class="sd"> headers (dict): A dictionary of headers to send with the request.</span>
|
|
1116
|
-
<span class="sd"> params (dict): A dictionary of query parameters to send with the request.</span>
|
|
1117
|
-
<span class="sd"> data (dict): A dictionary of data to send with the request.</span>
|
|
1118
|
-
<span class="sd"> verb (str): The HTTP verb to use.</span>
|
|
1119
|
-
<span class="sd"> conductor_url (str): The Conductor URL.</span>
|
|
1120
|
-
<span class="sd"> raise_on_error (bool): Whether or not to raise an exception if the request fails.</span>
|
|
1121
|
-
<span class="sd"> tries (int): The number of times to retry the request.</span>
|
|
1122
|
-
<span class="sd"> use`_api_key (bool): Whether or not to use the API key for authentication.</span>
|
|
1123
|
-
|
|
1124
|
-
<span class="sd"> Returns:</span>
|
|
1125
|
-
<span class="sd"> tuple(str, int): The response text and status code.</span>
|
|
1126
|
-
<span class="sd"> """</span>
|
|
1127
|
-
<span class="n">cfg</span> <span class="o">=</span> <span class="n">config</span><span class="o">.</span><span class="n">config</span><span class="p">()</span><span class="o">.</span><span class="n">config</span>
|
|
1128
|
-
<span class="c1"># TODO: set Content Content-Type to json if data arg</span>
|
|
1129
|
-
<span class="k">if</span> <span class="ow">not</span> <span class="n">headers</span><span class="p">:</span>
|
|
1130
|
-
<span class="n">headers</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"Content-Type"</span><span class="p">:</span> <span class="s2">"application/json"</span><span class="p">,</span> <span class="s2">"Accept"</span><span class="p">:</span> <span class="s2">"application/json"</span><span class="p">}</span>
|
|
1131
|
-
|
|
1132
|
-
<span class="n">logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s2">"read_conductor_credentials(</span><span class="si">{}</span><span class="s2">)"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">use_api_key</span><span class="p">))</span>
|
|
1133
|
-
<span class="n">bearer_token</span> <span class="o">=</span> <span class="n">read_conductor_credentials</span><span class="p">(</span><span class="n">use_api_key</span><span class="p">)</span>
|
|
1134
|
-
<span class="k">if</span> <span class="ow">not</span> <span class="n">bearer_token</span><span class="p">:</span>
|
|
1135
|
-
<span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s2">"Error: Could not get conductor credentials!"</span><span class="p">)</span>
|
|
1136
|
-
|
|
1137
|
-
<span class="n">headers</span><span class="p">[</span><span class="s2">"Authorization"</span><span class="p">]</span> <span class="o">=</span> <span class="s2">"Bearer </span><span class="si">%s</span><span class="s2">"</span> <span class="o">%</span> <span class="n">bearer_token</span>
|
|
1138
|
-
|
|
1139
|
-
<span class="k">if</span> <span class="ow">not</span> <span class="n">ApiClient</span><span class="o">.</span><span class="n">user_agent_header</span><span class="p">:</span>
|
|
1140
|
-
<span class="bp">self</span><span class="o">.</span><span class="n">register_client</span><span class="p">(</span><span class="s2">"ciocore"</span><span class="p">)</span>
|
|
1141
|
-
|
|
1142
|
-
<span class="n">headers</span><span class="p">[</span><span class="s2">"User-Agent"</span><span class="p">]</span> <span class="o">=</span> <span class="n">ApiClient</span><span class="o">.</span><span class="n">user_agent_header</span>
|
|
1143
|
-
|
|
1144
|
-
<span class="c1"># Construct URL</span>
|
|
1145
|
-
<span class="k">if</span> <span class="ow">not</span> <span class="n">conductor_url</span><span class="p">:</span>
|
|
1146
|
-
<span class="n">conductor_url</span> <span class="o">=</span> <span class="n">parse</span><span class="o">.</span><span class="n">urljoin</span><span class="p">(</span><span class="n">cfg</span><span class="p">[</span><span class="s2">"url"</span><span class="p">],</span> <span class="n">uri_path</span><span class="p">)</span>
|
|
1147
|
-
|
|
1148
|
-
<span class="k">if</span> <span class="ow">not</span> <span class="n">verb</span><span class="p">:</span>
|
|
1149
|
-
<span class="k">if</span> <span class="n">data</span><span class="p">:</span>
|
|
1150
|
-
<span class="n">verb</span> <span class="o">=</span> <span class="s2">"POST"</span>
|
|
1151
|
-
<span class="k">else</span><span class="p">:</span>
|
|
1152
|
-
<span class="n">verb</span> <span class="o">=</span> <span class="s2">"GET"</span>
|
|
1153
|
-
|
|
1154
|
-
<span class="k">assert</span> <span class="n">verb</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">http_verbs</span><span class="p">,</span> <span class="s2">"Invalid http verb: </span><span class="si">%s</span><span class="s2">"</span> <span class="o">%</span> <span class="n">verb</span>
|
|
1155
|
-
|
|
1156
|
-
<span class="c1"># Create a retry wrapper function</span>
|
|
1157
|
-
<span class="n">retry_wrapper</span> <span class="o">=</span> <span class="n">common</span><span class="o">.</span><span class="n">DecRetry</span><span class="p">(</span>
|
|
1158
|
-
<span class="n">retry_exceptions</span><span class="o">=</span><span class="n">CONNECTION_EXCEPTIONS</span><span class="p">,</span> <span class="n">tries</span><span class="o">=</span><span class="n">tries</span>
|
|
1159
|
-
<span class="p">)</span>
|
|
1160
|
-
|
|
1161
|
-
<span class="c1"># wrap the request function with the retry wrapper</span>
|
|
1162
|
-
<span class="n">wrapped_func</span> <span class="o">=</span> <span class="n">retry_wrapper</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_make_request</span><span class="p">)</span>
|
|
1163
|
-
|
|
1164
|
-
<span class="c1"># call the wrapped request function</span>
|
|
1165
|
-
<span class="n">response</span> <span class="o">=</span> <span class="n">wrapped_func</span><span class="p">(</span>
|
|
1166
|
-
<span class="n">verb</span><span class="p">,</span> <span class="n">conductor_url</span><span class="p">,</span> <span class="n">headers</span><span class="p">,</span> <span class="n">params</span><span class="p">,</span> <span class="n">data</span><span class="p">,</span> <span class="n">raise_on_error</span><span class="o">=</span><span class="n">raise_on_error</span>
|
|
1167
|
-
<span class="p">)</span>
|
|
1168
|
-
|
|
1169
|
-
<span class="k">return</span> <span class="n">response</span><span class="o">.</span><span class="n">text</span><span class="p">,</span> <span class="n">response</span><span class="o">.</span><span class="n">status_code</span>
|
|
1170
|
-
|
|
1171
|
-
<span class="nd">@classmethod</span>
|
|
1172
|
-
<span class="k">def</span> <span class="nf">_get_user_agent_header</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="n">client_name</span><span class="p">,</span> <span class="n">client_version</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
|
1173
|
-
<span class="w"> </span><span class="sd">"""</span>
|
|
1174
|
-
<span class="sd"> Generates the http User Agent header that includes helpful debug info.</span>
|
|
1175
|
-
|
|
1176
|
-
<span class="sd"> The final component is the path to the python executable (MD5 hex).</span>
|
|
1177
|
-
|
|
1178
|
-
<span class="sd"> Example:</span>
|
|
1179
|
-
<span class="sd"> 'ciomaya/0.3.7 (ciocore 4.3.2; python 3.9.5; linux 3.10.0-1160.53.1.el7.x86_64; 0ee7123c2365d7a0d126de5a70f19727)'</span>
|
|
1180
|
-
|
|
1181
|
-
<span class="sd"> :param client_name: The name of the client to be used in the header. If it's importable it</span>
|
|
1182
|
-
<span class="sd"> will be queried for its __version__ (unless client_version is supplied)</span>
|
|
1183
|
-
<span class="sd"> :type client_name: str</span>
|
|
1184
|
-
|
|
1185
|
-
<span class="sd"> :param client_version: The version to use in the header if client_name can't be queried for</span>
|
|
1186
|
-
<span class="sd"> __version__ (or it needs to be overridden)</span>
|
|
1187
|
-
<span class="sd"> :type client_version: str [default = None]</span>
|
|
1188
|
-
|
|
1189
|
-
<span class="sd"> :return: The value for the User Agent header</span>
|
|
1190
|
-
<span class="sd"> :rtype: str</span>
|
|
1191
|
-
<span class="sd"> """</span>
|
|
1192
|
-
|
|
1193
|
-
<span class="k">try</span><span class="p">:</span>
|
|
1194
|
-
<span class="n">client_module</span> <span class="o">=</span> <span class="n">importlib</span><span class="o">.</span><span class="n">import_module</span><span class="p">(</span><span class="n">client_name</span><span class="p">)</span>
|
|
1195
|
-
|
|
1196
|
-
<span class="k">except</span> <span class="ne">ImportError</span><span class="p">:</span>
|
|
1197
|
-
<span class="n">logger</span><span class="o">.</span><span class="n">warning</span><span class="p">(</span>
|
|
1198
|
-
<span class="s2">"Unable to import module '</span><span class="si">{}</span><span class="s2">'. Won't query for version details."</span>
|
|
1199
|
-
<span class="p">)</span>
|
|
1200
|
-
<span class="n">client_version</span> <span class="o">=</span> <span class="s2">"unknown"</span>
|
|
1201
|
-
|
|
1202
|
-
<span class="k">if</span> <span class="ow">not</span> <span class="n">client_version</span><span class="p">:</span>
|
|
1203
|
-
<span class="k">try</span><span class="p">:</span>
|
|
1204
|
-
<span class="n">client_version</span> <span class="o">=</span> <span class="n">client_module</span><span class="o">.</span><span class="n">__version__</span>
|
|
1205
|
-
|
|
1206
|
-
<span class="k">except</span> <span class="ne">AttributeError</span><span class="p">:</span>
|
|
1207
|
-
<span class="n">logger</span><span class="o">.</span><span class="n">warning</span><span class="p">(</span>
|
|
1208
|
-
<span class="s2">"Module '</span><span class="si">{}</span><span class="s2">' has no __version__ attribute. Setting version to 'N/A' in the user agent"</span>
|
|
1209
|
-
<span class="p">)</span>
|
|
1210
|
-
<span class="n">client_version</span> <span class="o">=</span> <span class="s2">"unknown"</span>
|
|
1211
|
-
|
|
1212
|
-
<span class="n">ciocore_version</span> <span class="o">=</span> <span class="n">ciocore</span><span class="o">.</span><span class="n">__version__</span>
|
|
1213
|
-
|
|
1214
|
-
<span class="n">python_path</span> <span class="o">=</span> <span class="n">sys</span><span class="o">.</span><span class="n">executable</span>
|
|
1215
|
-
|
|
1216
|
-
<span class="c1"># If the length of the path is longer than allowed, truncate the middle</span>
|
|
1217
|
-
<span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">python_path</span><span class="p">)</span> <span class="o">></span> <span class="bp">cls</span><span class="o">.</span><span class="n">USER_AGENT_MAX_PATH_LENGTH</span><span class="p">:</span>
|
|
1218
|
-
<span class="n">first_half</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="bp">cls</span><span class="o">.</span><span class="n">USER_AGENT_MAX_PATH_LENGTH</span> <span class="o">/</span> <span class="mi">2</span><span class="p">)</span>
|
|
1219
|
-
<span class="n">second_half</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">python_path</span><span class="p">)</span> <span class="o">-</span> <span class="nb">int</span><span class="p">(</span><span class="bp">cls</span><span class="o">.</span><span class="n">USER_AGENT_MAX_PATH_LENGTH</span> <span class="o">/</span> <span class="mi">2</span><span class="p">)</span>
|
|
1220
|
-
|
|
1221
|
-
<span class="nb">print</span><span class="p">(</span><span class="n">first_half</span><span class="p">,</span> <span class="n">second_half</span><span class="p">)</span>
|
|
1222
|
-
<span class="n">python_path</span> <span class="o">=</span> <span class="s2">"</span><span class="si">{}</span><span class="s2">...</span><span class="si">{}</span><span class="s2">"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span>
|
|
1223
|
-
<span class="n">python_path</span><span class="p">[</span><span class="mi">0</span><span class="p">:</span><span class="n">first_half</span><span class="p">],</span> <span class="n">python_path</span><span class="p">[</span><span class="n">second_half</span><span class="p">:</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span>
|
|
1224
|
-
<span class="p">)</span>
|
|
1225
|
-
|
|
1226
|
-
<span class="n">python_path_encoded</span> <span class="o">=</span> <span class="n">base64</span><span class="o">.</span><span class="n">b64encode</span><span class="p">(</span><span class="n">python_path</span><span class="o">.</span><span class="n">encode</span><span class="p">(</span><span class="s2">"utf-8"</span><span class="p">))</span><span class="o">.</span><span class="n">decode</span><span class="p">(</span>
|
|
1227
|
-
<span class="s2">"utf-8"</span>
|
|
1228
|
-
<span class="p">)</span>
|
|
1229
|
-
|
|
1230
|
-
<span class="k">if</span> <span class="n">platform</span><span class="o">.</span><span class="n">system</span><span class="p">()</span> <span class="o">==</span> <span class="s2">"Linux"</span><span class="p">:</span>
|
|
1231
|
-
<span class="n">platform_details</span> <span class="o">=</span> <span class="n">platform</span><span class="o">.</span><span class="n">release</span><span class="p">()</span>
|
|
1232
|
-
|
|
1233
|
-
<span class="k">elif</span> <span class="n">platform</span><span class="o">.</span><span class="n">system</span><span class="p">()</span> <span class="o">==</span> <span class="s2">"Windows"</span><span class="p">:</span>
|
|
1234
|
-
<span class="n">platform_details</span> <span class="o">=</span> <span class="n">platform</span><span class="o">.</span><span class="n">version</span><span class="p">()</span>
|
|
1235
|
-
|
|
1236
|
-
<span class="k">elif</span> <span class="n">platform</span><span class="o">.</span><span class="n">system</span><span class="p">()</span> <span class="o">==</span> <span class="s2">"Darwin"</span><span class="p">:</span>
|
|
1237
|
-
<span class="n">platform_details</span> <span class="o">=</span> <span class="n">platform</span><span class="o">.</span><span class="n">mac_ver</span><span class="p">()[</span><span class="mi">0</span><span class="p">]</span>
|
|
1238
|
-
|
|
1239
|
-
<span class="k">else</span><span class="p">:</span>
|
|
1240
|
-
<span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">"Unrecognized platform '</span><span class="si">{}</span><span class="s2">'"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">platform</span><span class="o">.</span><span class="n">release</span><span class="p">()))</span>
|
|
1241
|
-
|
|
1242
|
-
<span class="n">pid</span> <span class="o">=</span> <span class="n">base64</span><span class="o">.</span><span class="n">b64encode</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">getpid</span><span class="p">())</span><span class="o">.</span><span class="n">encode</span><span class="p">(</span><span class="s2">"utf-8"</span><span class="p">))</span><span class="o">.</span><span class="n">decode</span><span class="p">(</span><span class="s2">"utf-8"</span><span class="p">)</span>
|
|
1243
|
-
<span class="n">hostname</span> <span class="o">=</span> <span class="n">base64</span><span class="o">.</span><span class="n">b64encode</span><span class="p">(</span><span class="n">socket</span><span class="o">.</span><span class="n">gethostname</span><span class="p">()</span><span class="o">.</span><span class="n">encode</span><span class="p">(</span><span class="s2">"utf-8"</span><span class="p">))</span><span class="o">.</span><span class="n">decode</span><span class="p">(</span>
|
|
1244
|
-
<span class="s2">"utf-8"</span>
|
|
1245
|
-
<span class="p">)</span>
|
|
1246
|
-
|
|
1247
|
-
<span class="k">return</span> <span class="bp">cls</span><span class="o">.</span><span class="n">USER_AGENT_TEMPLATE</span><span class="o">.</span><span class="n">format</span><span class="p">(</span>
|
|
1248
|
-
<span class="n">client_name</span><span class="o">=</span><span class="n">client_name</span><span class="p">,</span>
|
|
1249
|
-
<span class="n">client_version</span><span class="o">=</span><span class="n">client_version</span><span class="p">,</span>
|
|
1250
|
-
<span class="n">ciocore_version</span><span class="o">=</span><span class="n">ciocore_version</span><span class="p">,</span>
|
|
1251
|
-
<span class="n">runtime</span><span class="o">=</span><span class="s2">"python"</span><span class="p">,</span>
|
|
1252
|
-
<span class="n">runtime_version</span><span class="o">=</span><span class="n">platform</span><span class="o">.</span><span class="n">python_version</span><span class="p">(),</span>
|
|
1253
|
-
<span class="n">platform</span><span class="o">=</span><span class="n">sys</span><span class="o">.</span><span class="n">platform</span><span class="p">,</span>
|
|
1254
|
-
<span class="n">platform_details</span><span class="o">=</span><span class="n">platform_details</span><span class="p">,</span>
|
|
1255
|
-
<span class="n">pid</span><span class="o">=</span><span class="n">pid</span><span class="p">,</span>
|
|
1256
|
-
<span class="n">hostname</span><span class="o">=</span><span class="n">hostname</span><span class="p">,</span>
|
|
1257
|
-
<span class="n">python_path</span><span class="o">=</span><span class="n">python_path_encoded</span><span class="p">,</span>
|
|
1258
|
-
<span class="p">)</span>
|
|
1259
|
-
|
|
1260
|
-
<span class="nd">@classmethod</span>
|
|
1261
|
-
<span class="k">def</span> <span class="nf">register_client</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="n">client_name</span><span class="p">,</span> <span class="n">client_version</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
|
1262
|
-
<span class="bp">cls</span><span class="o">.</span><span class="n">user_agent_header</span> <span class="o">=</span> <span class="bp">cls</span><span class="o">.</span><span class="n">_get_user_agent_header</span><span class="p">(</span><span class="n">client_name</span><span class="p">,</span> <span class="n">client_version</span><span class="p">)</span>
|
|
1263
|
-
|
|
1264
|
-
<span class="c1">## PRIVATE METHODS ##</span>
|
|
1265
|
-
<span class="k">def</span> <span class="nf">_make_request</span><span class="p">(</span>
|
|
1266
|
-
<span class="bp">self</span><span class="p">,</span> <span class="n">verb</span><span class="p">,</span> <span class="n">conductor_url</span><span class="p">,</span> <span class="n">headers</span><span class="p">,</span> <span class="n">params</span><span class="p">,</span> <span class="n">data</span><span class="p">,</span> <span class="n">raise_on_error</span><span class="o">=</span><span class="kc">True</span>
|
|
1267
|
-
<span class="p">):</span>
|
|
1268
|
-
<span class="w"> </span><span class="sd">"""</span>
|
|
1269
|
-
<span class="sd"> Make a request to the Conductor API.</span>
|
|
1270
|
-
|
|
1271
|
-
<span class="sd"> Args:</span>
|
|
1272
|
-
<span class="sd"> verb (str): The HTTP verb to use.</span>
|
|
1273
|
-
<span class="sd"> conductor_url (str): The URL to make the request to.</span>
|
|
1274
|
-
<span class="sd"> headers (dict): A dictionary of headers to send with the request.</span>
|
|
1275
|
-
<span class="sd"> params (dict): A dictionary of query parameters to send with the request.</span>
|
|
1276
|
-
<span class="sd"> data (dict): A dictionary of data to send with the request.</span>
|
|
1277
|
-
<span class="sd"> raise_on_error (bool): Whether or not to raise an exception if the request fails.</span>
|
|
1278
|
-
<span class="sd"> """</span>
|
|
1279
|
-
|
|
1280
|
-
<span class="n">response</span> <span class="o">=</span> <span class="n">requests</span><span class="o">.</span><span class="n">request</span><span class="p">(</span>
|
|
1281
|
-
<span class="n">method</span><span class="o">=</span><span class="n">verb</span><span class="p">,</span> <span class="n">url</span><span class="o">=</span><span class="n">conductor_url</span><span class="p">,</span> <span class="n">headers</span><span class="o">=</span><span class="n">headers</span><span class="p">,</span> <span class="n">params</span><span class="o">=</span><span class="n">params</span><span class="p">,</span> <span class="n">data</span><span class="o">=</span><span class="n">data</span>
|
|
1282
|
-
<span class="p">)</span>
|
|
1283
|
-
|
|
1284
|
-
<span class="n">logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s2">"verb: </span><span class="si">%s</span><span class="s2">"</span><span class="p">,</span> <span class="n">verb</span><span class="p">)</span>
|
|
1285
|
-
<span class="n">logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s2">"conductor_url: </span><span class="si">%s</span><span class="s2">"</span><span class="p">,</span> <span class="n">conductor_url</span><span class="p">)</span>
|
|
1286
|
-
<span class="n">logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s2">"headers: </span><span class="si">%s</span><span class="s2">"</span><span class="p">,</span> <span class="n">headers</span><span class="p">)</span>
|
|
1287
|
-
<span class="n">logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s2">"params: </span><span class="si">%s</span><span class="s2">"</span><span class="p">,</span> <span class="n">params</span><span class="p">)</span>
|
|
1288
|
-
<span class="n">logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s2">"data: </span><span class="si">%s</span><span class="s2">"</span><span class="p">,</span> <span class="n">data</span><span class="p">)</span>
|
|
1289
|
-
|
|
1290
|
-
<span class="c1"># If we get 300s/400s debug out the response. TODO(lws): REMOVE THIS</span>
|
|
1291
|
-
<span class="k">if</span> <span class="n">response</span><span class="o">.</span><span class="n">status_code</span> <span class="ow">and</span> <span class="mi">300</span> <span class="o"><=</span> <span class="n">response</span><span class="o">.</span><span class="n">status_code</span> <span class="o"><</span> <span class="mi">500</span><span class="p">:</span>
|
|
1292
|
-
<span class="n">logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s2">"***** ERROR!! *****"</span><span class="p">)</span>
|
|
1293
|
-
<span class="n">logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s2">"Reason: </span><span class="si">%s</span><span class="s2">"</span> <span class="o">%</span> <span class="n">response</span><span class="o">.</span><span class="n">reason</span><span class="p">)</span>
|
|
1294
|
-
<span class="n">logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s2">"Text: </span><span class="si">%s</span><span class="s2">"</span> <span class="o">%</span> <span class="n">response</span><span class="o">.</span><span class="n">text</span><span class="p">)</span>
|
|
1295
|
-
|
|
1296
|
-
<span class="c1"># trigger an exception to be raised for 4XX or 5XX http responses</span>
|
|
1297
|
-
<span class="k">if</span> <span class="n">raise_on_error</span><span class="p">:</span>
|
|
1298
|
-
<span class="n">response</span><span class="o">.</span><span class="n">raise_for_status</span><span class="p">()</span>
|
|
1299
|
-
|
|
1300
|
-
<span class="k">return</span> <span class="n">response</span>
|
|
1301
|
-
</code></pre></div>
|
|
1302
|
-
</details>
|
|
1303
|
-
|
|
1304
|
-
|
|
1305
|
-
|
|
1306
|
-
<div class="doc doc-children">
|
|
1307
|
-
|
|
1308
|
-
|
|
1309
|
-
|
|
1310
|
-
|
|
1311
|
-
|
|
1312
|
-
|
|
1313
|
-
|
|
1314
|
-
|
|
1315
|
-
|
|
1316
|
-
|
|
1317
|
-
|
|
1318
|
-
|
|
1319
|
-
|
|
1320
|
-
<div class="doc doc-object doc-method">
|
|
1321
|
-
|
|
1322
|
-
|
|
1323
|
-
|
|
1324
|
-
<h3 id="ciocore.api_client.ApiClient.__init__" class="doc doc-heading">
|
|
1325
|
-
<code class="highlight language-python"><span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span></code>
|
|
1326
|
-
|
|
1327
|
-
<span class="doc doc-properties">
|
|
1328
|
-
<small class="doc doc-property doc-property-special"><code>special</code></small>
|
|
1329
|
-
</span>
|
|
1330
|
-
|
|
1331
|
-
</h3>
|
|
1332
|
-
|
|
1333
|
-
<div class="doc doc-contents ">
|
|
1334
|
-
|
|
1335
|
-
<p>Initialize the ApiClient object.</p>
|
|
1336
|
-
|
|
1337
|
-
<details class="quote">
|
|
1338
|
-
<summary>Source code in <code>ciocore/api_client.py</code></summary>
|
|
1339
|
-
<div class="highlight"><pre><span></span><code><span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
|
1340
|
-
<span class="w"> </span><span class="sd">"""</span>
|
|
1341
|
-
<span class="sd"> Initialize the ApiClient object.</span>
|
|
1342
|
-
<span class="sd"> """</span>
|
|
1343
|
-
<span class="n">logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s2">""</span><span class="p">)</span>
|
|
1344
|
-
</code></pre></div>
|
|
1345
|
-
</details>
|
|
1346
|
-
</div>
|
|
1347
|
-
|
|
1348
|
-
</div>
|
|
1349
|
-
|
|
1350
|
-
|
|
1351
|
-
|
|
1352
|
-
<div class="doc doc-object doc-method">
|
|
1353
|
-
|
|
1354
|
-
|
|
1355
|
-
|
|
1356
|
-
<h3 id="ciocore.api_client.ApiClient.make_prepared_request" class="doc doc-heading">
|
|
1357
|
-
<code class="highlight language-python"><span class="n">make_prepared_request</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">verb</span><span class="p">,</span> <span class="n">url</span><span class="p">,</span> <span class="n">headers</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">params</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">json</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">data</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">stream</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">remove_headers_list</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">raise_on_error</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">tries</span><span class="o">=</span><span class="mi">5</span><span class="p">)</span></code>
|
|
1358
|
-
|
|
1359
|
-
|
|
1360
|
-
</h3>
|
|
1361
|
-
|
|
1362
|
-
<div class="doc doc-contents ">
|
|
1363
|
-
|
|
1364
|
-
<p>Make a request to the Conductor API.</p>
|
|
1365
|
-
<div class="admonition deprecated">
|
|
1366
|
-
<p class="admonition-title">Deprecated</p>
|
|
1367
|
-
<p>Primarily used to removed enforced headers by requests.Request. Requests 2.x will add
|
|
1368
|
-
Transfer-Encoding: chunked with file like object that is 0 bytes, causing s3 failures (501)
|
|
1369
|
-
- https://github.com/psf/requests/issues/4215#issuecomment-319521235</p>
|
|
1370
|
-
<p>To get around this bug make_prepared_request has functionality to remove the enforced header
|
|
1371
|
-
that would occur when using requests.request(...). Requests 3.x resolves this issue, when
|
|
1372
|
-
client is built to use Requests 3.x this function can be removed.</p>
|
|
1373
|
-
</div>
|
|
1374
|
-
|
|
1375
|
-
<p><strong>Returns:</strong></p>
|
|
1376
|
-
<table>
|
|
1377
|
-
<thead>
|
|
1378
|
-
<tr>
|
|
1379
|
-
<th>Type</th>
|
|
1380
|
-
<th>Description</th>
|
|
1381
|
-
</tr>
|
|
1382
|
-
</thead>
|
|
1383
|
-
<tbody>
|
|
1384
|
-
<tr>
|
|
1385
|
-
<td><code>requests.Response</code></td>
|
|
1386
|
-
<td><p>The response object.</p></td>
|
|
1387
|
-
</tr>
|
|
1388
|
-
</tbody>
|
|
1389
|
-
</table>
|
|
1390
|
-
<p><strong>Parameters:</strong></p>
|
|
1391
|
-
<table>
|
|
1392
|
-
<thead>
|
|
1393
|
-
<tr>
|
|
1394
|
-
<th>Name</th>
|
|
1395
|
-
<th>Type</th>
|
|
1396
|
-
<th>Description</th>
|
|
1397
|
-
<th>Default</th>
|
|
1398
|
-
</tr>
|
|
1399
|
-
</thead>
|
|
1400
|
-
<tbody>
|
|
1401
|
-
<tr>
|
|
1402
|
-
<td><code>verb</code></td>
|
|
1403
|
-
<td><code>str</code></td>
|
|
1404
|
-
<td><p>The HTTP verb to use.</p></td>
|
|
1405
|
-
<td><em>required</em></td>
|
|
1406
|
-
</tr>
|
|
1407
|
-
<tr>
|
|
1408
|
-
<td><code>url</code></td>
|
|
1409
|
-
<td><code>str</code></td>
|
|
1410
|
-
<td><p>The URL to make the request to.</p></td>
|
|
1411
|
-
<td><em>required</em></td>
|
|
1412
|
-
</tr>
|
|
1413
|
-
<tr>
|
|
1414
|
-
<td><code>headers</code></td>
|
|
1415
|
-
<td><code>dict</code></td>
|
|
1416
|
-
<td><p>A dictionary of headers to send with the request.</p></td>
|
|
1417
|
-
<td><code>None</code></td>
|
|
1418
|
-
</tr>
|
|
1419
|
-
<tr>
|
|
1420
|
-
<td><code>params</code></td>
|
|
1421
|
-
<td><code>dict</code></td>
|
|
1422
|
-
<td><p>A dictionary of query parameters to send with the request.</p></td>
|
|
1423
|
-
<td><code>None</code></td>
|
|
1424
|
-
</tr>
|
|
1425
|
-
<tr>
|
|
1426
|
-
<td><code>json</code></td>
|
|
1427
|
-
<td><code>dict</code></td>
|
|
1428
|
-
<td><p>A JSON payload to send with the request.</p></td>
|
|
1429
|
-
<td><code>None</code></td>
|
|
1430
|
-
</tr>
|
|
1431
|
-
<tr>
|
|
1432
|
-
<td><code>stream</code></td>
|
|
1433
|
-
<td><code>bool</code></td>
|
|
1434
|
-
<td><p>Whether or not to stream the response.</p></td>
|
|
1435
|
-
<td><code>False</code></td>
|
|
1436
|
-
</tr>
|
|
1437
|
-
<tr>
|
|
1438
|
-
<td><code>remove_headers_list</code></td>
|
|
1439
|
-
<td><code>list</code></td>
|
|
1440
|
-
<td><p>A list of headers to remove from the request.</p></td>
|
|
1441
|
-
<td><code>None</code></td>
|
|
1442
|
-
</tr>
|
|
1443
|
-
<tr>
|
|
1444
|
-
<td><code>raise_on_error</code></td>
|
|
1445
|
-
<td><code>bool</code></td>
|
|
1446
|
-
<td><p>Whether or not to raise an exception if the request fails.</p></td>
|
|
1447
|
-
<td><code>True</code></td>
|
|
1448
|
-
</tr>
|
|
1449
|
-
<tr>
|
|
1450
|
-
<td><code>tries</code></td>
|
|
1451
|
-
<td><code>int</code></td>
|
|
1452
|
-
<td><p>The number of times to retry the request.</p></td>
|
|
1453
|
-
<td><code>5</code></td>
|
|
1454
|
-
</tr>
|
|
1455
|
-
</tbody>
|
|
1456
|
-
</table>
|
|
1457
|
-
<details class="quote">
|
|
1458
|
-
<summary>Source code in <code>ciocore/api_client.py</code></summary>
|
|
1459
|
-
<div class="highlight"><pre><span></span><code><span class="k">def</span> <span class="nf">make_prepared_request</span><span class="p">(</span>
|
|
1460
|
-
<span class="bp">self</span><span class="p">,</span>
|
|
1461
|
-
<span class="n">verb</span><span class="p">,</span>
|
|
1462
|
-
<span class="n">url</span><span class="p">,</span>
|
|
1463
|
-
<span class="n">headers</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
|
|
1464
|
-
<span class="n">params</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
|
|
1465
|
-
<span class="n">json</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
|
|
1466
|
-
<span class="n">data</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
|
|
1467
|
-
<span class="n">stream</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
|
|
1468
|
-
<span class="n">remove_headers_list</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
|
|
1469
|
-
<span class="n">raise_on_error</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span>
|
|
1470
|
-
<span class="n">tries</span><span class="o">=</span><span class="mi">5</span><span class="p">,</span>
|
|
1471
|
-
<span class="p">):</span>
|
|
1472
|
-
<span class="w"> </span><span class="sd">"""</span>
|
|
1473
|
-
<span class="sd"> Make a request to the Conductor API.</span>
|
|
1474
|
-
|
|
1475
|
-
<span class="sd"> Deprecated:</span>
|
|
1476
|
-
<span class="sd"> Primarily used to removed enforced headers by requests.Request. Requests 2.x will add</span>
|
|
1477
|
-
<span class="sd"> Transfer-Encoding: chunked with file like object that is 0 bytes, causing s3 failures (501)</span>
|
|
1478
|
-
<span class="sd"> - https://github.com/psf/requests/issues/4215#issuecomment-319521235</span>
|
|
1479
|
-
|
|
1480
|
-
<span class="sd"> To get around this bug make_prepared_request has functionality to remove the enforced header</span>
|
|
1481
|
-
<span class="sd"> that would occur when using requests.request(...). Requests 3.x resolves this issue, when</span>
|
|
1482
|
-
<span class="sd"> client is built to use Requests 3.x this function can be removed.</span>
|
|
1483
|
-
|
|
1484
|
-
<span class="sd"> Returns:</span>
|
|
1485
|
-
<span class="sd"> requests.Response: The response object.</span>
|
|
1486
|
-
|
|
1487
|
-
<span class="sd"> Args:</span>
|
|
1488
|
-
<span class="sd"> verb (str): The HTTP verb to use.</span>
|
|
1489
|
-
<span class="sd"> url (str): The URL to make the request to.</span>
|
|
1490
|
-
<span class="sd"> headers (dict): A dictionary of headers to send with the request.</span>
|
|
1491
|
-
<span class="sd"> params (dict): A dictionary of query parameters to send with the request.</span>
|
|
1492
|
-
<span class="sd"> json (dict): A JSON payload to send with the request.</span>
|
|
1493
|
-
<span class="sd"> stream (bool): Whether or not to stream the response.</span>
|
|
1494
|
-
<span class="sd"> remove_headers_list (list): A list of headers to remove from the request.</span>
|
|
1495
|
-
<span class="sd"> raise_on_error (bool): Whether or not to raise an exception if the request fails.</span>
|
|
1496
|
-
<span class="sd"> tries (int): The number of times to retry the request.</span>
|
|
1497
|
-
<span class="sd"> """</span>
|
|
1498
|
-
|
|
1499
|
-
<span class="n">req</span> <span class="o">=</span> <span class="n">requests</span><span class="o">.</span><span class="n">Request</span><span class="p">(</span>
|
|
1500
|
-
<span class="n">method</span><span class="o">=</span><span class="n">verb</span><span class="p">,</span>
|
|
1501
|
-
<span class="n">url</span><span class="o">=</span><span class="n">url</span><span class="p">,</span>
|
|
1502
|
-
<span class="n">headers</span><span class="o">=</span><span class="n">headers</span><span class="p">,</span>
|
|
1503
|
-
<span class="n">params</span><span class="o">=</span><span class="n">params</span><span class="p">,</span>
|
|
1504
|
-
<span class="n">json</span><span class="o">=</span><span class="n">json</span><span class="p">,</span>
|
|
1505
|
-
<span class="n">data</span><span class="o">=</span><span class="n">data</span><span class="p">,</span>
|
|
1506
|
-
<span class="p">)</span>
|
|
1507
|
-
<span class="n">prepped</span> <span class="o">=</span> <span class="n">req</span><span class="o">.</span><span class="n">prepare</span><span class="p">()</span>
|
|
1508
|
-
|
|
1509
|
-
<span class="k">if</span> <span class="n">remove_headers_list</span><span class="p">:</span>
|
|
1510
|
-
<span class="k">for</span> <span class="n">header</span> <span class="ow">in</span> <span class="n">remove_headers_list</span><span class="p">:</span>
|
|
1511
|
-
<span class="n">prepped</span><span class="o">.</span><span class="n">headers</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="n">header</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span>
|
|
1512
|
-
|
|
1513
|
-
<span class="c1"># Create a retry wrapper function</span>
|
|
1514
|
-
<span class="n">retry_wrapper</span> <span class="o">=</span> <span class="n">common</span><span class="o">.</span><span class="n">DecRetry</span><span class="p">(</span>
|
|
1515
|
-
<span class="n">retry_exceptions</span><span class="o">=</span><span class="n">CONNECTION_EXCEPTIONS</span><span class="p">,</span> <span class="n">tries</span><span class="o">=</span><span class="n">tries</span>
|
|
1516
|
-
<span class="p">)</span>
|
|
1517
|
-
|
|
1518
|
-
<span class="c1"># requests sessions potentially not thread-safe, but need to removed enforced</span>
|
|
1519
|
-
<span class="c1"># headers by using a prepared request.create which can only be done through an</span>
|
|
1520
|
-
<span class="c1"># request.Session object. Create Session object per call of make_prepared_request, it will</span>
|
|
1521
|
-
<span class="c1"># not benefit from connection pooling reuse. https://github.com/psf/requests/issues/1871</span>
|
|
1522
|
-
<span class="n">session</span> <span class="o">=</span> <span class="n">requests</span><span class="o">.</span><span class="n">Session</span><span class="p">()</span>
|
|
1523
|
-
|
|
1524
|
-
<span class="c1"># wrap the request function with the retry wrapper</span>
|
|
1525
|
-
<span class="n">wrapped_func</span> <span class="o">=</span> <span class="n">retry_wrapper</span><span class="p">(</span><span class="n">session</span><span class="o">.</span><span class="n">send</span><span class="p">)</span>
|
|
1526
|
-
|
|
1527
|
-
<span class="c1"># call the wrapped request function</span>
|
|
1528
|
-
<span class="n">response</span> <span class="o">=</span> <span class="n">wrapped_func</span><span class="p">(</span><span class="n">prepped</span><span class="p">,</span> <span class="n">stream</span><span class="o">=</span><span class="n">stream</span><span class="p">)</span>
|
|
1529
|
-
|
|
1530
|
-
<span class="n">logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s2">"verb: </span><span class="si">%s</span><span class="s2">"</span><span class="p">,</span> <span class="n">prepped</span><span class="o">.</span><span class="n">method</span><span class="p">)</span>
|
|
1531
|
-
<span class="n">logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s2">"url: </span><span class="si">%s</span><span class="s2">"</span><span class="p">,</span> <span class="n">prepped</span><span class="o">.</span><span class="n">url</span><span class="p">)</span>
|
|
1532
|
-
<span class="n">logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s2">"headers: </span><span class="si">%s</span><span class="s2">"</span><span class="p">,</span> <span class="n">prepped</span><span class="o">.</span><span class="n">headers</span><span class="p">)</span>
|
|
1533
|
-
<span class="n">logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s2">"params: </span><span class="si">%s</span><span class="s2">"</span><span class="p">,</span> <span class="n">req</span><span class="o">.</span><span class="n">params</span><span class="p">)</span>
|
|
1534
|
-
|
|
1535
|
-
<span class="c1"># trigger an exception to be raised for 4XX or 5XX http responses</span>
|
|
1536
|
-
<span class="k">if</span> <span class="n">raise_on_error</span><span class="p">:</span>
|
|
1537
|
-
<span class="n">response</span><span class="o">.</span><span class="n">raise_for_status</span><span class="p">()</span>
|
|
1538
|
-
|
|
1539
|
-
<span class="k">return</span> <span class="n">response</span>
|
|
1540
|
-
</code></pre></div>
|
|
1541
|
-
</details>
|
|
1542
|
-
</div>
|
|
1543
|
-
|
|
1544
|
-
</div>
|
|
1545
|
-
|
|
1546
|
-
|
|
1547
|
-
|
|
1548
|
-
<div class="doc doc-object doc-method">
|
|
1549
|
-
|
|
1550
|
-
|
|
1551
|
-
|
|
1552
|
-
<h3 id="ciocore.api_client.ApiClient.make_request" class="doc doc-heading">
|
|
1553
|
-
<code class="highlight language-python"><span class="n">make_request</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">uri_path</span><span class="o">=</span><span class="s1">'/'</span><span class="p">,</span> <span class="n">headers</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">params</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">data</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">verb</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">conductor_url</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">raise_on_error</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">tries</span><span class="o">=</span><span class="mi">5</span><span class="p">,</span> <span class="n">use_api_key</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span></code>
|
|
1554
|
-
|
|
1555
|
-
|
|
1556
|
-
</h3>
|
|
1557
|
-
|
|
1558
|
-
<div class="doc doc-contents ">
|
|
1559
|
-
|
|
1560
|
-
<p>Make a request to the Conductor API.</p>
|
|
1561
|
-
|
|
1562
|
-
<p><strong>Parameters:</strong></p>
|
|
1563
|
-
<table>
|
|
1564
|
-
<thead>
|
|
1565
|
-
<tr>
|
|
1566
|
-
<th>Name</th>
|
|
1567
|
-
<th>Type</th>
|
|
1568
|
-
<th>Description</th>
|
|
1569
|
-
<th>Default</th>
|
|
1570
|
-
</tr>
|
|
1571
|
-
</thead>
|
|
1572
|
-
<tbody>
|
|
1573
|
-
<tr>
|
|
1574
|
-
<td><code>uri_path</code></td>
|
|
1575
|
-
<td><code>str</code></td>
|
|
1576
|
-
<td><p>The path to the resource to request.</p></td>
|
|
1577
|
-
<td><code>'/'</code></td>
|
|
1578
|
-
</tr>
|
|
1579
|
-
<tr>
|
|
1580
|
-
<td><code>headers</code></td>
|
|
1581
|
-
<td><code>dict</code></td>
|
|
1582
|
-
<td><p>A dictionary of headers to send with the request.</p></td>
|
|
1583
|
-
<td><code>None</code></td>
|
|
1584
|
-
</tr>
|
|
1585
|
-
<tr>
|
|
1586
|
-
<td><code>params</code></td>
|
|
1587
|
-
<td><code>dict</code></td>
|
|
1588
|
-
<td><p>A dictionary of query parameters to send with the request.</p></td>
|
|
1589
|
-
<td><code>None</code></td>
|
|
1590
|
-
</tr>
|
|
1591
|
-
<tr>
|
|
1592
|
-
<td><code>data</code></td>
|
|
1593
|
-
<td><code>dict</code></td>
|
|
1594
|
-
<td><p>A dictionary of data to send with the request.</p></td>
|
|
1595
|
-
<td><code>None</code></td>
|
|
1596
|
-
</tr>
|
|
1597
|
-
<tr>
|
|
1598
|
-
<td><code>verb</code></td>
|
|
1599
|
-
<td><code>str</code></td>
|
|
1600
|
-
<td><p>The HTTP verb to use.</p></td>
|
|
1601
|
-
<td><code>None</code></td>
|
|
1602
|
-
</tr>
|
|
1603
|
-
<tr>
|
|
1604
|
-
<td><code>conductor_url</code></td>
|
|
1605
|
-
<td><code>str</code></td>
|
|
1606
|
-
<td><p>The Conductor URL.</p></td>
|
|
1607
|
-
<td><code>None</code></td>
|
|
1608
|
-
</tr>
|
|
1609
|
-
<tr>
|
|
1610
|
-
<td><code>raise_on_error</code></td>
|
|
1611
|
-
<td><code>bool</code></td>
|
|
1612
|
-
<td><p>Whether or not to raise an exception if the request fails.</p></td>
|
|
1613
|
-
<td><code>True</code></td>
|
|
1614
|
-
</tr>
|
|
1615
|
-
<tr>
|
|
1616
|
-
<td><code>tries</code></td>
|
|
1617
|
-
<td><code>int</code></td>
|
|
1618
|
-
<td><p>The number of times to retry the request.</p></td>
|
|
1619
|
-
<td><code>5</code></td>
|
|
1620
|
-
</tr>
|
|
1621
|
-
<tr>
|
|
1622
|
-
<td><code>use`_api_key</code></td>
|
|
1623
|
-
<td><code>bool</code></td>
|
|
1624
|
-
<td><p>Whether or not to use the API key for authentication.</p></td>
|
|
1625
|
-
<td><em>required</em></td>
|
|
1626
|
-
</tr>
|
|
1627
|
-
</tbody>
|
|
1628
|
-
</table>
|
|
1629
|
-
<p><strong>Returns:</strong></p>
|
|
1630
|
-
<table>
|
|
1631
|
-
<thead>
|
|
1632
|
-
<tr>
|
|
1633
|
-
<th>Type</th>
|
|
1634
|
-
<th>Description</th>
|
|
1635
|
-
</tr>
|
|
1636
|
-
</thead>
|
|
1637
|
-
<tbody>
|
|
1638
|
-
<tr>
|
|
1639
|
-
<td><code>tuple(str, int)</code></td>
|
|
1640
|
-
<td><p>The response text and status code.</p></td>
|
|
1641
|
-
</tr>
|
|
1642
|
-
</tbody>
|
|
1643
|
-
</table>
|
|
1644
|
-
<details class="quote">
|
|
1645
|
-
<summary>Source code in <code>ciocore/api_client.py</code></summary>
|
|
1646
|
-
<div class="highlight"><pre><span></span><code><span class="k">def</span> <span class="nf">make_request</span><span class="p">(</span>
|
|
1647
|
-
<span class="bp">self</span><span class="p">,</span>
|
|
1648
|
-
<span class="n">uri_path</span><span class="o">=</span><span class="s2">"/"</span><span class="p">,</span>
|
|
1649
|
-
<span class="n">headers</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
|
|
1650
|
-
<span class="n">params</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
|
|
1651
|
-
<span class="n">data</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
|
|
1652
|
-
<span class="n">verb</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
|
|
1653
|
-
<span class="n">conductor_url</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
|
|
1654
|
-
<span class="n">raise_on_error</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span>
|
|
1655
|
-
<span class="n">tries</span><span class="o">=</span><span class="mi">5</span><span class="p">,</span>
|
|
1656
|
-
<span class="n">use_api_key</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
|
|
1657
|
-
<span class="p">):</span>
|
|
1658
|
-
<span class="w"> </span><span class="sd">"""</span>
|
|
1659
|
-
<span class="sd"> Make a request to the Conductor API.</span>
|
|
1660
|
-
|
|
1661
|
-
<span class="sd"> Args:</span>
|
|
1662
|
-
<span class="sd"> uri_path (str): The path to the resource to request.</span>
|
|
1663
|
-
<span class="sd"> headers (dict): A dictionary of headers to send with the request.</span>
|
|
1664
|
-
<span class="sd"> params (dict): A dictionary of query parameters to send with the request.</span>
|
|
1665
|
-
<span class="sd"> data (dict): A dictionary of data to send with the request.</span>
|
|
1666
|
-
<span class="sd"> verb (str): The HTTP verb to use.</span>
|
|
1667
|
-
<span class="sd"> conductor_url (str): The Conductor URL.</span>
|
|
1668
|
-
<span class="sd"> raise_on_error (bool): Whether or not to raise an exception if the request fails.</span>
|
|
1669
|
-
<span class="sd"> tries (int): The number of times to retry the request.</span>
|
|
1670
|
-
<span class="sd"> use`_api_key (bool): Whether or not to use the API key for authentication.</span>
|
|
1671
|
-
|
|
1672
|
-
<span class="sd"> Returns:</span>
|
|
1673
|
-
<span class="sd"> tuple(str, int): The response text and status code.</span>
|
|
1674
|
-
<span class="sd"> """</span>
|
|
1675
|
-
<span class="n">cfg</span> <span class="o">=</span> <span class="n">config</span><span class="o">.</span><span class="n">config</span><span class="p">()</span><span class="o">.</span><span class="n">config</span>
|
|
1676
|
-
<span class="c1"># TODO: set Content Content-Type to json if data arg</span>
|
|
1677
|
-
<span class="k">if</span> <span class="ow">not</span> <span class="n">headers</span><span class="p">:</span>
|
|
1678
|
-
<span class="n">headers</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"Content-Type"</span><span class="p">:</span> <span class="s2">"application/json"</span><span class="p">,</span> <span class="s2">"Accept"</span><span class="p">:</span> <span class="s2">"application/json"</span><span class="p">}</span>
|
|
1679
|
-
|
|
1680
|
-
<span class="n">logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s2">"read_conductor_credentials(</span><span class="si">{}</span><span class="s2">)"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">use_api_key</span><span class="p">))</span>
|
|
1681
|
-
<span class="n">bearer_token</span> <span class="o">=</span> <span class="n">read_conductor_credentials</span><span class="p">(</span><span class="n">use_api_key</span><span class="p">)</span>
|
|
1682
|
-
<span class="k">if</span> <span class="ow">not</span> <span class="n">bearer_token</span><span class="p">:</span>
|
|
1683
|
-
<span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s2">"Error: Could not get conductor credentials!"</span><span class="p">)</span>
|
|
1684
|
-
|
|
1685
|
-
<span class="n">headers</span><span class="p">[</span><span class="s2">"Authorization"</span><span class="p">]</span> <span class="o">=</span> <span class="s2">"Bearer </span><span class="si">%s</span><span class="s2">"</span> <span class="o">%</span> <span class="n">bearer_token</span>
|
|
1686
|
-
|
|
1687
|
-
<span class="k">if</span> <span class="ow">not</span> <span class="n">ApiClient</span><span class="o">.</span><span class="n">user_agent_header</span><span class="p">:</span>
|
|
1688
|
-
<span class="bp">self</span><span class="o">.</span><span class="n">register_client</span><span class="p">(</span><span class="s2">"ciocore"</span><span class="p">)</span>
|
|
1689
|
-
|
|
1690
|
-
<span class="n">headers</span><span class="p">[</span><span class="s2">"User-Agent"</span><span class="p">]</span> <span class="o">=</span> <span class="n">ApiClient</span><span class="o">.</span><span class="n">user_agent_header</span>
|
|
1691
|
-
|
|
1692
|
-
<span class="c1"># Construct URL</span>
|
|
1693
|
-
<span class="k">if</span> <span class="ow">not</span> <span class="n">conductor_url</span><span class="p">:</span>
|
|
1694
|
-
<span class="n">conductor_url</span> <span class="o">=</span> <span class="n">parse</span><span class="o">.</span><span class="n">urljoin</span><span class="p">(</span><span class="n">cfg</span><span class="p">[</span><span class="s2">"url"</span><span class="p">],</span> <span class="n">uri_path</span><span class="p">)</span>
|
|
1695
|
-
|
|
1696
|
-
<span class="k">if</span> <span class="ow">not</span> <span class="n">verb</span><span class="p">:</span>
|
|
1697
|
-
<span class="k">if</span> <span class="n">data</span><span class="p">:</span>
|
|
1698
|
-
<span class="n">verb</span> <span class="o">=</span> <span class="s2">"POST"</span>
|
|
1699
|
-
<span class="k">else</span><span class="p">:</span>
|
|
1700
|
-
<span class="n">verb</span> <span class="o">=</span> <span class="s2">"GET"</span>
|
|
1701
|
-
|
|
1702
|
-
<span class="k">assert</span> <span class="n">verb</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">http_verbs</span><span class="p">,</span> <span class="s2">"Invalid http verb: </span><span class="si">%s</span><span class="s2">"</span> <span class="o">%</span> <span class="n">verb</span>
|
|
1703
|
-
|
|
1704
|
-
<span class="c1"># Create a retry wrapper function</span>
|
|
1705
|
-
<span class="n">retry_wrapper</span> <span class="o">=</span> <span class="n">common</span><span class="o">.</span><span class="n">DecRetry</span><span class="p">(</span>
|
|
1706
|
-
<span class="n">retry_exceptions</span><span class="o">=</span><span class="n">CONNECTION_EXCEPTIONS</span><span class="p">,</span> <span class="n">tries</span><span class="o">=</span><span class="n">tries</span>
|
|
1707
|
-
<span class="p">)</span>
|
|
1708
|
-
|
|
1709
|
-
<span class="c1"># wrap the request function with the retry wrapper</span>
|
|
1710
|
-
<span class="n">wrapped_func</span> <span class="o">=</span> <span class="n">retry_wrapper</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_make_request</span><span class="p">)</span>
|
|
1711
|
-
|
|
1712
|
-
<span class="c1"># call the wrapped request function</span>
|
|
1713
|
-
<span class="n">response</span> <span class="o">=</span> <span class="n">wrapped_func</span><span class="p">(</span>
|
|
1714
|
-
<span class="n">verb</span><span class="p">,</span> <span class="n">conductor_url</span><span class="p">,</span> <span class="n">headers</span><span class="p">,</span> <span class="n">params</span><span class="p">,</span> <span class="n">data</span><span class="p">,</span> <span class="n">raise_on_error</span><span class="o">=</span><span class="n">raise_on_error</span>
|
|
1715
|
-
<span class="p">)</span>
|
|
1716
|
-
|
|
1717
|
-
<span class="k">return</span> <span class="n">response</span><span class="o">.</span><span class="n">text</span><span class="p">,</span> <span class="n">response</span><span class="o">.</span><span class="n">status_code</span>
|
|
1718
|
-
</code></pre></div>
|
|
1719
|
-
</details>
|
|
1720
|
-
</div>
|
|
1721
|
-
|
|
1722
|
-
</div>
|
|
1723
|
-
|
|
1724
|
-
|
|
1725
|
-
|
|
1726
|
-
|
|
1727
|
-
|
|
1728
|
-
|
|
1729
|
-
</div>
|
|
1730
|
-
|
|
1731
|
-
</div>
|
|
1732
|
-
|
|
1733
|
-
</div>
|
|
1734
|
-
|
|
1735
|
-
|
|
1736
|
-
|
|
1737
|
-
|
|
1738
|
-
<div class="doc doc-object doc-function">
|
|
1739
|
-
|
|
1740
|
-
|
|
1741
|
-
|
|
1742
|
-
<h2 id="ciocore.api_client.read_conductor_credentials" class="doc doc-heading">
|
|
1743
|
-
<code class="highlight language-python"><span class="n">read_conductor_credentials</span><span class="p">(</span><span class="n">use_api_key</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span></code>
|
|
1744
|
-
|
|
1745
|
-
|
|
1746
|
-
</h2>
|
|
1747
|
-
|
|
1748
|
-
<div class="doc doc-contents ">
|
|
1749
|
-
|
|
1750
|
-
<p>Read the conductor credentials file.</p>
|
|
1751
|
-
<p>If the credentials file exists, it will contain a bearer token from either
|
|
1752
|
-
the user or the API key (if that's desired).</p>
|
|
1753
|
-
<p>If the credentials file doesn't exist, or is
|
|
1754
|
-
expired, or is from a different domain, we try to fetch a new one in the API key scenario or
|
|
1755
|
-
prompt the user to log in. </p>
|
|
1756
|
-
<p>Args:
|
|
1757
|
-
use_api_key (bool): Whether or not to try to use the API key</p>
|
|
1758
|
-
<p>Returns:
|
|
1759
|
-
A Bearer token in the event of a success or None.</p>
|
|
1760
|
-
|
|
1761
|
-
<details class="quote">
|
|
1762
|
-
<summary>Source code in <code>ciocore/api_client.py</code></summary>
|
|
1763
|
-
<div class="highlight"><pre><span></span><code><span class="k">def</span> <span class="nf">read_conductor_credentials</span><span class="p">(</span><span class="n">use_api_key</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span>
|
|
1764
|
-
<span class="w"> </span><span class="sd">"""</span>
|
|
1765
|
-
<span class="sd"> Read the conductor credentials file.</span>
|
|
1766
|
-
|
|
1767
|
-
<span class="sd"> If the credentials file exists, it will contain a bearer token from either</span>
|
|
1768
|
-
<span class="sd"> the user or the API key (if that's desired).</span>
|
|
1769
|
-
|
|
1770
|
-
<span class="sd"> If the credentials file doesn't exist, or is</span>
|
|
1771
|
-
<span class="sd"> expired, or is from a different domain, we try to fetch a new one in the API key scenario or</span>
|
|
1772
|
-
<span class="sd"> prompt the user to log in. </span>
|
|
1773
|
-
|
|
1774
|
-
<span class="sd"> Args: </span>
|
|
1775
|
-
<span class="sd"> use_api_key (bool): Whether or not to try to use the API key</span>
|
|
1776
|
-
|
|
1777
|
-
<span class="sd"> Returns: </span>
|
|
1778
|
-
<span class="sd"> A Bearer token in the event of a success or None.</span>
|
|
1779
|
-
|
|
1780
|
-
<span class="sd"> """</span>
|
|
1781
|
-
|
|
1782
|
-
<span class="c1"># TODO: use config.get(). Below call is deprecated</span>
|
|
1783
|
-
<span class="n">cfg</span> <span class="o">=</span> <span class="n">config</span><span class="o">.</span><span class="n">config</span><span class="p">()</span><span class="o">.</span><span class="n">config</span>
|
|
1784
|
-
<span class="n">logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s2">"Reading conductor credentials..."</span><span class="p">)</span>
|
|
1785
|
-
<span class="k">if</span> <span class="n">use_api_key</span><span class="p">:</span>
|
|
1786
|
-
<span class="k">if</span> <span class="ow">not</span> <span class="n">cfg</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"api_key"</span><span class="p">):</span>
|
|
1787
|
-
<span class="n">use_api_key</span> <span class="o">=</span> <span class="kc">False</span>
|
|
1788
|
-
<span class="k">if</span> <span class="n">use_api_key</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">cfg</span><span class="p">[</span><span class="s2">"api_key"</span><span class="p">]</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"client_id"</span><span class="p">):</span>
|
|
1789
|
-
<span class="n">use_api_key</span> <span class="o">=</span> <span class="kc">False</span>
|
|
1790
|
-
<span class="n">logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s2">"use_api_key = </span><span class="si">%s</span><span class="s2">"</span> <span class="o">%</span> <span class="n">use_api_key</span><span class="p">)</span>
|
|
1791
|
-
<span class="n">creds_file</span> <span class="o">=</span> <span class="n">get_creds_path</span><span class="p">(</span><span class="n">use_api_key</span><span class="p">)</span>
|
|
1792
|
-
|
|
1793
|
-
<span class="n">logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s2">"Creds file is </span><span class="si">%s</span><span class="s2">"</span> <span class="o">%</span> <span class="n">creds_file</span><span class="p">)</span>
|
|
1794
|
-
<span class="n">logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s2">"Auth url is </span><span class="si">%s</span><span class="s2">"</span> <span class="o">%</span> <span class="n">cfg</span><span class="p">[</span><span class="s2">"url"</span><span class="p">])</span>
|
|
1795
|
-
<span class="k">if</span> <span class="ow">not</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">exists</span><span class="p">(</span><span class="n">creds_file</span><span class="p">):</span>
|
|
1796
|
-
<span class="k">if</span> <span class="n">use_api_key</span><span class="p">:</span>
|
|
1797
|
-
<span class="k">if</span> <span class="ow">not</span> <span class="n">cfg</span><span class="p">[</span><span class="s2">"api_key"</span><span class="p">]:</span>
|
|
1798
|
-
<span class="n">logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s2">"Attempted to use API key, but no api key in in config!"</span><span class="p">)</span>
|
|
1799
|
-
<span class="k">return</span> <span class="kc">None</span>
|
|
1800
|
-
|
|
1801
|
-
<span class="c1"># Exchange the API key for a bearer token</span>
|
|
1802
|
-
<span class="n">logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s2">"Attempting to get API key bearer token"</span><span class="p">)</span>
|
|
1803
|
-
<span class="n">get_api_key_bearer_token</span><span class="p">(</span><span class="n">creds_file</span><span class="p">)</span>
|
|
1804
|
-
|
|
1805
|
-
<span class="k">else</span><span class="p">:</span>
|
|
1806
|
-
<span class="n">auth</span><span class="o">.</span><span class="n">run</span><span class="p">(</span><span class="n">creds_file</span><span class="p">,</span> <span class="n">cfg</span><span class="p">[</span><span class="s2">"url"</span><span class="p">])</span>
|
|
1807
|
-
|
|
1808
|
-
<span class="k">if</span> <span class="ow">not</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">exists</span><span class="p">(</span><span class="n">creds_file</span><span class="p">):</span>
|
|
1809
|
-
<span class="k">return</span> <span class="kc">None</span>
|
|
1810
|
-
|
|
1811
|
-
<span class="n">logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s2">"Reading credentials file..."</span><span class="p">)</span>
|
|
1812
|
-
<span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="n">creds_file</span><span class="p">)</span> <span class="k">as</span> <span class="n">fp</span><span class="p">:</span>
|
|
1813
|
-
<span class="n">file_contents</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">fp</span><span class="o">.</span><span class="n">read</span><span class="p">())</span>
|
|
1814
|
-
|
|
1815
|
-
<span class="n">expiration</span> <span class="o">=</span> <span class="n">file_contents</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"expiration"</span><span class="p">)</span>
|
|
1816
|
-
|
|
1817
|
-
<span class="n">same_domain</span> <span class="o">=</span> <span class="n">creds_same_domain</span><span class="p">(</span><span class="n">file_contents</span><span class="p">)</span>
|
|
1818
|
-
|
|
1819
|
-
<span class="k">if</span> <span class="n">same_domain</span> <span class="ow">and</span> <span class="n">expiration</span> <span class="ow">and</span> <span class="n">expiration</span> <span class="o">>=</span> <span class="nb">int</span><span class="p">(</span><span class="n">time</span><span class="o">.</span><span class="n">time</span><span class="p">()):</span>
|
|
1820
|
-
<span class="k">return</span> <span class="n">file_contents</span><span class="p">[</span><span class="s2">"access_token"</span><span class="p">]</span>
|
|
1821
|
-
|
|
1822
|
-
<span class="n">logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s2">"Credentials have expired or are from a different domain"</span><span class="p">)</span>
|
|
1823
|
-
|
|
1824
|
-
<span class="k">if</span> <span class="n">use_api_key</span><span class="p">:</span>
|
|
1825
|
-
<span class="n">logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s2">"Refreshing API key bearer token!"</span><span class="p">)</span>
|
|
1826
|
-
<span class="n">get_api_key_bearer_token</span><span class="p">(</span><span class="n">creds_file</span><span class="p">)</span>
|
|
1827
|
-
<span class="k">else</span><span class="p">:</span>
|
|
1828
|
-
<span class="n">logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s2">"Sending to auth page..."</span><span class="p">)</span>
|
|
1829
|
-
<span class="n">auth</span><span class="o">.</span><span class="n">run</span><span class="p">(</span><span class="n">creds_file</span><span class="p">,</span> <span class="n">cfg</span><span class="p">[</span><span class="s2">"url"</span><span class="p">])</span>
|
|
1830
|
-
|
|
1831
|
-
<span class="c1"># Re-read the creds file, since it has been re-upped</span>
|
|
1832
|
-
<span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="n">creds_file</span><span class="p">)</span> <span class="k">as</span> <span class="n">fp</span><span class="p">:</span>
|
|
1833
|
-
<span class="n">file_contents</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">fp</span><span class="o">.</span><span class="n">read</span><span class="p">())</span>
|
|
1834
|
-
<span class="k">return</span> <span class="n">file_contents</span><span class="p">[</span><span class="s2">"access_token"</span><span class="p">]</span>
|
|
1835
|
-
</code></pre></div>
|
|
1836
|
-
</details>
|
|
1837
|
-
</div>
|
|
1838
|
-
|
|
1839
|
-
</div>
|
|
1840
|
-
|
|
1841
|
-
|
|
1842
|
-
|
|
1843
|
-
<div class="doc doc-object doc-function">
|
|
1844
|
-
|
|
1845
|
-
|
|
1846
|
-
|
|
1847
|
-
<h2 id="ciocore.api_client.get_api_key_bearer_token" class="doc doc-heading">
|
|
1848
|
-
<code class="highlight language-python"><span class="n">get_api_key_bearer_token</span><span class="p">(</span><span class="n">creds_file</span><span class="o">=</span><span class="kc">None</span><span class="p">)</span></code>
|
|
1849
|
-
|
|
1850
|
-
|
|
1851
|
-
</h2>
|
|
1852
|
-
|
|
1853
|
-
<div class="doc doc-contents ">
|
|
1854
|
-
|
|
1855
|
-
<p>Get a bearer token from the API key.</p>
|
|
1856
|
-
|
|
1857
|
-
<p><strong>Parameters:</strong></p>
|
|
1858
|
-
<table>
|
|
1859
|
-
<thead>
|
|
1860
|
-
<tr>
|
|
1861
|
-
<th>Name</th>
|
|
1862
|
-
<th>Type</th>
|
|
1863
|
-
<th>Description</th>
|
|
1864
|
-
<th>Default</th>
|
|
1865
|
-
</tr>
|
|
1866
|
-
</thead>
|
|
1867
|
-
<tbody>
|
|
1868
|
-
<tr>
|
|
1869
|
-
<td><code>creds_file</code></td>
|
|
1870
|
-
<td><code>str</code></td>
|
|
1871
|
-
<td><p>The path to the credentials file. If not provided, the bearer token will not be written to disk.</p></td>
|
|
1872
|
-
<td><code>None</code></td>
|
|
1873
|
-
</tr>
|
|
1874
|
-
</tbody>
|
|
1875
|
-
</table>
|
|
1876
|
-
<p><strong>Returns:</strong></p>
|
|
1877
|
-
<table>
|
|
1878
|
-
<thead>
|
|
1879
|
-
<tr>
|
|
1880
|
-
<th>Type</th>
|
|
1881
|
-
<th>Description</th>
|
|
1882
|
-
</tr>
|
|
1883
|
-
</thead>
|
|
1884
|
-
<tbody>
|
|
1885
|
-
<tr>
|
|
1886
|
-
<td></td>
|
|
1887
|
-
<td><p>A dictionary containing the bearer token and other information.</p></td>
|
|
1888
|
-
</tr>
|
|
1889
|
-
</tbody>
|
|
1890
|
-
</table>
|
|
1891
|
-
<details class="quote">
|
|
1892
|
-
<summary>Source code in <code>ciocore/api_client.py</code></summary>
|
|
1893
|
-
<div class="highlight"><pre><span></span><code><span class="k">def</span> <span class="nf">get_api_key_bearer_token</span><span class="p">(</span><span class="n">creds_file</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
|
1894
|
-
<span class="w"> </span><span class="sd">"""</span>
|
|
1895
|
-
<span class="sd"> Get a bearer token from the API key.</span>
|
|
1896
|
-
|
|
1897
|
-
<span class="sd"> Args:</span>
|
|
1898
|
-
<span class="sd"> creds_file (str): The path to the credentials file. If not provided, the bearer token will not be written to disk.</span>
|
|
1899
|
-
|
|
1900
|
-
<span class="sd"> Returns:</span>
|
|
1901
|
-
<span class="sd"> A dictionary containing the bearer token and other information.</span>
|
|
1902
|
-
<span class="sd"> """</span>
|
|
1903
|
-
<span class="n">cfg</span> <span class="o">=</span> <span class="n">config</span><span class="o">.</span><span class="n">config</span><span class="p">()</span><span class="o">.</span><span class="n">config</span>
|
|
1904
|
-
<span class="n">url</span> <span class="o">=</span> <span class="s2">"</span><span class="si">{}</span><span class="s2">/api/oauth_jwt"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">cfg</span><span class="p">[</span><span class="s2">"url"</span><span class="p">])</span>
|
|
1905
|
-
<span class="n">response</span> <span class="o">=</span> <span class="n">requests</span><span class="o">.</span><span class="n">get</span><span class="p">(</span>
|
|
1906
|
-
<span class="n">url</span><span class="p">,</span>
|
|
1907
|
-
<span class="n">params</span><span class="o">=</span><span class="p">{</span>
|
|
1908
|
-
<span class="s2">"grant_type"</span><span class="p">:</span> <span class="s2">"client_credentials"</span><span class="p">,</span>
|
|
1909
|
-
<span class="s2">"scope"</span><span class="p">:</span> <span class="s2">"owner admin user"</span><span class="p">,</span>
|
|
1910
|
-
<span class="s2">"client_id"</span><span class="p">:</span> <span class="n">cfg</span><span class="p">[</span><span class="s2">"api_key"</span><span class="p">][</span><span class="s2">"client_id"</span><span class="p">],</span>
|
|
1911
|
-
<span class="s2">"client_secret"</span><span class="p">:</span> <span class="n">cfg</span><span class="p">[</span><span class="s2">"api_key"</span><span class="p">][</span><span class="s2">"private_key"</span><span class="p">],</span>
|
|
1912
|
-
<span class="p">},</span>
|
|
1913
|
-
<span class="p">)</span>
|
|
1914
|
-
<span class="k">if</span> <span class="n">response</span><span class="o">.</span><span class="n">status_code</span> <span class="o">==</span> <span class="mi">200</span><span class="p">:</span>
|
|
1915
|
-
<span class="n">response_dict</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="o">.</span><span class="n">text</span><span class="p">)</span>
|
|
1916
|
-
<span class="n">credentials_dict</span> <span class="o">=</span> <span class="p">{</span>
|
|
1917
|
-
<span class="s2">"access_token"</span><span class="p">:</span> <span class="n">response_dict</span><span class="p">[</span><span class="s2">"access_token"</span><span class="p">],</span>
|
|
1918
|
-
<span class="s2">"token_type"</span><span class="p">:</span> <span class="s2">"Bearer"</span><span class="p">,</span>
|
|
1919
|
-
<span class="s2">"expiration"</span><span class="p">:</span> <span class="nb">int</span><span class="p">(</span><span class="n">time</span><span class="o">.</span><span class="n">time</span><span class="p">())</span> <span class="o">+</span> <span class="nb">int</span><span class="p">(</span><span class="n">response_dict</span><span class="p">[</span><span class="s2">"expires_in"</span><span class="p">]),</span>
|
|
1920
|
-
<span class="s2">"scope"</span><span class="p">:</span> <span class="s2">"user admin owner"</span><span class="p">,</span>
|
|
1921
|
-
<span class="p">}</span>
|
|
1922
|
-
|
|
1923
|
-
<span class="k">if</span> <span class="ow">not</span> <span class="n">creds_file</span><span class="p">:</span>
|
|
1924
|
-
<span class="k">return</span> <span class="n">credentials_dict</span>
|
|
1925
|
-
|
|
1926
|
-
<span class="k">if</span> <span class="ow">not</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">exists</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">dirname</span><span class="p">(</span><span class="n">creds_file</span><span class="p">)):</span>
|
|
1927
|
-
<span class="n">os</span><span class="o">.</span><span class="n">makedirs</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">dirname</span><span class="p">(</span><span class="n">creds_file</span><span class="p">))</span>
|
|
1928
|
-
|
|
1929
|
-
<span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="n">creds_file</span><span class="p">,</span> <span class="s2">"w"</span><span class="p">)</span> <span class="k">as</span> <span class="n">fp</span><span class="p">:</span>
|
|
1930
|
-
<span class="n">fp</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="n">json</span><span class="o">.</span><span class="n">dumps</span><span class="p">(</span><span class="n">credentials_dict</span><span class="p">))</span>
|
|
1931
|
-
<span class="k">return</span>
|
|
1932
|
-
</code></pre></div>
|
|
1933
|
-
</details>
|
|
1934
|
-
</div>
|
|
1935
|
-
|
|
1936
|
-
</div>
|
|
1937
|
-
|
|
1938
|
-
|
|
1939
|
-
|
|
1940
|
-
<div class="doc doc-object doc-function">
|
|
1941
|
-
|
|
1942
|
-
|
|
1943
|
-
|
|
1944
|
-
<h2 id="ciocore.api_client.get_creds_path" class="doc doc-heading">
|
|
1945
|
-
<code class="highlight language-python"><span class="n">get_creds_path</span><span class="p">(</span><span class="n">api_key</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span></code>
|
|
1946
|
-
|
|
1947
|
-
|
|
1948
|
-
</h2>
|
|
1949
|
-
|
|
1950
|
-
<div class="doc doc-contents ">
|
|
1951
|
-
|
|
1952
|
-
<p>Get the path to the credentials file.</p>
|
|
1953
|
-
|
|
1954
|
-
<p><strong>Parameters:</strong></p>
|
|
1955
|
-
<table>
|
|
1956
|
-
<thead>
|
|
1957
|
-
<tr>
|
|
1958
|
-
<th>Name</th>
|
|
1959
|
-
<th>Type</th>
|
|
1960
|
-
<th>Description</th>
|
|
1961
|
-
<th>Default</th>
|
|
1962
|
-
</tr>
|
|
1963
|
-
</thead>
|
|
1964
|
-
<tbody>
|
|
1965
|
-
<tr>
|
|
1966
|
-
<td><code>api_key</code></td>
|
|
1967
|
-
<td><code>bool</code></td>
|
|
1968
|
-
<td><p>Whether or not to use the API key.</p></td>
|
|
1969
|
-
<td><code>False</code></td>
|
|
1970
|
-
</tr>
|
|
1971
|
-
</tbody>
|
|
1972
|
-
</table>
|
|
1973
|
-
<p><strong>Returns:</strong></p>
|
|
1974
|
-
<table>
|
|
1975
|
-
<thead>
|
|
1976
|
-
<tr>
|
|
1977
|
-
<th>Type</th>
|
|
1978
|
-
<th>Description</th>
|
|
1979
|
-
</tr>
|
|
1980
|
-
</thead>
|
|
1981
|
-
<tbody>
|
|
1982
|
-
<tr>
|
|
1983
|
-
<td><code>str</code></td>
|
|
1984
|
-
<td><p>The path to the credentials file.</p></td>
|
|
1985
|
-
</tr>
|
|
1986
|
-
</tbody>
|
|
1987
|
-
</table>
|
|
1988
|
-
<details class="quote">
|
|
1989
|
-
<summary>Source code in <code>ciocore/api_client.py</code></summary>
|
|
1990
|
-
<div class="highlight"><pre><span></span><code><span class="k">def</span> <span class="nf">get_creds_path</span><span class="p">(</span><span class="n">api_key</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span>
|
|
1991
|
-
<span class="w"> </span><span class="sd">"""</span>
|
|
1992
|
-
<span class="sd"> Get the path to the credentials file.</span>
|
|
1993
|
-
|
|
1994
|
-
<span class="sd"> Args:</span>
|
|
1995
|
-
<span class="sd"> api_key (bool): Whether or not to use the API key.</span>
|
|
1996
|
-
|
|
1997
|
-
<span class="sd"> Returns:</span>
|
|
1998
|
-
<span class="sd"> str: The path to the credentials file.</span>
|
|
1999
|
-
<span class="sd"> """</span>
|
|
2000
|
-
<span class="n">creds_dir</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">expanduser</span><span class="p">(</span><span class="s2">"~"</span><span class="p">),</span> <span class="s2">".config"</span><span class="p">,</span> <span class="s2">"conductor"</span><span class="p">)</span>
|
|
2001
|
-
<span class="k">if</span> <span class="n">api_key</span><span class="p">:</span>
|
|
2002
|
-
<span class="n">creds_file</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">creds_dir</span><span class="p">,</span> <span class="s2">"api_key_credentials"</span><span class="p">)</span>
|
|
2003
|
-
<span class="k">else</span><span class="p">:</span>
|
|
2004
|
-
<span class="n">creds_file</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">creds_dir</span><span class="p">,</span> <span class="s2">"credentials"</span><span class="p">)</span>
|
|
2005
|
-
<span class="k">return</span> <span class="n">creds_file</span>
|
|
2006
|
-
</code></pre></div>
|
|
2007
|
-
</details>
|
|
2008
|
-
</div>
|
|
2009
|
-
|
|
2010
|
-
</div>
|
|
2011
|
-
|
|
2012
|
-
|
|
2013
|
-
|
|
2014
|
-
<div class="doc doc-object doc-function">
|
|
2015
|
-
|
|
2016
|
-
|
|
2017
|
-
|
|
2018
|
-
<h2 id="ciocore.api_client.get_bearer_token" class="doc doc-heading">
|
|
2019
|
-
<code class="highlight language-python"><span class="n">get_bearer_token</span><span class="p">(</span><span class="n">refresh</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span></code>
|
|
2020
|
-
|
|
2021
|
-
|
|
2022
|
-
</h2>
|
|
2023
|
-
|
|
2024
|
-
<div class="doc doc-contents ">
|
|
2025
|
-
|
|
2026
|
-
<p>Return the bearer token.</p>
|
|
2027
|
-
|
|
2028
|
-
<p><strong>Parameters:</strong></p>
|
|
2029
|
-
<table>
|
|
2030
|
-
<thead>
|
|
2031
|
-
<tr>
|
|
2032
|
-
<th>Name</th>
|
|
2033
|
-
<th>Type</th>
|
|
2034
|
-
<th>Description</th>
|
|
2035
|
-
<th>Default</th>
|
|
2036
|
-
</tr>
|
|
2037
|
-
</thead>
|
|
2038
|
-
<tbody>
|
|
2039
|
-
<tr>
|
|
2040
|
-
<td><code>refresh</code></td>
|
|
2041
|
-
<td><code>bool</code></td>
|
|
2042
|
-
<td><p>Whether or not to refresh the token.</p></td>
|
|
2043
|
-
<td><code>False</code></td>
|
|
2044
|
-
</tr>
|
|
2045
|
-
</tbody>
|
|
2046
|
-
</table>
|
|
2047
|
-
|
|
2048
|
-
<details class="quote">
|
|
2049
|
-
<summary>Source code in <code>ciocore/api_client.py</code></summary>
|
|
2050
|
-
<div class="highlight"><pre><span></span><code><span class="k">def</span> <span class="nf">get_bearer_token</span><span class="p">(</span><span class="n">refresh</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span>
|
|
2051
|
-
<span class="w"> </span><span class="sd">"""</span>
|
|
2052
|
-
<span class="sd"> Return the bearer token.</span>
|
|
2053
|
-
|
|
2054
|
-
<span class="sd"> Args:</span>
|
|
2055
|
-
<span class="sd"> refresh (bool): Whether or not to refresh the token.</span>
|
|
2056
|
-
|
|
2057
|
-
<span class="sd"> TODO: Thread safe multiproc caching, like it used to be pre-python3.7.</span>
|
|
2058
|
-
<span class="sd"> """</span>
|
|
2059
|
-
<span class="k">return</span> <span class="n">read_conductor_credentials</span><span class="p">(</span><span class="kc">True</span><span class="p">)</span>
|
|
2060
|
-
</code></pre></div>
|
|
2061
|
-
</details>
|
|
2062
|
-
</div>
|
|
2063
|
-
|
|
2064
|
-
</div>
|
|
2065
|
-
|
|
2066
|
-
|
|
2067
|
-
|
|
2068
|
-
<div class="doc doc-object doc-function">
|
|
2069
|
-
|
|
2070
|
-
|
|
2071
|
-
|
|
2072
|
-
<h2 id="ciocore.api_client.creds_same_domain" class="doc doc-heading">
|
|
2073
|
-
<code class="highlight language-python"><span class="n">creds_same_domain</span><span class="p">(</span><span class="n">creds</span><span class="p">)</span></code>
|
|
2074
|
-
|
|
2075
|
-
|
|
2076
|
-
</h2>
|
|
2077
|
-
|
|
2078
|
-
<div class="doc doc-contents ">
|
|
2079
|
-
|
|
2080
|
-
<p>Check if the creds are for the same domain as the config.</p>
|
|
2081
|
-
|
|
2082
|
-
<p><strong>Parameters:</strong></p>
|
|
2083
|
-
<table>
|
|
2084
|
-
<thead>
|
|
2085
|
-
<tr>
|
|
2086
|
-
<th>Name</th>
|
|
2087
|
-
<th>Type</th>
|
|
2088
|
-
<th>Description</th>
|
|
2089
|
-
<th>Default</th>
|
|
2090
|
-
</tr>
|
|
2091
|
-
</thead>
|
|
2092
|
-
<tbody>
|
|
2093
|
-
<tr>
|
|
2094
|
-
<td><code>creds</code></td>
|
|
2095
|
-
<td><code>dict</code></td>
|
|
2096
|
-
<td><p>The credentials dictionary.</p></td>
|
|
2097
|
-
<td><em>required</em></td>
|
|
2098
|
-
</tr>
|
|
2099
|
-
</tbody>
|
|
2100
|
-
</table>
|
|
2101
|
-
<p><strong>Returns:</strong></p>
|
|
2102
|
-
<table>
|
|
2103
|
-
<thead>
|
|
2104
|
-
<tr>
|
|
2105
|
-
<th>Type</th>
|
|
2106
|
-
<th>Description</th>
|
|
2107
|
-
</tr>
|
|
2108
|
-
</thead>
|
|
2109
|
-
<tbody>
|
|
2110
|
-
<tr>
|
|
2111
|
-
<td><code>bool</code></td>
|
|
2112
|
-
<td><p>Whether or not the creds are for the same domain as the config.</p></td>
|
|
2113
|
-
</tr>
|
|
2114
|
-
</tbody>
|
|
2115
|
-
</table>
|
|
2116
|
-
<details class="quote">
|
|
2117
|
-
<summary>Source code in <code>ciocore/api_client.py</code></summary>
|
|
2118
|
-
<div class="highlight"><pre><span></span><code><span class="k">def</span> <span class="nf">creds_same_domain</span><span class="p">(</span><span class="n">creds</span><span class="p">):</span>
|
|
2119
|
-
<span class="w"> </span><span class="sd">"""</span>
|
|
2120
|
-
<span class="sd"> Check if the creds are for the same domain as the config.</span>
|
|
2121
|
-
|
|
2122
|
-
<span class="sd"> Args:</span>
|
|
2123
|
-
<span class="sd"> creds (dict): The credentials dictionary.</span>
|
|
2124
|
-
|
|
2125
|
-
<span class="sd"> Returns:</span>
|
|
2126
|
-
<span class="sd"> bool: Whether or not the creds are for the same domain as the config.</span>
|
|
2127
|
-
<span class="sd"> """</span>
|
|
2128
|
-
<span class="n">cfg</span> <span class="o">=</span> <span class="n">config</span><span class="o">.</span><span class="n">config</span><span class="p">()</span><span class="o">.</span><span class="n">config</span>
|
|
2129
|
-
<span class="w"> </span><span class="sd">"""Ensure the creds file refers to the domain in config"""</span>
|
|
2130
|
-
<span class="n">token</span> <span class="o">=</span> <span class="n">creds</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"access_token"</span><span class="p">)</span>
|
|
2131
|
-
<span class="k">if</span> <span class="ow">not</span> <span class="n">token</span><span class="p">:</span>
|
|
2132
|
-
<span class="k">return</span> <span class="kc">False</span>
|
|
2133
|
-
|
|
2134
|
-
<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">verify</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
|
|
2135
|
-
<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>
|
|
2136
|
-
<span class="k">return</span> <span class="p">(</span>
|
|
2137
|
-
<span class="n">audience_domain</span>
|
|
2138
|
-
<span class="ow">and</span> <span class="n">audience_domain</span><span class="o">.</span><span class="n">rpartition</span><span class="p">(</span><span class="s2">"/"</span><span class="p">)[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span> <span class="o">==</span> <span class="n">cfg</span><span class="p">[</span><span class="s2">"api_url"</span><span class="p">]</span><span class="o">.</span><span class="n">rpartition</span><span class="p">(</span><span class="s2">"/"</span><span class="p">)[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span>
|
|
2139
|
-
<span class="p">)</span>
|
|
2140
|
-
</code></pre></div>
|
|
2141
|
-
</details>
|
|
2142
|
-
</div>
|
|
2143
|
-
|
|
2144
|
-
</div>
|
|
2145
|
-
|
|
2146
|
-
|
|
2147
|
-
|
|
2148
|
-
<div class="doc doc-object doc-function">
|
|
2149
|
-
|
|
2150
|
-
|
|
2151
|
-
|
|
2152
|
-
<h2 id="ciocore.api_client.account_id_from_jwt" class="doc doc-heading">
|
|
2153
|
-
<code class="highlight language-python"><span class="n">account_id_from_jwt</span><span class="p">(</span><span class="n">token</span><span class="p">)</span></code>
|
|
2154
|
-
|
|
2155
|
-
|
|
2156
|
-
</h2>
|
|
2157
|
-
|
|
2158
|
-
<div class="doc doc-contents ">
|
|
2159
|
-
|
|
2160
|
-
<p>Fetch the accounts id from a jwt token value.</p>
|
|
2161
|
-
|
|
2162
|
-
<p><strong>Parameters:</strong></p>
|
|
2163
|
-
<table>
|
|
2164
|
-
<thead>
|
|
2165
|
-
<tr>
|
|
2166
|
-
<th>Name</th>
|
|
2167
|
-
<th>Type</th>
|
|
2168
|
-
<th>Description</th>
|
|
2169
|
-
<th>Default</th>
|
|
2170
|
-
</tr>
|
|
2171
|
-
</thead>
|
|
2172
|
-
<tbody>
|
|
2173
|
-
<tr>
|
|
2174
|
-
<td><code>token</code></td>
|
|
2175
|
-
<td><code>str</code></td>
|
|
2176
|
-
<td><p>The jwt token.</p></td>
|
|
2177
|
-
<td><em>required</em></td>
|
|
2178
|
-
</tr>
|
|
2179
|
-
</tbody>
|
|
2180
|
-
</table>
|
|
2181
|
-
<p><strong>Returns:</strong></p>
|
|
2182
|
-
<table>
|
|
2183
|
-
<thead>
|
|
2184
|
-
<tr>
|
|
2185
|
-
<th>Type</th>
|
|
2186
|
-
<th>Description</th>
|
|
2187
|
-
</tr>
|
|
2188
|
-
</thead>
|
|
2189
|
-
<tbody>
|
|
2190
|
-
<tr>
|
|
2191
|
-
<td><code>str</code></td>
|
|
2192
|
-
<td><p>The account id.</p></td>
|
|
2193
|
-
</tr>
|
|
2194
|
-
</tbody>
|
|
2195
|
-
</table>
|
|
2196
|
-
<details class="quote">
|
|
2197
|
-
<summary>Source code in <code>ciocore/api_client.py</code></summary>
|
|
2198
|
-
<div class="highlight"><pre><span></span><code><span class="k">def</span> <span class="nf">account_id_from_jwt</span><span class="p">(</span><span class="n">token</span><span class="p">):</span>
|
|
2199
|
-
<span class="w"> </span><span class="sd">"""</span>
|
|
2200
|
-
<span class="sd"> Fetch the accounts id from a jwt token value.</span>
|
|
2201
|
-
|
|
2202
|
-
<span class="sd"> Args:</span>
|
|
2203
|
-
<span class="sd"> token (str): The jwt token.</span>
|
|
2204
|
-
|
|
2205
|
-
<span class="sd"> Returns:</span>
|
|
2206
|
-
<span class="sd"> str: The account id.</span>
|
|
2207
|
-
<span class="sd"> """</span>
|
|
2208
|
-
<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">verify</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
|
|
2209
|
-
<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>
|
|
2210
|
-
</code></pre></div>
|
|
2211
|
-
</details>
|
|
2212
|
-
</div>
|
|
2213
|
-
|
|
2214
|
-
</div>
|
|
2215
|
-
|
|
2216
|
-
|
|
2217
|
-
|
|
2218
|
-
<div class="doc doc-object doc-function">
|
|
2219
|
-
|
|
2220
|
-
|
|
2221
|
-
|
|
2222
|
-
<h2 id="ciocore.api_client.account_name_from_jwt" class="doc doc-heading">
|
|
2223
|
-
<code class="highlight language-python"><span class="n">account_name_from_jwt</span><span class="p">(</span><span class="n">token</span><span class="p">)</span></code>
|
|
2224
|
-
|
|
2225
|
-
|
|
2226
|
-
</h2>
|
|
2227
|
-
|
|
2228
|
-
<div class="doc doc-contents ">
|
|
2229
|
-
|
|
2230
|
-
<p>Fetch the accounts name from a jwt token value.</p>
|
|
2231
|
-
|
|
2232
|
-
<p><strong>Parameters:</strong></p>
|
|
2233
|
-
<table>
|
|
2234
|
-
<thead>
|
|
2235
|
-
<tr>
|
|
2236
|
-
<th>Name</th>
|
|
2237
|
-
<th>Type</th>
|
|
2238
|
-
<th>Description</th>
|
|
2239
|
-
<th>Default</th>
|
|
2240
|
-
</tr>
|
|
2241
|
-
</thead>
|
|
2242
|
-
<tbody>
|
|
2243
|
-
<tr>
|
|
2244
|
-
<td><code>token</code></td>
|
|
2245
|
-
<td><code>str</code></td>
|
|
2246
|
-
<td><p>The jwt token.</p></td>
|
|
2247
|
-
<td><em>required</em></td>
|
|
2248
|
-
</tr>
|
|
2249
|
-
</tbody>
|
|
2250
|
-
</table>
|
|
2251
|
-
<p><strong>Returns:</strong></p>
|
|
2252
|
-
<table>
|
|
2253
|
-
<thead>
|
|
2254
|
-
<tr>
|
|
2255
|
-
<th>Type</th>
|
|
2256
|
-
<th>Description</th>
|
|
2257
|
-
</tr>
|
|
2258
|
-
</thead>
|
|
2259
|
-
<tbody>
|
|
2260
|
-
<tr>
|
|
2261
|
-
<td><code>str</code></td>
|
|
2262
|
-
<td><p>The account name.</p></td>
|
|
2263
|
-
</tr>
|
|
2264
|
-
</tbody>
|
|
2265
|
-
</table>
|
|
2266
|
-
<details class="quote">
|
|
2267
|
-
<summary>Source code in <code>ciocore/api_client.py</code></summary>
|
|
2268
|
-
<div class="highlight"><pre><span></span><code><span class="k">def</span> <span class="nf">account_name_from_jwt</span><span class="p">(</span><span class="n">token</span><span class="p">):</span>
|
|
2269
|
-
<span class="w"> </span><span class="sd">"""</span>
|
|
2270
|
-
<span class="sd"> Fetch the accounts name from a jwt token value.</span>
|
|
2271
|
-
|
|
2272
|
-
<span class="sd"> Args:</span>
|
|
2273
|
-
<span class="sd"> token (str): The jwt token.</span>
|
|
2274
|
-
|
|
2275
|
-
<span class="sd"> Returns:</span>
|
|
2276
|
-
<span class="sd"> str: The account name.</span>
|
|
2277
|
-
<span class="sd"> """</span>
|
|
2278
|
-
<span class="n">cfg</span> <span class="o">=</span> <span class="n">config</span><span class="o">.</span><span class="n">config</span><span class="p">()</span><span class="o">.</span><span class="n">config</span>
|
|
2279
|
-
<span class="n">account_id</span> <span class="o">=</span> <span class="n">account_id_from_jwt</span><span class="p">(</span><span class="n">token</span><span class="p">)</span>
|
|
2280
|
-
<span class="k">if</span> <span class="n">account_id</span><span class="p">:</span>
|
|
2281
|
-
<span class="n">url</span> <span class="o">=</span> <span class="s2">"</span><span class="si">%s</span><span class="s2">/api/v1/accounts/</span><span class="si">%s</span><span class="s2">"</span> <span class="o">%</span> <span class="p">(</span><span class="n">cfg</span><span class="p">[</span><span class="s2">"api_url"</span><span class="p">],</span> <span class="n">account_id</span><span class="p">)</span>
|
|
2282
|
-
<span class="n">response</span> <span class="o">=</span> <span class="n">requests</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">url</span><span class="p">,</span> <span class="n">headers</span><span class="o">=</span><span class="p">{</span><span class="s2">"authorization"</span><span class="p">:</span> <span class="s2">"Bearer </span><span class="si">%s</span><span class="s2">"</span> <span class="o">%</span> <span class="n">token</span><span class="p">})</span>
|
|
2283
|
-
<span class="k">if</span> <span class="n">response</span><span class="o">.</span><span class="n">status_code</span> <span class="o">==</span> <span class="mi">200</span><span class="p">:</span>
|
|
2284
|
-
<span class="n">response_dict</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="o">.</span><span class="n">text</span><span class="p">)</span>
|
|
2285
|
-
<span class="k">return</span> <span class="n">response_dict</span><span class="p">[</span><span class="s2">"data"</span><span class="p">][</span><span class="s2">"name"</span><span class="p">]</span>
|
|
2286
|
-
<span class="k">return</span> <span class="kc">None</span>
|
|
2287
|
-
</code></pre></div>
|
|
2288
|
-
</details>
|
|
2289
|
-
</div>
|
|
2290
|
-
|
|
2291
|
-
</div>
|
|
2292
|
-
|
|
2293
|
-
|
|
2294
|
-
|
|
2295
|
-
<div class="doc doc-object doc-function">
|
|
2296
|
-
|
|
2297
|
-
|
|
2298
|
-
|
|
2299
|
-
<h2 id="ciocore.api_client.request_instance_types" class="doc doc-heading">
|
|
2300
|
-
<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>
|
|
2301
|
-
|
|
2302
|
-
|
|
2303
|
-
</h2>
|
|
2304
|
-
|
|
2305
|
-
<div class="doc doc-contents ">
|
|
2306
|
-
|
|
2307
|
-
<p>Get the list of available instances types.</p>
|
|
2308
|
-
|
|
2309
|
-
<p><strong>Parameters:</strong></p>
|
|
2310
|
-
<table>
|
|
2311
|
-
<thead>
|
|
2312
|
-
<tr>
|
|
2313
|
-
<th>Name</th>
|
|
2314
|
-
<th>Type</th>
|
|
2315
|
-
<th>Description</th>
|
|
2316
|
-
<th>Default</th>
|
|
2317
|
-
</tr>
|
|
2318
|
-
</thead>
|
|
2319
|
-
<tbody>
|
|
2320
|
-
<tr>
|
|
2321
|
-
<td><code>as_dict</code></td>
|
|
2322
|
-
<td><code>bool</code></td>
|
|
2323
|
-
<td><p>Whether or not to return the instance types as a dictionary.</p></td>
|
|
2324
|
-
<td><code>False</code></td>
|
|
2325
|
-
</tr>
|
|
2326
|
-
</tbody>
|
|
2327
|
-
</table>
|
|
2328
|
-
<p><strong>Returns:</strong></p>
|
|
2329
|
-
<table>
|
|
2330
|
-
<thead>
|
|
2331
|
-
<tr>
|
|
2332
|
-
<th>Type</th>
|
|
2333
|
-
<th>Description</th>
|
|
2334
|
-
</tr>
|
|
2335
|
-
</thead>
|
|
2336
|
-
<tbody>
|
|
2337
|
-
<tr>
|
|
2338
|
-
<td><code>list</code></td>
|
|
2339
|
-
<td><p>The list of instance types.</p></td>
|
|
2340
|
-
</tr>
|
|
2341
|
-
</tbody>
|
|
2342
|
-
</table>
|
|
2343
|
-
<details class="quote">
|
|
2344
|
-
<summary>Source code in <code>ciocore/api_client.py</code></summary>
|
|
2345
|
-
<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>
|
|
2346
|
-
<span class="w"> </span><span class="sd">"""</span>
|
|
2347
|
-
<span class="sd"> Get the list of available instances types.</span>
|
|
2348
|
-
|
|
2349
|
-
<span class="sd"> Args:</span>
|
|
2350
|
-
<span class="sd"> as_dict (bool): Whether or not to return the instance types as a dictionary.</span>
|
|
2351
|
-
|
|
2352
|
-
<span class="sd"> Returns:</span>
|
|
2353
|
-
<span class="sd"> list: The list of instance types.</span>
|
|
2354
|
-
<span class="sd"> """</span>
|
|
2355
|
-
<span class="n">api</span> <span class="o">=</span> <span class="n">ApiClient</span><span class="p">()</span>
|
|
2356
|
-
<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>
|
|
2357
|
-
<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>
|
|
2358
|
-
<span class="p">)</span>
|
|
2359
|
-
<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>
|
|
2360
|
-
<span class="n">msg</span> <span class="o">=</span> <span class="s2">"Failed to get instance types"</span>
|
|
2361
|
-
<span class="n">msg</span> <span class="o">+=</span> <span class="s2">"</span><span class="se">\n</span><span class="s2">Error </span><span class="si">%s</span><span class="s2"> ...</span><span class="se">\n</span><span class="si">%s</span><span class="s2">"</span> <span class="o">%</span> <span class="p">(</span><span class="n">response_code</span><span class="p">,</span> <span class="n">response</span><span class="p">)</span>
|
|
2362
|
-
<span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="n">msg</span><span class="p">)</span>
|
|
2363
|
-
|
|
2364
|
-
<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>
|
|
2365
|
-
<span class="n">logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s2">"Found available instance types: </span><span class="si">%s</span><span class="s2">"</span><span class="p">,</span> <span class="n">instance_types</span><span class="p">)</span>
|
|
2366
|
-
|
|
2367
|
-
<span class="k">if</span> <span class="n">as_dict</span><span class="p">:</span>
|
|
2368
|
-
<span class="k">return</span> <span class="nb">dict</span><span class="p">(</span>
|
|
2369
|
-
<span class="p">[(</span><span class="n">instance</span><span class="p">[</span><span class="s2">"description"</span><span class="p">],</span> <span class="n">instance</span><span class="p">)</span> <span class="k">for</span> <span class="n">instance</span> <span class="ow">in</span> <span class="n">instance_types</span><span class="p">]</span>
|
|
2370
|
-
<span class="p">)</span>
|
|
2371
|
-
<span class="k">return</span> <span class="n">instance_types</span>
|
|
2372
|
-
</code></pre></div>
|
|
2373
|
-
</details>
|
|
2374
|
-
</div>
|
|
2375
|
-
|
|
2376
|
-
</div>
|
|
2377
|
-
|
|
2378
|
-
|
|
2379
|
-
|
|
2380
|
-
<div class="doc doc-object doc-function">
|
|
2381
|
-
|
|
2382
|
-
|
|
2383
|
-
|
|
2384
|
-
<h2 id="ciocore.api_client.request_projects" class="doc doc-heading">
|
|
2385
|
-
<code class="highlight language-python"><span class="n">request_projects</span><span class="p">(</span><span class="n">statuses</span><span class="o">=</span><span class="p">(</span><span class="s1">'active'</span><span class="p">,))</span></code>
|
|
2386
|
-
|
|
2387
|
-
|
|
2388
|
-
</h2>
|
|
2389
|
-
|
|
2390
|
-
<div class="doc doc-contents ">
|
|
2391
|
-
|
|
2392
|
-
<p>Query Conductor for all client Projects that are in the given status(es).</p>
|
|
2393
|
-
|
|
2394
|
-
<p><strong>Parameters:</strong></p>
|
|
2395
|
-
<table>
|
|
2396
|
-
<thead>
|
|
2397
|
-
<tr>
|
|
2398
|
-
<th>Name</th>
|
|
2399
|
-
<th>Type</th>
|
|
2400
|
-
<th>Description</th>
|
|
2401
|
-
<th>Default</th>
|
|
2402
|
-
</tr>
|
|
2403
|
-
</thead>
|
|
2404
|
-
<tbody>
|
|
2405
|
-
<tr>
|
|
2406
|
-
<td><code>statuses</code></td>
|
|
2407
|
-
<td><code>tuple</code></td>
|
|
2408
|
-
<td><p>The statuses to filter for.</p></td>
|
|
2409
|
-
<td><code>('active',)</code></td>
|
|
2410
|
-
</tr>
|
|
2411
|
-
</tbody>
|
|
2412
|
-
</table>
|
|
2413
|
-
<p><strong>Returns:</strong></p>
|
|
2414
|
-
<table>
|
|
2415
|
-
<thead>
|
|
2416
|
-
<tr>
|
|
2417
|
-
<th>Type</th>
|
|
2418
|
-
<th>Description</th>
|
|
2419
|
-
</tr>
|
|
2420
|
-
</thead>
|
|
2421
|
-
<tbody>
|
|
2422
|
-
<tr>
|
|
2423
|
-
<td><code>list</code></td>
|
|
2424
|
-
<td><p>The list of project names.</p></td>
|
|
2425
|
-
</tr>
|
|
2426
|
-
</tbody>
|
|
2427
|
-
</table>
|
|
2428
|
-
<details class="quote">
|
|
2429
|
-
<summary>Source code in <code>ciocore/api_client.py</code></summary>
|
|
2430
|
-
<div class="highlight"><pre><span></span><code><span class="k">def</span> <span class="nf">request_projects</span><span class="p">(</span><span class="n">statuses</span><span class="o">=</span><span class="p">(</span><span class="s2">"active"</span><span class="p">,)):</span>
|
|
2431
|
-
<span class="w"> </span><span class="sd">"""</span>
|
|
2432
|
-
<span class="sd"> Query Conductor for all client Projects that are in the given status(es).</span>
|
|
2433
|
-
|
|
2434
|
-
<span class="sd"> Args:</span>
|
|
2435
|
-
<span class="sd"> statuses (tuple): The statuses to filter for.</span>
|
|
2436
|
-
|
|
2437
|
-
<span class="sd"> Returns:</span>
|
|
2438
|
-
<span class="sd"> list: The list of project names.</span>
|
|
2439
|
-
<span class="sd"> """</span>
|
|
2440
|
-
<span class="n">api</span> <span class="o">=</span> <span class="n">ApiClient</span><span class="p">()</span>
|
|
2441
|
-
|
|
2442
|
-
<span class="n">logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s2">"statuses: </span><span class="si">%s</span><span class="s2">"</span><span class="p">,</span> <span class="n">statuses</span><span class="p">)</span>
|
|
2443
|
-
|
|
2444
|
-
<span class="n">uri</span> <span class="o">=</span> <span class="s2">"api/v1/projects/"</span>
|
|
2445
|
-
|
|
2446
|
-
<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>
|
|
2447
|
-
<span class="n">uri_path</span><span class="o">=</span><span class="n">uri</span><span class="p">,</span> <span class="n">verb</span><span class="o">=</span><span class="s2">"GET"</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> <span class="n">use_api_key</span><span class="o">=</span><span class="kc">True</span>
|
|
2448
|
-
<span class="p">)</span>
|
|
2449
|
-
<span class="n">logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s2">"response: </span><span class="si">%s</span><span class="s2">"</span><span class="p">,</span> <span class="n">response</span><span class="p">)</span>
|
|
2450
|
-
<span class="n">logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s2">"response: </span><span class="si">%s</span><span class="s2">"</span><span class="p">,</span> <span class="n">response_code</span><span class="p">)</span>
|
|
2451
|
-
<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>
|
|
2452
|
-
<span class="n">msg</span> <span class="o">=</span> <span class="s2">"Failed to get available projects from Conductor"</span>
|
|
2453
|
-
<span class="n">msg</span> <span class="o">+=</span> <span class="s2">"</span><span class="se">\n</span><span class="s2">Error </span><span class="si">%s</span><span class="s2"> ...</span><span class="se">\n</span><span class="si">%s</span><span class="s2">"</span> <span class="o">%</span> <span class="p">(</span><span class="n">response_code</span><span class="p">,</span> <span class="n">response</span><span class="p">)</span>
|
|
2454
|
-
<span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="n">msg</span><span class="p">)</span>
|
|
2455
|
-
<span class="n">projects</span> <span class="o">=</span> <span class="p">[]</span>
|
|
2456
|
-
|
|
2457
|
-
<span class="c1"># Filter for only projects of the proper status</span>
|
|
2458
|
-
<span class="k">for</span> <span class="n">project</span> <span class="ow">in</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="ow">or</span> <span class="p">[]:</span>
|
|
2459
|
-
<span class="k">if</span> <span class="ow">not</span> <span class="n">statuses</span> <span class="ow">or</span> <span class="n">project</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"status"</span><span class="p">)</span> <span class="ow">in</span> <span class="n">statuses</span><span class="p">:</span>
|
|
2460
|
-
<span class="n">projects</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">project</span><span class="p">[</span><span class="s2">"name"</span><span class="p">])</span>
|
|
2461
|
-
<span class="k">return</span> <span class="n">projects</span>
|
|
2462
|
-
</code></pre></div>
|
|
2463
|
-
</details>
|
|
2464
|
-
</div>
|
|
2465
|
-
|
|
2466
|
-
</div>
|
|
2467
|
-
|
|
2468
|
-
|
|
2469
|
-
|
|
2470
|
-
<div class="doc doc-object doc-function">
|
|
2471
|
-
|
|
2472
|
-
|
|
2473
|
-
|
|
2474
|
-
<h2 id="ciocore.api_client.request_software_packages" class="doc doc-heading">
|
|
2475
|
-
<code class="highlight language-python"><span class="n">request_software_packages</span><span class="p">()</span></code>
|
|
2476
|
-
|
|
2477
|
-
|
|
2478
|
-
</h2>
|
|
2479
|
-
|
|
2480
|
-
<div class="doc doc-contents ">
|
|
2481
|
-
|
|
2482
|
-
<p>Query Conductor for all software packages for the currently available sidecar.</p>
|
|
2483
|
-
|
|
2484
|
-
<p><strong>Returns:</strong></p>
|
|
2485
|
-
<table>
|
|
2486
|
-
<thead>
|
|
2487
|
-
<tr>
|
|
2488
|
-
<th>Type</th>
|
|
2489
|
-
<th>Description</th>
|
|
2490
|
-
</tr>
|
|
2491
|
-
</thead>
|
|
2492
|
-
<tbody>
|
|
2493
|
-
<tr>
|
|
2494
|
-
<td><code>list</code></td>
|
|
2495
|
-
<td><p>The list of software packages.</p></td>
|
|
2496
|
-
</tr>
|
|
2497
|
-
</tbody>
|
|
2498
|
-
</table>
|
|
2499
|
-
<details class="quote">
|
|
2500
|
-
<summary>Source code in <code>ciocore/api_client.py</code></summary>
|
|
2501
|
-
<div class="highlight"><pre><span></span><code><span class="k">def</span> <span class="nf">request_software_packages</span><span class="p">():</span>
|
|
2502
|
-
<span class="w"> </span><span class="sd">"""</span>
|
|
2503
|
-
<span class="sd"> Query Conductor for all software packages for the currently available sidecar.</span>
|
|
2504
|
-
|
|
2505
|
-
<span class="sd"> Returns:</span>
|
|
2506
|
-
<span class="sd"> list: The list of software packages.</span>
|
|
2507
|
-
<span class="sd"> """</span>
|
|
2508
|
-
<span class="n">api</span> <span class="o">=</span> <span class="n">ApiClient</span><span class="p">()</span>
|
|
2509
|
-
|
|
2510
|
-
<span class="n">uri</span> <span class="o">=</span> <span class="s2">"api/v1/ee/packages?all=true,"</span>
|
|
2511
|
-
<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>
|
|
2512
|
-
<span class="n">uri_path</span><span class="o">=</span><span class="n">uri</span><span class="p">,</span> <span class="n">verb</span><span class="o">=</span><span class="s2">"GET"</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> <span class="n">use_api_key</span><span class="o">=</span><span class="kc">True</span>
|
|
2513
|
-
<span class="p">)</span>
|
|
2514
|
-
|
|
2515
|
-
<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>
|
|
2516
|
-
<span class="n">msg</span> <span class="o">=</span> <span class="s2">"Failed to get software packages for latest sidecar"</span>
|
|
2517
|
-
<span class="n">msg</span> <span class="o">+=</span> <span class="s2">"</span><span class="se">\n</span><span class="s2">Error </span><span class="si">%s</span><span class="s2"> ...</span><span class="se">\n</span><span class="si">%s</span><span class="s2">"</span> <span class="o">%</span> <span class="p">(</span><span class="n">response_code</span><span class="p">,</span> <span class="n">response</span><span class="p">)</span>
|
|
2518
|
-
<span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="n">msg</span><span class="p">)</span>
|
|
2519
|
-
<span class="k">return</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>
|
|
2520
|
-
</code></pre></div>
|
|
2521
|
-
</details>
|
|
2522
|
-
</div>
|
|
2523
|
-
|
|
2524
|
-
</div>
|
|
2525
|
-
|
|
2526
|
-
|
|
2527
|
-
|
|
2528
|
-
|
|
2529
|
-
|
|
2530
|
-
|
|
2531
|
-
</div>
|
|
2532
|
-
|
|
2533
|
-
</div>
|
|
2534
|
-
|
|
2535
|
-
</div>
|
|
2536
|
-
|
|
2537
|
-
|
|
2538
|
-
|
|
2539
|
-
|
|
2540
|
-
|
|
2541
|
-
|
|
2542
|
-
</article>
|
|
2543
|
-
</div>
|
|
2544
|
-
|
|
2545
|
-
|
|
2546
|
-
</div>
|
|
2547
|
-
|
|
2548
|
-
<button type="button" class="md-top md-icon" data-md-component="top" hidden>
|
|
2549
|
-
|
|
2550
|
-
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8v12Z"/></svg>
|
|
2551
|
-
Back to top
|
|
2552
|
-
</button>
|
|
2553
|
-
|
|
2554
|
-
</main>
|
|
2555
|
-
|
|
2556
|
-
<footer class="md-footer">
|
|
2557
|
-
|
|
2558
|
-
<div class="md-footer-meta md-typeset">
|
|
2559
|
-
<div class="md-footer-meta__inner md-grid">
|
|
2560
|
-
<div class="md-copyright">
|
|
2561
|
-
|
|
2562
|
-
<div class="md-copyright__highlight">
|
|
2563
|
-
Copyright © 2023, CoreWeave.
|
|
2564
|
-
</div>
|
|
2565
|
-
|
|
2566
|
-
|
|
2567
|
-
Made with
|
|
2568
|
-
<a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
|
|
2569
|
-
Material for MkDocs
|
|
2570
|
-
</a>
|
|
2571
|
-
|
|
2572
|
-
</div>
|
|
2573
|
-
|
|
2574
|
-
</div>
|
|
2575
|
-
</div>
|
|
2576
|
-
</footer>
|
|
2577
|
-
|
|
2578
|
-
</div>
|
|
2579
|
-
<div class="md-dialog" data-md-component="dialog">
|
|
2580
|
-
<div class="md-dialog__inner md-typeset"></div>
|
|
2581
|
-
</div>
|
|
2582
|
-
|
|
2583
|
-
<script id="__config" type="application/json">{"base": "../..", "features": ["navigation.expand", "navigation.instant", "navigation.tabs", "navigation.tabs.sticky", "navigation.tracking", "navigation.top"], "search": "../../assets/javascripts/workers/search.dfff1995.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}}</script>
|
|
2584
|
-
|
|
2585
|
-
|
|
2586
|
-
<script src="../../assets/javascripts/bundle.4e31edb1.min.js"></script>
|
|
2587
|
-
|
|
2588
|
-
|
|
2589
|
-
</body>
|
|
2590
|
-
</html>
|