ciocore 8.0.1__py2.py3-none-any.whl → 8.1.0b3__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.

@@ -653,6 +653,13 @@
653
653
  account_name_from_jwt()
654
654
  </a>
655
655
 
656
+ </li>
657
+
658
+ <li class="md-nav__item">
659
+ <a href="#ciocore.api_client.get_account_data" class="md-nav__link">
660
+ get_account_data()
661
+ </a>
662
+
656
663
  </li>
657
664
 
658
665
  <li class="md-nav__item">
@@ -709,6 +716,20 @@
709
716
  kill_tasks()
710
717
  </a>
711
718
 
719
+ </li>
720
+
721
+ <li class="md-nav__item">
722
+ <a href="#ciocore.api_client.get_compute_usage" class="md-nav__link">
723
+ get_compute_usage()
724
+ </a>
725
+
726
+ </li>
727
+
728
+ <li class="md-nav__item">
729
+ <a href="#ciocore.api_client.get_storage_usage" class="md-nav__link">
730
+ get_storage_usage()
731
+ </a>
732
+
712
733
  </li>
713
734
 
714
735
  </ul>
@@ -967,6 +988,13 @@
967
988
  account_name_from_jwt()
968
989
  </a>
969
990
 
991
+ </li>
992
+
993
+ <li class="md-nav__item">
994
+ <a href="#ciocore.api_client.get_account_data" class="md-nav__link">
995
+ get_account_data()
996
+ </a>
997
+
970
998
  </li>
971
999
 
972
1000
  <li class="md-nav__item">
@@ -1023,6 +1051,20 @@
1023
1051
  kill_tasks()
1024
1052
  </a>
1025
1053
 
1054
+ </li>
1055
+
1056
+ <li class="md-nav__item">
1057
+ <a href="#ciocore.api_client.get_compute_usage" class="md-nav__link">
1058
+ get_compute_usage()
1059
+ </a>
1060
+
1061
+ </li>
1062
+
1063
+ <li class="md-nav__item">
1064
+ <a href="#ciocore.api_client.get_storage_usage" class="md-nav__link">
1065
+ get_storage_usage()
1066
+ </a>
1067
+
1026
1068
  </li>
1027
1069
 
1028
1070
  </ul>
@@ -2364,6 +2406,67 @@ prompt the user to log in. </p>
2364
2406
 
2365
2407
 
2366
2408
 
