0 / 0
Volver a la versión inglesa de la documentación

Sustitución de rutinas BASIC en DataStage

Última actualización: 12 mar 2025
Sustitución de rutinas BASIC en DataStage

Para sustituir una rutina BASIC, vuelva a escribir el código de rutina en un script que utilice la CLI de dsjob o las llamadas de API REST. Añádalo al flujo de conducto como un nodo de script Ejecutar Bash.

Señal de autenticación

Para empezar con el servidor de API en REST o CLI, obtenga la señal de autenticación para el servidor.

Para obtener más información, consulte Creación de una señal portadora CPD.

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

La señal 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 de la 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"

Sustituir una rutina

La siguiente rutina BASIC obtiene el nombre de un trabajo:
# ** Jobname = DSGetJobInfo (DSJ.ME,DSJ.JOBNAME)
Puede obtener la misma información escribiendo un script que utilice la API REST y añadiéndola a un nodo Ejecutar script de Bash.
  1. Obtenga parámetros como el ID de proyecto, el nombre de proyecto, el ID de trabajo y el ID de ejecución de trabajo. Puede obtener estos valores a través de expresiones CEL: ctx.scope.id, ctx.scope.name, ctx.job.id, ctx.job_run.id, o puede hacerlo con la API REST tal como se muestra en los mandatos siguientes. En este ejemplo se presupone que el nombre del 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 $proyecto | jq -r '.recursos|.[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 para una ejecución de trabajo en un proyecto especificado. Utilice los parámetros proj_id, job_idy run_id definidos por los mandatos 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 mandatos de API REST, pero también se puede utilizar dsjob . Puede ser útil volver a escribir rutinas como funciones de derivador para que se puedan reutilizar en todos los scripts. Consulte Ejemplos para obtener más información y ejemplos.