{"id":21084179,"url":"https://github.com/rossonet/kettle-operator","last_synced_at":"2026-05-21T04:05:37.187Z","repository":{"id":38040472,"uuid":"502201135","full_name":"rossonet/kettle-operator","owner":"rossonet","description":"Kubernetes Pentaho Kettle Operator","archived":false,"fork":false,"pushed_at":"2023-03-01T09:25:05.000Z","size":10672,"stargazers_count":0,"open_issues_count":5,"forks_count":1,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-03-09T13:18:09.594Z","etag":null,"topics":["data-integration","java","java-operator-sdk","k8s","kettle","kubernetes","operator","pdi","pentaho-data-integration","pentaho-kettle","rossonet"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rossonet.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":"code_of_conduct.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":"rossonet"}},"created_at":"2022-06-10T22:59:50.000Z","updated_at":"2023-01-31T19:56:09.000Z","dependencies_parsed_at":"2024-11-19T20:40:06.251Z","dependency_job_id":null,"html_url":"https://github.com/rossonet/kettle-operator","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rossonet%2Fkettle-operator","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rossonet%2Fkettle-operator/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rossonet%2Fkettle-operator/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rossonet%2Fkettle-operator/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rossonet","download_url":"https://codeload.github.com/rossonet/kettle-operator/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243526953,"owners_count":20305115,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["data-integration","java","java-operator-sdk","k8s","kettle","kubernetes","operator","pdi","pentaho-data-integration","pentaho-kettle","rossonet"],"created_at":"2024-11-19T20:22:53.293Z","updated_at":"2026-05-21T04:05:37.150Z","avatar_url":"https://github.com/rossonet.png","language":"Java","funding_links":["https://github.com/sponsors/rossonet"],"categories":[],"sub_categories":[],"readme":"# Pentaho Kettle Operator by Rossonet\n\n## Kubernetes Kettle Operator\n\n[![Test on master branch with Gradle](https://github.com/rossonet/kettle-operator/actions/workflows/test-on-master-with-gradle.yml/badge.svg)](https://github.com/rossonet/kettle-operator/actions/workflows/test-on-master-with-gradle.yml)\n[![Build and publish docker image of Operator to DockerHub](https://github.com/rossonet/kettle-operator/actions/workflows/publish-to-dockerhub-operator.yml/badge.svg)](https://github.com/rossonet/kettle-operator/actions/workflows/publish-to-dockerhub-operator.yml)\n[![Build and publish docker images of runner components to DockerHub](https://github.com/rossonet/kettle-operator/actions/workflows/publish-to-dockerhub-runners.yml/badge.svg)](https://github.com/rossonet/kettle-operator/actions/workflows/publish-to-dockerhub-runners.yml)\n[![Build and publish docker image of operator to GitHub Registry](https://github.com/rossonet/kettle-operator/actions/workflows/publish-to-github-registry-operator.yml/badge.svg)](https://github.com/rossonet/kettle-operator/actions/workflows/publish-to-github-registry-operator.yml)\n[![Build and publish docker images of runner components to GitHub Registry](https://github.com/rossonet/kettle-operator/actions/workflows/publish-to-github-registry-runners.yml/badge.svg)](https://github.com/rossonet/kettle-operator/actions/workflows/publish-to-github-registry-runners.yml)\n[![Gitpod ready-to-code](https://img.shields.io/badge/Gitpod-ready--to--code-blue?logo=gitpod)](https://gitpod.io/#https://github.com/rossonet/kettle-operator)\n[![Codacy Badge](https://app.codacy.com/project/badge/Grade/f3ae38d406804dfc844d94bcff9cc9a7)](https://www.codacy.com/gh/rossonet/kettle-operator/dashboard?utm_source=github.com\u0026amp;utm_medium=referral\u0026amp;utm_content=rossonet/kettle-operator\u0026amp;utm_campaign=Badge_Grade)\n[![Contributor Covenant](https://img.shields.io/badge/Contributor%20Covenant-2.1-4baaaa.svg)](code_of_conduct.md) \n\n## Install on Kubernetes\n\n```\nkubectl apply -f https://raw.githubusercontent.com/rossonet/kettle-operator/main/kubernetes/operator.yaml\n```\n\n## Examples\n\n### Repository\n\nTo create a repository you can use a [configuration file like this](https://github.com/rossonet/kettle-operator/blob/main/kubernetes/examples/repository.yaml):\n```\nkubectl apply -f https://raw.githubusercontent.com/rossonet/kettle-operator/main/kubernetes/examples/repository.yaml\n```\n\nTo get the repository status:\n\n```\n[andrea@legion-rossonet-com kettle-operator]$ kubectl -n test-namespace get kr\nNAME                  AGE\nrepository-example1   45m\n[andrea@legion-rossonet-com kettle-operator]$ kubectl -n test-namespace describe kr repository-example1\nName:         repository-example1\nNamespace:    test-namespace\nLabels:       \u003cnone\u003e\nAnnotations:  \u003cnone\u003e\nAPI Version:  kettle.rossonet.net/v1\nKind:         KettleRepository\nMetadata:\n  Creation Timestamp:  2022-08-02T16:34:16Z\n  Generation:          1\n  Managed Fields:\n    API Version:  kettle.rossonet.net/v1\n    Fields Type:  FieldsV1\n    fieldsV1:\n      f:metadata:\n        f:annotations:\n          .:\n          f:kubectl.kubernetes.io/last-applied-configuration:\n      f:spec:\n        .:\n        f:databaseName:\n        f:replicas:\n        f:repositoryPassword:\n        f:repositoryUrl:\n        f:repositoryUsername:\n    Manager:      kubectl-client-side-apply\n    Operation:    Update\n    Time:         2022-08-02T16:34:16Z\n    API Version:  kettle.rossonet.net/v1\n    Fields Type:  FieldsV1\n    fieldsV1:\n      f:status:\n        .:\n        f:returnCode:\n        f:totalJobs:\n        f:totalTransformations:\n    Manager:         okhttp\n    Operation:       Update\n    Subresource:     status\n    Time:            2022-08-02T16:34:16Z\n  Resource Version:  432790\n  UID:               68ee6597-70aa-49dd-8196-c616dbaca77b\nSpec:\n  Database Name:        kettle\n  Replicas:             1\n  Repository Password:  password1\n  Repository URL:       https://github.com/rossonet/kettle-operator/raw/main/kubernetes/examples/support_data/kettle.sql.gz\n  Repository Username:  kettle_user\nStatus:\n  Return Code:            SYNCHRONIZED\n  Total Jobs:             0\n  Total Transformations:  0\nEvents:                   \u003cnone\u003e\n```\n\nIf you want dump the repository datas:\n```\nREPOSITORY_POD_NAME=\u003cinsert the pod name here\u003e\nDATABASE=\u003cinsert database name\u003e\nDATABASE_USERNAME=\u003cinsert database username\u003e\nkubectl -n test-namespace exec -ti $REPOSITORY_POD_NAME -- sh -c \"pg_dump -U $DATABASE_USERNAME $DATABASE | gzip \u003e /tmp/$DATABASE.sql.gz\" \u0026\u0026 kubectl -n test-namespace cp $REPOSITORY_POD_NAME:/tmp/$DATABASE.sql.gz ./kubernetes/examples/support_data/$DATABASE.sql.gz\n```\n\n### Spoon IDE\n\nYou can create a Spoon IDE to edit the repository datas. [Use this example file](https://github.com/rossonet/kettle-operator/blob/main/kubernetes/examples/spoon-ide.yaml)\n```\nkubectl apply -f https://raw.githubusercontent.com/rossonet/kettle-operator/main/kubernetes/examples/spoon-ide.yaml\n```\n\nYou can access the IDE with a Browser\n![NOVNC on Spoon IDE](https://github.com/rossonet/kettle-operator/raw/main/artwork/screen/spoon-ide.png)\n\nTo get the IDE status:\n```\n[andrea@legion-rossonet-com kettle-operator]$ kubectl -n test-namespace get ki\nNAME           AGE\nide-example1   7m9s\n[andrea@legion-rossonet-com kettle-operator]$ kubectl -n test-namespace describe ki ide-example1\nName:         ide-example1\nNamespace:    test-namespace\nLabels:       \u003cnone\u003e\nAnnotations:  \u003cnone\u003e\nAPI Version:  kettle.rossonet.net/v1\nKind:         KettleIde\nMetadata:\n  Creation Timestamp:  2022-08-02T17:27:30Z\n  Generation:          1\n  Managed Fields:\n    API Version:  kettle.rossonet.net/v1\n    Fields Type:  FieldsV1\n    fieldsV1:\n      f:metadata:\n        f:annotations:\n          .:\n          f:kubectl.kubernetes.io/last-applied-configuration:\n      f:spec:\n        .:\n        f:path:\n        f:servicePort:\n    Manager:      kubectl-client-side-apply\n    Operation:    Update\n    Time:         2022-08-02T17:27:30Z\n    API Version:  kettle.rossonet.net/v1\n    Fields Type:  FieldsV1\n    fieldsV1:\n      f:status:\n        .:\n        f:returnCode:\n    Manager:         okhttp\n    Operation:       Update\n    Subresource:     status\n    Time:            2022-08-02T17:27:31Z\n  Resource Version:  435232\n  UID:               06571d2b-33cb-47ac-b03a-a3e75c81efc5\nSpec:\n  Path:          /ide1\n  Service Port:  443\nStatus:\n  Return Code:  INIT\nEvents:         \u003cnone\u003e\n```\n\n### Transformation\n\n[Transformation example](https://github.com/rossonet/kettle-operator/blob/main/kubernetes/examples/transformation.yaml)\n```\nkubectl apply -f https://raw.githubusercontent.com/rossonet/kettle-operator/main/kubernetes/examples/transformation.yaml\n```\n\n```\n[andrea@legion-rossonet-com kettle-operator]$ kubectl -n test-namespace get kt\nNAME                     AGE\ntrasformation-example1   35s\n\n\n[andrea@legion-rossonet-com kettle-operator]$ kubectl -n test-namespace describe kt trasformation-example1\nName:         trasformation-example1\nNamespace:    test-namespace\nLabels:       \u003cnone\u003e\nAnnotations:  \u003cnone\u003e\nAPI Version:  kettle.rossonet.net/v1\nKind:         KettleTransformation\nMetadata:\n  Creation Timestamp:  2022-08-02T17:42:15Z\n  Generation:          1\n  Managed Fields:\n    API Version:  kettle.rossonet.net/v1\n    Fields Type:  FieldsV1\n    fieldsV1:\n      f:metadata:\n        f:annotations:\n          .:\n          f:kubectl.kubernetes.io/last-applied-configuration:\n      f:spec:\n        .:\n        f:dir:\n        f:level:\n        f:pass:\n        f:rep:\n        f:trans:\n        f:user:\n    Manager:      kubectl-client-side-apply\n    Operation:    Update\n    Time:         2022-08-02T17:42:15Z\n    API Version:  kettle.rossonet.net/v1\n    Fields Type:  FieldsV1\n    fieldsV1:\n      f:status:\n        .:\n        f:returnCodeDescription:\n    Manager:         okhttp\n    Operation:       Update\n    Subresource:     status\n    Time:            2022-08-02T17:42:15Z\n  Resource Version:  436041\n  UID:               4c4bb405-0681-4278-a5eb-215140d284d0\nSpec:\n  Dir:    /examples\n  Level:  Debug\n  Pass:   admin\n  Rep:    Repository repository-example1\n  Trans:  transformation_example\n  User:   admin\nStatus:\n  Return Code Description:  INIT\nEvents:                     \u003cnone\u003e\n\n\n[andrea@legion-rossonet-com kettle-operator]$ kubectl -n test-namespace describe po trasformation-example1-ch92z \nName:         trasformation-example1-ch92z\nNamespace:    test-namespace\nPriority:     0\nNode:         minikube/192.168.39.147\nStart Time:   Tue, 02 Aug 2022 19:42:15 +0200\nLabels:       app=trasformation-example1\n              app.kubernetes.io/managed-by=kettle-operator\n              app.kubernetes.io/part-of=trasformation-example1\n              controller-uid=b0778400-088a-4603-8f81-68a87818fcf7\n              job-name=trasformation-example1\nAnnotations:  \u003cnone\u003e\nStatus:       Succeeded\nIP:           172.17.0.8\nIPs:\n  IP:           172.17.0.8\nControlled By:  Job/trasformation-example1\nContainers:\n  trasformation-example1:\n    Container ID:  docker://f7681596981af671968508db1d59f6f42eda55b83bb71feadcf855cb8146b844\n    Image:         rossonet/kettle-runner:latest\n    Image ID:      docker-pullable://rossonet/kettle-runner@sha256:b55d0e314aecaa213992af2b498d19f804b7449416150cc4e28ac5a1bf299f8f\n    Port:          \u003cnone\u003e\n    Host Port:     \u003cnone\u003e\n    Command:\n      /bin/sh\n      -c\n    Args:\n      mkdir -p /root/.kettle ; cp /data/repositories.xml /root/.kettle/repositories.xml ; /data-integration/pan.sh -dir='/examples' -level='Debug' -pass='admin' -rep='Repository repository-example1' -trans='transformation_example' -user='admin'\n    State:          Terminated\n      Reason:       Completed\n      Exit Code:    0\n      Started:      Tue, 02 Aug 2022 19:42:18 +0200\n      Finished:     Tue, 02 Aug 2022 19:42:45 +0200\n    Ready:          False\n    Restart Count:  0\n    Environment:    \u003cnone\u003e\n    Mounts:\n      /data from repositories-config (rw)\n      /var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-dv279 (ro)\nConditions:\n  Type              Status\n  Initialized       True \n  Ready             False \n  ContainersReady   False \n  PodScheduled      True \nVolumes:\n  repositories-config:\n    Type:      ConfigMap (a volume populated by a ConfigMap)\n    Name:      trasformation-example1\n    Optional:  false\n  kube-api-access-dv279:\n    Type:                    Projected (a volume that contains injected data from multiple sources)\n    TokenExpirationSeconds:  3607\n    ConfigMapName:           kube-root-ca.crt\n    ConfigMapOptional:       \u003cnil\u003e\n    DownwardAPI:             true\nQoS Class:                   BestEffort\nNode-Selectors:              \u003cnone\u003e\nTolerations:                 node.kubernetes.io/not-ready:NoExecute op=Exists for 300s\n                             node.kubernetes.io/unreachable:NoExecute op=Exists for 300s\nEvents:\n  Type    Reason     Age   From               Message\n  ----    ------     ----  ----               -------\n  Normal  Scheduled  69s   default-scheduler  Successfully assigned test-namespace/trasformation-example1-ch92z to minikube\n  Normal  Pulling    68s   kubelet            Pulling image \"rossonet/kettle-runner:latest\"\n  Normal  Pulled     66s   kubelet            Successfully pulled image \"rossonet/kettle-runner:latest\" in 1.484237666s\n  Normal  Created    66s   kubelet            Created container trasformation-example1\n  Normal  Started    66s   kubelet            Started container trasformation-example1\n\n\n[andrea@legion-rossonet-com kettle-operator]$ kubectl -n test-namespace logs trasformation-example1-ch92z \n#######################################################################\nWARNING:  no libwebkitgtk-1.0 detected, some features will be unavailable\n    Consider installing the package with apt-get or yum.\n    e.g. 'sudo apt-get install libwebkitgtk-1.0-0'\n#######################################################################\n17:42:20,832 INFO  [KarafBoot] Checking to see if org.pentaho.clean.karaf.cache is enabled\n17:42:20,886 INFO  [KarafInstance] \n*******************************************************************************\n*** Karaf Instance Number: 1 at /data-integration/./system/karaf/caches/pan ***\n***   /data-1                                                               ***\n*** Karaf Port:8802                                                         ***\n*** OSGI Service Port:9051                                                  ***\n*******************************************************************************\nAug 02, 2022 5:42:21 PM org.apache.karaf.main.Main launch\nINFO: Installing and starting initial bundles\nAug 02, 2022 5:42:21 PM org.apache.karaf.main.Main launch\nINFO: All initial bundles installed and set to start\nAug 02, 2022 5:42:21 PM org.apache.karaf.main.Main$KarafLockCallback lockAcquired\nINFO: Lock acquired. Setting startlevel to 100\nAug 02, 2022 5:42:21 PM org.apache.felix.fileinstall.internal.Util$DefaultLogger log\nINFO: Creating configuration {org.ops4j.pax.logging} from /data-integration/system/karaf/etc/org.ops4j.pax.logging.cfg\nAug 02, 2022 5:42:21 PM org.apache.felix.fileinstall.internal.Util$DefaultLogger log\nINFO: Creating configuration {org.apache.karaf.features.repos} from /data-integration/system/karaf/etc/org.apache.karaf.features.repos.cfg\nAug 02, 2022 5:42:21 PM org.apache.felix.fileinstall.internal.Util$DefaultLogger log\nINFO: Creating configuration {org.apache.karaf.management} from /data-integration/system/karaf/etc/org.apache.karaf.management.cfg\nAug 02, 2022 5:42:21 PM org.apache.felix.fileinstall.internal.Util$DefaultLogger log\nINFO: Creating configuration {mondrian} from /data-integration/system/karaf/etc/mondrian.cfg\nAug 02, 2022 5:42:21 PM org.apache.felix.fileinstall.internal.Util$DefaultLogger log\nINFO: Creating configuration {org.apache.karaf.command.acl.jaas} from /data-integration/system/karaf/etc/org.apache.karaf.command.acl.jaas.cfg\nAug 02, 2022 5:42:21 PM org.apache.felix.fileinstall.internal.Util$DefaultLogger log\nINFO: Creating configuration {org.apache.karaf.command.acl.kar} from /data-integration/system/karaf/etc/org.apache.karaf.command.acl.kar.cfg\nAug 02, 2022 5:42:21 PM org.apache.felix.fileinstall.internal.Util$DefaultLogger log\nINFO: Creating configuration {org.apache.karaf.log} from /data-integration/system/karaf/etc/org.apache.karaf.log.cfg\nAug 02, 2022 5:42:21 PM org.apache.felix.fileinstall.internal.Util$DefaultLogger log\nINFO: Creating configuration {org.ops4j.pax.web} from /data-integration/system/karaf/etc/org.ops4j.pax.web.cfg\nAug 02, 2022 5:42:21 PM org.apache.felix.fileinstall.internal.Util$DefaultLogger log\nINFO: Creating configuration {org.apache.karaf.command.acl.system} from /data-integration/system/karaf/etc/org.apache.karaf.command.acl.system.cfg\nAug 02, 2022 5:42:21 PM org.apache.felix.fileinstall.internal.Util$DefaultLogger log\nINFO: Creating configuration {org.apache.karaf.shell} from /data-integration/system/karaf/etc/org.apache.karaf.shell.cfg\nAug 02, 2022 5:42:21 PM org.apache.felix.fileinstall.internal.Util$DefaultLogger log\nINFO: Creating configuration {profile} from /data-integration/system/karaf/etc/profile.cfg\nAug 02, 2022 5:42:21 PM org.apache.felix.fileinstall.internal.Util$DefaultLogger log\nINFO: Creating configuration {org.apache.karaf.command.acl.bundle} from /data-integration/system/karaf/etc/org.apache.karaf.command.acl.bundle.cfg\nAug 02, 2022 5:42:21 PM org.apache.felix.fileinstall.internal.Util$DefaultLogger log\nINFO: Creating configuration {org.apache.karaf.features} from /data-integration/system/karaf/etc/org.apache.karaf.features.cfg\nAug 02, 2022 5:42:21 PM org.apache.felix.fileinstall.internal.Util$DefaultLogger log\nINFO: Creating configuration {pentaho.shim} from /data-integration/system/karaf/etc/pentaho.shim.cfg\nAug 02, 2022 5:42:21 PM org.apache.felix.fileinstall.internal.Util$DefaultLogger log\nINFO: Creating configuration {org.apache.karaf.command.acl.feature} from /data-integration/system/karaf/etc/org.apache.karaf.command.acl.feature.cfg\nAug 02, 2022 5:42:21 PM org.apache.felix.fileinstall.internal.Util$DefaultLogger log\nINFO: Creating configuration {org.apache.karaf.command.acl.config} from /data-integration/system/karaf/etc/org.apache.karaf.command.acl.config.cfg\nAug 02, 2022 5:42:21 PM org.apache.felix.fileinstall.internal.Util$DefaultLogger log\nINFO: Creating configuration {org.apache.felix.fileinstall~deploy} from /data-integration/system/karaf/etc/org.apache.felix.fileinstall-deploy.cfg\nAug 02, 2022 5:42:21 PM org.apache.felix.fileinstall.internal.Util$DefaultLogger log\nINFO: Creating configuration {jmx.acl.org.apache.karaf.config} from /data-integration/system/karaf/etc/jmx.acl.org.apache.karaf.config.cfg\nAug 02, 2022 5:42:21 PM org.apache.felix.fileinstall.internal.Util$DefaultLogger log\nINFO: Creating configuration {org.ops4j.pax.url.mvn} from /data-integration/system/karaf/etc/org.ops4j.pax.url.mvn.cfg\nAug 02, 2022 5:42:21 PM org.apache.felix.fileinstall.internal.Util$DefaultLogger log\nINFO: Creating configuration {org.apache.karaf.kar} from /data-integration/system/karaf/etc/org.apache.karaf.kar.cfg\nAug 02, 2022 5:42:21 PM org.apache.felix.fileinstall.internal.Util$DefaultLogger log\nINFO: Creating configuration {org.pentaho.caching~default} from /data-integration/system/karaf/etc/org.pentaho.caching-default.cfg\nAug 02, 2022 5:42:21 PM org.apache.felix.fileinstall.internal.Util$DefaultLogger log\nINFO: Creating configuration {org.apache.karaf.jaas} from /data-integration/system/karaf/etc/org.apache.karaf.jaas.cfg\nAug 02, 2022 5:42:21 PM org.apache.felix.fileinstall.internal.Util$DefaultLogger log\nINFO: Creating configuration {org.apache.karaf.command.acl.scope_bundle} from /data-integration/system/karaf/etc/org.apache.karaf.command.acl.scope_bundle.cfg\nAug 02, 2022 5:42:21 PM org.apache.felix.fileinstall.internal.Util$DefaultLogger log\nINFO: Creating configuration {org.apache.aries.rsa.provider.fastbin} from /data-integration/system/karaf/etc/org.apache.aries.rsa.provider.fastbin.cfg\nAug 02, 2022 5:42:21 PM org.apache.felix.fileinstall.internal.Util$DefaultLogger log\nINFO: Creating configuration {org.pentaho.pdi.engine.spark} from /data-integration/system/karaf/etc/org.pentaho.pdi.engine.spark.cfg\nAug 02, 2022 5:42:21 PM org.apache.felix.fileinstall.internal.Util$DefaultLogger log\nINFO: Creating configuration {org.ops4j.pax.transx.tm.geronimo} from /data-integration/system/karaf/etc/org.ops4j.pax.transx.tm.geronimo.cfg\nAug 02, 2022 5:42:21 PM org.apache.felix.fileinstall.internal.Util$DefaultLogger log\nINFO: Creating configuration {org.apache.karaf.command.acl.shell} from /data-integration/system/karaf/etc/org.apache.karaf.command.acl.shell.cfg\nAug 02, 2022 5:42:21 PM org.apache.felix.fileinstall.internal.Util$DefaultLogger log\nINFO: Creating configuration {jmx.acl.org.apache.karaf.bundle} from /data-integration/system/karaf/etc/jmx.acl.org.apache.karaf.bundle.cfg\nAug 02, 2022 5:42:21 PM org.apache.felix.fileinstall.internal.Util$DefaultLogger log\nINFO: Creating configuration {org.apache.felix.eventadmin.impl.EventAdmin} from /data-integration/system/karaf/etc/org.apache.felix.eventadmin.impl.EventAdmin.cfg\nAug 02, 2022 5:42:21 PM org.apache.felix.fileinstall.internal.Util$DefaultLogger log\nINFO: Creating configuration {org.pentaho.features} from /data-integration/system/karaf/etc-pan/org.pentaho.features.cfg\nAug 02, 2022 5:42:24 PM org.pentaho.caching.impl.PentahoCacheManagerFactory$RegistrationHandler$1 onSuccess\nINFO: New Caching Service registered\nAug 02, 2022 5:42:26 PM org.pentaho.caching.impl.PentahoCacheManagerFactory$RegistrationHandler$1 onSuccess\nINFO: New Caching Service registered\nAug 02, 2022 5:42:28 PM org.apache.aries.spifly.BaseActivator log\nINFO: Registered provider org.eclipse.jetty.http.Http1FieldPreEncoder of service org.eclipse.jetty.http.HttpFieldPreEncoder in bundle org.eclipse.jetty.http\nAug 02, 2022 5:42:28 PM org.apache.aries.spifly.BaseActivator log\nINFO: Registered provider org.eclipse.jetty.security.jaspi.JaspiAuthenticatorFactory of service org.eclipse.jetty.security.Authenticator$Factory in bundle org.eclipse.jetty.security.jaspi\nAug 02, 2022 5:42:28 PM org.apache.aries.spifly.BaseActivator log\nINFO: Registered provider org.eclipse.jetty.websocket.common.extensions.identity.IdentityExtension of service org.eclipse.jetty.websocket.api.extensions.Extension in bundle org.eclipse.jetty.websocket.common\nAug 02, 2022 5:42:28 PM org.apache.aries.spifly.BaseActivator log\nINFO: Registered provider org.eclipse.jetty.websocket.common.extensions.fragment.FragmentExtension of service org.eclipse.jetty.websocket.api.extensions.Extension in bundle org.eclipse.jetty.websocket.common\nAug 02, 2022 5:42:28 PM org.apache.aries.spifly.BaseActivator log\nINFO: Registered provider org.eclipse.jetty.websocket.common.extensions.compress.PerMessageDeflateExtension of service org.eclipse.jetty.websocket.api.extensions.Extension in bundle org.eclipse.jetty.websocket.common\nAug 02, 2022 5:42:28 PM org.apache.aries.spifly.BaseActivator log\nINFO: Registered provider org.eclipse.jetty.websocket.common.extensions.compress.DeflateFrameExtension of service org.eclipse.jetty.websocket.api.extensions.Extension in bundle org.eclipse.jetty.websocket.common\nAug 02, 2022 5:42:28 PM org.apache.aries.spifly.BaseActivator log\nINFO: Registered provider org.eclipse.jetty.websocket.common.extensions.compress.XWebkitDeflateFrameExtension of service org.eclipse.jetty.websocket.api.extensions.Extension in bundle org.eclipse.jetty.websocket.common\nAug 02, 2022 5:42:28 PM org.apache.aries.spifly.BaseActivator log\nINFO: Registered provider org.eclipse.jetty.websocket.jsr356.JettyClientContainerProvider of service javax.websocket.ContainerProvider in bundle org.eclipse.jetty.websocket.javax.websocket\nAug 02, 2022 5:42:28 PM org.apache.aries.spifly.BaseActivator log\nINFO: Registered provider org.eclipse.jetty.websocket.server.NativeWebSocketServletContainerInitializer of service javax.servlet.ServletContainerInitializer in bundle org.eclipse.jetty.websocket.server\nAug 02, 2022 5:42:28 PM org.apache.aries.spifly.BaseActivator log\nINFO: Registered provider org.eclipse.jetty.websocket.jsr356.server.deploy.WebSocketServerContainerInitializer of service javax.servlet.ServletContainerInitializer in bundle org.eclipse.jetty.websocket.javax.websocket.server\nAug 02, 2022 5:42:28 PM org.apache.aries.spifly.BaseActivator log\nINFO: Registered provider org.eclipse.jetty.websocket.jsr356.server.ContainerDefaultConfigurator of service javax.websocket.server.ServerEndpointConfig$Configurator in bundle org.eclipse.jetty.websocket.javax.websocket.server\n2022-08-02 17:42:28.602:INFO::features-3-thread-1: Logging initialized @9775ms to org.eclipse.jetty.util.log.StdErrLog\nAug 02, 2022 5:42:29 PM org.apache.cxf.transport.http.osgi.ServletExporter updated\nINFO: Registering new instance of \"/cxf\" servlet\nAug 02, 2022 5:42:29 PM org.apache.cxf.bus.osgi.CXFExtensionBundleListener addExtensions\nINFO: Adding the extensions from bundle org.apache.cxf.cxf-rt-management (128) [org.apache.cxf.management.InstrumentationManager]\nAug 02, 2022 5:42:29 PM org.apache.cxf.bus.osgi.CXFExtensionBundleListener addExtensions\nINFO: Adding the extensions from bundle org.apache.cxf.cxf-rt-rs-service-description (133) [org.apache.cxf.jaxrs.model.wadl.WadlGenerator]\nAug 02, 2022 5:42:29 PM org.apache.cxf.bus.osgi.CXFExtensionBundleListener addExtensions\nINFO: Adding the extensions from bundle org.apache.cxf.cxf-rt-transports-http (135) [org.apache.cxf.transport.http.HTTPTransportFactory, org.apache.cxf.transport.http.HTTPWSDLExtensionLoader, org.apache.cxf.transport.http.policy.HTTPClientAssertionBuilder, org.apache.cxf.transport.http.policy.HTTPServerAssertionBuilder, org.apache.cxf.transport.http.policy.NoOpPolicyInterceptorProvider]\nAug 02, 2022 5:42:29 PM org.apache.felix.fileinstall.internal.Util$DefaultLogger log\nINFO: Creating configuration {pentaho.big.data.impl.cluster} from /data-integration/system/karaf/etc/pentaho.big.data.impl.cluster.cfg\nAug 02, 2022 5:42:29 PM org.apache.cxf.endpoint.ServerImpl initDestination\nINFO: Setting the server's publish address to be /i18n\n2022-08-02 17:42:29.943:INFO:oejws.WebSocketServerFactory:CM Configuration Updater (ManagedService Update: pid=[org.apache.cxf.osgi]): No DecoratedObjectFactory provided, using new org.eclipse.jetty.util.DecoratedObjectFactory[decorators=1]\n2022-08-02 17:42:30.091:INFO:oejs.session:CM Configuration Updater (ManagedService Update: pid=[org.apache.cxf.osgi]): DefaultSessionIdManager workerName=node0\n2022-08-02 17:42:30.092:INFO:oejs.session:CM Configuration Updater (ManagedService Update: pid=[org.apache.cxf.osgi]): No SessionScavenger set, using defaults\n2022-08-02 17:42:30.094:INFO:oejs.session:CM Configuration Updater (ManagedService Update: pid=[org.apache.cxf.osgi]): node0 Scavenging every 660000ms\n2022-08-02 17:42:30.166:INFO:oejsh.ContextHandler:CM Configuration Updater (ManagedService Update: pid=[org.apache.cxf.osgi]): Started HttpServiceContext{httpContext=DefaultHttpContext [bundle=org.apache.cxf.cxf-rt-transports-http [135], contextID=default]}\n2022-08-02 17:42:30.194:INFO:oejws.WebSocketServerFactory:features-3-thread-1: No DecoratedObjectFactory provided, using new org.eclipse.jetty.util.DecoratedObjectFactory[decorators=1]\n2022-08-02 17:42:30.202:INFO:oejs.Server:CM Configuration Updater (ManagedService Update: pid=[org.apache.cxf.osgi]): jetty-9.4.43.v20210629; built: 2021-06-30T11:07:22.254Z; git: 526006ecfa3af7f1a27ef3a288e2bef7ea9dd7e8; jvm 11.0.15+10-Ubuntu-0ubuntu0.20.04.1\n2022-08-02 17:42:30.203:INFO:oejsh.ContextHandler:features-3-thread-1: Started HttpServiceContext{httpContext=DefaultHttpContext [bundle=pentaho-i18n-webservice-bundle [220], contextID=default]}\n2022-08-02 17:42:30.233:INFO:oejs.AbstractConnector:CM Configuration Updater (ManagedService Update: pid=[org.apache.cxf.osgi]): Started default@244f9d23{HTTP/1.1, (http/1.1)}{0.0.0.0:9051}\n2022-08-02 17:42:30.233:INFO:oejs.Server:CM Configuration Updater (ManagedService Update: pid=[org.apache.cxf.osgi]): Started @11406ms\nAug 02, 2022 5:42:33 PM org.apache.felix.fileinstall.internal.Util$DefaultLogger log\nINFO: Creating configuration {pentaho.metaverse} from /data-integration/system/karaf/etc/pentaho.metaverse.cfg\nAug 02, 2022 5:42:36 PM org.apache.felix.fileinstall.internal.Util$DefaultLogger log\nINFO: Creating configuration {pentaho.geo.roles} from /data-integration/system/karaf/etc/pentaho.geo.roles.cfg\n2022-08-02 17:42:37.699:INFO:oejws.WebSocketServerFactory:features-3-thread-1: No DecoratedObjectFactory provided, using new org.eclipse.jetty.util.DecoratedObjectFactory[decorators=1]\n2022-08-02 17:42:37.719:INFO:oejsh.ContextHandler:features-3-thread-1: Started HttpServiceContext{httpContext=DefaultHttpContext [bundle=pentaho-webjars-angular-sanitize [255], contextID=default]}\n2022-08-02 17:42:37.876:INFO:oejws.WebSocketServerFactory:features-3-thread-1: No DecoratedObjectFactory provided, using new org.eclipse.jetty.util.DecoratedObjectFactory[decorators=1]\n2022-08-02 17:42:37.882:INFO:oejsh.ContextHandler:features-3-thread-1: Started HttpServiceContext{httpContext=DefaultHttpContext [bundle=org.pentaho.requirejs-manager-impl [250], contextID=default]}\n2022-08-02 17:42:37.900:INFO:oejws.WebSocketServerFactory:features-3-thread-1: No DecoratedObjectFactory provided, using new org.eclipse.jetty.util.DecoratedObjectFactory[decorators=1]\n2022-08-02 17:42:37.902:INFO:oejsh.ContextHandler:features-3-thread-1: Started HttpServiceContext{httpContext=DefaultHttpContext [bundle=pentaho-webjars-angular-route [254], contextID=default]}\n2022-08-02 17:42:37.938:INFO:oejws.WebSocketServerFactory:features-3-thread-1: No DecoratedObjectFactory provided, using new org.eclipse.jetty.util.DecoratedObjectFactory[decorators=1]\n2022-08-02 17:42:37.941:INFO:oejsh.ContextHandler:features-3-thread-1: Started HttpServiceContext{httpContext=DefaultHttpContext [bundle=pentaho-webjars-angular-animate [253], contextID=default]}\nAug 02, 2022 5:42:38 PM org.apache.cxf.endpoint.ServerImpl initDestination\nINFO: Setting the server's publish address to be /marketplace\nAug 02, 2022 5:42:38 PM org.apache.felix.fileinstall.internal.Util$DefaultLogger log\nINFO: Creating configuration {pentaho.marketplace.di} from /data-integration/system/karaf/etc/pentaho.marketplace.di.cfg\n2022-08-02 17:42:38.912:INFO:oejws.WebSocketServerFactory:features-3-thread-1: No DecoratedObjectFactory provided, using new org.eclipse.jetty.util.DecoratedObjectFactory[decorators=1]\n2022-08-02 17:42:38.924:INFO:oejsh.ContextHandler:features-3-thread-1: Started HttpServiceContext{httpContext=DefaultHttpContext [bundle=pentaho-webjars-angular-ui-bootstrap-bower [257], contextID=default]}\n2022-08-02 17:42:39.362:INFO:oejws.WebSocketServerFactory:FelixDispatchQueue: No DecoratedObjectFactory provided, using new org.eclipse.jetty.util.DecoratedObjectFactory[decorators=1]\n2022-08-02 17:42:39.370:INFO:oejws.WebSocketServerFactory:features-3-thread-1: No DecoratedObjectFactory provided, using new org.eclipse.jetty.util.DecoratedObjectFactory[decorators=1]\n2022-08-02 17:42:39.377:INFO:oejsh.ContextHandler:features-3-thread-1: Started HttpServiceContext{httpContext=DefaultHttpContext [bundle=pentaho-webjars-jquery [258], contextID=default]}\n2022-08-02 17:42:39.391:INFO:oejsh.ContextHandler:FelixDispatchQueue: Started HttpServiceContext{httpContext=DefaultHttpContext [bundle=pentaho-marketplace-di [251], contextID=default]}\n2022-08-02 17:42:39.418:INFO:oejws.WebSocketServerFactory:features-3-thread-1: No DecoratedObjectFactory provided, using new org.eclipse.jetty.util.DecoratedObjectFactory[decorators=1]\n2022-08-02 17:42:39.426:INFO:oejsh.ContextHandler:features-3-thread-1: Started HttpServiceContext{httpContext=DefaultHttpContext [bundle=pentaho-webjars-angular-translate [256], contextID=default]}\n2022-08-02 17:42:39.462:INFO:oejws.WebSocketServerFactory:features-3-thread-1: No DecoratedObjectFactory provided, using new org.eclipse.jetty.util.DecoratedObjectFactory[decorators=1]\n2022-08-02 17:42:39.466:INFO:oejsh.ContextHandler:features-3-thread-1: Started HttpServiceContext{httpContext=DefaultHttpContext [bundle=pentaho-webjars-angular [252], contextID=default]}\n2022-08-02 17:42:39.557:INFO:oejws.WebSocketServerFactory:features-3-thread-1: No DecoratedObjectFactory provided, using new org.eclipse.jetty.util.DecoratedObjectFactory[decorators=1]\n2022-08-02 17:42:39.559:INFO:oejsh.ContextHandler:features-3-thread-1: Started HttpServiceContext{httpContext=DefaultHttpContext [bundle=pentaho-webjars-underscore [259], contextID=default]}\nAug 02, 2022 5:42:39 PM org.apache.cxf.endpoint.ServerImpl initDestination\nINFO: Setting the server's publish address to be /marketplace\n17:42:42,713 INFO  [DriverManager] Installing driver kars.\n17:42:42,715 INFO  [DriverManager] 0 drivers will be installed.\n17:42:42,716 INFO  [DriverManager] Finished installing drivers kars.\n2022/08/02 17:42:43 - Pan - Logging is at level : Debug\nArguments:\nrep          : Repository repository-example1\nuser         : admin\ntrustuser    : \npass         : admin\ntrans        : transformation_example\ndir          : /examples\nfile         : \nlevel        : Debug\nlogfile      : \nlog          : \nlistdir      : \nlisttrans    : \nlistrep      : \nexprep       : \nnorep        : \nsafemode     : \nversion      : \njarfile      : \nparam        : null\nlistparam    : \ninitialDir   : /data-integration/\nstepname     : \ncopynum      : \nzip          : \nuuid         : \nmetrics      : \nmaxloglines  : \nmaxlogtimeou : \n\n2022/08/02 17:42:43 - Pan - Start of run.\n2022/08/02 17:42:43 - Pan - Allocate new transformation.\n2022/08/02 17:42:43 - Pan - Starting to look at options...\n2022/08/02 17:42:43 - Pan - Parsing command line options.\n2022/08/02 17:42:43 - Pan - Loading available repositories.\n2022/08/02 17:42:43 - RepositoriesMeta - No repositories file found in the local directory: /data-integration/repositories.xml\n2022/08/02 17:42:43 - RepositoriesMeta - Reading repositories XML file: /root/.kettle/repositories.xml\n2022/08/02 17:42:43 - RepositoriesMeta - We have 1 connections...\n2022/08/02 17:42:43 - RepositoriesMeta - Looking at connection #0\n2022/08/02 17:42:43 - RepositoriesMeta - Read at connection: repository-example1\n2022/08/02 17:42:43 - RepositoriesMeta - We have 1 repositories...\n2022/08/02 17:42:43 - RepositoriesMeta - Looking at repository #0\n2022/08/02 17:42:43 - RepositoriesMeta - Read at repository: Repository repository-example1\n2022/08/02 17:42:43 - Pan - Finding repository [Repository repository-example1]\n2022/08/02 17:42:43 - Pan - Check supplied username and password.\n2022/08/02 17:42:43 - Pan - Allocate \u0026 connect to repository.\n2022/08/02 17:42:43 - Pan - Load the transformation info...\n2022/08/02 17:42:43 - Repository repository-example1 - Looking for the transformation [transformation_example] in directory [/examples]\n2022/08/02 17:42:43 - Repository repository-example1 - Loading transformation [transformation_example] from repository...\n2022/08/02 17:42:43 - Repository repository-example1 - Loading step with ID: 1\n2022/08/02 17:42:43 - Repository repository-example1 - Loading step with ID: 2\n2022/08/02 17:42:43 - Repository repository-example1 - Loading step with ID: 3\n2022/08/02 17:42:44 - Repository repository-example1 - Loading step with ID: 4\n2022/08/02 17:42:44 - Repository repository-example1 - ID_DIRECTORY=1\n2022/08/02 17:42:44 - Repository repository-example1 - Loaded the transformation [transformation_example] , directory == null : false\n2022/08/02 17:42:44 - Repository repository-example1 - Loaded the transformation [transformation_example] in directory /examples\n2022/08/02 17:42:44 - Pan - Allocate transformation...\n2022/08/02 17:42:44 - transformation_example - Dispatching started for transformation [transformation_example]\n2022/08/02 17:42:44 - transformation_example - Nr of arguments detected:0 \n2022/08/02 17:42:44 - transformation_example - This is not a replay transformation\n2022/08/02 17:42:44 - transformation_example - I found 4 different steps to launch.\n2022/08/02 17:42:44 - transformation_example - Allocating rowsets...\n2022/08/02 17:42:44 - transformation_example -  Allocating rowsets for step 0 --\u003e Generate 100 rows\n2022/08/02 17:42:44 - transformation_example -   prevcopies = 1, nextcopies=1\n2022/08/02 17:42:44 - transformation_example - Transformation allocated new rowset [Generate 100 rows.0 - Secret key generator.0]\n2022/08/02 17:42:44 - transformation_example -  Allocated 1 rowsets for step 0 --\u003e Generate 100 rows  \n2022/08/02 17:42:44 - transformation_example -  Allocating rowsets for step 1 --\u003e Secret key generator\n2022/08/02 17:42:44 - transformation_example -   prevcopies = 1, nextcopies=1\n2022/08/02 17:42:44 - transformation_example - Transformation allocated new rowset [Secret key generator.0 - Add a checksum.0]\n2022/08/02 17:42:44 - transformation_example -  Allocated 2 rowsets for step 1 --\u003e Secret key generator  \n2022/08/02 17:42:44 - transformation_example -  Allocating rowsets for step 2 --\u003e Add a checksum\n2022/08/02 17:42:44 - transformation_example -   prevcopies = 1, nextcopies=1\n2022/08/02 17:42:44 - transformation_example - Transformation allocated new rowset [Add a checksum.0 - XML output.0]\n2022/08/02 17:42:44 - transformation_example -  Allocated 3 rowsets for step 2 --\u003e Add a checksum  \n2022/08/02 17:42:44 - transformation_example -  Allocating rowsets for step 3 --\u003e XML output\n2022/08/02 17:42:44 - transformation_example -  Allocated 3 rowsets for step 3 --\u003e XML output  \n2022/08/02 17:42:44 - transformation_example - Allocating Steps \u0026 StepData...\n2022/08/02 17:42:44 - transformation_example -  Transformation is about to allocate step [Generate 100 rows] of type [RowGenerator]\n2022/08/02 17:42:44 - transformation_example -   Step has nrcopies=1\n2022/08/02 17:42:44 - Generate 100 rows.0 - distribution activated\n2022/08/02 17:42:44 - Generate 100 rows.0 - Starting allocation of buffers \u0026 new threads...\n2022/08/02 17:42:44 - Generate 100 rows.0 - Step info: nrinput=0 nroutput=1\n2022/08/02 17:42:44 - Generate 100 rows.0 - output rel. is  1:1\n2022/08/02 17:42:44 - Generate 100 rows.0 - Found output rowset [Generate 100 rows.0 - Secret key generator.0]\n2022/08/02 17:42:44 - Generate 100 rows.0 - Finished dispatching\n2022/08/02 17:42:44 - transformation_example -  Transformation has allocated a new step: [Generate 100 rows].0\n2022/08/02 17:42:44 - transformation_example -  Transformation is about to allocate step [Secret key generator] of type [SecretKeyGenerator]\n2022/08/02 17:42:44 - transformation_example -   Step has nrcopies=1\n2022/08/02 17:42:44 - Secret key generator.0 - distribution de-activated\n2022/08/02 17:42:44 - Secret key generator.0 - Starting allocation of buffers \u0026 new threads...\n2022/08/02 17:42:44 - Secret key generator.0 - Step info: nrinput=1 nroutput=1\n2022/08/02 17:42:44 - Secret key generator.0 - Got previous step from [Secret key generator] #0 --\u003e Generate 100 rows\n2022/08/02 17:42:44 - Secret key generator.0 - input rel is 1:1\n2022/08/02 17:42:44 - Secret key generator.0 - Found input rowset [Generate 100 rows.0 - Secret key generator.0]\n2022/08/02 17:42:44 - Secret key generator.0 - output rel. is  1:1\n2022/08/02 17:42:44 - Secret key generator.0 - Found output rowset [Secret key generator.0 - Add a checksum.0]\n2022/08/02 17:42:44 - Secret key generator.0 - Finished dispatching\n2022/08/02 17:42:44 - transformation_example -  Transformation has allocated a new step: [Secret key generator].0\n2022/08/02 17:42:44 - transformation_example -  Transformation is about to allocate step [Add a checksum] of type [CheckSum]\n2022/08/02 17:42:44 - transformation_example -   Step has nrcopies=1\n2022/08/02 17:42:44 - Add a checksum.0 - distribution activated\n2022/08/02 17:42:44 - Add a checksum.0 - Starting allocation of buffers \u0026 new threads...\n2022/08/02 17:42:44 - Add a checksum.0 - Step info: nrinput=1 nroutput=1\n2022/08/02 17:42:44 - Add a checksum.0 - Got previous step from [Add a checksum] #0 --\u003e Secret key generator\n2022/08/02 17:42:44 - Add a checksum.0 - input rel is 1:1\n2022/08/02 17:42:44 - Add a checksum.0 - Found input rowset [Secret key generator.0 - Add a checksum.0]\n2022/08/02 17:42:44 - Add a checksum.0 - output rel. is  1:1\n2022/08/02 17:42:44 - Add a checksum.0 - Found output rowset [Add a checksum.0 - XML output.0]\n2022/08/02 17:42:44 - Add a checksum.0 - Finished dispatching\n2022/08/02 17:42:44 - transformation_example -  Transformation has allocated a new step: [Add a checksum].0\n2022/08/02 17:42:44 - transformation_example -  Transformation is about to allocate step [XML output] of type [XMLOutput]\n2022/08/02 17:42:44 - transformation_example -   Step has nrcopies=1\n2022/08/02 17:42:44 - XML output.0 - distribution activated\n2022/08/02 17:42:44 - XML output.0 - Starting allocation of buffers \u0026 new threads...\n2022/08/02 17:42:44 - XML output.0 - Step info: nrinput=1 nroutput=0\n2022/08/02 17:42:44 - XML output.0 - Got previous step from [XML output] #0 --\u003e Add a checksum\n2022/08/02 17:42:44 - XML output.0 - input rel is 1:1\n2022/08/02 17:42:44 - XML output.0 - Found input rowset [Add a checksum.0 - XML output.0]\n2022/08/02 17:42:44 - XML output.0 - Finished dispatching\n2022/08/02 17:42:44 - transformation_example -  Transformation has allocated a new step: [XML output].0\n2022/08/02 17:42:44 - transformation_example - This transformation can be replayed with replay date: 2022/08/02 17:42:44\n2022/08/02 17:42:44 - transformation_example - Initialising 4 steps...\n2022/08/02 17:42:44 - Generate 100 rows.0 - Released server socket on port 0\n2022/08/02 17:42:44 - Secret key generator.0 - Released server socket on port 0\n2022/08/02 17:42:44 - Add a checksum.0 - Released server socket on port 0\n2022/08/02 17:42:44 - XML output.0 - Released server socket on port 0\n2022/08/02 17:42:44 - XML output.0 - Opening output stream in encoding: UTF-8\n2022/08/02 17:42:44 - transformation_example - Step [Generate 100 rows.0] initialized flawlessly.\n2022/08/02 17:42:44 - transformation_example - Step [Secret key generator.0] initialized flawlessly.\n2022/08/02 17:42:44 - transformation_example - Step [Add a checksum.0] initialized flawlessly.\n2022/08/02 17:42:44 - transformation_example - Step [XML output.0] initialized flawlessly.\n2022/08/02 17:42:44 - Generate 100 rows.0 - Starting to run...\n2022/08/02 17:42:44 - Generate 100 rows.0 - Signaling 'output done' to 1 output rowsets.\n2022/08/02 17:42:44 - Generate 100 rows.0 - Finished processing (I=0, O=0, R=0, W=100, U=0, E=0)\n2022/08/02 17:42:44 - XML output.0 - Starting to run...\n2022/08/02 17:42:44 - transformation_example - Transformation has allocated 4 threads and 3 rowsets.\n2022/08/02 17:42:44 - Secret key generator.0 - Starting to run...\n2022/08/02 17:42:44 - Add a checksum.0 - Starting to run...\n2022/08/02 17:42:44 - Secret key generator.0 - Signaling 'output done' to 1 output rowsets.\n2022/08/02 17:42:44 - Secret key generator.0 - Finished processing (I=0, O=0, R=1001, W=1000, U=0, E=0)\n2022/08/02 17:42:44 - Add a checksum.0 - Signaling 'output done' to 1 output rowsets.\n2022/08/02 17:42:44 - Add a checksum.0 - Finished processing (I=0, O=0, R=1000, W=1000, U=0, E=0)\n2022/08/02 17:42:44 - XML output.0 - Signaling 'output done' to 0 output rowsets.\n2022/08/02 17:42:44 - XML output.0 - Finished processing (I=0, O=1000, R=1000, W=1000, U=0, E=0)\n2022/08/02 17:42:44 - transformation_example - searching for annotations\n2022/08/02 17:42:44 - transformation_example - no annotations found\n2022/08/02 17:42:44 - Carte - Installing timer to purge stale objects after 1440 minutes.\n2022/08/02 17:42:44 - Pan - Finished!\n2022/08/02 17:42:44 - Pan - Start=2022/08/02 17:42:44.359, Stop=2022/08/02 17:42:44.802\n2022/08/02 17:42:44 - Pan - Processing ended after 0 seconds.\n2022/08/02 17:42:44 - transformation_example -  \n2022/08/02 17:42:44 - transformation_example - Step Generate 100 rows.0 ended successfully, processed 100 lines. ( - lines/s)\n2022/08/02 17:42:44 - transformation_example - Step Secret key generator.0 ended successfully, processed 1001 lines. ( - lines/s)\n2022/08/02 17:42:44 - transformation_example - Step Add a checksum.0 ended successfully, processed 1000 lines. ( - lines/s)\n2022/08/02 17:42:44 - transformation_example - Step XML output.0 ended successfully, processed 1000 lines. ( - lines/s)\n```\n\n### Job\n\n[Job example](https://github.com/rossonet/kettle-operator/blob/main/kubernetes/examples/job.yaml)\n```\nkubectl apply -f https://raw.githubusercontent.com/rossonet/kettle-operator/main/kubernetes/examples/job.yaml\n```\n\n```\n[andrea@legion-rossonet-com kettle-operator]$ kubectl -n test-namespace get kj\nNAME           AGE\njob-example1   3m29s\n\n\n[andrea@legion-rossonet-com kettle-operator]$ kubectl -n test-namespace describe kj job-example1\nName:         job-example1\nNamespace:    test-namespace\nLabels:       \u003cnone\u003e\nAnnotations:  \u003cnone\u003e\nAPI Version:  kettle.rossonet.net/v1\nKind:         KettleJob\nMetadata:\n  Creation Timestamp:  2022-08-02T17:42:25Z\n  Generation:          1\n  Managed Fields:\n    API Version:  kettle.rossonet.net/v1\n    Fields Type:  FieldsV1\n    fieldsV1:\n      f:metadata:\n        f:annotations:\n          .:\n          f:kubectl.kubernetes.io/last-applied-configuration:\n      f:spec:\n        .:\n        f:dir:\n        f:job:\n        f:level:\n        f:pass:\n        f:rep:\n        f:user:\n    Manager:      kubectl-client-side-apply\n    Operation:    Update\n    Time:         2022-08-02T17:42:25Z\n    API Version:  kettle.rossonet.net/v1\n    Fields Type:  FieldsV1\n    fieldsV1:\n      f:status:\n        .:\n        f:returnCodeDescription:\n    Manager:         okhttp\n    Operation:       Update\n    Subresource:     status\n    Time:            2022-08-02T17:42:25Z\n  Resource Version:  436064\n  UID:               a1edf771-21a4-485f-aa4e-f7e630757011\nSpec:\n  Dir:    /examples\n  Job:    job_example\n  Level:  Debug\n  Pass:   admin\n  Rep:    Repository repository-example1\n  User:   admin\nStatus:\n  Return Code Description:  INIT\nEvents:                     \u003cnone\u003e\n\n\n[andrea@legion-rossonet-com kettle-operator]$ kubectl -n test-namespace describe po job-example1-ck7nh \nName:         job-example1-ck7nh\nNamespace:    test-namespace\nPriority:     0\nNode:         minikube/192.168.39.147\nStart Time:   Tue, 02 Aug 2022 19:42:25 +0200\nLabels:       app=job-example1\n              app.kubernetes.io/managed-by=kettle-operator\n              app.kubernetes.io/part-of=job-example1\n              controller-uid=8f11b8a2-af29-43dd-a863-2421171fcdb4\n              job-name=job-example1\nAnnotations:  \u003cnone\u003e\nStatus:       Succeeded\nIP:           172.17.0.9\nIPs:\n  IP:           172.17.0.9\nControlled By:  Job/job-example1\nContainers:\n  job-example1:\n    Container ID:  docker://5fbaee04851a9b55d623b394d19085acf1b3e84308de35dc54f33d5e275e0a46\n    Image:         rossonet/kettle-runner:latest\n    Image ID:      docker-pullable://rossonet/kettle-runner@sha256:b55d0e314aecaa213992af2b498d19f804b7449416150cc4e28ac5a1bf299f8f\n    Port:          \u003cnone\u003e\n    Host Port:     \u003cnone\u003e\n    Command:\n      /bin/sh\n      -c\n    Args:\n      mkdir -p /root/.kettle ; cp /data/repositories.xml /root/.kettle/repositories.xml ; /data-integration/kitchen.sh -dir='/examples' -job='job_example' -level='Debug' -pass='admin' -rep='Repository repository-example1' -user='admin'\n    State:          Terminated\n      Reason:       Completed\n      Exit Code:    0\n      Started:      Tue, 02 Aug 2022 19:42:27 +0200\n      Finished:     Tue, 02 Aug 2022 19:42:50 +0200\n    Ready:          False\n    Restart Count:  0\n    Environment:    \u003cnone\u003e\n    Mounts:\n      /data from repositories-config (rw)\n      /var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-kv879 (ro)\nConditions:\n  Type              Status\n  Initialized       True \n  Ready             False \n  ContainersReady   False \n  PodScheduled      True \nVolumes:\n  repositories-config:\n    Type:      ConfigMap (a volume populated by a ConfigMap)\n    Name:      job-example1\n    Optional:  false\n  kube-api-access-kv879:\n    Type:                    Projected (a volume that contains injected data from multiple sources)\n    TokenExpirationSeconds:  3607\n    ConfigMapName:           kube-root-ca.crt\n    ConfigMapOptional:       \u003cnil\u003e\n    DownwardAPI:             true\nQoS Class:                   BestEffort\nNode-Selectors:              \u003cnone\u003e\nTolerations:                 node.kubernetes.io/not-ready:NoExecute op=Exists for 300s\n                             node.kubernetes.io/unreachable:NoExecute op=Exists for 300s\nEvents:\n  Type    Reason     Age    From               Message\n  ----    ------     ----   ----               -------\n  Normal  Scheduled  3m55s  default-scheduler  Successfully assigned test-namespace/job-example1-ck7nh to minikube\n  Normal  Pulling    3m54s  kubelet            Pulling image \"rossonet/kettle-runner:latest\"\n  Normal  Pulled     3m53s  kubelet            Successfully pulled image \"rossonet/kettle-runner:latest\" in 1.419323233s\n  Normal  Created    3m53s  kubelet            Created container job-example1\n  Normal  Started    3m53s  kubelet            Started container job-example1\n\n\n[andrea@legion-rossonet-com kettle-operator]$ kubectl -n test-namespace logs job-example1-ck7nh \n#######################################################################\nWARNING:  no libwebkitgtk-1.0 detected, some features will be unavailable\n    Consider installing the package with apt-get or yum.\n    e.g. 'sudo apt-get install libwebkitgtk-1.0-0'\n#######################################################################\n17:42:31,148 INFO  [KarafBoot] Checking to see if org.pentaho.clean.karaf.cache is enabled\n17:42:31,246 INFO  [KarafInstance] \n*******************************************************************************\n*** Karaf Instance Number: 1 at /data-integration/./system/karaf/caches/kit ***\n***   chen/data-1                                                           ***\n*** Karaf Port:8802                                                         ***\n*** OSGI Service Port:9051                                                  ***\n*******************************************************************************\nAug 02, 2022 5:42:31 PM org.apache.karaf.main.Main launch\nINFO: Installing and starting initial bundles\nAug 02, 2022 5:42:31 PM org.apache.karaf.main.Main launch\nINFO: All initial bundles installed and set to start\nAug 02, 2022 5:42:32 PM org.apache.karaf.main.Main$KarafLockCallback lockAcquired\nINFO: Lock acquired. Setting startlevel to 100\n2022/08/02 17:42:32 - Kitchen - Logging is at level : Debug\n2022/08/02 17:42:32 - Kitchen - Start of run.\n2022/08/02 17:42:32 - Kitchen - Allocate new job.\n2022/08/02 17:42:32 - Kitchen - Parsing command line options.\n2022/08/02 17:42:32 - Kitchen - Loading available repositories.\n2022/08/02 17:42:32 - RepositoriesMeta - No repositories file found in the local directory: /data-integration/repositories.xml\n2022/08/02 17:42:32 - RepositoriesMeta - Reading repositories XML file: /root/.kettle/repositories.xml\n2022/08/02 17:42:32 - RepositoriesMeta - We have 1 connections...\n2022/08/02 17:42:32 - RepositoriesMeta - Looking at connection #0\n2022/08/02 17:42:32 - RepositoriesMeta - Read at connection: repository-example1\n2022/08/02 17:42:32 - RepositoriesMeta - We have 1 repositories...\n2022/08/02 17:42:32 - RepositoriesMeta - Looking at repository #0\n2022/08/02 17:42:32 - RepositoriesMeta - Read at repository: Repository repository-example1\n2022/08/02 17:42:32 - Kitchen - Finding repository [Repository repository-example1]\n2022/08/02 17:42:32 - Kitchen - Check supplied username and password.\nAug 02, 2022 5:42:33 PM org.apache.felix.fileinstall.internal.Util$DefaultLogger log\nINFO: Creating configuration {org.ops4j.pax.logging} from /data-integration/system/karaf/etc/org.ops4j.pax.logging.cfg\nAug 02, 2022 5:42:33 PM org.apache.felix.fileinstall.internal.Util$DefaultLogger log\nINFO: Creating configuration {org.apache.karaf.features.repos} from /data-integration/system/karaf/etc/org.apache.karaf.features.repos.cfg\nAug 02, 2022 5:42:33 PM org.apache.felix.fileinstall.internal.Util$DefaultLogger log\nINFO: Creating configuration {org.apache.karaf.management} from /data-integration/system/karaf/etc/org.apache.karaf.management.cfg\nAug 02, 2022 5:42:33 PM org.apache.felix.fileinstall.internal.Util$DefaultLogger log\nINFO: Creating configuration {mondrian} from /data-integration/system/karaf/etc/mondrian.cfg\nAug 02, 2022 5:42:33 PM org.apache.felix.fileinstall.internal.Util$DefaultLogger log\nINFO: Creating configuration {org.apache.karaf.command.acl.jaas} from /data-integration/system/karaf/etc/org.apache.karaf.command.acl.jaas.cfg\nAug 02, 2022 5:42:33 PM org.apache.felix.fileinstall.internal.Util$DefaultLogger log\nINFO: Creating configuration {org.apache.karaf.command.acl.kar} from /data-integration/system/karaf/etc/org.apache.karaf.command.acl.kar.cfg\nAug 02, 2022 5:42:33 PM org.apache.felix.fileinstall.internal.Util$DefaultLogger log\nINFO: Creating configuration {org.apache.karaf.log} from /data-integration/system/karaf/etc/org.apache.karaf.log.cfg\nAug 02, 2022 5:42:33 PM org.apache.felix.fileinstall.internal.Util$DefaultLogger log\nINFO: Creating configuration {org.ops4j.pax.web} from /data-integration/system/karaf/etc/org.ops4j.pax.web.cfg\nAug 02, 2022 5:42:33 PM org.apache.felix.fileinstall.internal.Util$DefaultLogger log\nINFO: Creating configuration {org.apache.karaf.command.acl.system} from /data-integration/system/karaf/etc/org.apache.karaf.command.acl.system.cfg\nAug 02, 2022 5:42:33 PM org.apache.felix.fileinstall.internal.Util$DefaultLogger log\nINFO: Creating configuration {org.apache.karaf.shell} from /data-integration/system/karaf/etc/org.apache.karaf.shell.cfg\nAug 02, 2022 5:42:33 PM org.apache.felix.fileinstall.internal.Util$DefaultLogger log\nINFO: Creating configuration {profile} from /data-integration/system/karaf/etc/profile.cfg\nAug 02, 2022 5:42:33 PM org.apache.felix.fileinstall.internal.Util$DefaultLogger log\nINFO: Creating configuration {org.apache.karaf.command.acl.bundle} from /data-integration/system/karaf/etc/org.apache.karaf.command.acl.bundle.cfg\nAug 02, 2022 5:42:33 PM org.apache.felix.fileinstall.internal.Util$DefaultLogger log\nINFO: Creating configuration {org.apache.karaf.features} from /data-integration/system/karaf/etc/org.apache.karaf.features.cfg\nAug 02, 2022 5:42:33 PM org.apache.felix.fileinstall.internal.Util$DefaultLogger log\nINFO: Creating configuration {pentaho.shim} from /data-integration/system/karaf/etc/pentaho.shim.cfg\nAug 02, 2022 5:42:33 PM org.apache.felix.fileinstall.internal.Util$DefaultLogger log\nINFO: Creating configuration {org.apache.karaf.command.acl.feature} from /data-integration/system/karaf/etc/org.apache.karaf.command.acl.feature.cfg\nAug 02, 2022 5:42:33 PM org.apache.felix.fileinstall.internal.Util$DefaultLogger log\nINFO: Creating configuration {org.apache.karaf.command.acl.config} from /data-integration/system/karaf/etc/org.apache.karaf.command.acl.config.cfg\nAug 02, 2022 5:42:33 PM org.apache.felix.fileinstall.internal.Util$DefaultLogger log\nINFO: Creating configuration {org.apache.felix.fileinstall~deploy} from /data-integration/system/karaf/etc/org.apache.felix.fileinstall-deploy.cfg\nAug 02, 2022 5:42:33 PM org.apache.felix.fileinstall.internal.Util$DefaultLogger log\nINFO: Creating configuration {jmx.acl.org.apache.karaf.config} from /data-integration/system/karaf/etc/jmx.acl.org.apache.karaf.config.cfg\nAug 02, 2022 5:42:33 PM org.apache.felix.fileinstall.internal.Util$DefaultLogger log\nINFO: Creating configuration {org.ops4j.pax.url.mvn} from /data-integration/system/karaf/etc/org.ops4j.pax.url.mvn.cfg\nAug 02, 2022 5:42:33 PM org.apache.felix.fileinstall.internal.Util$DefaultLogger log\nINFO: Creating configuration {org.apache.karaf.kar} from /data-integration/system/karaf/etc/org.apache.karaf.kar.cfg\nAug 02, 2022 5:42:33 PM org.apache.felix.fileinstall.internal.Util$DefaultLogger log\nINFO: Creating configuration {org.pentaho.caching~default} from /data-integration/system/karaf/etc/org.pentaho.caching-default.cfg\nAug 02, 2022 5:42:33 PM org.apache.felix.fileinstall.internal.Util$DefaultLogger log\nINFO: Creating configuration {org.apache.karaf.jaas} from /data-integration/system/karaf/etc/org.apache.karaf.jaas.cfg\nAug 02, 2022 5:42:33 PM org.apache.felix.fileinstall.internal.Util$DefaultLogger log\nINFO: Creating configuration {org.apache.karaf.command.acl.scope_bundle} from /data-integration/system/karaf/etc/org.apache.karaf.command.acl.scope_bundle.cfg\nAug 02, 2022 5:42:33 PM org.apache.felix.fileinstall.internal.Util$DefaultLogger log\nINFO: Creating configuration {org.apache.aries.rsa.provider.fastbin} from /data-integration/system/karaf/etc/org.apache.aries.rsa.provider.fastbin.cfg\nAug 02, 2022 5:42:33 PM org.apache.felix.fileinstall.internal.Util$DefaultLogger log\nINFO: Creating configuration {org.pentaho.pdi.engine.spark} from /data-integration/system/karaf/etc/org.pentaho.pdi.engine.spark.cfg\nAug 02, 2022 5:42:33 PM org.apache.felix.fileinstall.internal.Util$DefaultLogger log\nINFO: Creating configuration {org.ops4j.pax.transx.tm.geronimo} from /data-integration/system/karaf/etc/org.ops4j.pax.transx.tm.geronimo.cfg\nAug 02, 2022 5:42:33 PM org.apache.felix.fileinstall.internal.Util$DefaultLogger log\nINFO: Creating configuration {org.apache.karaf.command.acl.shell} from /data-integration/system/karaf/etc/org.apache.karaf.command.acl.shell.cfg\nAug 02, 2022 5:42:33 PM org.apache.felix.fileinstall.internal.Util$DefaultLogger log\nINFO: Creating configuration {jmx.acl.org.apache.karaf.bundle} from /data-integration/system/karaf/etc/jmx.acl.org.apache.karaf.bundle.cfg\nAug 02, 2022 5:42:33 PM org.apache.felix.fileinstall.internal.Util$DefaultLogger log\nINFO: Creating configuration {org.apache.felix.eventadmin.impl.EventAdmin} from /data-integration/system/karaf/etc/org.apache.felix.eventadmin.impl.EventAdmin.cfg\nAug 02, 2022 5:42:33 PM org.apache.felix.fileinstall.internal.Util$DefaultLogger log\nINFO: Creating configuration {org.pentaho.features} from /data-integration/system/karaf/etc-kitchen/org.pentaho.features.cfg\n2022/08/02 17:42:34 - Kitchen - Allocate \u0026 connect to repository.\n2022/08/02 17:42:34 - Kitchen - Load the  repositories defined on this system.\nAug 02, 2022 5:42:39 PM org.pentaho.caching.impl.PentahoCacheManagerFactory$RegistrationHandler$1 onSuccess\nINFO: New Caching Service registered\nAug 02, 2022 5:42:41 PM org.pentaho.caching.impl.PentahoCacheManagerFactory$RegistrationHandler$1 onSuccess\nINFO: New Caching Service registered\nAug 02, 2022 5:42:43 PM org.apache.aries.spifly.BaseActivator log\nINFO: Registered provider org.eclipse.jetty.websocket.common.extensions.identity.IdentityExtension of service org.eclipse.jetty.websocket.api.extensions.Extension in bundle org.eclipse.jetty.websocket.common\nAug 02, 2022 5:42:43 PM org.apache.aries.spifly.BaseActivator log\nINFO: Registered provider org.eclipse.jetty.websocket.common.extensions.fragment.FragmentExtension of service org.eclipse.jetty.websocket.api.extensions.Extension in bundle org.eclipse.jetty.websocket.common\nAug 02, 2022 5:42:43 PM org.apache.aries.spifly.BaseActivator log\nINFO: Registered provider org.eclipse.jetty.websocket.common.extensions.compress.PerMessageDeflateExtension of service org.eclipse.jetty.websocket.api.extensions.Extension in bundle org.eclipse.jetty.websocket.common\nAug 02, 2022 5:42:43 PM org.apache.aries.spifly.BaseActivator log\nINFO: Registered provider org.eclipse.jetty.websocket.common.extensions.compress.DeflateFrameExtension of service org.eclipse.jetty.websocket.api.extensions.Extension in bundle org.eclipse.jetty.websocket.common\nAug 02, 2022 5:42:43 PM org.apache.aries.spifly.BaseActivator log\nINFO: Registered provider org.eclipse.jetty.websocket.common.extensions.compress.XWebkitDeflateFrameExtension of service org.eclipse.jetty.websocket.api.extensions.Extension in bundle org.eclipse.jetty.websocket.common\nAug 02, 2022 5:42:43 PM org.apache.aries.spifly.BaseActivator log\nINFO: Registered provider org.eclipse.jetty.http.Http1FieldPreEncoder of service org.eclipse.jetty.http.HttpFieldPreEncoder in bundle org.eclipse.jetty.http\nAug 02, 2022 5:42:43 PM org.apache.aries.spifly.BaseActivator log\nINFO: Registered provider org.eclipse.jetty.security.jaspi.JaspiAuthenticatorFactory of service org.eclipse.jetty.security.Authenticator$Factory in bundle org.eclipse.jetty.security.jaspi\nAug 02, 2022 5:42:43 PM org.apache.aries.spifly.BaseActivator log\nINFO: Registered provider org.eclipse.jetty.websocket.server.NativeWebSocketServletContainerInitializer of service javax.servlet.ServletContainerInitializer in bundle org.eclipse.jetty.websocket.server\nAug 02, 2022 5:42:43 PM org.apache.aries.spifly.BaseActivator log\nINFO: Registered provider org.eclipse.jetty.websocket.jsr356.server.deploy.WebSocketServerContainerInitializer of service javax.servlet.ServletContainerInitializer in bundle org.eclipse.jetty.websocket.javax.websocket.server\nAug 02, 2022 5:42:43 PM org.apache.aries.spifly.BaseActivator log\nINFO: Registered provider org.eclipse.jetty.websocket.jsr356.server.ContainerDefaultConfigurator of service javax.websocket.server.ServerEndpointConfig$Configurator in bundle org.eclipse.jetty.websocket.javax.websocket.server\nAug 02, 2022 5:42:43 PM org.apache.aries.spifly.BaseActivator log\nINFO: Registered provider org.eclipse.jetty.websocket.jsr356.JettyClientContainerProvider of service javax.websocket.ContainerProvider in bundle org.eclipse.jetty.websocket.javax.websocket\n2022-08-02 17:42:44.015:INFO::features-3-thread-1: Logging initialized @16191ms to org.eclipse.jetty.util.log.StdErrLog\nAug 02, 2022 5:42:44 PM org.apache.cxf.transport.http.osgi.ServletExporter updated\nINFO: Registering new instance of \"/cxf\" servlet\nAug 02, 2022 5:42:44 PM org.apache.cxf.bus.osgi.CXFExtensionBundleListener addExtensions\nINFO: Adding the extensions from bundle org.apache.cxf.cxf-rt-management (128) [org.apache.cxf.management.InstrumentationManager]\nAug 02, 2022 5:42:44 PM org.apache.cxf.bus.osgi.CXFExtensionBundleListener addExtensions\nINFO: Adding the extensions from bundle org.apache.cxf.cxf-rt-rs-service-description (133) [org.apache.cxf.jaxrs.model.wadl.WadlGenerator]\nAug 02, 2022 5:42:44 PM org.apache.cxf.bus.osgi.CXFExtensionBundleListener addExtensions\nINFO: Adding the extensions from bundle org.apache.cxf.cxf-rt-transports-http (135) [org.apache.cxf.transport.http.HTTPTransportFactory, org.apache.cxf.transport.http.HTTPWSDLExtensionLoader, org.apache.cxf.transport.http.policy.HTTPClientAssertionBuilder, org.apache.cxf.transport.http.policy.HTTPServerAssertionBuilder, org.apache.cxf.transport.http.policy.NoOpPolicyInterceptorProvider]\nAug 02, 2022 5:42:45 PM org.apache.cxf.endpoint.ServerImpl initDestination\nINFO: Setting the server's publish address to be /i18n\nAug 02, 2022 5:42:45 PM org.apache.felix.fileinstall.internal.Util$DefaultLogger log\nINFO: Creating configuration {pentaho.big.data.impl.cluster} from /data-integration/system/karaf/etc/pentaho.big.data.impl.cluster.cfg\n2022-08-02 17:42:45.430:INFO:oejws.WebSocketServerFactory:CM Configuration Updater (ManagedService Update: pid=[org.apache.cxf.osgi]): No DecoratedObjectFactory provided, using new org.eclipse.jetty.util.DecoratedObjectFactory[decorators=1]\n2022-08-02 17:42:45.495:INFO:oejs.session:CM Configuration Updater (ManagedService Update: pid=[org.apache.cxf.osgi]): DefaultSessionIdManager workerName=node0\n2022-08-02 17:42:45.495:INFO:oejs.session:CM Configuration Updater (ManagedService Update: pid=[org.apache.cxf.osgi]): No SessionScavenger set, using defaults\n2022-08-02 17:42:45.496:INFO:oejs.session:CM Configuration Updater (ManagedService Update: pid=[org.apache.cxf.osgi]): node0 Scavenging every 600000ms\n2022-08-02 17:42:45.500:INFO:oejws.WebSocketServerFactory:features-3-thread-1: No DecoratedObjectFactory provided, using new org.eclipse.jetty.util.DecoratedObjectFactory[decorators=1]\n2022-08-02 17:42:45.509:INFO:oejsh.ContextHandler:features-3-thread-1: Started HttpServiceContext{httpContext=DefaultHttpContext [bundle=pentaho-i18n-webservice-bundle [220], contextID=default]}\n2022-08-02 17:42:45.514:INFO:oejsh.ContextHandler:CM Configuration Updater (ManagedService Update: pid=[org.apache.cxf.osgi]): Started HttpServiceContext{httpContext=DefaultHttpContext [bundle=org.apache.cxf.cxf-rt-transports-http [135], contextID=default]}\n2022-08-02 17:42:45.523:INFO:oejs.Server:features-3-thread-1: jetty-9.4.43.v20210629; built: 2021-06-30T11:07:22.254Z; git: 526006ecfa3af7f1a27ef3a288e2bef7ea9dd7e8; jvm 11.0.15+10-Ubuntu-0ubuntu0.20.04.1\n2022-08-02 17:42:45.546:INFO:oejs.AbstractConnector:features-3-thread-1: Started default@83cc056{HTTP/1.1, (http/1.1)}{0.0.0.0:9051}\n2022-08-02 17:42:45.546:INFO:oejs.Server:features-3-thread-1: Started @17722ms\nAug 02, 2022 5:42:47 PM org.apache.felix.fileinstall.internal.Util$DefaultLogger log\nINFO: Creating configuration {pentaho.metaverse} from /data-integration/system/karaf/etc/pentaho.metaverse.cfg\n2022-08-02 17:42:49.157:INFO:oejws.WebSocketServerFactory:features-3-thread-1: No DecoratedObjectFactory provided, using new org.eclipse.jetty.util.DecoratedObjectFactory[decorators=1]\n2022-08-02 17:42:49.161:INFO:oejsh.ContextHandler:features-3-thread-1: Started HttpServiceContext{httpContext=DefaultHttpContext [bundle=pentaho-webjars-underscore [259], contextID=default]}\n2022-08-02 17:42:49.168:INFO:oejws.WebSocketServerFactory:features-3-thread-1: No DecoratedObjectFactory provided, using new org.eclipse.jetty.util.DecoratedObjectFactory[decorators=1]\n2022-08-02 17:42:49.170:INFO:oejsh.ContextHandler:features-3-thread-1: Started HttpServiceContext{httpContext=DefaultHttpContext [bundle=pentaho-webjars-angular-translate [256], contextID=default]}\n2022-08-02 17:42:49.259:INFO:oejws.WebSocketServerFactory:features-3-thread-1: No DecoratedObjectFactory provided, using new org.eclipse.jetty.util.DecoratedObjectFactory[decorators=1]\n2022-08-02 17:42:49.265:INFO:oejsh.ContextHandler:features-3-thread-1: Started HttpServiceContext{httpContext=DefaultHttpContext [bundle=org.pentaho.requirejs-manager-impl [250], contextID=default]}\n2022-08-02 17:42:49.277:INFO:oejws.WebSocketServerFactory:features-3-thread-1: No DecoratedObjectFactory provided, using new org.eclipse.jetty.util.DecoratedObjectFactory[decorators=1]\n2022-08-02 17:42:49.280:INFO:oejsh.ContextHandler:features-3-thread-1: Started HttpServiceContext{httpContext=DefaultHttpContext [bundle=pentaho-webjars-jquery [258], contextID=default]}\n2022-08-02 17:42:49.286:INFO:oejws.WebSocketServerFactory:features-3-thread-1: No DecoratedObjectFactory provided, using new org.eclipse.jetty.util.DecoratedObjectFactory[decorators=1]\n2022-08-02 17:42:49.289:INFO:oejsh.ContextHandler:features-3-thread-1: Started HttpServiceContext{httpContext=DefaultHttpContext [bundle=pentaho-webjars-angular-sanitize [255], contextID=default]}\nAug 02, 2022 5:42:49 PM org.apache.felix.fileinstall.internal.Util$DefaultLogger log\nINFO: Creating configuration {pentaho.geo.roles} from /data-integration/system/karaf/etc/pentaho.geo.roles.cfg\nAug 02, 2022 5:42:49 PM org.apache.cxf.endpoint.ServerImpl initDestination\nINFO: Setting the server's publish address to be /marketplace\n2022-08-02 17:42:49.877:INFO:oejws.WebSocketServerFactory:features-3-thread-1: No DecoratedObjectFactory provided, using new org.eclipse.jetty.util.DecoratedObjectFactory[decorators=1]\n2022-08-02 17:42:49.883:INFO:oejsh.ContextHandler:features-3-thread-1: Started HttpServiceContext{httpContext=DefaultHttpContext [bundle=pentaho-webjars-angular-route [254], contextID=default]}\n2022-08-02 17:42:49.885:INFO:oejws.WebSocketServerFactory:FelixDispatchQueue: No DecoratedObjectFactory provided, using new org.eclipse.jetty.util.DecoratedObjectFactory[decorators=1]\n2022-08-02 17:42:49.903:INFO:oejws.WebSocketServerFactory:features-3-thread-1: No DecoratedObjectFactory provided, using new org.eclipse.jetty.util.DecoratedObjectFactory[decorators=1]\n2022-08-02 17:42:49.906:INFO:oejsh.ContextHandler:FelixDispatchQueue: Started HttpServiceContext{httpContext=DefaultHttpContext [bundle=pentaho-marketplace-di [251], contextID=default]}\n2022-08-02 17:42:49.912:INFO:oejsh.ContextHandler:features-3-thread-1: Started HttpServiceContext{httpContext=DefaultHttpContext [bundle=pentaho-webjars-angular-animate [253], contextID=default]}\n2022-08-02 17:42:49.931:INFO:oejws.WebSocketServerFactory:features-3-thread-1: No DecoratedObjectFactory provided, using new org.eclipse.jetty.util.DecoratedObjectFactory[decorators=1]\n2022-08-02 17:42:49.934:INFO:oejsh.ContextHandler:features-3-thread-1: Started HttpServiceContext{httpContext=DefaultHttpContext [bundle=pentaho-webjars-angular-ui-bootstrap-bower [257], contextID=default]}\n2022-08-02 17:42:49.948:INFO:oejws.WebSocketServerFactory:features-3-thread-1: No DecoratedObjectFactory provided, using new org.eclipse.jetty.util.DecoratedObjectFactory[decorators=1]\n2022-08-02 17:42:49.951:INFO:oejsh.ContextHandler:features-3-thread-1: Started HttpServiceContext{httpContext=DefaultHttpContext [bundle=pentaho-webjars-angular [252], contextID=default]}\n17:42:49,955 INFO  [DriverManager] Installing driver kars.\n17:42:49,956 INFO  [DriverManager] 0 drivers will be installed.\n17:42:49,957 INFO  [DriverManager] Finished installing drivers kars.\n2022/08/02 17:42:50 - Repository repository-example1 - Loading 1 notes\n2022/08/02 17:42:50 - Repository repository-example1 - Loading 3 job entries\n2022/08/02 17:42:50 - Repository repository-example1 - Loading 2 job hops\n2022/08/02 17:42:50 - Kitchen - Allocate job...\n2022/08/02 17:42:50 - job_example - Start of job execution\n2022/08/02 17:42:50 - job_example - exec(0, 0, Start.0)\n2022/08/02 17:42:50 - Start - Starting job entry\n2022/08/02 17:42:50 - job_example - Starting entry [Write to log]\n2022/08/02 17:42:50 - job_example - exec(1, 0, Write to log.0)\n2022/08/02 17:42:50 - Write to log - Starting job entry\n2022/08/02 17:42:50 - example Job - this is a log by Example Job\n2022/08/02 17:42:50 - job_example - Starting entry [Success]\n2022/08/02 17:42:50 - job_example - exec(2, 0, Success.0)\n2022/08/02 17:42:50 - Success - Starting job entry\n2022/08/02 17:42:50 - job_example - Finished job entry [Success] (result=[true])\n2022/08/02 17:42:50 - job_example - Finished job entry [Write to log] (result=[true])\n2022/08/02 17:42:50 - job_example - Job execution finished\n2022/08/02 17:42:50 - Carte - Installing timer to purge stale objects after 1440 minutes.\n2022/08/02 17:42:50 - job_example - EmbeddedMetastore objects have been disposed.\n2022/08/02 17:42:50 - Kitchen - Finished!\n2022/08/02 17:42:50 - Kitchen - Start=2022/08/02 17:42:50.530, Stop=2022/08/02 17:42:50.560\n2022/08/02 17:42:50 - Kitchen - Processing ended after 0 seconds.\n```\n\n### Cron Transformation\n\n[Periodical Transformation example](https://github.com/rossonet/kettle-operator/blob/main/kubernetes/examples/cron_transformation.yaml)\n```\nkubectl apply -f https://raw.githubusercontent.com/rossonet/kettle-operator/main/kubernetes/examples/cron_transformation.yaml\n```\n\n```\n[andrea@legion-rossonet-com kettle-operator]$ kubectl -n test-namespace get kct\nNAME                          AGE\ncron-trasformation-example1   35m\n\n\n[andrea@legion-rossonet-com kettle-operator]$ kubectl -n test-namespace describe kct cron-trasformation-example1 \nName:         cron-trasformation-example1\nNamespace:    test-namespace\nLabels:       \u003cnone\u003e\nAnnotations:  \u003cnone\u003e\nAPI Version:  kettle.rossonet.net/v1\nKind:         CronKettleTransformation\nMetadata:\n  Creation Timestamp:  2022-08-02T17:13:23Z\n  Generation:          1\n  Managed Fields:\n    API Version:  kettle.rossonet.net/v1\n    Fields Type:  FieldsV1\n    fieldsV1:\n      f:metadata:\n        f:annotations:\n          .:\n          f:kubectl.kubernetes.io/last-applied-configuration:\n      f:spec:\n        .:\n        f:dir:\n        f:level:\n        f:pass:\n        f:rep:\n        f:schedule:\n        f:trans:\n        f:user:\n    Manager:      kubectl-client-side-apply\n    Operation:    Update\n    Time:         2022-08-02T17:13:23Z\n    API Version:  kettle.rossonet.net/v1\n    Fields Type:  FieldsV1\n    fieldsV1:\n      f:status:\n        .:\n        f:returnCodeDescription:\n    Manager:         okhttp\n    Operation:       Update\n    Subresource:     status\n    Time:            2022-08-02T17:13:23Z\n  Resource Version:  434478\n  UID:               0da8a883-cc29-4411-8a5b-7f1728b4c7cd\nSpec:\n  Dir:       /examples\n  Level:     Debug\n  Pass:      admin\n  Rep:       Repository repository-example1\n  Schedule:  */5 * * * *\n  Trans:     transformation_example\n  User:      admin\nStatus:\n  Return Code Description:  INIT\nEvents:                     \u003cnone\u003e\n\n\n[andrea@legion-rossonet-com kettle-operator]$ kubectl -n test-namespace describe cronjobs cron-trasformation-example1\nName:                          cron-trasformation-example1\nNamespace:                     test-namespace\nLabels:                        app=cron-trasformation-example1\n                               app.kubernetes.io/managed-by=kettle-operator\n                               app.kubernetes.io/part-of=cron-trasformation-example1\nAnnotations:                   \u003cnone\u003e\nSchedule:                      */5 * * * *\nConcurrency Policy:            Allow\nSuspend:                       False\nSuccessful Job History Limit:  3\nFailed Job History Limit:      1\nStarting Deadline Seconds:     \u003cunset\u003e\nSelector:                      \u003cunset\u003e\nParallelism:                   \u003cunset\u003e\nCompletions:                   \u003cunset\u003e\nPod Template:\n  Labels:  app=cron-trasformation-example1\n           app.kubernetes.io/managed-by=kettle-operator\n           app.kubernetes.io/part-of=cron-trasformation-example1\n  Containers:\n   cron-trasformation-example1:\n    Image:      rossonet/kettle-runner:latest\n    Port:       \u003cnone\u003e\n    Host Port:  \u003cnone\u003e\n    Command:\n      /bin/sh\n      -c\n    Args:\n      mkdir -p /root/.kettle ; cp /data/repositories.xml /root/.kettle/repositories.xml ; /data-integration/pan.sh -dir='/examples' -level='Debug' -pass='admin' -rep='Repository repository-example1' -trans='transformation_example' -user='admin'\n    Environment:  \u003cnone\u003e\n    Mounts:\n      /data from repositories-config (rw)\n  Volumes:\n   repositories-config:\n    Type:            ConfigMap (a volume populated by a ConfigMap)\n    Name:            cron-trasformation-example1\n    Optional:        false\nLast Schedule Time:  Tue, 02 Aug 2022 19:50:00 +0200\nActive Jobs:         \u003cnone\u003e\nEvents:\n  Type    Reason            Age                From                Message\n  ----    ------            ----               ----                -------\n  Normal  SuccessfulCreate  35m                cronjob-controller  Created job cron-trasformation-example1-27657675\n  Normal  SawCompletedJob   35m                cronjob-controller  Saw completed job: cron-trasformation-example1-27657675, status: Complete\n  Normal  SuccessfulCreate  30m                cronjob-controller  Created job cron-trasformation-example1-27657680\n  Normal  SawCompletedJob   30m                cronjob-controller  Saw completed job: cron-trasformation-example1-27657680, status: Complete\n  Normal  SuccessfulCreate  25m                cronjob-controller  Created job cron-trasformation-example1-27657685\n  Normal  SawCompletedJob   25m                cronjob-controller  Saw completed job: cron-trasformation-example1-27657685, status: Complete\n  Normal  SuccessfulCreate  20m                cronjob-controller  Created job cron-trasformation-example1-27657690\n  Normal  SawCompletedJob   19m (x2 over 19m)  cronjob-controller  Saw completed job: cron-trasformation-example1-27657690, status: Complete\n  Normal  SuccessfulDelete  19m                cronjob-controller  Deleted job cron-trasformation-example1-27657675\n  Normal  SuccessfulCreate  15m                cronjob-controller  Created job cron-trasformation-example1-27657695\n  Normal  SuccessfulDelete  15m                cronjob-controller  Deleted job cron-trasformation-example1-27657680\n  Normal  SawCompletedJob   15m                cronjob-controller  Saw completed job: cron-trasformation-example1-27657695, status: Complete\n  Normal  SuccessfulCreate  10m                cronjob-controller  Created job cron-trasformation-example1-27657700\n  Normal  SawCompletedJob   10m                cronjob-controller  Saw completed job: cron-trasformation-example1-27657700, status: Complete\n  Normal  SuccessfulDelete  10m                cronjob-controller  Deleted job cron-trasformation-example1-27657685\n  Normal  SuccessfulCreate  5m41s              cronjob-controller  Created job cron-trasformation-example1-27657705\n  Normal  SawCompletedJob   5m                 cronjob-controller  Saw completed job: cron-trasformation-example1-27657705, status: Complete\n  Normal  SuccessfulDelete  5m                 cronjob-controller  Deleted job cron-trasformation-example1-27657690\n  Normal  SuccessfulCreate  41s                cronjob-controller  Created job cron-trasformation-example1-27657710\n  Normal  SawCompletedJob   2s                 cronjob-controller  Saw completed job: cron-trasformation-example1-27657710, status: Complete\n  Normal  SuccessfulDelete  2s                 cronjob-controller  Deleted job cron-trasformation-example1-27657695\n```\n\n### Cron Kettle Job\n\n[Periodical Job example](https://github.com/rossonet/kettle-operator/blob/main/kubernetes/examples/cron_job.yaml)\n```\nkubectl apply -f https://raw.githubusercontent.com/rossonet/kettle-operator/main/kubernetes/examples/cron_job.yaml\n```\n\n```\n[andrea@legion-rossonet-com kettle-operator]$ kubectl -n test-namespace get kcj\nNAME                AGE\ncron-job-example1   37m\n\n\n[andrea@legion-rossonet-com kettle-operator]$ kubectl -n test-namespace describe kcj cron-job-example1\nName:         cron-job-example1\nNamespace:    test-namespace\nLabels:       \u003cnone\u003e\nAnnotations:  \u003cnone\u003e\nAPI Version:  kettle.rossonet.net/v1\nKind:         CronKettleJob\nMetadata:\n  Creation Timestamp:  2022-08-02T17:14:25Z\n  Generation:          1\n  Managed Fields:\n    API Version:  kettle.rossonet.net/v1\n    Fields Type:  FieldsV1\n    fieldsV1:\n      f:metadata:\n        f:annotations:\n          .:\n          f:kubectl.kubernetes.io/last-applied-configuration:\n      f:spec:\n        .:\n        f:dir:\n        f:job:\n        f:level:\n        f:pass:\n        f:rep:\n        f:schedule:\n        f:user:\n    Manager:      kubectl-client-side-apply\n    Operation:    Update\n    Time:         2022-08-02T17:14:25Z\n    API Version:  kettle.rossonet.net/v1\n    Fields Type:  FieldsV1\n    fieldsV1:\n      f:status:\n        .:\n        f:returnCodeDescription:\n    Manager:         okhttp\n    Operation:       Update\n    Subresource:     status\n    Time:            2022-08-02T17:14:25Z\n  Resource Version:  434524\n  UID:               02084947-2c13-4fac-8d4a-86803a01344c\nSpec:\n  Dir:       /examples\n  Job:       job_example\n  Level:     Debug\n  Pass:      admin\n  Rep:       Repository repository-example1\n  Schedule:  */5 * * * *\n  User:      admin\nStatus:\n  Return Code Description:  INIT\nEvents:                     \u003cnone\u003e\n\n\n[andrea@legion-rossonet-com kettle-operator]$ kubectl -n test-namespace describe cronjobs cron-job-example1\nName:                          cron-job-example1\nNamespace:                     test-namespace\nLabels:                        app=cron-job-example1\n                               app.kubernetes.io/managed-by=kettle-operator\n                               app.kubernetes.io/part-of=cron-job-example1\nAnnotations:                   \u003cnone\u003e\nSchedule:                      */5 * * * *\nConcurrency Policy:            Allow\nSuspend:                       False\nSuccessful Job History Limit:  3\nFailed Job History Limit:      1\nStarting Deadline Seconds:     \u003cunset\u003e\nSelector:                      \u003cunset\u003e\nParallelism:                   \u003cunset\u003e\nCompletions:                   \u003cunset\u003e\nPod Template:\n  Labels:  app=cron-job-example1\n           app.kubernetes.io/managed-by=kettle-operator\n           app.kubernetes.io/part-of=cron-job-example1\n  Containers:\n   cron-job-example1:\n    Image:      rossonet/kettle-runner:latest\n    Port:       \u003cnone\u003e\n    Host Port:  \u003cnone\u003e\n    Command:\n      /bin/sh\n      -c\n    Args:\n      mkdir -p /root/.kettle ; cp /data/repositories.xml /root/.kettle/repositories.xml ; /data-integration/kitchen.sh -dir='/examples' -job='job_example' -level='Debug' -pass='admin' -rep='Repository repository-example1' -user='admin'\n    Environment:  \u003cnone\u003e\n    Mounts:\n      /data from repositories-config (rw)\n  Volumes:\n   repositories-config:\n    Type:            ConfigMap (a volume populated by a ConfigMap)\n    Name:            cron-job-example1\n    Optional:        false\nLast Schedule Time:  Tue, 02 Aug 2022 19:50:00 +0200\nActive Jobs:         \u003cnone\u003e\nEvents:\n  Type    Reason            Age    From                Message\n  ----    ------            ----   ----                -------\n  Normal  SuccessfulCreate  37m    cronjob-controller  Created job cron-job-example1-27657675\n  Normal  SawCompletedJob   36m    cronjob-controller  Saw completed job: cron-job-example1-27657675, status: Complete\n  Normal  SuccessfulCreate  32m    cronjob-controller  Created job cron-job-example1-27657680\n  Normal  SawCompletedJob   31m    cronjob-controller  Saw completed job: cron-job-example1-27657680, status: Complete\n  Normal  SuccessfulCreate  27m    cronjob-controller  Created job cron-job-example1-27657685\n  Normal  SawCompletedJob   26m    cronjob-controller  Saw completed job: cron-job-example1-27657685, status: Complete\n  Normal  SuccessfulCreate  22m    cronjob-controller  Created job cron-job-example1-27657690\n  Normal  SawCompletedJob   21m    cronjob-controller  Saw completed job: cron-job-example1-27657690, status: Complete\n  Normal  SuccessfulDelete  21m    cronjob-controller  Deleted job cron-job-example1-27657675\n  Normal  SuccessfulCreate  17m    cronjob-controller  Created job cron-job-example1-27657695\n  Normal  SuccessfulDelete  16m    cronjob-controller  Deleted job cron-job-example1-27657680\n  Normal  SawCompletedJob   16m    cronjob-controller  Saw completed job: cron-job-example1-27657695, status: Complete\n  Normal  SuccessfulCreate  12m    cronjob-controller  Created job cron-job-example1-27657700\n  Normal  SawCompletedJob   11m    cronjob-controller  Saw completed job: cron-job-example1-27657700, status: Complete\n  Normal  SuccessfulDelete  11m    cronjob-controller  Deleted job cron-job-example1-27657685\n  Normal  SuccessfulCreate  7m33s  cronjob-controller  Created job cron-job-example1-27657705\n  Normal  SawCompletedJob   6m55s  cronjob-controller  Saw completed job: cron-job-example1-27657705, status: Complete\n  Normal  SuccessfulDelete  6m55s  cronjob-controller  Deleted job cron-job-example1-27657690\n  Normal  SuccessfulCreate  2m33s  cronjob-controller  Created job cron-job-example1-27657710\n  Normal  SawCompletedJob   119s   cronjob-controller  Saw completed job: cron-job-example1-27657710, status: Complete\n  Normal  SuccessfulDelete  119s   cronjob-controller  Deleted job cron-job-example1-27657695\n```\n\n## Thanks to...\n\n### Pentaho Kettle source code\n\n[Pentaho Kettle repository](https://github.com/pentaho/pentaho-kettle)\n\n### Framework Java used to create the Kubernetes Operator\n\n[https://javaoperatorsdk.io/](https://javaoperatorsdk.io/)\n\n[examples](https://github.com/java-operator-sdk/java-operator-sdk/tree/main/sample-operators)\n\n### Project sponsor \n\n[![Rossonet s.c.a r.l.](https://raw.githubusercontent.com/rossonet/images/main/artwork/rossonet-logo/png/rossonet-logo_280_115.png)](https://www.rossonet.net)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frossonet%2Fkettle-operator","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frossonet%2Fkettle-operator","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frossonet%2Fkettle-operator/lists"}