2409
+ <h2 id="ciocore.api_client.get_account_data" class="doc doc-heading">
2410
+ <code class="highlight language-python"><span class="n">get_account_data</span><span class="p">()</span></code>
2411
+
2412
+
2413
+ </h2>
2414
+
2415
+ <div class="doc doc-contents ">
2416
+
2417
+ <p>Get the authenticated account's data.</p>
2418
+
2419
+ <p><strong>Returns:</strong></p>
2420
+ <table>
2421
+ <thead>
2422
+ <tr>
2423
+ <th>Type</th>
2424
+ <th>Description</th>
2425
+ </tr>
2426
+ </thead>
2427
+ <tbody>
2428
+ <tr>
2429
+ <td><code>dict</code></td>
2430
+ <td><p>The account data.</p></td>
2431
+ </tr>
2432
+ </tbody>
2433
+ </table>
2434
+ <details class="quote">
2435
+ <summary>Source code in <code>ciocore/api_client.py</code></summary>
2436
+ <div class="highlight"><pre><span></span><code><span class="k">def</span> <span class="nf">get_account_data</span><span class="p">():</span>
2437
+ <span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
2438
+ <span class="sd"> Get the authenticated account&#39;s data.</span>
2439
+
2440
+ <span class="sd"> Returns:</span>
2441
+ <span class="sd"> dict: The account data.</span>
2442
+ <span class="sd"> &quot;&quot;&quot;</span>
2443
+ <span class="n">token</span> <span class="o">=</span> <span class="n">read_conductor_credentials</span><span class="p">(</span><span class="kc">True</span><span class="p">)</span>
2444
+ <span class="k">if</span> <span class="ow">not</span> <span class="n">token</span><span class="p">:</span>
2445
+ <span class="k">return</span> <span class="kc">None</span>
2446
+
2447
+ <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>
2448
+ <span class="k">return</span> <span class="p">{</span>
2449
+ <span class="s2">&quot;email&quot;</span><span class="p">:</span> <span class="n">payload</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;email&quot;</span><span class="p">),</span>
2450
+ <span class="s2">&quot;domain&quot;</span><span class="p">:</span> <span class="s2">&quot;.&quot;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">payload</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;aud&quot;</span><span class="p">)</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">&quot;.&quot;</span><span class="p">)[</span><span class="mi">1</span><span class="p">:]),</span>
2451
+ <span class="s2">&quot;account_id&quot;</span> <span class="p">:</span> <span class="n">payload</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;account&quot;</span><span class="p">),</span>
2452
+ <span class="s2">&quot;user_id&quot;</span> <span class="p">:</span> <span class="n">payload</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;id&quot;</span><span class="p">),</span>
2453
+ <span class="s2">&quot;role&quot;</span><span class="p">:</span> <span class="n">payload</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;role&quot;</span><span class="p">),</span>
2454
+ <span class="s2">&quot;issued&quot;</span><span class="p">:</span> <span class="n">datetime</span><span class="o">.</span><span class="n">datetime</span><span class="o">.</span><span class="n">fromtimestamp</span><span class="p">(</span><span class="n">payload</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;iat&quot;</span><span class="p">)),</span>
2455
+ <span class="s2">&quot;expiry&quot;</span><span class="p">:</span> <span class="n">datetime</span><span class="o">.</span><span class="n">datetime</span><span class="o">.</span><span class="n">fromtimestamp</span><span class="p">(</span><span class="n">payload</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;exp&quot;</span><span class="p">)),</span>
2456
+ <span class="s2">&quot;token&quot;</span><span class="p">:</span> <span class="n">token</span><span class="p">,</span>
2457
+ <span class="p">}</span>
2458
+ </code></pre></div>
2459
+ </details>
2460
+ </div>
2461
+
2462
+ </div>
2463
+
2464
+
2465
+
2466
+ <div class="doc doc-object doc-function">
2467
+
2468
+
2469
+
2367
2470
  <h2 id="ciocore.api_client.request_instance_types" class="doc doc-heading">
2368
2471
  <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>
2369
2472
 
@@ -3138,6 +3241,244 @@ prompt the user to log in. </p>
3138
3241
 
3139
3242
 
3140
3243
 
3244
+ <div class="doc doc-object doc-function">
3245
+
3246
+
3247
+
3248
+ <h2 id="ciocore.api_client.get_compute_usage" class="doc doc-heading">
3249
+ <code class="highlight language-python"><span class="n">get_compute_usage</span><span class="p">(</span><span class="n">start_time</span><span class="p">,</span> <span class="n">end_time</span><span class="p">)</span></code>
3250
+
3251
+
3252
+ </h2>
3253
+
3254
+ <div class="doc doc-contents ">
3255
+
3256
+ <p>Query the compute usage for an account.</p>
3257
+ <p>Compute includes licenses, instances and Conductor cost. Everything involved
3258
+ with running a job. </p>
3259
+
3260
+ <p><strong>Parameters:</strong></p>
3261
+ <table>
3262
+ <thead>
3263
+ <tr>
3264
+ <th>Name</th>
3265
+ <th>Type</th>
3266
+ <th>Description</th>
3267
+ <th>Default</th>
3268
+ </tr>
3269
+ </thead>
3270
+ <tbody>
3271
+ <tr>
3272
+ <td><code>start_time</code></td>
3273
+ <td><code>datetime.datetime</code></td>
3274
+ <td><p>The first day to include in the report. Only the date is considered and it's assumed to be in UTC.</p></td>
3275
+ <td><em>required</em></td>
3276
+ </tr>
3277
+ <tr>
3278
+ <td><code>end_time</code></td>
3279
+ <td><code>datetime.datetime</code></td>
3280
+ <td><p>The last day to include in the report. Only the date is considered and it's assumed to be in UTC.</p></td>
3281
+ <td><em>required</em></td>
3282
+ </tr>
3283
+ </tbody>
3284
+ </table>
3285
+ <p><strong>Returns:</strong></p>
3286
+ <table>
3287
+ <thead>
3288
+ <tr>
3289
+ <th>Type</th>
3290
+ <th>Description</th>
3291
+ </tr>
3292
+ </thead>
3293
+ <tbody>
3294
+ <tr>
3295
+ <td><code>dict</code></td>
3296
+ <td><p>Each key is a date (UTC). The value is a dict with values for:
3297
+ - cost: The total accumulated compute cost for the day
3298
+ - corehours: The total accumulated core hours for the day
3299
+ - walltime: The number of minutes that instances (regardless of type) were running</p></td>
3300
+ </tr>
3301
+ </tbody>
3302
+ </table>
3303
+ <p><strong>Examples:</strong></p>
3304
+ <div class="highlight"><pre><span></span><code><span class="o">&gt;&gt;&gt;</span> <span class="kn">from</span> <span class="nn">ciocore</span> <span class="kn">import</span> <span class="n">api_client</span>
3305
+ <span class="o">&gt;&gt;&gt;</span> <span class="n">api_client</span><span class="o">.</span><span class="n">get_compute_usage</span><span class="p">(</span><span class="n">start_time</span><span class="p">,</span> <span class="n">end_time</span><span class="p">)</span>
3306
+ <span class="p">{</span> <span class="s1">&#39;2024-01-09&#39;</span><span class="p">:</span> <span class="p">{</span> <span class="s1">&#39;cost&#39;</span><span class="p">:</span> <span class="mf">0.08</span><span class="p">,</span>
3307
+ <span class="s1">&#39;corehours&#39;</span><span class="p">:</span> <span class="mf">0.9</span><span class="p">,</span>
3308
+ <span class="s1">&#39;walltime&#39;</span><span class="p">:</span> <span class="mf">13.93</span><span class="p">},</span>
3309
+ <span class="s1">&#39;2024-01-16&#39;</span><span class="p">:</span> <span class="p">{</span> <span class="s1">&#39;cost&#39;</span><span class="p">:</span> <span class="mf">0.12</span><span class="p">,</span>
3310
+ <span class="s1">&#39;corehours&#39;</span><span class="p">:</span> <span class="mf">0.9613</span><span class="p">,</span>
3311
+ <span class="s1">&#39;walltime&#39;</span><span class="p">:</span> <span class="mf">7.21</span><span class="p">}}</span>
3312
+ </code></pre></div>
3313
+
3314
+ <details class="quote">
3315
+ <summary>Source code in <code>ciocore/api_client.py</code></summary>
3316
+ <div class="highlight"><pre><span></span><code><span class="k">def</span> <span class="nf">get_compute_usage</span><span class="p">(</span><span class="n">start_time</span><span class="p">,</span> <span class="n">end_time</span><span class="p">):</span>
3317
+ <span class="w"> </span><span class="sd">&#39;&#39;&#39;</span>
3318
+ <span class="sd"> Query the compute usage for an account.</span>
3319
+
3320
+ <span class="sd"> Compute includes licenses, instances and Conductor cost. Everything involved</span>
3321
+ <span class="sd"> with running a job. </span>
3322
+
3323
+ <span class="sd"> Args:</span>
3324
+ <span class="sd"> start_time (datetime.datetime): The first day to include in the report. Only the date is considered and it&#39;s assumed to be in UTC.</span>
3325
+ <span class="sd"> end_time (datetime.datetime): The last day to include in the report. Only the date is considered and it&#39;s assumed to be in UTC.</span>
3326
+
3327
+ <span class="sd"> Returns:</span>
3328
+ <span class="sd"> dict: Each key is a date (UTC). The value is a dict with values for:</span>
3329
+ <span class="sd"> - cost: The total accumulated compute cost for the day</span>
3330
+ <span class="sd"> - corehours: The total accumulated core hours for the day</span>
3331
+ <span class="sd"> - walltime: The number of minutes that instances (regardless of type) were running</span>
3332
+
3333
+ <span class="sd"> Examples:</span>
3334
+ <span class="sd"> &gt;&gt;&gt; from ciocore import api_client</span>
3335
+ <span class="sd"> &gt;&gt;&gt; api_client.get_compute_usage(start_time, end_time)</span>
3336
+ <span class="sd"> { &#39;2024-01-09&#39;: { &#39;cost&#39;: 0.08,</span>
3337
+ <span class="sd"> &#39;corehours&#39;: 0.9, </span>
3338
+ <span class="sd"> &#39;walltime&#39;: 13.93},</span>
3339
+ <span class="sd"> &#39;2024-01-16&#39;: { &#39;cost&#39;: 0.12,</span>
3340
+ <span class="sd"> &#39;corehours&#39;: 0.9613, </span>
3341
+ <span class="sd"> &#39;walltime&#39;: 7.21}}</span>
3342
+ <span class="sd"> &#39;&#39;&#39;</span>
3343
+ <span class="n">date_format</span> <span class="o">=</span> <span class="s2">&quot;</span><span class="si">%a</span><span class="s2">, </span><span class="si">%d</span><span class="s2"> %b %Y %H:%M:%S %Z&quot;</span>
3344
+ <span class="n">data</span> <span class="o">=</span> <span class="n">_get_compute_usage</span><span class="p">(</span><span class="n">start_time</span><span class="p">,</span> <span class="n">end_time</span><span class="p">)</span>
3345
+
3346
+ <span class="c1"># Create a nested default dictionary with initial float values of 0.0</span>
3347
+ <span class="n">results</span> <span class="o">=</span> <span class="n">collections</span><span class="o">.</span><span class="n">defaultdict</span><span class="p">(</span><span class="k">lambda</span><span class="p">:</span> <span class="n">collections</span><span class="o">.</span><span class="n">defaultdict</span><span class="p">(</span><span class="nb">float</span><span class="p">))</span>
3348
+
3349
+ <span class="k">for</span> <span class="n">entry</span> <span class="ow">in</span> <span class="n">data</span><span class="p">:</span>
3350
+ <span class="n">entry_start_date</span> <span class="o">=</span> <span class="n">datetime</span><span class="o">.</span><span class="n">datetime</span><span class="o">.</span><span class="n">strptime</span><span class="p">(</span><span class="n">entry</span><span class="p">[</span><span class="s1">&#39;start_time&#39;</span><span class="p">],</span> <span class="n">date_format</span><span class="p">)</span><span class="o">.</span><span class="n">date</span><span class="p">()</span><span class="o">.</span><span class="n">isoformat</span><span class="p">()</span>
3351
+
3352
+ <span class="n">results</span><span class="p">[</span><span class="n">entry_start_date</span><span class="p">][</span><span class="s1">&#39;walltime&#39;</span><span class="p">]</span> <span class="o">+=</span> <span class="n">entry</span><span class="p">[</span><span class="s1">&#39;minutes&#39;</span><span class="p">]</span>
3353
+ <span class="n">results</span><span class="p">[</span><span class="n">entry_start_date</span><span class="p">][</span><span class="s1">&#39;corehours&#39;</span><span class="p">]</span> <span class="o">+=</span> <span class="n">entry</span><span class="p">[</span><span class="s1">&#39;cores&#39;</span><span class="p">]</span>
3354
+ <span class="n">results</span><span class="p">[</span><span class="n">entry_start_date</span><span class="p">][</span><span class="s1">&#39;cost&#39;</span><span class="p">]</span> <span class="o">+=</span> <span class="n">entry</span><span class="p">[</span><span class="s1">&#39;license_cost&#39;</span><span class="p">]</span> <span class="o">+</span> <span class="n">entry</span><span class="p">[</span><span class="s1">&#39;instance_cost&#39;</span><span class="p">]</span>
3355
+
3356
+ <span class="c1"># Round the data to avoid FP errors</span>
3357
+ <span class="n">results</span><span class="p">[</span><span class="n">entry_start_date</span><span class="p">][</span><span class="s1">&#39;walltime&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="nb">round</span><span class="p">(</span><span class="n">results</span><span class="p">[</span><span class="n">entry_start_date</span><span class="p">][</span><span class="s1">&#39;walltime&#39;</span><span class="p">],</span> <span class="mi">4</span><span class="p">)</span>
3358
+ <span class="n">results</span><span class="p">[</span><span class="n">entry_start_date</span><span class="p">][</span><span class="s1">&#39;corehours&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="nb">round</span><span class="p">(</span><span class="n">results</span><span class="p">[</span><span class="n">entry_start_date</span><span class="p">][</span><span class="s1">&#39;corehours&#39;</span><span class="p">],</span> <span class="mi">4</span><span class="p">)</span>
3359
+ <span class="n">results</span><span class="p">[</span><span class="n">entry_start_date</span><span class="p">][</span><span class="s1">&#39;cost&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="nb">round</span><span class="p">(</span><span class="n">results</span><span class="p">[</span><span class="n">entry_start_date</span><span class="p">][</span><span class="s1">&#39;cost&#39;</span><span class="p">],</span> <span class="mi">4</span><span class="p">)</span>
3360
+
3361
+ <span class="k">return</span> <span class="n">results</span>
3362
+ </code></pre></div>
3363
+ </details>
3364
+ </div>
3365
+
3366
+ </div>
3367
+
3368
+
3369
+
3370
+ <div class="doc doc-object doc-function">
3371
+
3372
+
3373
+
3374
+ <h2 id="ciocore.api_client.get_storage_usage" class="doc doc-heading">
3375
+ <code class="highlight language-python"><span class="n">get_storage_usage</span><span class="p">(</span><span class="n">start_time</span><span class="p">,</span> <span class="n">end_time</span><span class="p">)</span></code>
3376
+
3377
+
3378
+ </h2>
3379
+
3380
+ <div class="doc doc-contents ">
3381
+
3382
+ <p>Query the storage usage for an account.</p>
3383
+ <p>Storage is calculated twice a day (UTC) and the average is used.</p>
3384
+
3385
+ <p><strong>Parameters:</strong></p>
3386
+ <table>
3387
+ <thead>
3388
+ <tr>
3389
+ <th>Name</th>
3390
+ <th>Type</th>
3391
+ <th>Description</th>
3392
+ <th>Default</th>
3393
+ </tr>
3394
+ </thead>
3395
+ <tbody>
3396
+ <tr>
3397
+ <td><code>start_time</code></td>
3398
+ <td><code>datetime.datetime</code></td>
3399
+ <td><p>The first day to include in the report. Only the date is considered and it's assumed to be in UTC.</p></td>
3400
+ <td><em>required</em></td>
3401
+ </tr>
3402
+ <tr>
3403
+ <td><code>end_time</code></td>
3404
+ <td><code>datetime.datetime</code></td>
3405
+ <td><p>The last day to include in the report. Only the date is considered and it's assumed to be in UTC.</p></td>
3406
+ <td><em>required</em></td>
3407
+ </tr>
3408
+ </tbody>
3409
+ </table>
3410
+ <p><strong>Returns:</strong></p>
3411
+ <table>
3412
+ <thead>
3413
+ <tr>
3414
+ <th>Type</th>
3415
+ <th>Description</th>
3416
+ </tr>
3417
+ </thead>
3418
+ <tbody>
3419
+ <tr>
3420
+ <td><code>dict</code></td>
3421
+ <td><p>Each key is a date (UTC). The value is a dict with values for:
3422
+ - cost: The cost of accumulated storage for that one day
3423
+ - GiB: The total amount of storage used on that day</p></td>
3424
+ </tr>
3425
+ </tbody>
3426
+ </table>
3427
+ <p><strong>Examples:</strong></p>
3428
+ <div class="highlight"><pre><span></span><code><span class="o">&gt;&gt;&gt;</span> <span class="kn">from</span> <span class="nn">ciocore</span> <span class="kn">import</span> <span class="n">api_client</span>
3429
+ <span class="o">&gt;&gt;&gt;</span> <span class="n">api_client</span><span class="o">.</span><span class="n">get_storage_usage</span><span class="p">(</span><span class="n">start_time</span><span class="p">,</span> <span class="n">end_time</span><span class="p">)</span>
3430
+ <span class="p">{</span> <span class="s1">&#39;2024-01-01&#39;</span><span class="p">:</span> <span class="p">{</span><span class="s1">&#39;cost&#39;</span><span class="p">:</span> <span class="mf">4.022</span><span class="p">,</span> <span class="s1">&#39;GiB&#39;</span><span class="p">:</span> <span class="mf">679.714</span><span class="p">},</span>
3431
+ <span class="s1">&#39;2024-01-02&#39;</span><span class="p">:</span> <span class="p">{</span><span class="s1">&#39;cost&#39;</span><span class="p">:</span> <span class="mf">4.502</span><span class="p">,</span> <span class="s1">&#39;GiB&#39;</span><span class="p">:</span> <span class="mf">750.34</span><span class="p">},</span>
3432
+ <span class="s1">&#39;2024-01-03&#39;</span><span class="p">:</span> <span class="p">{</span><span class="s1">&#39;cost&#39;</span><span class="p">:</span> <span class="mf">4.502</span><span class="p">,</span> <span class="s1">&#39;GiB&#39;</span><span class="p">:</span> <span class="mf">750.34</span><span class="p">}}</span>
3433
+ </code></pre></div>
3434
+
3435
+ <details class="quote">
3436
+ <summary>Source code in <code>ciocore/api_client.py</code></summary>
3437
+ <div class="highlight"><pre><span></span><code><span class="k">def</span> <span class="nf">get_storage_usage</span><span class="p">(</span><span class="n">start_time</span><span class="p">,</span> <span class="n">end_time</span><span class="p">):</span>
3438
+ <span class="w"> </span><span class="sd">&#39;&#39;&#39;</span>
3439
+ <span class="sd"> Query the storage usage for an account.</span>
3440
+
3441
+ <span class="sd"> Storage is calculated twice a day (UTC) and the average is used.</span>
3442
+
3443
+ <span class="sd"> Args:</span>
3444
+ <span class="sd"> start_time (datetime.datetime): The first day to include in the report. Only the date is considered and it&#39;s assumed to be in UTC.</span>
3445
+ <span class="sd"> end_time (datetime.datetime): The last day to include in the report. Only the date is considered and it&#39;s assumed to be in UTC.</span>
3446
+
3447
+ <span class="sd"> Returns:</span>
3448
+ <span class="sd"> dict: Each key is a date (UTC). The value is a dict with values for:</span>
3449
+ <span class="sd"> - cost: The cost of accumulated storage for that one day</span>
3450
+ <span class="sd"> - GiB: The total amount of storage used on that day</span>
3451
+
3452
+ <span class="sd"> Examples:</span>
3453
+ <span class="sd"> &gt;&gt;&gt; from ciocore import api_client</span>
3454
+ <span class="sd"> &gt;&gt;&gt; api_client.get_storage_usage(start_time, end_time)</span>
3455
+ <span class="sd"> { &#39;2024-01-01&#39;: {&#39;cost&#39;: 4.022, &#39;GiB&#39;: 679.714},</span>
3456
+ <span class="sd"> &#39;2024-01-02&#39;: {&#39;cost&#39;: 4.502, &#39;GiB&#39;: 750.34},</span>
3457
+ <span class="sd"> &#39;2024-01-03&#39;: {&#39;cost&#39;: 4.502, &#39;GiB&#39;: 750.34}}</span>
3458
+ <span class="sd"> &#39;&#39;&#39;</span>
3459
+ <span class="n">one_day</span> <span class="o">=</span> <span class="n">datetime</span><span class="o">.</span><span class="n">timedelta</span><span class="p">(</span><span class="n">days</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span>
3460
+
3461
+ <span class="n">data</span> <span class="o">=</span> <span class="n">_get_storage_usage</span><span class="p">(</span><span class="n">start_time</span><span class="p">,</span> <span class="n">end_time</span><span class="p">)</span>
3462
+
3463
+ <span class="n">results</span> <span class="o">=</span> <span class="p">{}</span>
3464
+
3465
+ <span class="n">entry_date</span> <span class="o">=</span> <span class="n">datetime</span><span class="o">.</span><span class="n">date</span><span class="o">.</span><span class="n">fromisoformat</span><span class="p">(</span><span class="n">data</span><span class="p">[</span><span class="s1">&#39;start_date&#39;</span><span class="p">])</span>
3466
+
3467
+ <span class="k">for</span> <span class="n">cnt</span><span class="p">,</span> <span class="n">entry</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">data</span><span class="p">[</span><span class="s2">&quot;cost_per_day&quot;</span><span class="p">]):</span>
3468
+
3469
+ <span class="n">entry_start_date</span> <span class="o">=</span> <span class="n">entry_date</span><span class="o">.</span><span class="n">isoformat</span><span class="p">()</span>
3470
+ <span class="n">results</span><span class="p">[</span><span class="n">entry_start_date</span><span class="p">]</span> <span class="o">=</span> <span class="p">{</span><span class="s1">&#39;cost&#39;</span><span class="p">:</span> <span class="nb">float</span><span class="p">(</span><span class="n">entry</span><span class="p">),</span> <span class="s1">&#39;GiB&#39;</span><span class="p">:</span> <span class="nb">float</span><span class="p">(</span><span class="n">data</span><span class="p">[</span><span class="s1">&#39;gibs_per_day&#39;</span><span class="p">][</span><span class="n">cnt</span><span class="p">])}</span>
3471
+ <span class="n">entry_date</span> <span class="o">+=</span> <span class="n">one_day</span>
3472
+
3473
+ <span class="k">return</span> <span class="n">results</span>
3474
+ </code></pre></div>
3475
+ </details>
3476
+ </div>
3477
+
3478
+ </div>
3479
+
3480
+
3481
+
3141
3482
 
3142
3483
 
3143
3484
 
@@ -991,7 +991,7 @@
991
991
 
992
992
  <div class="doc doc-contents ">
993
993
 
994
- <p>Provide projects, instance types, and software package data.</p>
994
+ <p>Provide projects, instance types, software package, and account data.</p>
995
995
 
996
996
  <p><strong>Keyword arguments:</strong></p>
997
997
  <table>
@@ -1036,11 +1036,11 @@
1036
1036
  <tbody>
1037
1037
  <tr>
1038
1038
  <td><code>dict</code></td>
1039
- <td><p>Keys are <code>projects</code>, <code>instance_types</code>, <code>software</code>.</p></td>
1039
+ <td><p>Keys are <code>projects</code>, <code>instance_types</code>, <code>software</code>, <code>account</code>.</p></td>
1040
1040
  </tr>
1041
1041
  </tbody>
1042
1042
  </table> <p>When you access the data, if it has already been fetched, it will be returned. Otherwise,
1043
- requests will be made to fetch the data. You may need to authenticate in order to access the
1043
+ requests will be made to fetch fresh data. You may need to authenticate in order to access the
1044
1044
  data.</p>
1045
1045
  <p>The set of instance types and software can be pruned to match the available platforms
1046
1046
  represented by each other. For example, if the instance types come from an orchestrator that
@@ -1061,6 +1061,9 @@ available machines configurations.</p>
1061
1061
  <p><strong>software</strong> is a PackageTree object containing either all
1062
1062
  the software available at Conductor, or a subset based on specified products.</p>
1063
1063
  </li>
1064
+ <li>
1065
+ <p><strong>account</strong> is a dictionary containing account information gained from the JWT token.</p>
1066
+ </li>
1064
1067
  </ul>
1065
1068
 
1066
1069
  <p><strong>Examples:</strong></p>
@@ -1075,13 +1078,16 @@ the software available at Conductor, or a subset based on specified products.</p
1075
1078
  </code></pre></div>
1076
1079
  <div class="highlight"><pre><span></span><code><span class="o">&gt;&gt;&gt;</span> <span class="n">coredata</span><span class="o">.</span><span class="n">data</span><span class="p">()[</span><span class="s2">&quot;instance_types&quot;</span><span class="p">]</span>
1077
1080
  <span class="o">&lt;</span><span class="n">ciocore</span><span class="o">.</span><span class="n">hardware_set</span><span class="o">.</span><span class="n">HardwareSet</span> <span class="nb">object</span> <span class="n">at</span> <span class="mh">0x0000028941CD9DC0</span><span class="o">&gt;</span>
1081
+ </code></pre></div>
1082
+ <div class="highlight"><pre><span></span><code><span class="o">&gt;&gt;&gt;</span> <span class="n">coredata</span><span class="o">.</span><span class="n">data</span><span class="p">()[</span><span class="s2">&quot;account&quot;</span><span class="p">][</span><span class="s2">&quot;account_id&quot;</span><span class="p">]</span>
1083
+ <span class="mi">123456789012</span>
1078
1084
  </code></pre></div>
1079
1085
 
1080
1086
  <details class="quote">
1081
1087
  <summary>Source code in <code>ciocore/data.py</code></summary>
1082
1088
  <div class="highlight"><pre><span></span><code><span class="k">def</span> <span class="nf">data</span><span class="p">(</span><span class="n">force</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span>
1083
1089
  <span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
1084
- <span class="sd"> Provide projects, instance types, and software package data.</span>
1090
+ <span class="sd"> Provide projects, instance types, software package, and account data.</span>
1085
1091
 
1086
1092
  <span class="sd"> Keyword Args:</span>
1087
1093
  <span class="sd"> force: (bool) If `True`, then force the system to fetch fresh data -- Defaults to `False`.</span>
@@ -1090,10 +1096,10 @@ the software available at Conductor, or a subset based on specified products.</p
1090
1096
  <span class="sd"> ValueError: Module was not initialized with [init()](/data/#ciocore.data.init).</span>
1091
1097
 
1092
1098
  <span class="sd"> Returns:</span>
1093
- <span class="sd"> dict: Keys are `projects`, `instance_types`, `software`.</span>
1099
+ <span class="sd"> dict: Keys are `projects`, `instance_types`, `software`, `account`.</span>
1094
1100
 
1095
1101
  <span class="sd"> When you access the data, if it has already been fetched, it will be returned. Otherwise,</span>
1096
- <span class="sd"> requests will be made to fetch the data. You may need to authenticate in order to access the</span>
1102
+ <span class="sd"> requests will be made to fetch fresh data. You may need to authenticate in order to access the</span>
1097
1103
  <span class="sd"> data.</span>
1098
1104
 
1099
1105
  <span class="sd"> The set of instance types and software can be pruned to match the available platforms</span>
@@ -1113,6 +1119,7 @@ the software available at Conductor, or a subset based on specified products.</p
1113
1119
  <span class="sd"> * **software** is a PackageTree object containing either all</span>
1114
1120
  <span class="sd"> the software available at Conductor, or a subset based on specified products.</span>
1115
1121
 
1122
+ <span class="sd"> * **account** is a dictionary containing account information gained from the JWT token.</span>
1116
1123
 
1117
1124
  <span class="sd"> Examples:</span>
1118
1125
  <span class="sd"> &gt;&gt;&gt; from ciocore import data as coredata</span>
@@ -1126,6 +1133,10 @@ the software available at Conductor, or a subset based on specified products.</p
1126
1133
 
1127
1134
  <span class="sd"> &gt;&gt;&gt; coredata.data()[&quot;instance_types&quot;]</span>
1128
1135
  <span class="sd"> &lt;ciocore.hardware_set.HardwareSet object at 0x0000028941CD9DC0&gt;</span>
1136
+
1137
+ <span class="sd"> &gt;&gt;&gt; coredata.data()[&quot;account&quot;][&quot;account_id&quot;]</span>
1138
+ <span class="sd"> 123456789012</span>
1139
+
1129
1140
  <span class="sd"> &quot;&quot;&quot;</span>
1130
1141
 
1131
1142
  <span class="k">global</span> <span class="n">__data__</span>
@@ -1158,6 +1169,9 @@ the software available at Conductor, or a subset based on specified products.</p
1158
1169
  <span class="k">pass</span>
1159
1170
  <span class="n">__data__</span><span class="p">[</span><span class="s2">&quot;extra_environment&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">extra_env_vars</span>
1160
1171
 
1172
+ <span class="n">__data__</span><span class="p">[</span><span class="s2">&quot;account&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">api_client</span><span class="o">.</span><span class="n">get_account_data</span><span class="p">()</span>
1173
+
1174
+
1161
1175
  <span class="c1"># PLATFORMS</span>
1162
1176
  <span class="n">it_platforms</span> <span class="o">=</span> <span class="nb">set</span><span class="p">([</span><span class="n">it</span><span class="p">[</span><span class="s2">&quot;operating_system&quot;</span><span class="p">]</span> <span class="k">for</span> <span class="n">it</span> <span class="ow">in</span> <span class="n">instance_types</span><span class="p">])</span>
1163
1177
  <span class="n">valid_platforms</span> <span class="o">=</span> <span class="n">it_platforms</span><span class="o">.</span><span class="n">intersection</span><span class="p">(</span><span class="n">__platforms__</span><span class="p">)</span>
Binary file