Aracılığıyla paylaş


Öğretici: Sismik Depoya veri yüklemek için sdutil kullanma

Sismik Mağaza, her boyuttaki veri kümelerini depolamak ve yönetmek için bulut tabanlı bir çözümdür. Kapsamlı yetkilendirme mekanizması aracılığıyla veri kümelerine erişmek için güvenli bir yol sağlar. Sismik Mağaza, genel veri kümelerini birden çok bağımsız nesne olarak yöneterek bulut sağlayıcılarının nesne boyutu sınırlamalarının üstesinden gelir.

Sdutil, Sismik Depo ile etkileşime yönelik bir komut satırı Python aracıdır. Sdutil kullanarak Sismik Store'a veri yükleme, Sismik Mağaza'dan veri kümesi indirme, kullanıcıları yönetme ve klasör içeriğini listeleme gibi temel işlemleri gerçekleştirebilirsiniz.

Bu öğreticide aşağıdakilerin nasıl yapılacağını öğreneceksiniz:

  • Sdutil aracını ayarlayın ve çalıştırın.
  • Sismik Depo URI'sini alın.
  • Bir alt proje oluşturun.
  • Kullanıcı kaydetme.
  • Sismik Mağaza ile veri kümelerini yönetmek için sdutil kullanın.
  • Sdutil aracının işlevlerini doğrulamak için testleri çalıştırın.

Önkoşullar

İşletim sisteminize göre aşağıdaki önkoşulları yükleyin.

Windows:

Linux:

Unix/Mac

Sdutil, içinde requirements.txtbelirtilen diğer modülleri gerektirir. Konakınızın paket çakışmalarına karşı temiz kalmasını sağlamak için modülleri olduğu gibi yükleyebilir veya bir sanal ortama yükleyebilirsiniz. Bunları bir sanal ortama yüklemek istemiyorsanız aşağıdaki kodda yer alan dört sanal ortam komutlarını atlayın. Ayrıca, Ubuntu veya WSL - Ubuntu 20.04 yerine Mac kullanıyorsanız paket yöneticiniz yerine apt-get kullanın homebrew veya el ile yükleyinapt-get.

  # 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

Gerekli bağımlılıkları yükleyin:

  # Run this from the extracted sdutil folder
  pip install -r requirements.txt

Kullanım

Yapılandırma

  1. Topluluk azure-stable dalından sdutil deposunu kopyalayın ve sık kullandığınız düzenleyicide açın.

  2. klasöründeki sdlib içeriğini config.yaml aşağıdaki YAML ile değiştirin. Üç şablonlaştırılmış değeri (iki örneği <meds-instance-url> ve bir örneği <put refresh token here...>) doldurun.

    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'
    

    Not

    Bir belirteç henüz yoksa, Kimlik doğrulama belirteci oluşturma bölümünde yer alan yönergeleri izleyerek bir belirteç alın.

  3. Aşağıdaki ortam değişkenlerini dışarı aktarın veya ayarlayın:

      export AZURE_TENANT_ID=<your-tenant-id>
      export AZURE_CLIENT_ID=<your-client-id>
      export AZURE_CLIENT_SECRET=<your-client-secret>
    

Aracı çalıştırma

  1. Ayıklanan yardımcı program klasöründen sdutil aracını çalıştırın:

      python sdutil
    

    Herhangi bir bağımsız değişken belirtmezseniz, bu menü görüntülenir:

      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
    
  2. Aracı ilk kez kullanıyorsanız, yapılandırmayı sdutil config init başlatmak için komutunu çalıştırın:

      python sdutil config init
    
  3. Aracı kullanmaya ve işlemleri gerçekleştirmeye başlamadan önce sistemde oturum açmanız gerekir. Aşağıdaki komutu çalıştırdığınızda, sdutil bir web tarayıcısında oturum açma sayfası açar:

      python sdutil auth login
    

    Başarıyla oturum açtıktan sonra, kimlik bilgileriniz bir hafta boyunca geçerli olur. Kimlik bilgilerinin süresi dolmadıkça yeniden oturum açmanız gerekmez.

    Not

    Başarılı oturum açma ile ilgili iletiyi almıyorsanız, üç ortam değişkeninizin ayarlandığından ve bu öğreticinin önceki bölümlerinde yer alan Yapılandırma bölümündeki tüm adımları izlediğinizden emin olun.

Sismik Mağaza kaynakları

Sistemi kullanmaya başlamadan önce Sismik Mağaza'nın kaynakları nasıl yönettiğini anlamanız önemlidir. Sismik Mağaza üç tür kaynağı yönetir:

  • Kiracı projesi: Ana proje. Kiracı, Sismik Mağaza yolunun ilk bölümüdür.
  • Alt proje: Ana kiracı projesi altında doğrudan bağlantılı olan çalışma alt projesi. Alt proje, Sismik Mağaza yolunun ikinci bölümüdür.
  • Veri kümesi: Veri kümesi varlığı. Veri kümesi, Sismik Mağaza yolunun üçüncü ve son bölümüdür. veri kümesi kaynağını formunu path/dataset_namekullanarak belirtebilirsiniz. Bu formda isteğe path bağlıdır ve genel bir dosya sistemindeki dizinle aynı anlama sahiptir. bölümü dataset_name , veri kümesi varlığının adıdır.

Sismik Depo URI'si, sistemdeki bir kaynağı benzersiz olarak ele almak için kullandığınız bir dizedir. Ön eki sd:// gerekli kaynak yoluna ekleyerek elde edebilirsiniz:

  sd://<tenant>/<subproject>/<path>*/<dataset>

