Skip to content

Commit a68bd86

Browse files
Avantol13Avantol13-machine-userpaulineribeyre
authored
feat(cli): add initial CLI support for object manifests (#97)
* feat(cli): add initial CLI support for object manifests * Apply automatic documentation changes * Apply automatic documentation changes * feat(objects): add more options for click for manifests * Apply automatic documentation changes * Update gen3/tools/indexing/verify_manifest.py Co-authored-by: Pauline Ribeyre <[email protected]> * Apply automatic documentation changes * Apply automatic documentation changes * fix(jenkins): update to branch of jenkins lib to test fix * Apply automatic documentation changes * Update Jenkinsfile * feat(delete): add support for deleting GUIDs * Apply automatic documentation changes * fix(download_manifest): make download manifest deterministic, sort array-like columns * fix(python): use python3 * Apply automatic documentation changes * chore(deps): install fastavro * Apply automatic documentation changes * Update gen3/cli/objects.py Co-authored-by: Pauline Ribeyre <[email protected]> * Update gen3/cli/objects.py Co-authored-by: Pauline Ribeyre <[email protected]> * Apply automatic documentation changes * Update gen3/cli/objects.py Co-authored-by: Pauline Ribeyre <[email protected]> * Apply automatic documentation changes * fix(review): adjust based on review, cleanup logging, more performance parsing of GUID, remove unnecessary var * Apply automatic documentation changes * feat(objects): move delete guids out of CLI into SDK so it can be used by both * Apply automatic documentation changes Co-authored-by: Alexander VT <[email protected]> Co-authored-by: Pauline Ribeyre <[email protected]>
1 parent 0d3b914 commit a68bd86

22 files changed

+955
-516
lines changed
2.16 KB
Binary file not shown.
2.6 KB
Binary file not shown.
0 Bytes
Binary file not shown.

docs/_build/html/_modules/gen3/index.html

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -773,7 +773,8 @@ <h1>Source code for gen3.index</h1><div class="highlight"><pre>
773773

774774
<span class="sd"> &quot;&quot;&quot;</span>
775775
<span class="n">rec</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">client</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">guid</span><span class="p">)</span>
776-
<span class="n">rec</span><span class="o">.</span><span class="n">delete</span><span class="p">()</span>
776+
<span class="k">if</span> <span class="n">rec</span><span class="p">:</span>
777+
<span class="n">rec</span><span class="o">.</span><span class="n">delete</span><span class="p">()</span>
777778
<span class="k">return</span> <span class="n">rec</span></div>
778779

779780
<span class="c1">### Query Requests</span>

docs/_build/html/_modules/gen3/tools/indexing/download_manifest.html

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -325,12 +325,21 @@ <h1>Source code for gen3.tools.indexing.download_manifest</h1><div class="highli
325325
<span class="n">manifest_row</span> <span class="o">=</span> <span class="p">[</span>
326326
<span class="n">record</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;did&quot;</span><span class="p">),</span>
327327
<span class="s2">&quot; &quot;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span>
328-
<span class="p">[</span><span class="n">url</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s2">&quot; &quot;</span><span class="p">,</span> <span class="s2">&quot;%20&quot;</span><span class="p">)</span> <span class="k">for</span> <span class="n">url</span> <span class="ow">in</span> <span class="n">record</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;urls&quot;</span><span class="p">)]</span>
328+
<span class="nb">sorted</span><span class="p">(</span>
329+
<span class="p">[</span><span class="n">url</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s2">&quot; &quot;</span><span class="p">,</span> <span class="s2">&quot;%20&quot;</span><span class="p">)</span> <span class="k">for</span> <span class="n">url</span> <span class="ow">in</span> <span class="n">record</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;urls&quot;</span><span class="p">)]</span>
330+
<span class="p">)</span>
329331
<span class="p">),</span>
330332
<span class="s2">&quot; &quot;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span>
331-
<span class="p">[</span><span class="n">auth</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s2">&quot; &quot;</span><span class="p">,</span> <span class="s2">&quot;%20&quot;</span><span class="p">)</span> <span class="k">for</span> <span class="n">auth</span> <span class="ow">in</span> <span class="n">record</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;authz&quot;</span><span class="p">)]</span>
333+
<span class="nb">sorted</span><span class="p">(</span>
334+
<span class="p">[</span>
335+
<span class="n">auth</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s2">&quot; &quot;</span><span class="p">,</span> <span class="s2">&quot;%20&quot;</span><span class="p">)</span>
336+
<span class="k">for</span> <span class="n">auth</span> <span class="ow">in</span> <span class="n">record</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;authz&quot;</span><span class="p">)</span>
337+
<span class="p">]</span>
338+
<span class="p">)</span>
339+
<span class="p">),</span>
340+
<span class="s2">&quot; &quot;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span>
341+
<span class="nb">sorted</span><span class="p">([</span><span class="n">a</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s2">&quot; &quot;</span><span class="p">,</span> <span class="s2">&quot;%20&quot;</span><span class="p">)</span> <span class="k">for</span> <span class="n">a</span> <span class="ow">in</span> <span class="n">record</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;acl&quot;</span><span class="p">)])</span>
332342
<span class="p">),</span>
333-
<span class="s2">&quot; &quot;</span><span class="o">.</span><span class="n">join</span><span class="p">([</span><span class="n">a</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s2">&quot; &quot;</span><span class="p">,</span> <span class="s2">&quot;%20&quot;</span><span class="p">)</span> <span class="k">for</span> <span class="n">a</span> <span class="ow">in</span> <span class="n">record</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;acl&quot;</span><span class="p">)]),</span>
334343
<span class="n">record</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;hashes&quot;</span><span class="p">,</span> <span class="p">{})</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;md5&quot;</span><span class="p">),</span>
335344
<span class="n">record</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;size&quot;</span><span class="p">),</span>
336345
<span class="n">record</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;file_name&quot;</span><span class="p">),</span>

