diff --git a/charts/ec-ibmis-lab-ext/Chart.yaml b/charts/ec-ibmis-lab-ext/Chart.yaml new file mode 100644 index 00000000..77ec40b8 --- /dev/null +++ b/charts/ec-ibmis-lab-ext/Chart.yaml @@ -0,0 +1,16 @@ +# SPDX-License-Identifier: Apache-2.0 +# Copyright Contributors to the Egeria project. +--- +name: ec-ibmis-lab-ext +description: Egeria lab extension to include IBM Information Server connectors +apiVersion: v1 +version: 0.1 +icon: https://raw.githubusercontent.com/odpi/egeria/99016e77167fa30dcfade809b061358a92a59973/assets/img/egeria.png +keywords: + - egeria, open-metadata, connector, lab, ibm, information-server +sources: + - https://github.com/odpi/egeria-connector-ibm-information-server +home: https://github.com/odpi/egeria-connector-ibm-information-server +maintainers: + - name: Christopher Grote + email: chris@thegrotes.net diff --git a/charts/ec-ibmis-lab-ext/requirements.yaml b/charts/ec-ibmis-lab-ext/requirements.yaml new file mode 100644 index 00000000..fadcca37 --- /dev/null +++ b/charts/ec-ibmis-lab-ext/requirements.yaml @@ -0,0 +1,7 @@ +# SPDX-License-Identifier: Apache-2.0 +# Copyright Contributors to the Egeria project. +--- +dependencies: + - name: odpi-egeria-lab + version: 1.0.2 + repository: https://odpi.github.io/egeria-charts diff --git a/charts/ec-ibmis-lab-ext/templates/_helpers.tpl b/charts/ec-ibmis-lab-ext/templates/_helpers.tpl new file mode 100644 index 00000000..29baedcd --- /dev/null +++ b/charts/ec-ibmis-lab-ext/templates/_helpers.tpl @@ -0,0 +1,15 @@ +{{/* */}} +{{/* Copyright Contributors to the Egeria project. */}}{{/* vim: set filetype=mustache: */}} +{{/* +Expand the name of the chart. +*/}} +{{- define "myapp.name" -}} +{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}} +{{- end -}} + +{{/* +Create chart name and version as used by the chart label. +*/}} +{{- define "myapp.chart" -}} +{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}} +{{- end -}} diff --git a/charts/ec-ibmis-lab-ext/templates/configmap.yaml b/charts/ec-ibmis-lab-ext/templates/configmap.yaml new file mode 100644 index 00000000..e07136b0 --- /dev/null +++ b/charts/ec-ibmis-lab-ext/templates/configmap.yaml @@ -0,0 +1,34 @@ +# SPDX-License-Identifier: Apache-2.0 +# Copyright Contributors to the Egeria project. +--- +apiVersion: v1 +kind: ConfigMap +metadata: + name: {{ .Release.Name }}-configmap + labels: + app.kubernetes.io/name: {{ include "myapp.name" . }} + helm.sh/chart: {{ include "myapp.chart" . }} + app.kubernetes.io/instance: {{ .Release.Name }} + app.kubernetes.io/managed-by: {{ .Release.Service }} +data: + # General cluster configuration - for core egeria, kafka - these must be used + EGERIA_USER: {{ .Values.egeria.user }} + EGERIA_COHORT: {{ .Values.egeria.cohort }} + KAFKA_ENDPOINT: {{ .Release.Name }}-kafka:9092 + + # Used by IBM Information Server + STRICT_SSL: "false" + LOGGING_LEVEL_ROOT: {{ .Values.logging.level }} + PROXY_ENDPOINT: https://{{ .Release.Name }}-infosvr-proxy:9443 + IBM_HOST: infosvr + IBM_PORT: "9446" + IBM_KAFKA_ENDPOINT: infosvr:59092 + IBM_USER: {{ .Values.ibm.user }} + IBM_PASS: {{ .Values.ibm.password }} + IBM_IGC_SERVER: {{ .Values.ibm.igc }} + IBM_DATASTAGE_SERVER: {{ .Values.ibm.datastage }} + OMAS_SERVER: "ibm_omas" + + # Used for downloads + CONNECTOR_JAR: egeria-connector-ibm-information-server-package-{{ .Values.connector.version }}-jar-with-dependencies.jar + CONNECTOR_URL: {{ .Values.connector.url }} diff --git a/charts/ec-ibmis-lab-ext/templates/ibm-infosvr.yaml b/charts/ec-ibmis-lab-ext/templates/ibm-infosvr.yaml new file mode 100644 index 00000000..4c28b89d --- /dev/null +++ b/charts/ec-ibmis-lab-ext/templates/ibm-infosvr.yaml @@ -0,0 +1,154 @@ +# SPDX-License-Identifier: Apache-2.0 +# Copyright Contributors to the Egeria project. +--- +apiVersion: v1 +kind: Service +metadata: + labels: + app.kubernetes.io/name: {{ include "myapp.name" . }} + helm.sh/chart: {{ include "myapp.chart" . }} + app.kubernetes.io/instance: {{ .Release.Name }} + app.kubernetes.io/managed-by: {{ .Release.Service }} + app.kubernetes.io/component: infosvr-proxy + name: {{ .Release.Name }}-infosvr-proxy + +spec: + ports: + - name: proxy + port: 9443 + - name: web + port: 9446 + - name: zookeeper + port: 52181 + - name: kafka + port: 59092 + selector: + app.kubernetes.io/name: {{ include "myapp.name" . }} + app.kubernetes.io/instance: {{ .Release.Name }} + app.kubernetes.io/component: infosvr-proxy +... +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + name: {{ .Release.Name }}-infosvr + labels: + app.kubernetes.io/name: {{ include "myapp.name" . }} + helm.sh/chart: {{ include "myapp.chart" . }} + app.kubernetes.io/instance: {{ .Release.Name }} + app.kubernetes.io/managed-by: {{ .Release.Service }} + app.kubernetes.io/component: infosvr-proxy + +spec: + replicas: 1 + selector: + matchLabels: + app.kubernetes.io/name: {{ include "myapp.name" . }} + app.kubernetes.io/instance: {{ .Release.Name }} + app.kubernetes.io/component: infosvr-proxy + strategy: {} + template: + metadata: + labels: + app.kubernetes.io/name: {{ include "myapp.name" . }} + app.kubernetes.io/instance: {{ .Release.Name }} + app.kubernetes.io/component: infosvr-proxy + spec: + # Fix the hostname to what the image requires of itself and define the secrets to use + # for pulling the container image from a private repository + hostname: infosvr + imagePullSecrets: + - name: regcred + volumes: + - name: egeria-igc-connector-volume + emptyDir: {} + initContainers: + - name: init-connector + image: "{{ if (.Values.image.configure.registry | default .Values.imageDefaults.registry) }}{{ .Values.image.configure.registry | default .Values.imageDefaults.registry }}/{{ end }}\ + {{ if (.Values.image.configure.namespace | default .Values.imageDefaults.namespace) }}{{ .Values.image.configure.namespace | default .Values.imageDefaults.namespace }}/{{ end }}\ + {{ .Values.image.configure.name }}\ + :{{ .Values.image.configure.tag | default .Values.imageDefaults.tag }}" + imagePullPolicy: {{ .Values.image.configure.pullPolicy | default .Values.imageDefaults.pullPolicy }} + envFrom: + - configMapRef: + name: {{ .Release.Name }}-configmap + command: + - "/bin/bash" + - "-c" + - > + cd /opt/egeria/connectors && + curl --location ${CONNECTOR_URL} --output ${CONNECTOR_JAR} + volumeMounts: + - mountPath: /opt/egeria/connectors + name: egeria-igc-connector-volume + containers: + - name: proxy + image: "{{ if (.Values.image.egeria.registry | default .Values.imageDefaults.registry) }}{{ .Values.image.egeria.registry | default .Values.imageDefaults.registry }}/{{ end }}\ + {{ if (.Values.image.egeria.namespace | default .Values.imageDefaults.namespace) }}{{ .Values.image.egeria.namespace | default .Values.imageDefaults.namespace }}/{{ end }}\ + {{ .Values.image.egeria.name }}\ + :{{ .Values.image.egeria.tag | default .Values.imageDefaults.tag }}" + imagePullPolicy: {{ .Values.image.egeria.pullPolicy | default .Values.imageDefaults.pullPolicy }} + envFrom: + - configMapRef: + name: {{ .Release.Name }}-configmap + env: + - name: "LOADER_PATH" + value: "/opt/egeria/connectors" + - name: "LOGGING_LEVEL_ORG_ODPI_EGERIA_CONNECTORS_IBM_IGC" + value: "DEBUG" + ports: + - containerPort: 9443 + readinessProbe: + tcpSocket: + port: 9443 + initialDelaySeconds: 10 + periodSeconds: 10 + failureThreshold: 6 + resources: + requests: + memory: "1Gi" + cpu: "250m" + limits: + memory: "2Gi" + cpu: "1000m" + volumeMounts: + - mountPath: /opt/egeria/connectors + name: egeria-igc-connector-volume + readOnly: true + - name: infosvr + image: "{{ if (.Values.image.infosvr.registry | default .Values.imageDefaults.registry) }}{{ .Values.image.infosvr.registry | default .Values.imageDefaults.registry }}/{{ end }}\ + {{ if (.Values.image.infosvr.namespace | default .Values.imageDefaults.namespace) }}{{ .Values.image.infosvr.namespace | default .Values.imageDefaults.namespace }}/{{ end }}\ + {{ .Values.image.infosvr.name }}\ + :{{ .Values.image.infosvr.tag }}" + imagePullPolicy: {{ .Values.image.infosvr.pullPolicy | default .Values.imageDefaults.pullPolicy }} + securityContext: + privileged: true + ports: + - containerPort: 9446 + - containerPort: 52181 + - containerPort: 59092 + livenessProbe: + httpGet: + path: /ibm/iis/launchpad + port: 9446 + scheme: "HTTPS" + initialDelaySeconds: 720 + periodSeconds: 20 + failureThreshold: 3 + readinessProbe: + httpGet: + path: /ibm/iis/launchpad + port: 9446 + scheme: "HTTPS" + initialDelaySeconds: 300 + periodSeconds: 20 + failureThreshold: 12 + resources: + requests: + memory: "4Gi" + cpu: "2000m" + limits: + memory: "8Gi" + cpu: "6000m" + +... diff --git a/charts/ec-ibmis-lab-ext/templates/init.yaml b/charts/ec-ibmis-lab-ext/templates/init.yaml new file mode 100644 index 00000000..f5e463ce --- /dev/null +++ b/charts/ec-ibmis-lab-ext/templates/init.yaml @@ -0,0 +1,138 @@ +# SPDX-License-Identifier: Apache-2.0 +# Copyright Contributors to the Egeria project. +--- +apiVersion: batch/v1 +kind: Job +metadata: + name: {{ .Release.Name }}-init + labels: + app.kubernetes.io/name: {{ include "myapp.name" . }} + helm.sh/chart: {{ include "myapp.chart" . }} + app.kubernetes.io/instance: {{ .Release.Name }} + app.kubernetes.io/managed-by: {{ .Release.Service }} + app.kubernetes.io/component: init + +spec: + backoffLimit: 0 + template: + metadata: + labels: + app.kubernetes.io/name: {{ include "myapp.name" . }} + app.kubernetes.io/instance: {{ .Release.Name }} + app.kubernetes.io/component: init + spec: + restartPolicy: Never + serviceAccountName: {{ .Release.Name }}-lab + # Wait for all of the services to be up before attempting initial configuration + initContainers: + - name: wait-for-igcproxy + image: "{{ if (.Values.image.configure.registry | default .Values.imageDefaults.registry) }}{{ .Values.image.configure.registry | default .Values.imageDefaults.registry }}/{{ end }}\ + {{ if (.Values.image.configure.namespace | default .Values.imageDefaults.namespace) }}{{ .Values.image.configure.namespace | default .Values.imageDefaults.namespace }}/{{ end }}\ + {{ .Values.image.configure.name }}\ + :{{ .Values.image.configure.tag | default .Values.imageDefaults.tag }}" + imagePullPolicy: {{ .Values.image.configure.pullPolicy | default .Values.imageDefaults.pullPolicy }} + env: + - name: SERVICE + value: {{ .Release.Name }}-infosvr-proxy + - name: wait-for-kafka + image: "{{ if (.Values.image.configure.registry | default .Values.imageDefaults.registry) }}{{ .Values.image.configure.registry | default .Values.imageDefaults.registry }}/{{ end }}\ + {{ if (.Values.image.configure.namespace | default .Values.imageDefaults.namespace) }}{{ .Values.image.configure.namespace | default .Values.imageDefaults.namespace }}/{{ end }}\ + {{ .Values.image.configure.name }}\ + :{{ .Values.image.configure.tag | default .Values.imageDefaults.tag }}" + imagePullPolicy: {{ .Values.image.configure.pullPolicy | default .Values.imageDefaults.pullPolicy }} + env: + - name: SERVICE + value: {{ .Release.Name }}-kafka + - name: wait-for-ibm-igc + image: "{{ if (.Values.image.configure.registry | default .Values.imageDefaults.registry) }}{{ .Values.image.configure.registry | default .Values.imageDefaults.registry }}/{{ end }}\ + {{ if (.Values.image.configure.namespace | default .Values.imageDefaults.namespace) }}{{ .Values.image.configure.namespace | default .Values.imageDefaults.namespace }}/{{ end }}\ + {{ .Values.image.configure.name }}\ + :{{ .Values.image.configure.tag | default .Values.imageDefaults.tag }}" + imagePullPolicy: {{ .Values.image.configure.pullPolicy | default .Values.imageDefaults.pullPolicy }} + envFrom: + - configMapRef: + name: {{ .Release.Name }}-configmap + command: + - "/bin/bash" + - "-c" + - > + until $(curl -c /tmp/cookies.txt -s -f -k --connect-timeout 5 -X POST -u ${IBM_USER}:${IBM_PASS} --url https://{{ .Release.Name }}-infosvr-proxy:${IBM_PORT}/ibm/iis/igc-rest/v1/search -H "Content-Type: application/json" -d '{"types":["category","term","information_governance_policy","information_governance_rule"],"pageSize":1,"workflowMode":"draft"}' | grep 'numTotal' >/dev/null); do + curl -b /tmp/cookies.txt -s -f -k --connect-timeout 5 -X GET -u ${IBM_USER}:${IBM_PASS} --url https://{{ .Release.Name }}-infosvr-proxy:${IBM_PORT}/ibm/iis/igc-rest/v1/logout; + echo waiting for {{ .Release.Name }}-infosvr-proxy to be accessible; + sleep 2; + done; + # Then configure and startup the DataStage connector + containers: + - name: init + image: "{{ if (.Values.image.configure.registry | default .Values.imageDefaults.registry) }}{{ .Values.image.configure.registry | default .Values.imageDefaults.registry }}/{{ end }}\ + {{ if (.Values.image.configure.namespace | default .Values.imageDefaults.namespace) }}{{ .Values.image.configure.namespace | default .Values.imageDefaults.namespace }}/{{ end }}\ + {{ .Values.image.configure.name }}\ + :{{ .Values.image.configure.tag | default .Values.imageDefaults.tag }}" + imagePullPolicy: {{ .Values.image.configure.pullPolicy | default .Values.imageDefaults.pullPolicy }} + envFrom: + - configMapRef: + name: {{ .Release.Name }}-configmap + command: + - "/bin/bash" + - "-c" + - > + curl -f -k -w "\n (%{http_code} - %{url_effective})\n" --silent --basic admin:admin -X POST + ${PROXY_ENDPOINT}/open-metadata/admin-services/users/${EGERIA_USER}/servers/${IBM_IGC_SERVER}/server-type?typeName=IGC + && + curl -f -k -w "\n (%{http_code} - %{url_effective})\n" --silent --basic admin:admin -X POST + ${PROXY_ENDPOINT}/open-metadata/admin-services/users/${EGERIA_USER}/servers/${IBM_IGC_SERVER}/organization-name?name=IBM + && + curl -f -k -w "\n (%{http_code} - %{url_effective})\n" --silent --basic admin:admin -X POST + ${PROXY_ENDPOINT}/open-metadata/admin-services/users/${EGERIA_USER}/servers/${IBM_IGC_SERVER}/server-url-root?url=${PROXY_ENDPOINT} + && + curl -f -k -w "\n (%{http_code} - %{url_effective})\n" --silent --basic admin:admin -X POST + --header "Content-Type: application/json" + ${PROXY_ENDPOINT}/open-metadata/admin-services/users/${EGERIA_USER}/servers/${IBM_IGC_SERVER}/event-bus + --data '{"producer": {"bootstrap.servers": "'"${KAFKA_ENDPOINT}"'"}, "consumer": {"bootstrap.servers": "'"${KAFKA_ENDPOINT}"'"} }' + && + curl -f -k -w "\n (%{http_code} - %{url_effective})\n" --silent --basic admin:admin -X POST + --header "Content-Type: application/json" + ${PROXY_ENDPOINT}/open-metadata/admin-services/users/${EGERIA_USER}/servers/${IBM_IGC_SERVER}/local-repository/mode/repository-proxy/connection + --data '{"class":"Connection","connectorType":{"class":"ConnectorType","connectorProviderClassName":"org.odpi.egeria.connectors.ibm.igc.repositoryconnector.IGCOMRSRepositoryConnectorProvider"},"endpoint":{"class":"Endpoint","address":"'"${IBM_HOST}:${IBM_PORT}"'","protocol":"https"},"userId":"'"${IBM_USER}"'","clearPassword":"'"${IBM_PASS}"'","configurationProperties":{"defaultZones":["default"]}}' + && + curl -f -k -w "\n (%{http_code} - %{url_effective})\n" --silent --basic admin:admin -X POST + ${PROXY_ENDPOINT}/open-metadata/admin-services/users/${EGERIA_USER}/servers/${IBM_IGC_SERVER}/cohorts/${EGERIA_COHORT} + && + curl -f -k -w "\n (%{http_code} - %{url_effective})\n" --silent --basic admin:admin -X POST + ${PROXY_ENDPOINT}/open-metadata/admin-services/users/${EGERIA_USER}/servers/${IBM_IGC_SERVER}/instance + && + curl -f -k -w "\n (%{http_code} - %{url_effective})\n" --silent --basic admin:admin -X POST + ${PROXY_ENDPOINT}/open-metadata/admin-services/users/${EGERIA_USER}/servers/${OMAS_SERVER}/local-repository/mode/local-graph-repository + && + curl -f -k -w "\n (%{http_code} - %{url_effective})\n" --silent --basic admin:admin -X POST + ${PROXY_ENDPOINT}/open-metadata/admin-services/users/${EGERIA_USER}/servers/${OMAS_SERVER}/server-url-root?url=${PROXY_ENDPOINT} + && + curl -f -k -w "\n (%{http_code} - %{url_effective})\n" --silent --basic admin:admin -X POST + --header "Content-Type: application/json" + ${PROXY_ENDPOINT}/open-metadata/admin-services/users/${EGERIA_USER}/servers/${OMAS_SERVER}/event-bus + --data '{"producer": {"bootstrap.servers": "'"${KAFKA_ENDPOINT}"'"}, "consumer": {"bootstrap.servers": "'"${KAFKA_ENDPOINT}"'"} }' + && + curl -f -k -w "\n (%{http_code} - %{url_effective})\n" --silent --basic admin:admin -X POST + ${PROXY_ENDPOINT}/open-metadata/admin-services/users/${EGERIA_USER}/servers/${OMAS_SERVER}/access-services/data-engine + && + curl -f -k -w "\n (%{http_code} - %{url_effective})\n" --silent --basic admin:admin -X POST + ${PROXY_ENDPOINT}/open-metadata/admin-services/users/${EGERIA_USER}/servers/${OMAS_SERVER}/instance + && + curl -f -k -w "\n (%{http_code} - %{url_effective})\n" --silent --basic admin:admin -X POST + ${PROXY_ENDPOINT}/open-metadata/admin-services/users/${EGERIA_USER}/servers/${IBM_DATASTAGE_SERVER}/local-repository/mode/in-memory-repository + && + curl -f -k -w "\n (%{http_code} - %{url_effective})\n" --silent --basic admin:admin -X POST + --header "Content-Type: application/json" + ${PROXY_ENDPOINT}/open-metadata/admin-services/users/${EGERIA_USER}/servers/${IBM_DATASTAGE_SERVER}/data-engine-proxy-service/configuration + --data '{"class":"DataEngineProxyConfig","accessServiceRootURL":"'"${PROXY_ENDPOINT}"'","accessServiceServerName":"'"${OMAS_SERVER}"'","eventsClientEnabled":true,"dataEngineConnection":{"class":"Connection","connectorType":{"class":"ConnectorType","connectorProviderClassName":"org.odpi.egeria.connectors.ibm.datastage.dataengineconnector.DataStageConnectorProvider"},"endpoint":{"class":"Endpoint","address":"'"${IBM_HOST}:${IBM_PORT}"'","protocol":"https"},"userId":"'"${IBM_USER}"'","clearPassword":"'"${IBM_PASS}"'","configurationProperties":{"limitToProjects":["minimal"]}},"pollIntervalInSeconds":60}' + && + curl -f -k -w "\n (%{http_code} - %{url_effective})\n" --silent --basic admin:admin -X POST + ${PROXY_ENDPOINT}/open-metadata/admin-services/users/${EGERIA_USER}/servers/${IBM_DATASTAGE_SERVER}/instance + resources: + requests: + memory: "16Mi" + cpu: "100m" + limits: + memory: "64Mi" + cpu: "500m" +... diff --git a/charts/ec-ibmis-lab-ext/templates/serviceaccount.yaml b/charts/ec-ibmis-lab-ext/templates/serviceaccount.yaml new file mode 100644 index 00000000..356e7f1f --- /dev/null +++ b/charts/ec-ibmis-lab-ext/templates/serviceaccount.yaml @@ -0,0 +1,34 @@ +# SPDX-License-Identifier: Apache-2.0 +# Copyright Contributors to the Egeria project. +--- +apiVersion: v1 +kind: ServiceAccount +metadata: + name: {{ .Release.Name }}-lab +... +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: Role +metadata: + namespace: default + name: {{ .Release.Name }}-services-reader +rules: + - apiGroups: [""] + resources: ["endpoints","services","pods"] + verbs: ["get","watch","list"] +... +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: RoleBinding +metadata: + namespace: default + name: {{ .Release.Name }}-read-services +subjects: + - kind: ServiceAccount + name: {{ .Release.Name }}-lab + apiGroup: "" +roleRef: + kind: Role + name: {{ .Release.Name }}-services-reader + apiGroup: rbac.authorization.k8s.io +... diff --git a/charts/ec-ibmis-lab-ext/values.yaml b/charts/ec-ibmis-lab-ext/values.yaml new file mode 100644 index 00000000..d12ca9ee --- /dev/null +++ b/charts/ec-ibmis-lab-ext/values.yaml @@ -0,0 +1,57 @@ +# SPDX-License-Identifier: Apache-2.0 +# Copyright Contributors to the Egeria project. +--- +logging: + level: INFO + +imageDefaults: + registry: docker.io + namespace: odpi + tag: "2.11" + pullPolicy: IfNotPresent + +egeria: + user: admin + cohort: cocoCohort + server: ibm + +connector: + version: "2.10" + url: "http://repository.sonatype.org/service/local/artifact/maven/redirect?r=central-proxy&g=org.odpi.egeria&a=egeria-connector-ibm-information-server-package&v=RELEASE&c=jar-with-dependencies" + +image: + egeria: + name: egeria + pullPolicy: IfNotPresent + + configure: + name: egeria-configure + pullPolicy: IfNotPresent + + # NOTE: this image is "bring your own". Furthermore, the tag will be automatically built based on the + # name used for the Helm chart release + "-samples". So for example, if you deploy the Helm chart with + # a name of "v11.7.0.2" then the image tag used for deploying the IGC container will be "v11.7.0.2-samples" + # (if you wish to override this, change the "ibm-infosvr.yaml" definition directly) + infosvr: + registry: "localhost:5000" + namespace: ibm + name: infosvr + tag: v11710sp2-samples + +ibm: + user: isadmin + password: isadmin + igc: igc + datastage: datastage + +odpi-egeria-lab: + imageDefaults: + pullPolicy: IfNotPresent + kafka: + securityContext: + enabled: false + zookeeper: + persistence: + enabled: false + persistence: + enabled: false diff --git a/cts/charts/ec-cts-ibmis/templates/ibm-igc.yaml b/cts/charts/ec-cts-ibmis/templates/ibm-igc.yaml index f11af001..92da8fc4 100644 --- a/cts/charts/ec-cts-ibmis/templates/ibm-igc.yaml +++ b/cts/charts/ec-cts-ibmis/templates/ibm-igc.yaml @@ -31,7 +31,6 @@ spec: apiVersion: apps/v1 kind: Deployment metadata: - creationTimestamp: null name: {{ .Release.Name }}-ibm-igc labels: app.kubernetes.io/name: {{ include "myapp.name" . }} @@ -50,7 +49,6 @@ spec: strategy: {} template: metadata: - creationTimestamp: null labels: app.kubernetes.io/name: {{ include "myapp.name" . }} app.kubernetes.io/instance: {{ .Release.Name }} diff --git a/igc-adapter/src/main/java/org/odpi/egeria/connectors/ibm/igc/repositoryconnector/mapping/classifications/TypeEmbeddedAttributeMapper.java b/igc-adapter/src/main/java/org/odpi/egeria/connectors/ibm/igc/repositoryconnector/mapping/classifications/TypeEmbeddedAttributeMapper.java index 77a1b276..6108467c 100644 --- a/igc-adapter/src/main/java/org/odpi/egeria/connectors/ibm/igc/repositoryconnector/mapping/classifications/TypeEmbeddedAttributeMapper.java +++ b/igc-adapter/src/main/java/org/odpi/egeria/connectors/ibm/igc/repositoryconnector/mapping/classifications/TypeEmbeddedAttributeMapper.java @@ -10,7 +10,7 @@ * Singleton to map the OMRS "TypeEmbeddedAttribute" classification. * @see TypeEmbeddedAttributeMapper_RelationalColumn * @see TypeEmbeddedAttributeMapper_RelationalTable - * @see TypeEmbeddedAttributeMapper_TabularColumn + * @see TypeEmbeddedAttributeMapper_TabularFileColumn */ public class TypeEmbeddedAttributeMapper extends ClassificationMapping { @@ -45,7 +45,7 @@ protected TypeEmbeddedAttributeMapper() { addMappedOmrsProperty("dataType"); addSubType(TypeEmbeddedAttributeMapper_RelationalTable.getInstance(null)); addSubType(TypeEmbeddedAttributeMapper_RelationalColumn.getInstance(null)); - addSubType(TypeEmbeddedAttributeMapper_TabularColumn.getInstance(null)); + addSubType(TypeEmbeddedAttributeMapper_TabularFileColumn.getInstance(null)); } protected TypeEmbeddedAttributeMapper(String igcAssetType, diff --git a/igc-adapter/src/main/java/org/odpi/egeria/connectors/ibm/igc/repositoryconnector/mapping/classifications/TypeEmbeddedAttributeMapper_TabularColumn.java b/igc-adapter/src/main/java/org/odpi/egeria/connectors/ibm/igc/repositoryconnector/mapping/classifications/TypeEmbeddedAttributeMapper_TabularFileColumn.java similarity index 64% rename from igc-adapter/src/main/java/org/odpi/egeria/connectors/ibm/igc/repositoryconnector/mapping/classifications/TypeEmbeddedAttributeMapper_TabularColumn.java rename to igc-adapter/src/main/java/org/odpi/egeria/connectors/ibm/igc/repositoryconnector/mapping/classifications/TypeEmbeddedAttributeMapper_TabularFileColumn.java index 7969a876..54f14098 100644 --- a/igc-adapter/src/main/java/org/odpi/egeria/connectors/ibm/igc/repositoryconnector/mapping/classifications/TypeEmbeddedAttributeMapper_TabularColumn.java +++ b/igc-adapter/src/main/java/org/odpi/egeria/connectors/ibm/igc/repositoryconnector/mapping/classifications/TypeEmbeddedAttributeMapper_TabularFileColumn.java @@ -7,20 +7,20 @@ /** * Singleton defining the mapping to the OMRS "TypeEmbeddedAttribute" classification. */ -public class TypeEmbeddedAttributeMapper_TabularColumn extends TypeEmbeddedAttributeMapper { +public class TypeEmbeddedAttributeMapper_TabularFileColumn extends TypeEmbeddedAttributeMapper { private static class Singleton { - private static final TypeEmbeddedAttributeMapper_TabularColumn INSTANCE = new TypeEmbeddedAttributeMapper_TabularColumn(); + private static final TypeEmbeddedAttributeMapper_TabularFileColumn INSTANCE = new TypeEmbeddedAttributeMapper_TabularFileColumn(); } - public static TypeEmbeddedAttributeMapper_TabularColumn getInstance(IGCVersionEnum version) { + public static TypeEmbeddedAttributeMapper_TabularFileColumn getInstance(IGCVersionEnum version) { return Singleton.INSTANCE; } - protected TypeEmbeddedAttributeMapper_TabularColumn() { + protected TypeEmbeddedAttributeMapper_TabularFileColumn() { super( "data_file_field", null, - "TabularColumn", + "TabularFileColumn", "TypeEmbeddedAttribute" ); addSimplePropertyMapping("data_type", "dataType"); diff --git a/igc-adapter/src/main/java/org/odpi/egeria/connectors/ibm/igc/repositoryconnector/mapping/entities/RelationalColumnMapper.java b/igc-adapter/src/main/java/org/odpi/egeria/connectors/ibm/igc/repositoryconnector/mapping/entities/RelationalColumnMapper.java index 760546ae..e036c455 100644 --- a/igc-adapter/src/main/java/org/odpi/egeria/connectors/ibm/igc/repositoryconnector/mapping/entities/RelationalColumnMapper.java +++ b/igc-adapter/src/main/java/org/odpi/egeria/connectors/ibm/igc/repositoryconnector/mapping/entities/RelationalColumnMapper.java @@ -10,7 +10,7 @@ /** * Defines the mapping to the OMRS "RelationalColumn" entity. */ -public class RelationalColumnMapper extends SchemaAttributeMapper { +public class RelationalColumnMapper extends TabularColumnMapper { private static class Singleton { private static final RelationalColumnMapper INSTANCE = new RelationalColumnMapper(); diff --git a/igc-adapter/src/main/java/org/odpi/egeria/connectors/ibm/igc/repositoryconnector/mapping/entities/TabularColumnMapper.java b/igc-adapter/src/main/java/org/odpi/egeria/connectors/ibm/igc/repositoryconnector/mapping/entities/TabularColumnMapper.java index 24d872c0..3d9c54a4 100644 --- a/igc-adapter/src/main/java/org/odpi/egeria/connectors/ibm/igc/repositoryconnector/mapping/entities/TabularColumnMapper.java +++ b/igc-adapter/src/main/java/org/odpi/egeria/connectors/ibm/igc/repositoryconnector/mapping/entities/TabularColumnMapper.java @@ -3,8 +3,6 @@ package org.odpi.egeria.connectors.ibm.igc.repositoryconnector.mapping.entities; import org.odpi.egeria.connectors.ibm.igc.clientlibrary.IGCVersionEnum; -import org.odpi.egeria.connectors.ibm.igc.repositoryconnector.mapping.classifications.TypeEmbeddedAttributeMapper_TabularColumn; -import org.odpi.egeria.connectors.ibm.igc.repositoryconnector.mapping.relationships.AttributeForSchemaMapper_RecordField; /** * Defines the mapping to the OMRS "TabularColumn" entity. @@ -12,27 +10,27 @@ public class TabularColumnMapper extends SchemaAttributeMapper { private static class Singleton { - private static final TabularColumnMapper INSTANCE = new TabularColumnMapper(); + private static final TabularColumnMapper INSTANCE = new TabularColumnMapper( + SUPERTYPE_SENTINEL, + SUPERTYPE_SENTINEL, + "TabularColumn" + ); } public static TabularColumnMapper getInstance(IGCVersionEnum version) { return Singleton.INSTANCE; } - protected TabularColumnMapper() { + protected TabularColumnMapper(String igcAssetTypeName, + String igcAssetTypeDisplayName, + String omrsEntityTypeName) { - // Start by calling the superclass's constructor to initialise the Mapper + // Pass-through to the superclass's constructor to initialise the Mapper super( - "data_file_field", - "Data File Field", - "TabularColumn" + igcAssetTypeName, + igcAssetTypeDisplayName, + omrsEntityTypeName ); - // The list of relationships that should be mapped - addRelationshipMapper(AttributeForSchemaMapper_RecordField.getInstance(null)); - - // The list of classifications that should be mapped - addClassificationMapper(TypeEmbeddedAttributeMapper_TabularColumn.getInstance(null)); - } } diff --git a/igc-adapter/src/main/java/org/odpi/egeria/connectors/ibm/igc/repositoryconnector/mapping/entities/TabularFileColumnMapper.java b/igc-adapter/src/main/java/org/odpi/egeria/connectors/ibm/igc/repositoryconnector/mapping/entities/TabularFileColumnMapper.java new file mode 100644 index 00000000..9cc3da8a --- /dev/null +++ b/igc-adapter/src/main/java/org/odpi/egeria/connectors/ibm/igc/repositoryconnector/mapping/entities/TabularFileColumnMapper.java @@ -0,0 +1,38 @@ +/* SPDX-License-Identifier: Apache-2.0 */ +/* Copyright Contributors to the ODPi Egeria project. */ +package org.odpi.egeria.connectors.ibm.igc.repositoryconnector.mapping.entities; + +import org.odpi.egeria.connectors.ibm.igc.clientlibrary.IGCVersionEnum; +import org.odpi.egeria.connectors.ibm.igc.repositoryconnector.mapping.classifications.TypeEmbeddedAttributeMapper_TabularFileColumn; +import org.odpi.egeria.connectors.ibm.igc.repositoryconnector.mapping.relationships.AttributeForSchemaMapper_RecordField; + +/** + * Defines the mapping to the OMRS "TabularFileColumn" entity. + */ +public class TabularFileColumnMapper extends TabularColumnMapper { + + private static class Singleton { + private static final TabularFileColumnMapper INSTANCE = new TabularFileColumnMapper(); + } + public static TabularFileColumnMapper getInstance(IGCVersionEnum version) { + return Singleton.INSTANCE; + } + + protected TabularFileColumnMapper() { + + // Start by calling the superclass's constructor to initialise the Mapper + super( + "data_file_field", + "Data File Field", + "TabularFileColumn" + ); + + // The list of relationships that should be mapped + addRelationshipMapper(AttributeForSchemaMapper_RecordField.getInstance(null)); + + // The list of classifications that should be mapped + addClassificationMapper(TypeEmbeddedAttributeMapper_TabularFileColumn.getInstance(null)); + + } + +} diff --git a/igc-adapter/src/test/java/org/odpi/egeria/connectors/ibm/igc/repositoryconnector/ConnectorTest.java b/igc-adapter/src/test/java/org/odpi/egeria/connectors/ibm/igc/repositoryconnector/ConnectorTest.java index 009b86c5..be9af323 100644 --- a/igc-adapter/src/test/java/org/odpi/egeria/connectors/ibm/igc/repositoryconnector/ConnectorTest.java +++ b/igc-adapter/src/test/java/org/odpi/egeria/connectors/ibm/igc/repositoryconnector/ConnectorTest.java @@ -1496,7 +1496,7 @@ public void testGlossaryTermRelationships() { Set proxyOneTypes = new HashSet<>(); proxyOneTypes.add("RelationalColumn"); - proxyOneTypes.add("TabularColumn"); + proxyOneTypes.add("TabularFileColumn"); Set proxyTwoTypes = new HashSet<>(); proxyTwoTypes.add(MockConstants.EGERIA_GLOSSARY_TERM_TYPE_NAME); @@ -2349,7 +2349,7 @@ public void testTabularSchemaTypeRelationships() { ); relationshipExpectations.add( new RelationshipExpectation(2, 5, - "AttributeForSchema", "TabularSchemaType", "TabularColumn", + "AttributeForSchema", "TabularSchemaType", "TabularFileColumn", MockConstants.DATA_FILE_RECORD_QN, null) ); @@ -2373,7 +2373,7 @@ public void testGetTabularColumnDetail() { EntityDetail detail = testEntityDetail( "data_file_field", - "TabularColumn", + "TabularFileColumn", null, MockConstants.DATA_FILE_FIELD_RID, expectedValues @@ -2391,23 +2391,23 @@ public void testTabularColumnRelationships() { List relationshipExpectations = new ArrayList<>(); relationshipExpectations.add( new RelationshipExpectation(0, 1, - "AttachedNoteLog", "TabularColumn", "NoteLog", + "AttachedNoteLog", "TabularFileColumn", "NoteLog", MockConstants.DATA_FILE_FIELD_QN, "gen!NL@" + MockConstants.DATA_FILE_FIELD_QN) ); relationshipExpectations.add( new RelationshipExpectation(1, 2, - "SemanticAssignment", "TabularColumn", "GlossaryTerm", + "SemanticAssignment", "TabularFileColumn", "GlossaryTerm", MockConstants.DATA_FILE_FIELD_QN, expectedTermQN) ); relationshipExpectations.add( new RelationshipExpectation(2, 3, - "AttributeForSchema", "TabularSchemaType", "TabularColumn", + "AttributeForSchema", "TabularSchemaType", "TabularFileColumn", MockConstants.DATA_FILE_RECORD_QN, MockConstants.DATA_FILE_FIELD_QN) ); testRelationshipsForEntity( "data_file_field", - "TabularColumn", + "TabularFileColumn", null, MockConstants.DATA_FILE_FIELD_RID, MockConstants.EGERIA_PAGESIZE, @@ -3174,7 +3174,7 @@ public void testFindSchemaElementByAnchorGUID() { ip = repositoryHelper.addStringPropertyToInstance(sourceName, ip, "anchorGUID", repositoryHelper.getExactMatchRegex(guid.toString()), methodName); testFindEntitiesByProperty( "d81a0425-4e9b-4f31-bc1c-e18c3566da10", - "TabularColumn", + "TabularFileColumn", ip, MatchCriteria.ALL, MockConstants.EGERIA_PAGESIZE, diff --git a/pom.xml b/pom.xml index fe93453b..1f6638c6 100644 --- a/pom.xml +++ b/pom.xml @@ -95,7 +95,7 @@ UTF-8 2.12.3 - 1.7.30 + 1.7.31 5.3.8 1.5.2 5.6.2 @@ -118,7 +118,7 @@ 3.2.0 2.8.2 3.0.0 - 4.2.3 + 4.3.0 0.8.7 jacoco