Sustitución de rutinas BASIC en DataStage

Para sustituir una rutina BASIC, reescriba el código de la rutina en un script que utilice las llamadas dsjob a la API CLI o REST. Añádalo a su flujo de Pipeline como un nodo Run Bash script.

Señal de autenticación

Para empezar a utilizar el servidor API en REST o CLI, obtenga el token de autenticación para el servidor.

Para obtener más información, consulte Generar claves API para la autenticación.

Suponiendo que su interfaz de usuario de CPD URL tiene el formato https://cpd-ds.apps.yourcompany.com, obtenga los tokens de autenticación con el siguiente código.

El 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`
El token de autenticación clave « 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"

Reemplazar una rutina

La siguiente rutina BASIC obtiene el nombre de un trabajo:
# ** Nombre del trabajo = DSGetJobInfo ( DSJ.ME, DSJ.JOBNAME )
Puede obtener la misma información escribiendo un script que utilice la API REST y añadiéndolo a un nodo Run Bash Script.
  1. Obtenga parámetros como el ID del proyecto, el nombre del proyecto, el ID del trabajo y el ID de ejecución del trabajo. Puede obtener estos valores mediante expresiones CEL: ctx.scope.id, ctx.scope.name, ctx.job.id, ctx.job_run.id, o puede hacerlo con la API REST, tal y como se muestra en los siguientes comandos. Este ejemplo asume que el nombre de su proyecto es project1.

    ID de proyecto

    $ 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 de trabajo

    $ 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 ejecución

    $ 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. Obtener los metadatos de una tarea ejecutada en un proyecto específico. Utilice los parámetros proj_id, job_id, y run_id definidos por los 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. Extraiga la información.
    $ echo $jobrun|jq -r '. entity.job_run.job_name '

Este ejemplo utiliza comandos de la API REST, pero dsjob también se puede utilizar. Puede resultar útil reescribir las rutinas como funciones envolventes para que puedan reutilizarse en todos los scripts. Consulte Ejemplos para obtener más información y ejemplos.