Tutorial: Verwenden von „sdutil“ zum Hochladen von Daten in Seismic Store
Seismic Store ist eine cloudbasierte Lösung zum Speichern und Verwalten von Datasets beliebiger Größe. Sie bietet eine sichere Möglichkeit, über einen bereichsbezogenen Autorisierungsmechanismus auf Datasets zuzugreifen. Seismic Store überwindet die Einschränkungen des Cloudanbieter hinsichtlich der Objektgröße, indem er generische Datasets als mehrere unabhängige Objekte verwaltet.
„sdutil“ ist ein Python-Befehlszeilentool für die Interaktion mit Seismic Store. Sie können „sdutil“ verwenden, um grundlegende Vorgänge auszuführen, z. B. das Hochladen von Daten in Seismic Store, das Herunterladen von Datasets aus Seismic Store, das Verwalten von Benutzer*innen und das Auflisten von Ordnerinhalten.
In diesem Tutorial lernen Sie Folgendes:
- Einrichten und Ausführen des sdutil-Tools
- Abrufen des Seismic Store-URIs
- Erstellen eines Unterprojekts
- Registrieren von Benutzer*innen
- Verwenden von „sdutil“ zum Verwalten von Datasets mit Seismic Store
- Ausführen von Tests zum Überprüfen der Funktionen des sdutil-Tools
Voraussetzungen
Installieren Sie die folgenden erforderlichen Komponenten basierend auf Ihrem Betriebssystem.
Windows:
Linux:
Unix/Mac
„sdutil“ erfordert weitere Module, die in requirements.txt
angegeben sind. Sie können die Module entweder unverändert installieren oder sie in einer virtuellen Umgebung installieren, um Paketkonflikte auf Ihrem Host zu vermeiden. Wenn Sie sie nicht in einer virtuellen Umgebung installieren möchten, überspringen Sie die folgenden vier Befehle für virtuelle Umgebungen im folgenden Code. Wenn Sie Mac anstelle von Ubuntu oder WSL (Ubuntu 20.04) nutzen, verwenden Sie außerdem homebrew
anstelle von apt-get
als Paket-Manager, oder installieren Sie apt-get
manuell.
# Check if virtualenv is already installed
virtualenv --version
# If not, install it via pip or apt-get
pip install virtualenv
# or sudo apt-get install python3-venv for WSL
# Create a virtual environment for sdutil
virtualenv sdutilenv
# or python3 -m venv sdutilenv for WSL
# Activate the virtual environment
Windows: sdutilenv/Scripts/activate
Linux: source sdutilenv/bin/activate
Installieren Sie erforderliche Abhängigkeiten:
# Run this from the extracted sdutil folder
pip install -r requirements.txt
Verwendung
Konfiguration
Klonen Sie das sdutil-Repository aus dem
azure-stable
-Branch der Community, und öffnen Sie es in Ihrem bevorzugten Editor.Ersetzen Sie den Inhalt von
config.yaml
im Ordnersdlib
durch den folgenden YAML-Code. Geben Sie die drei Werte aus der Vorlage ein (zwei Instanzen von<meds-instance-url>
und eine Instanz von<put refresh token here...>
).seistore: service: '{"azure": {"azureGlabEnv":{"url": "https://<meds-instance-url>/seistore-svc/api/v3", "appkey": ""}}}' url: 'https://<meds-instance-url>/seistore-svc/api/v3' cloud_provider: 'azure' env: 'glab' auth-mode: 'JWT Token' ssl_verify: False auth_provider: azure: '{ "provider": "azure", "authorize_url": "https://login.microsoftonline.com/", "oauth_token_host_end": "/oauth2/token", "scope_end":"/.default openid profile offline_access", "redirect_uri":"http://localhost:8080", "login_grant_type": "refresh_token", "refresh_token": "<put refresh token here from auth_token.http authorize request>" }' azure: empty: 'none'
Hinweis
Wenn noch kein Token vorhanden ist, rufen Sie anhand der Anweisungen in Generieren eines Authentifizierungstokens eines ab.
Exportieren Sie anschließend die folgenden Umgebungsvariablen, oder legen Sie sie fest:
export AZURE_TENANT_ID=<your-tenant-id> export AZURE_CLIENT_ID=<your-client-id> export AZURE_CLIENT_SECRET=<your-client-secret>
Ausführen des Tools
Führen Sie das sdutil-Tool über den extrahierten Hilfsprogrammordner aus:
python sdutil
Wenn Sie keine Argumente angeben, wird dieses Menü angezeigt:
Seismic Store Utility > python sdutil [command] available commands: * auth : authentication utilities * unlock : remove a lock on a seismic store dataset * version : print the sdutil version * rm : delete a subproject or a space separated list of datasets * mv : move a dataset in seismic store * config : manage the utility configuration * mk : create a subproject resource * cp : copy data to(upload)/from(download)/in(copy) seismic store * stat : print information like size, creation date, legal tag(admin) for a space separated list of tenants, subprojects or datasets * patch : patch a seismic store subproject or dataset * app : application authorization utilities * ls : list subprojects and datasets * user : user authorization utilities
Wenn Sie das Tool zum ersten Mal verwenden, führen Sie den Befehl
sdutil config init
aus, um die Konfiguration zu initialisieren.python sdutil config init
Bevor Sie das Tool verwenden und Vorgänge damit durchführen können, müssen Sie sich beim System anmelden. Wenn Sie den folgenden Befehl ausführen, öffnet „sdutil“ eine Anmeldeseite in einem Webbrowser.
python sdutil auth login
Nachdem Sie sich erfolgreich angemeldet haben, sind Ihre Anmeldeinformationen für eine Woche gültig. Sie müssen sich nicht erneut anmelden, es sei denn, die Anmeldeinformationen laufen ab.
Hinweis
Wenn Sie die Meldung zur erfolgreichen Anmeldung nicht erhalten, stellen Sie sicher, dass Ihre drei Umgebungsvariablen festgelegt sind und dass Sie alle Schritte im Abschnitt Konfiguration weiter oben in diesem Tutorial ausgeführt haben.
Seismic Store-Ressourcen
Bevor Sie das System verwenden, ist es wichtig zu verstehen, wie Seismic Store Ressourcen verwaltet. Seismic Store verwaltet drei Typen von Ressourcen:
- Mandantenprojekt: das Hauptprojekt. Der Mandant ist der erste Abschnitt des Seismic Store-Pfads.
- Unterprojekt: das Arbeitsunterprojekt, das direkt mit dem Hauptprojekt des Mandanten verbunden ist. Das Unterprojekt ist der zweite Abschnitt des Seismic Store-Pfads.
- Dataset: die Datasetentität. Das Dataset ist der dritte und letzte Abschnitt des Seismic Store-Pfads. Sie können die Datasetressource in der Form
path/dataset_name
angeben. In dieser Form istpath
optional und hat die gleiche Bedeutung wie ein Verzeichnis in einem generischen Dateisystem. Derdataset_name
-Teil ist der Name der Datasetentität.
Der Seismic Store-URI ist eine Zeichenfolge, die Sie verwenden, um eine Ressource im System eindeutig zuzuordnen. Sie können ihn abrufen, indem Sie das Präfix sd://
an den Pfad der erforderlichen Ressource anfügen:
sd://<tenant>/<subproject>/<path>*/<dataset>
Wenn Sie beispielsweise ein Dataset namens results.segy
in der Verzeichnisstruktur qadata/ustest
im Unterprojekt carbon
unter dem Mandantenprojekt gtc
gespeichert haben, lautet der entsprechende sdpath
-Code:
sd://gtc/carbon/qadata/ustest/results.segy
Sie können jede Ressource über den entsprechenden sdpath
-Abschnitt zuordnen:
Tenant: sd://gtc
Subproject: sd://gtc/carbon
Dataset: sd://gtc/carbon/qadata/ustest/results.segy
Unterprojekte
Ein Unterprojekt in Seismic Store ist eine Arbeitseinheit, in der Datasets gespeichert werden können. Das System kann mehrere Unterprojekte unter einem Mandantenprojekt verwalten.
Eine Unterprojektressource kann nur von einem*r Mandantenadministrator*in mit dem folgenden sdutil-Befehl erstellt werden:
> python sdutil mk *sdpath *admin@email *legaltag (options)
create a new subproject resource in Seismic Store. user can interactively
set the storage class for the subproject. only tenant admins are allowed to create subprojects.
*sdpath : the seismic store subproject path. sd://<tenant>/<subproject>
*admin@email : the email of the user to be set as the subproject admin
*legaltag : the default legal tag for the created subproject
(options) | --idtoken=<token> pass the credential token to use, rather than generating a new one
Benutzerverwaltung
Um Seismic Store verwenden zu können, müssen Benutzer*innen mindestens bei einer Unterprojektressource mit einer Rolle registriert sein, die ihre Zugriffsebene definiert. Seismic Store unterstützt zwei Rollen, die auf der Unterprojektebene definiert sind:
- Administrator: Lese-/Schreibzugriff und Benutzerverwaltung.
- Viewer: Lese-/Schreibzugriff.
Ein*e Benutzer*in kann nur von einem*r Mandantenadministrator*in mit dem folgenden sdutil-Befehl registriert werden:
> python sdutil user [ *add | *list | *remove | *roles ] (options)
*add $ python sdutil user add [user@email] [sdpath] [role]*
add a user to a subproject resource
[user@email] : email of the user to add
[sdpath] : seismic store subproject path, sd://<tenant>/<subproject>
[role] : user role [admin|viewer]
Anwendungsbeispiele
Der folgende Code ist ein Beispiel für die Verwenden von „sdutil“ zur Verwaltung von Datasets mit Seismic Store. Für dieses Beispiel wird sd://gtc/carbon
als Unterprojektressource verwendet.
# Create a new file
echo "My Test Data" > data1.txt
# Upload the created file to Seismic Store
./sdutil cp data1.txt sd://gtc/carbon/test/mydata/data.txt
# List the contents of the Seismic Store subproject
./sdutil ls sd://gtc/carbon/test/mydata/ (display: data.txt)
./sdutil ls sd://gtc (display: carbon)
./sdutil ls sd://gtc/carbon (display: test/)
./sdutil ls sd://gtc/carbon/test (display: data/)
# Download the file from Seismic Store
./sdutil cp sd://gtc/carbon/test/mydata/data.txt data2.txt
# Check if the original file matches the one downloaded from Seismic Store
diff data1.txt data2.txt
Tooltests
Der Testordner enthält eine festgelegte Anzahl von Integral-/Komponenten- und Regressionstests, die für pytest geschrieben wurden. Führen Sie diese Tests aus, um die Funktionen des sdutil-Tools zu überprüfen.
Verwenden Sie diesen Code für Anforderungen:
# Install required dependencies
pip install -r test/e2e/requirements.txt
Verwenden Sie diesen Code für Integral-/Komponententests:
# Run integral/unit test
./devops/scripts/run_unit_tests.sh
# Test execution parameters
--mnt-volume = sdapi root dir (default=".")
Verwenden Sie diesen Code für Regressionstests:
# Run regression test
./devops/scripts/run_regression_tests.sh --cloud-provider= --service-url= --service-key= --idtoken= --tenant= --subproject=
# Test execution parameters
--mnt-volume = sdapi root dir (default=".")
--disable-ssl-verify (to disable ssl verification)
Häufig gestellte Fragen
Wie kann ich einen neuen Befehl für das Tool generieren?
Führen Sie das Skript zur Befehlsgenerierung (./command_gen.py
) aus, um automatisch die Basisinfrastruktur für die Integration eines neuen Befehls in das sdutil-Tool zu generieren. Das Skript erstellt einen Ordner mit der Befehlsinfrastruktur in sdlib/cmd/new_command_name
.
./scripts/command_gen.py new_command_name
Wie kann ich alle Dateien in einem Verzeichnis löschen?
Verwenden Sie den folgenden Code:
./sdutil ls -lr sd://tenant/subproject/your/folder/here | xargs -r ./sdutil rm --idtoken=x.xxx.x
Wie kann ich das Änderungsprotokoll des Tools generieren?
Führen Sie das Skript für das Änderungsprotokoll (./changelog-generator.sh
) aus, um das Änderungsprotokoll des Tools automatisch zu generieren.
./scripts/changelog-generator.sh
Verwendung von Azure Data Manager for Energy
Die Azure Data Manager for Energy-Instanz verwendet die OSDU® M12-Version von „sdutil“. Führen Sie die folgenden Schritte aus, wenn Sie „sdutil“ verwenden möchten, um die SDMS-API (Scientific Data Management System) Ihrer Azure Data Manager for Energy-Instanz zu nutzen:
Stellen Sie sicher, dass Sie die vorherigen Installation- und Konfigurationsschritte befolgt haben. Zu diesen Schritten gehören das Herunterladen des sdutil-Quellcodes, das Konfigurieren Ihrer virtuellen Python-Umgebung, das Bearbeiten der Datei
config.yaml
und das Festlegen Ihrer drei Umgebungsvariablen.Führen Sie die folgenden Befehle aus, um Aufgaben in Seismic Store auszuführen.
Initialisieren:
(sdutilenv) > python sdutil config init [one] Azure Select the cloud provider: **enter 1** Insert the Azure (azureGlabEnv) application key: **just press enter--no need to provide a key** sdutil successfully configured to use Azure (azureGlabEnv) Should display sign in success message. Credentials expiry set to 1 hour.
Anmelden:
python sdutil config init python sdutil auth login
Auflisten von Dateien in Seismic Store:
python sdutil ls sd://<tenant> # For example, sd://<instance-name>-<datapartition> python sdutil ls sd://<tenant>/<subproject> # For example, sd://<instance-name>-<datapartition>/test
Hochladen einer Datei von Ihrem lokalen Computer in Seismic Store:
python sdutil cp local-dir/file-name-at-source.txt sd://<datapartition>/test/file-name-at-destination.txt
Herunterladen einer Datei aus Seismic Store auf Ihren lokalen Computer:
python sdutil cp sd://<datapartition>/test/file-name-at-ddms.txt local-dir/file-name-at-destination.txt
Hinweis
Verwenden Sie nicht den Befehl
cp
, um VDS-Dateien herunterzuladen. Bei der VDS-Konvertierung entstehen mehrere Dateien, die sich nicht alle zusammen mit dem Befehlcp
herunterladen lassen. Verwenden Sie stattdessen SEGYExport oder VDSCopy. Diese Tools verwenden eine Reihe von REST-Aufrufen, die auf ein Benennungsschema zugreifen, um Informationen zu allen resultierenden VDS-Dateien abzurufen.
OSDU® ist eine Marke von The Open Group.
Nächster Schritt
Fahren Sie mit dem nächsten Tutorial fort: