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