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.
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"
Sustituir una rutina
# ** 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.
- 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 esproject1
.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'`
- 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}"`
- 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.