Substituição de rotinas BASIC em DataStage

Para substituir uma rotina do BASIC, reescreva o código de rotina em um script que use as chamadas dsjob CLI ou REST API. Adicire-o ao seu fluxo de Pipeline como um nó de script Run Bash.

Token de autenticação

Para ser iniciado com o servidor da API em REST ou CLI, obtenha o token de autenticação para o servidor.

Para obter mais informações, consulte Criando um token de acesso CPD.

Supondo que sua UI do CPD URL esteja no formato https://cpd-ds.apps.yourcompany.com, obtenha os tokens de autenticação com o seguinte código.

O token iam:
export CPD_URL=https://cpd-ds.apps.yourcompany.com
export USERNAME=<your login user>
export PASSWORD=<your login password>
iamtoken=`curl -k -s -X POST -H "Content-Type: application/x-www-form-urlencoded;charset=UTF-8" -d "grant_type=password&username=${USERNAME}&password=${PASSWORD}&scope=openid" ${CPD_URL}/idprovider/v1/auth/identitytoken | jq .access_token | cut -d\" -f2`
O token de autenticação da chave ZenApi:
curl -k -X POST -H "cache-control: no-cache" -H "Content-Type: application/json" -d "{\"username\":\"{username}\",\"api_key\": \"{api_key}\"}" "https://{cpd_cluster_host}/icp4d-api/v1/authorize"

Substituir uma rotina

A rotina BASIC a seguir recebe o nome de um job:
** Jobname = DSGetJobInfo (DSJ.ME,DSJ.JOBNAME)
Você pode obter as mesmas informações escrevendo um script que usa a API REST e adicionando-a a um nó Run Bash Script.
  1. Obtenha parâmetros como o id do projeto, o nome do projeto, o id do job e o id run id. Você pode obter esses valores através de expressões CEL: ctx.scope.id, ctx.scope.name, ctx.job.id, ctx.job_run.idou você pode fazê-lo com a API REST conforme demonstrado nos seguintes comandos. Este exemplo assume que o nome do seu projeto é project1.

    ID do projeto

    $ project=`curl --request GET "$ {CPD_URL}/v2/projects?name=project1 " -H "Authorization: Bearer $ {bearer_token} " -k -s `
    $ proj_id=`echo $project | jq -r '.resources|.[0]. metadata.guid '`

    ID da tarefa

    $ joblist=`curl --request GET "$ {CPD_URL}/v2/jobs?project_id=${proj_id }" --header "Authorization: Bearer $ {bearer_token} " -k -s `
    $ job_id= `echo $joblist | jq -r '.results[].metadata|select(.name=="testjob"?) |.asset_id'`

    ID de execução

    $ runlist=`curl --request GET "$ {CPD_URL}/v2/jobs/${job_id }/runs?project_id=$ {proj_id} " --header "Authorization: Bearer $ {bearer_token} " -k -s `
    $ run_id= `echo $runlist|jq -r '.results[]|select(. metadata.description =="Initial run"?) |. metadata.asset_id '`
  2. Obtenha os metadados para uma execução de tarefa em um projeto especificado. Use os parâmetros proj_id, job_ide run_id definidos pelos comandos anteriores.
    $ jobrun=`curl --request GET "$ {CPD_URL}/v2/jobs/${job_id }/runs/$ {run_id}?job_id=$ {job_id} &run_id=$ {run_id} &project_id=$ {proj_id} " --header "Authorization: Bearer $ {bearer_token} "`
  3. Extraia as informações.
    $ echo $jobrun|jq -r '. entity.job_run.job_name '

Este exemplo usa comandos REST API, mas dsjob também pode ser usado. Pode ser útil reescrever rotinas como funções de wrapper para que possam ser reutilizadas ao longo de seus scripts. Consulte Exemplos para obter mais informações e exemplos..