docs/_build/html/_modules/gen3/tools/indexing/index_manifest.html

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,7 @@ <h1>Source code for gen3.tools.indexing.index_manifest</h1><div class="highlight
7474
<span class="kn">import</span> <span class="nn">sys</span>
7575
<span class="kn">import</span> <span class="nn">traceback</span>
7676

77+
<span class="kn">from</span> <span class="nn">gen3.index</span> <span class="kn">import</span> <span class="n">Gen3Index</span>
7778
<span class="kn">from</span> <span class="nn">gen3.auth</span> <span class="kn">import</span> <span class="n">Gen3Auth</span>
7879
<span class="kn">from</span> <span class="nn">gen3.tools.indexing.manifest_columns</span> <span class="kn">import</span> <span class="p">(</span>
7980
<span class="n">GUID_COLUMN_NAMES</span><span class="p">,</span>
@@ -680,6 +681,51 @@ <h1>Source code for gen3.tools.indexing.index_manifest</h1><div class="highlight
680681
<span class="n">logging</span><span class="o">.</span><span class="n">basicConfig</span><span class="p">(</span><span class="n">filename</span><span class="o">=</span><span class="s2">&quot;index_object_manifest.log&quot;</span><span class="p">,</span> <span class="n">level</span><span class="o">=</span><span class="n">logging</span><span class="o">.</span><span class="n">DEBUG</span><span class="p">)</span>
681682
<span class="n">logging</span><span class="o">.</span><span class="n">getLogger</span><span class="p">()</span><span class="o">.</span><span class="n">addHandler</span><span class="p">(</span><span class="n">logging</span><span class="o">.</span><span class="n">StreamHandler</span><span class="p">(</span><span class="n">sys</span><span class="o">.</span><span class="n">stdout</span><span class="p">))</span>
682683
<span class="n">index_object_manifest_cli</span><span class="p">()</span>
684+
685+
686+
<div class="viewcode-block" id="delete_all_guids"><a class="viewcode-back" href="../../../../tools/indexing.html#gen3.tools.indexing.index_manifest.delete_all_guids">[docs]</a><span class="k">def</span> <span class="nf">delete_all_guids</span><span class="p">(</span><span class="n">auth</span><span class="p">,</span> <span class="n">file</span><span class="p">):</span>
687+
<span class="sd">&quot;&quot;&quot;</span>
688+
<span class="sd"> Delete all GUIDs specified in the object manifest.</span>
689+
690+
<span class="sd"> WARNING: THIS COMPLETELY REMOVES INDEX RECORDS. USE THIS ONLY IF YOU KNOW</span>
691+
<span class="sd"> THE IMPLICATIONS.</span>
692+
<span class="sd"> &quot;&quot;&quot;</span>
693+
<span class="n">index</span> <span class="o">=</span> <span class="n">Gen3Index</span><span class="p">(</span><span class="n">auth</span><span class="o">.</span><span class="n">endpoint</span><span class="p">,</span> <span class="n">auth_provider</span><span class="o">=</span><span class="n">auth</span><span class="p">)</span>
694+
<span class="k">if</span> <span class="ow">not</span> <span class="n">index</span><span class="o">.</span><span class="n">is_healthy</span><span class="p">():</span>
695+
<span class="n">logging</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span>
696+
<span class="sa">f</span><span class="s2">&quot;uh oh! The indexing service is not healthy in the commons </span><span class="si">{</span><span class="n">auth</span><span class="o">.</span><span class="n">endpoint</span><span class="si">}</span><span class="s2">&quot;</span>
697+
<span class="p">)</span>
698+
<span class="n">exit</span><span class="p">()</span>
699+
700+
<span class="c1"># try to get delimeter based on file ext</span>
701+
<span class="n">file_ext</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">splitext</span><span class="p">(</span><span class="n">file</span><span class="p">)</span>
702+
<span class="k">if</span> <span class="n">file_ext</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">lower</span><span class="p">()</span> <span class="o">==</span> <span class="s2">&quot;.tsv&quot;</span><span class="p">:</span>
703+
<span class="n">manifest_file_delimiter</span> <span class="o">=</span> <span class="s2">&quot;</span><span class="se">\t</span><span class="s2">&quot;</span>
704+
<span class="k">else</span><span class="p">:</span>
705+
<span class="c1"># default, assume CSV</span>
706+
<span class="n">manifest_file_delimiter</span> <span class="o">=</span> <span class="s2">&quot;,&quot;</span>
707+
708+
<span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="n">file</span><span class="p">,</span> <span class="s2">&quot;r&quot;</span><span class="p">,</span> <span class="n">encoding</span><span class="o">=</span><span class="s2">&quot;utf-8-sig&quot;</span><span class="p">)</span> <span class="k">as</span> <span class="n">input_file</span><span class="p">:</span>
709+
<span class="n">csvReader</span> <span class="o">=</span> <span class="n">csv</span><span class="o">.</span><span class="n">DictReader</span><span class="p">(</span><span class="n">input_file</span><span class="p">,</span> <span class="n">delimiter</span><span class="o">=</span><span class="n">manifest_file_delimiter</span><span class="p">)</span>
710+
<span class="n">fieldnames</span> <span class="o">=</span> <span class="n">csvReader</span><span class="o">.</span><span class="n">fieldnames</span>
711+
712+
<span class="n">logging</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;got fieldnames from </span><span class="si">{</span><span class="n">file</span><span class="si">}</span><span class="s2">: </span><span class="si">{</span><span class="n">fieldnames</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
713+
714+
<span class="c1"># figure out which permutation of the name GUID is being used 1 time</span>
715+
<span class="c1"># then use it for all future rows</span>
716+
<span class="n">guid_name</span> <span class="o">=</span> <span class="s2">&quot;guid&quot;</span>
717+
<span class="k">for</span> <span class="n">name</span> <span class="ow">in</span> <span class="p">[</span><span class="s2">&quot;guid&quot;</span><span class="p">,</span> <span class="s2">&quot;GUID&quot;</span><span class="p">,</span> <span class="s2">&quot;did&quot;</span><span class="p">,</span> <span class="s2">&quot;DID&quot;</span><span class="p">]:</span>
718+
<span class="k">if</span> <span class="n">name</span> <span class="ow">in</span> <span class="n">fieldnames</span><span class="p">:</span>
719+
<span class="n">guid_name</span> <span class="o">=</span> <span class="n">name</span>
720+
721+
<span class="n">logging</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;using </span><span class="si">{</span><span class="n">guid_name</span><span class="si">}</span><span class="s2"> to retrieve GUID to delete...&quot;</span><span class="p">)</span>
722+
723+
<span class="k">for</span> <span class="n">row</span> <span class="ow">in</span> <span class="n">csvReader</span><span class="p">:</span>
724+
<span class="n">guid</span> <span class="o">=</span> <span class="n">row</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">guid_name</span><span class="p">)</span>
725+
726+
<span class="k">if</span> <span class="n">guid</span><span class="p">:</span>
727+
<span class="n">logging</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;deleting GUID record:</span><span class="si">{</span><span class="n">guid</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
728+
<span class="n">logging</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="n">index</span><span class="o">.</span><span class="n">delete_record</span><span class="p">(</span><span class="n">guid</span><span class="o">=</span><span class="n">guid</span><span class="p">))</span></div>
683729
</pre></div>
684730

685731
</div>

docs/_build/html/_modules/gen3/tools/indexing/verify_manifest.html

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -247,6 +247,8 @@ <h1>Source code for gen3.tools.indexing.verify_manifest</h1><div class="highligh
247247
<span class="c1"># default, assume CSV</span>
248248
<span class="n">manifest_file_delimiter</span> <span class="o">=</span> <span class="s2">&quot;,&quot;</span>
249249

250+
<span class="n">logging</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;detected </span><span class="si">{</span><span class="n">manifest_file_delimiter</span><span class="si">}</span><span class="s2"> as delimiter between columns&quot;</span><span class="p">)</span>
251+
250252
<span class="k">await</span> <span class="n">_verify_all_index_records_in_file</span><span class="p">(</span>
251253
<span class="n">commons_url</span><span class="p">,</span>
252254
<span class="n">manifest_file</span><span class="p">,</span>

docs/_build/html/genindex.html

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -144,6 +144,8 @@ <h2 id="D">D</h2>
144144
<table style="width: 100%" class="indextable genindextable"><tr>
145145
<td style="width: 33%; vertical-align: top;"><ul>
146146
<li><a href="metadata.html#gen3.metadata.Gen3Metadata.delete">delete() (gen3.metadata.Gen3Metadata method)</a>
147+
</li>
148+
<li><a href="tools/indexing.html#gen3.tools.indexing.index_manifest.delete_all_guids">delete_all_guids() (in module gen3.tools.indexing.index_manifest)</a>
147149
</li>
148150
<li><a href="metadata.html#gen3.metadata.Gen3Metadata.delete_index_key_path">delete_index_key_path() (gen3.metadata.Gen3Metadata method)</a>
149151
</li>

docs/_build/html/objects.inv

13 Bytes
Binary file not shown.

0 commit comments

Comments
 (0)