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.
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`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
** 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.
- 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 '` - 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} "` - 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..