Örneğin, kiracı projesi altındaki qadata/ustest gtc alt projede dizin yapısında carbon depolanan bir results.segy veri kümeniz varsa, ilgili sdpath kod şöyledir:

  sd://gtc/carbon/qadata/ustest/results.segy

İlgili sdpath bölümü kullanarak her kaynağı ele alabilirsiniz:

  Tenant: sd://gtc
  Subproject: sd://gtc/carbon
  Dataset: sd://gtc/carbon/qadata/ustest/results.segy

Alt Projeler

Sismik Mağaza'daki alt proje, kullanıcının veri kümelerini kaydedebildiği bir çalışma birimidir. Sistem, kiracı projesi altında birden çok alt projeyi işleyebilir.

Yalnızca bir kiracı yöneticisi aşağıdaki sdutil komutunu kullanarak bir alt proje kaynağı oluşturabilir:

  > 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

Kullanıcı yönetimi

Sismik Mağaza'yı kullanabilmek için kullanıcıların erişim düzeylerini tanımlayan bir role sahip en az bir alt proje kaynağına kayıtlı olması gerekir. Sismik depo, alt proje düzeyinde kapsamı belirlenmiş iki rolü destekler:

  • Yönetici: Okuma/yazma erişimi ve kullanıcı yönetimi.
  • Görüntüleyici: Okuma/listeleme erişimi.

Aşağıdaki sdutil komutunu kullanarak yalnızca bir alt proje yöneticisi kullanıcıyı kaydedebilir:

  > 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]

Kullanım örnekleri

Aşağıdaki kod, Sismik Depolama ile veri kümelerini yönetmek için sdutil'in nasıl kullanılacağını gösteren bir örnektir. Bu örnekte alt proje kaynağı olarak kullanılır sd://gtc/carbon .

  # 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

Araç testi

Test klasörü, pytest için yazılmış bir dizi integral/birim ve regresyon testi içerir. Sdutil aracının işlevlerini doğrulamak için bu testleri çalıştırın.

Gereksinimler için şu kodu kullanın:

  # Install required dependencies  
  pip install -r test/e2e/requirements.txt

İntegral/birim testleri için bu kodu kullanın:

  # Run integral/unit test
  ./devops/scripts/run_unit_tests.sh

  # Test execution parameters
  --mnt-volume = sdapi root dir (default=".")

Regresyon testleri için şu kodu kullanın:

  # 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)

SSS

Araç için nasıl yeni bir komut oluşturabilirim?

Sdutil aracında yeni bir komutu tümleştirmek için temel altyapıyı otomatik olarak oluşturmak için komut oluşturma betiğini (./command_gen.py) çalıştırın. Betik, içinde sdlib/cmd/new_command_namekomut altyapısı olan bir klasör oluşturur.

  ./scripts/command_gen.py new_command_name

Dizindeki tüm dosyaları nasıl silebilirim?

Aşağıdaki kodu kullanın:

  ./sdutil ls -lr sd://tenant/subproject/your/folder/here | xargs -r ./sdutil rm --idtoken=x.xxx.x

Aracın değişiklik günlüğü nasıl oluşturulabilir?

Aracın değişiklik günlüğü otomatik olarak oluşturmak için changelog betiğini (./changelog-generator.sh) çalıştırın:

  ./scripts/changelog-generator.sh

Enerji için Azure Data Manager kullanımı

Enerji için Azure Data Manager örneği, sdutil'in OSDU® M12 sürümünü kullanır. Sdutil kullanarak Enerji için Azure Data Manager örneğinizin Bilimsel Veri Yönetimi Sistemi (SDMS) API'sini kullanmak istiyorsanız aşağıdaki adımları tamamlayın:

  1. Önceki yükleme ve yapılandırma adımlarını izlediğinize emin olun. Bu adımlar sdutil kaynak kodunu indirmeyi, Python sanal ortamınızı yapılandırmayı, dosyayı düzenlemeyi ve üç ortam değişkenini ayarlamayı config.yaml içerir.

  2. Sismik Depo'da görevleri gerçekleştirmek için aşağıdaki komutları çalıştırın.

    • Başlatmak:

        (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.
      
    • Oturum Aç:

        python sdutil config init
        python sdutil auth login
      
    • Sismik Depo'da dosyaları listeleme:

        python sdutil ls sd://<tenant> # For example, sd://<instance-name>-<datapartition>
        python sdutil ls sd://<tenant>/<subproject> # For example, sd://<instance-name>-<datapartition>/test
      
    • Yerel makinenizden Sismik Mağaza'ya bir dosya yükleyin:

        python sdutil cp local-dir/file-name-at-source.txt sd://<datapartition>/test/file-name-at-destination.txt
      
    • Sismik Depo'dan yerel makinenize bir dosya indirin:

        python sdutil cp sd://<datapartition>/test/file-name-at-ddms.txt local-dir/file-name-at-destination.txt
      

      Not

      VDS dosyalarını indirmek için komutunu kullanmayın cp . VDS dönüştürmesi birden çok dosyaya neden olur, bu nedenle cp komut bunların tümünü tek bir komutta indiremez. Bunun yerine SEGYExport veya VDSCopy aracını kullanın. Bu araçlar, sonuçta elde edilen tüm VDS dosyaları hakkındaki bilgileri almak için bir adlandırma düzenine erişen bir dizi REST çağrısı kullanır.

OSDU®, Open Group'un ticari markasıdır.

Sonraki adım

Sonraki öğreticiye ilerleyin: