From 010034e723a8a1b5d94499888a2ee64a8c1328b2 Mon Sep 17 00:00:00 2001 From: "sownak.roy" Date: Fri, 22 Mar 2024 11:40:39 +0000 Subject: [PATCH] [r3-corda] Updated for latest bevel charts Signed-off-by: sownak.roy --- .../configuration/deploy-dscp-app.yaml | 2 +- .../configuration/deploy-identity-app.yaml | 2 +- .../charts/expressapp/Chart.yaml | 2 +- .../expressapp/templates/deployment.yaml | 22 +- .../charts/expressapp/templates/service.yaml | 78 ++--- .../charts/expressapp/values.yaml | 17 +- .../charts/frontend/Chart.yaml | 2 +- .../charts/frontend/templates/deployment.yaml | 22 +- .../charts/frontend/templates/service.yaml | 26 +- .../charts/frontend/values.yaml | 20 +- .../charts/springbootwebserver/Chart.yaml | 2 +- .../templates/deployment.yaml | 267 ++++-------------- .../springbootwebserver/templates/pvc.yaml | 6 +- .../templates/service.yaml | 12 +- .../charts/springbootwebserver/values.yaml | 117 ++------ .../configuration/deploy-supplychain-app.yaml | 2 +- .../create/corda/expressapi/tasks/main.yaml | 1 - .../create/corda/expressapi/vars/main.yaml | 2 +- .../create/corda/webserver/tasks/main.yaml | 2 +- .../templates/expressapi-besu.tpl | 14 +- .../templates/expressapi-corda.tpl | 14 +- .../templates/expressapi-fabric.tpl | 24 +- .../templates/expressapi-quorum.tpl | 2 +- .../helm_component/templates/frontend.tpl | 11 +- .../helm_component/templates/webserver.tpl | 52 +--- .../roles/helm_lint/vars/main.yaml | 2 +- .../corda/cordApps_springBoot/README.md | 1 + .../corda/cordApps_springBoot/build.gradle | 5 +- .../gradle/wrapper/gradle-wrapper.properties | 3 +- .../supplychain/bcc/flows/SupplyChainTests.kt | 2 +- .../webserver-supply-chain/build.gradle | 4 +- .../corda/express_nodeJS/package-lock.json | 6 +- .../chaincode-external/go.mod | 2 +- .../chaincode-external/go.sum | 3 +- .../fabric/express_nodeJs/package-lock.json | 6 +- .../quorum/smartContracts/package-lock.json | 12 +- .../supplychain-frontend/package-lock.json | 12 +- 37 files changed, 233 insertions(+), 546 deletions(-) diff --git a/examples/dscp-app/configuration/deploy-dscp-app.yaml b/examples/dscp-app/configuration/deploy-dscp-app.yaml index ebbc6247a..322d7e34a 100644 --- a/examples/dscp-app/configuration/deploy-dscp-app.yaml +++ b/examples/dscp-app/configuration/deploy-dscp-app.yaml @@ -27,7 +27,7 @@ git_protocol: "{{ item.gitops.git_protocol | default('https') }}" git_url: "{{ item.gitops.git_url }}" git_key: "{{ item.gitops.private_key | default() }}" - flux_version: "0.35.0" + flux_version: "0.41.2" with_items: "{{ network.organizations }}" # Setup letsencrypt cert-manager diff --git a/examples/identity-app/configuration/deploy-identity-app.yaml b/examples/identity-app/configuration/deploy-identity-app.yaml index 7ef8249f1..926051588 100644 --- a/examples/identity-app/configuration/deploy-identity-app.yaml +++ b/examples/identity-app/configuration/deploy-identity-app.yaml @@ -33,7 +33,7 @@ git_protocol: "{{ item.gitops.git_protocol | default('https') }}" git_url: "{{ item.gitops.git_url }}" git_key: "{{ item.gitops.private_key | default() }}" - flux_version: "0.35.0" + flux_version: "0.41.2" with_items: "{{ network.organizations }}" # Deploy the Indy Webserver for trustee orgs diff --git a/examples/supplychain-app/charts/expressapp/Chart.yaml b/examples/supplychain-app/charts/expressapp/Chart.yaml index 0ce0af2c3..3219b5332 100644 --- a/examples/supplychain-app/charts/expressapp/Chart.yaml +++ b/examples/supplychain-app/charts/expressapp/Chart.yaml @@ -8,4 +8,4 @@ apiVersion: v1 appVersion: "2.0" description: A Helm chart for Kubernetes name: expressapp -version: 0.2.0 +version: 1.0.0 diff --git a/examples/supplychain-app/charts/expressapp/templates/deployment.yaml b/examples/supplychain-app/charts/expressapp/templates/deployment.yaml index ba2a78f01..c2a99a2b1 100644 --- a/examples/supplychain-app/charts/expressapp/templates/deployment.yaml +++ b/examples/supplychain-app/charts/expressapp/templates/deployment.yaml @@ -7,45 +7,45 @@ kind: Deployment apiVersion: apps/v1 metadata: - name: {{ .Values.nodeName }} + name: {{ .Release.Name }} {{- if .Values.deployment.annotations }} annotations: {{ toYaml .Values.deployment.annotations | indent 8 }} {{- end }} - namespace: {{ .Values.metadata.namespace }} + namespace: {{ .Release.Namespace }} labels: - app.kubernetes.io/name: {{ .Values.nodeName }} + app.kubernetes.io/name: {{ .Release.Name }} app.kubernetes.io/managed-by: {{ .Release.Service }} app.kubernetes.io/instance: {{ .Release.Name }} spec: - replicas: {{ .Values.replicaCount }} + replicas: 1 selector: matchLabels: - app.kubernetes.io/name: {{ .Values.nodeName }} + app.kubernetes.io/name: {{ .Release.Name }} app.kubernetes.io/managed-by: {{ .Release.Service }} app.kubernetes.io/instance: {{ .Release.Name }} - app: {{ .Values.nodeName }} + app: {{ .Release.Name }} strategy: type: Recreate rollingUpdate: null template: metadata: labels: - app.kubernetes.io/name: {{ .Values.nodeName }} + app.kubernetes.io/name: {{ .Release.Name }} app.kubernetes.io/managed-by: {{ .Release.Service }} app.kubernetes.io/instance: {{ .Release.Name }} - app: {{ .Values.nodeName }} + app: {{ .Release.Name }} spec: - hostname: {{ .Values.nodeName }} + hostname: {{ .Release.Name }} imagePullSecrets: - - name: {{ .Values.expressapp.pullSecrets | default "regcred" }} + - name: {{ .Values.expressapp.pullSecrets }} containers: - name: expressapp image: {{ .Values.expressapp.image }} imagePullPolicy: {{ .Values.expressapp.pullPolicy }} env: - name: API_URL - value: "{{ .Values.expressapp.env.apiUrl }}" + value: "{{ .Values.expressapp.apiUrl }}" - name: PORT value: "{{ .Values.expressapp.nodePorts.targetPort }}" ports: diff --git a/examples/supplychain-app/charts/expressapp/templates/service.yaml b/examples/supplychain-app/charts/expressapp/templates/service.yaml index dbc0ed845..5633e431b 100644 --- a/examples/supplychain-app/charts/expressapp/templates/service.yaml +++ b/examples/supplychain-app/charts/expressapp/templates/service.yaml @@ -7,56 +7,56 @@ kind: Service apiVersion: v1 metadata: - name: {{ .Values.nodeName }} - namespace: {{ .Values.metadata.namespace }} - {{- if eq $.Values.proxy.provider "ambassador" }} - annotations: - getambassador.io/config: | - --- - apiVersion: ambassador/v2 - kind: TLSContext - name: {{ .Values.proxy.name }}_api_context - hosts: - - {{ .Values.proxy.name }}api.{{ .Values.proxy.external_url_suffix }} - {{ if eq .Values.proxy.type "fabric" }} - secret: {{ .Values.proxy.peer_name }}-{{ .Values.metadata.namespace }}-ambassador-certs.default - {{ else }} - secret: {{ .Values.proxy.peer_name }}-ambassador-certs.{{ .Values.metadata.namespace }} - {{ end }} - secret_namespacing: true - min_tls_version: v1.2 - --- - apiVersion: ambassador/v2 - kind: Mapping - name: {{ .Values.proxy.name }}_api_p2p_mapping - prefix: / - host: {{ .Values.proxy.name }}api.{{ .Values.proxy.external_url_suffix }} - service: {{ .Values.proxy.name }}-expressapi.{{ .Values.metadata.namespace }}:{{ .Values.expressapp.nodePorts.port }} - timeout_ms: 20000 - tls: false - {{ end }} + name: {{ .Release.Name }} + namespace: {{ .Release.Namespace }} labels: - run: {{ .Values.nodeName }} - app.kubernetes.io/name: {{ .Values.nodeName }} + run: {{ .Release.Name }} + app.kubernetes.io/name: {{ .Release.Name }} app.kubernetes.io/managed-by: {{ .Release.Service }} - app.kubernetes.io/instance: {{ .Release.Name }} + app.kubernetes.io/instance: {{ .Release.Name }} spec: - type: {{ .Values.expressapp.serviceType }} + type: ClusterIP selector: - app: {{ .Values.nodeName }} + app: {{ .Release.Name }} ports: - port: {{ .Values.expressapp.nodePorts.port }} targetPort: {{ .Values.expressapp.nodePorts.targetPort }} protocol: TCP - name: {{ .Values.expressapp.nodePorts.name }} - + name: tcp +{{- if eq $.Values.proxy.provider "ambassador" }} +--- +apiVersion: getambassador.io/v3alpha1 +kind: TLSContext +metadata: + name: {{ .Values.proxy.name }}api-tlscontext +spec: + hosts: + - {{ .Values.proxy.name }}api.{{ .Values.proxy.external_url_suffix }} + {{ if eq .Values.proxy.type "fabric" }} + secret: {{ .Values.proxy.name }}-{{ .Release.Namespace }}-ambassador-certs.default + {{ else }} + secret: {{ .Values.proxy.name }}-tls-certs.{{ .Release.Namespace }} + {{ end }} + secret_namespacing: true + min_tls_version: v1.2 +--- +apiVersion: getambassador.io/v3alpha1 +kind: Mapping +metadata: + name: {{ .Values.proxy.name }}api-mapping +spec: + prefix: / + host: {{ .Values.proxy.name }}api.{{ .Values.proxy.external_url_suffix }} + service: {{ .Values.proxy.name }}-expressapi.{{ .Release.Namespace }}:{{ .Values.expressapp.nodePorts.port }} + timeout_ms: 20000 +{{ end }} {{- if eq $.Values.proxy.provider "haproxy" }} --- apiVersion: networking.k8s.io/v1 kind: Ingress metadata: - name: {{ .Values.nodeName }} - namespace: {{ $.Values.metadata.namespace }} + name: {{ .Release.Name }} + namespace: {{ .Release.Namespace }} annotations: kubernetes.io/ingress.class: "haproxy" spec: @@ -64,9 +64,9 @@ spec: - hosts: - {{ .Values.proxy.name }}api.{{ .Values.proxy.external_url_suffix }} {{- if eq .Values.proxy.type "fabric" }} - secretName: {{ .Values.proxy.peer_name }}-{{ .Values.metadata.namespace }}-ambassador-certs + secretName: {{ .Values.proxy.name }}-{{ .Release.Namespace }}-ambassador-certs {{- else }} - secretName: {{ .Values.proxy.peer_name }}-ambassador-certs + secretName: {{ .Values.proxy.name }}-tls-certs {{- end }} rules: - host: {{ .Values.proxy.name }}api.{{ .Values.proxy.external_url_suffix }} diff --git a/examples/supplychain-app/charts/expressapp/values.yaml b/examples/supplychain-app/charts/expressapp/values.yaml index 2f5fefcf4..ff13e429e 100644 --- a/examples/supplychain-app/charts/expressapp/values.yaml +++ b/examples/supplychain-app/charts/expressapp/values.yaml @@ -10,14 +10,6 @@ # This one is just a demo file, the file to install the helm chart will be created through # ANSIBLE with the values.tpl file that is in the same folder that this file. -# This will be the name of the node to create -nodeName: -metadata: - namespace: - -# The number of replicas the node will have -replicaCount: 1 - deployment: # annotations: # key: "value" @@ -25,8 +17,6 @@ deployment: # This will group the values of the expressapp expressapp: - #This defines the service type of the node, it will always be NodePort for the expressapp - serviceType: # The image that will be pulled from docker url image: # The pull policy @@ -36,11 +26,9 @@ expressapp: nodePorts: port: 3000 targetPort: 3000 - name: # The environment variables that will store the port to be working on and the end point to ask for requests #Eg. apiUrl: api.blockchaincloudpoc.com - env: - apiUrl: + apiUrl: proxy: #This will be the proxy/ingress provider. Can have values "ambassador" or "haproxy" #Eg. provider: "haproxy" @@ -54,6 +42,3 @@ proxy: #External URL of the organization #Eg. external_url_suffix: org1.blockchaincloudpoc.com external_url_suffix: - #Name of the peer - #Eg. peer_name: peer0 - peer_name: diff --git a/examples/supplychain-app/charts/frontend/Chart.yaml b/examples/supplychain-app/charts/frontend/Chart.yaml index 8f178ee0d..5502cad7e 100644 --- a/examples/supplychain-app/charts/frontend/Chart.yaml +++ b/examples/supplychain-app/charts/frontend/Chart.yaml @@ -8,4 +8,4 @@ apiVersion: v1 appVersion: "2.0" description: A Helm chart for frontend deployment name: frontend -version: 0.15.1 +version: 1.0.0 diff --git a/examples/supplychain-app/charts/frontend/templates/deployment.yaml b/examples/supplychain-app/charts/frontend/templates/deployment.yaml index 53ba2739b..a546b900a 100644 --- a/examples/supplychain-app/charts/frontend/templates/deployment.yaml +++ b/examples/supplychain-app/charts/frontend/templates/deployment.yaml @@ -7,23 +7,23 @@ kind: Deployment apiVersion: apps/v1 metadata: - name: {{ .Values.nodeName }} + name: {{ .Release.Name }} {{- if .Values.deployment.annotations }} annotations: {{ toYaml .Values.deployment.annotations | indent 8 }} {{- end }} - namespace: {{ .Values.metadata.namespace }} + namespace: {{ .Release.Namespace }} labels: - app: {{ .Values.nodeName }} - app.kubernetes.io/name: {{ .Values.nodeName }} + app: {{ .Release.Name }} + app.kubernetes.io/name: {{ .Release.Name }} app.kubernetes.io/managed-by: {{ .Release.Service }} app.kubernetes.io/instance: {{ .Release.Name }} spec: - replicas: {{ .Values.replicaCount }} + replicas: 1 selector: matchLabels: - app: {{ .Values.nodeName }} - app.kubernetes.io/name: {{ .Values.nodeName }} + app: {{ .Release.Name }} + app.kubernetes.io/name: {{ .Release.Name }} app.kubernetes.io/managed-by: {{ .Release.Service }} app.kubernetes.io/instance: {{ .Release.Name }} strategy: @@ -32,12 +32,12 @@ spec: template: metadata: labels: - app: {{ .Values.nodeName }} - app.kubernetes.io/name: {{ .Values.nodeName }} + app: {{ .Release.Name }} + app.kubernetes.io/name: {{ .Release.Name }} app.kubernetes.io/managed-by: {{ .Release.Service }} app.kubernetes.io/instance: {{ .Release.Name }} spec: - hostname: {{ .Values.nodeName }} + hostname: {{ .Release.Name }} imagePullSecrets: - name: {{ .Values.frontend.pullSecrets | default "regcred" }} containers: @@ -46,7 +46,7 @@ spec: imagePullPolicy: {{ .Values.frontend.pullPolicy }} env: - name: REACT_APP_API_ENDPOINT - value: "{{ .Values.frontend.env.webserver }}" + value: "{{ .Values.frontend.apiURL }}" - name: REACT_APP_GMAPS_KEY valueFrom: secretKeyRef: diff --git a/examples/supplychain-app/charts/frontend/templates/service.yaml b/examples/supplychain-app/charts/frontend/templates/service.yaml index 48b9e2b09..cf3ddac16 100644 --- a/examples/supplychain-app/charts/frontend/templates/service.yaml +++ b/examples/supplychain-app/charts/frontend/templates/service.yaml @@ -7,17 +7,17 @@ kind: Service apiVersion: v1 metadata: - name: {{ .Values.nodeName }} - namespace: {{ .Values.metadata.namespace }} + name: {{ .Release.Name }} + namespace: {{ .Release.Namespace }} labels: - run: {{ .Values.nodeName }} - app.kubernetes.io/name: {{ .Values.nodeName }} + run: {{ .Release.Name }} + app.kubernetes.io/name: {{ .Release.Name }} app.kubernetes.io/managed-by: {{ .Release.Service }} app.kubernetes.io/instance: {{ .Release.Name }} spec: - type: {{ .Values.frontend.serviceType }} + type: ClusterIP selector: - app: {{ .Values.nodeName }} + app: {{ .Release.Name }} ports: - port: {{ .Values.frontend.nodePorts.port }} targetPort: {{ .Values.frontend.nodePorts.targetPort }} @@ -28,11 +28,11 @@ apiVersion: getambassador.io/v3alpha1 kind: TLSContext metadata: name: {{ .Values.proxy.peer_name }}web-tlscontext - namespace: {{ .Values.metadata.namespace }} + namespace: {{ .Release.Namespace }} spec: hosts: - {{ .Values.proxy.peer_name }}web.{{ .Values.proxy.external_url_suffix }} - secret: {{ .Values.proxy.ambassador_secret }}.{{ .Values.metadata.namespace }} + secret: {{ .Values.proxy.peer_name }}-tls-certs.{{ .Release.Namespace }} secret_namespacing: true min_tls_version: v1.2 --- @@ -40,26 +40,26 @@ apiVersion: getambassador.io/v3alpha1 kind: Mapping metadata: name: {{ .Values.proxy.peer_name }}web-mapping - namespace: {{ .Values.metadata.namespace }} + namespace: {{ .Release.Namespace }} spec: prefix: / host: {{ .Values.proxy.peer_name }}web.{{ .Values.proxy.external_url_suffix }} - service: {{ .Values.proxy.peer_name }}-frontend.{{ .Values.metadata.namespace }}:{{ .Values.frontend.nodePorts.port }} + service: {{ .Values.proxy.peer_name }}-frontend.{{ .Release.Namespace }}:{{ .Values.frontend.nodePorts.port }} {{ end }} {{- if eq $.Values.proxy.provider "haproxy" }} --- apiVersion: networking.k8s.io/v1 kind: Ingress metadata: - name: {{ .Values.nodeName }} - namespace: {{ $.Values.metadata.namespace }} + name: {{ .Release.Name }} + namespace: {{ .Release.Namespace }} annotations: kubernetes.io/ingress.class: "haproxy" spec: tls: - hosts: - {{ .Values.proxy.peer_name }}web.{{ .Values.proxy.external_url_suffix }} - secretName: {{ .Values.proxy.ambassador_secret }} + secretName: {{ .Values.proxy.peer_name }}-tls-certs rules: - host: {{ .Values.proxy.peer_name }}web.{{ .Values.proxy.external_url_suffix }} http: diff --git a/examples/supplychain-app/charts/frontend/values.yaml b/examples/supplychain-app/charts/frontend/values.yaml index 8c283bed8..5c816126e 100644 --- a/examples/supplychain-app/charts/frontend/values.yaml +++ b/examples/supplychain-app/charts/frontend/values.yaml @@ -6,21 +6,10 @@ # Default values for nodechart. # This is a YAML-formatted file. -# Declare variables to be passed into your templates.\ - -#name of the node to create -nodeName: -#namespace where the pod will be created -metadata: - namespace: -# replicacount of the deployment. -#Eg. replicaCount: 1 -replicaCount: +# Declare variables to be passed into your templates. # App parameters frontend: - # Servicetype on which the frontend service will be available - serviceType: nodePorts: port: targetPort: @@ -31,9 +20,8 @@ frontend: pullPolicy: #docker secret to be used for pulling image pullSecrets: - # env variables that will be passed to the container - env: - webserver: + # URL of the express API server + apiURL: deployment: annotations: {} proxy: @@ -46,5 +34,3 @@ proxy: #External URL of the organization #Eg. external_url_suffix: org1.blockchaincloudpoc.com external_url_suffix: - # Ambassador secret - ambassador_secret: diff --git a/examples/supplychain-app/charts/springbootwebserver/Chart.yaml b/examples/supplychain-app/charts/springbootwebserver/Chart.yaml index 7423611e4..89d760ea5 100644 --- a/examples/supplychain-app/charts/springbootwebserver/Chart.yaml +++ b/examples/supplychain-app/charts/springbootwebserver/Chart.yaml @@ -8,4 +8,4 @@ apiVersion: v1 appVersion: "2.0" description: A Helm chart for Kubernetes name: springbootwebserver -version: 0.1.0 +version: 1.0.0 diff --git a/examples/supplychain-app/charts/springbootwebserver/templates/deployment.yaml b/examples/supplychain-app/charts/springbootwebserver/templates/deployment.yaml index c353b367a..b018b8b23 100644 --- a/examples/supplychain-app/charts/springbootwebserver/templates/deployment.yaml +++ b/examples/supplychain-app/charts/springbootwebserver/templates/deployment.yaml @@ -7,22 +7,22 @@ apiVersion: apps/v1 kind: Deployment metadata: - name: {{ .Values.nodeName }} - {{- if .Values.deployment.annotations }} + name: {{ .Release.Name }} + {{- if .Values.metadata.deployment.annotations }} annotations: -{{ toYaml .Values.deployment.annotations | indent 8 }} +{{ toYaml .Values.metadata.deployment.annotations | indent 8 }} {{- end }} - namespace: {{ .Values.metadata.namespace }} + namespace: {{ .Release.Namespace }} labels: - app.kubernetes.io/name: {{ .Values.nodeName }} + app.kubernetes.io/name: {{ .Release.Name }} app.kubernetes.io/managed-by: {{ .Release.Service }} app.kubernetes.io/instance: {{ .Release.Name }} spec: - replicas: {{ .Values.replicas }} + replicas: 1 selector: matchLabels: - app: {{ .Values.nodeName }} - app.kubernetes.io/name: {{ .Values.nodeName }} + app: {{ .Release.Name }} + app.kubernetes.io/name: {{ .Release.Name }} app.kubernetes.io/instance: {{ .Release.Name }} strategy: type: Recreate @@ -30,33 +30,33 @@ spec: template: metadata: labels: - app: {{ .Values.nodeName }} - app.kubernetes.io/name: {{ .Values.nodeName }} + app: {{ .Release.Name }} + app.kubernetes.io/name: {{ .Release.Name }} app.kubernetes.io/instance: {{ .Release.Name }} spec: - serviceAccountName: {{ $.Values.vault.serviceaccountname }} - hostname: {{ .Values.nodeName }} + hostname: {{ .Release.Name }} securityContext: fsGroup: 1000 containers: - name: corda-web - image: {{ .Values.image.containerName }} + image: {{ .Values.image.webserver }} + imagePullPolicy: Always command: ["sh", "-c"] args: - |- #!/usr/bin/env sh - cp /webserver-supply-chain-0.1.jar {{ .Values.volume.mountPath }}/app.jar; - cd {{ .Values.volume.mountPath }}/; + cp /webserver-supply-chain-0.1.jar /opt/corda/app.jar; + cd /opt/corda/; cat config/app.properties # To run smart contract jar with springboot if it is provided - if [ -d "{{ .Values.volume.mountPath }}/cordapps" ]; then + if [ -d "/opt/corda/cordapps" ]; then echo "Found the cordapps directory" - ls -ltr {{ .Values.volume.mountPath }}/cordapps; - java $JAVA_OPTIONS -cp app.jar -Dloader.path={{ .Values.volume.mountPath }}/{{ .Values.smartContract.path }}/{{ .Values.smartContract.name }} org.springframework.boot.loader.PropertiesLauncher --spring.config.location={{ .Values.volume.mountPath }}/config/app.properties 2>&1 + ls -ltr /opt/corda/cordapps; + java $JAVA_OPTIONS -cp app.jar -Dloader.path=/opt/corda/{{ .Values.smartContract.path }}/{{ .Values.smartContract.name }} org.springframework.boot.loader.PropertiesLauncher --spring.config.location=/opt/corda/config/app.properties 2>&1 else echo "NO cordapps directory" - java $JAVA_OPTIONS -jar app.jar --spring.config.location={{ .Values.volume.mountPath }}/config/app.properties 2>&1 + java $JAVA_OPTIONS -jar app.jar --spring.config.location=/opt/corda/config/app.properties 2>&1 fi exit 0 break @@ -72,112 +72,79 @@ spec: - name: JAVA_OPTIONS value: {{ .Values.smartContract.JAVA_OPTIONS }} - name: CORDA_HOME - value: {{ .Values.volume.mountPath }} + value: "/opt/corda" volumeMounts: - - name: {{ .Values.nodeName }}volume - mountPath: "{{ .Values.volume.mountPath }}/" - readOnly: false - - name: certificates - mountPath: "{{ .Values.volume.mountPath }}/certificates" + - name: {{ .Release.Name }}volume + mountPath: "/opt/corda/" readOnly: false - name: nodeprops - mountPath: "{{ .Values.volume.mountPath }}/config" - readOnly: false + mountPath: "/opt/corda/config" + readOnly: false + - name: node-certs + mountPath: "/opt/corda/certificates" initContainers: - name: create-properties - image : {{ .Values.image.initContainerName }} - imagePullPolicy: Always - env: - - name: VAULT_ADDR - value: {{ $.Values.vault.address }} - - name: KUBERNETES_AUTH_PATH - value: {{ $.Values.vault.authpath }} - - name: VAULT_APP_ROLE - value: {{ $.Values.vault.role }} - - name: MOUNT_PATH - value: {{ .Values.volume.mountPath }} - - name: KS_SECRET_PREFIX - value: {{ .Values.vault.keystoresecretprefix }} - - name: RPCUSER_SECRET_PREFIX - value: {{ .Values.vault.rpcusersecretprefix }} + image : {{ .Values.image.initContainer }} + imagePullPolicy: IfNotPresent command: ["/bin/sh","-c"] args: - |- #!/bin/bash # delete previously created app.properties, and create a new app.properties - rm -f {{ .Values.volume.mountPath }}/config/app.properties; - mkdir -p {{ .Values.volume.mountPath }}/config - touch {{ .Values.volume.mountPath }}/config/app.properties; - - # set env to get secrets from vault - KUBE_SA_TOKEN=$(cat /var/run/secrets/kubernetes.io/serviceaccount/token) - VAULT_TOKEN=$(curl -sS --request POST ${VAULT_ADDR}/v1/auth/${KUBERNETES_AUTH_PATH}/login -H "Content-Type: application/json" -d '{"role":"vault-role","jwt":"'"${KUBE_SA_TOKEN}"'"}' | jq -r 'if .errors then . else .auth.client_token end') - LOOKUP_PWD_RESPONSE=$(curl -sS --header "X-Vault-Token: ${VAULT_TOKEN}" ${VAULT_ADDR}/v1/${KS_SECRET_PREFIX} | jq -r 'if .errors then . else . end') - - # retrive keystore passwords and rpc user passwords from rpc - if [ {{ $.Values.metadata.type }} == "cordaopensource" ] - then - CONF_KEYSTOREPASSWORD=$(echo ${LOOKUP_PWD_RESPONSE} | jq -r '.data.data["keyStorePassword"]') - CONF_TRUSTSTOREPASSWORD=$(echo ${LOOKUP_PWD_RESPONSE} | jq -r '.data.data["trustStorePassword"]') - LOOKUP_PWD_RESPONSE=$(curl -sS --header "X-Vault-Token: ${VAULT_TOKEN}" ${VAULT_ADDR}/v1/${RPCUSER_SECRET_PREFIX} | jq -r 'if .errors then . else . end') - CONF_RPCPASSWORD=$(echo ${LOOKUP_PWD_RESPONSE} | jq -r '.data.data["{{ .Values.credentials.rpcUser }}"]') - else - CONF_KEYSTOREPASSWORD=$(echo ${LOOKUP_PWD_RESPONSE} | jq -r '.data.data["keystore"]') - CONF_TRUSTSTOREPASSWORD=$(echo ${LOOKUP_PWD_RESPONSE} | jq -r '.data.data["truststore"]') - LOOKUP_PWD_RESPONSE=$(curl -sS --header "X-Vault-Token: ${VAULT_TOKEN}" ${VAULT_ADDR}/v1/${RPCUSER_SECRET_PREFIX} | jq -r 'if .errors then . else . end') - CONF_RPCPASSWORD=$(echo ${LOOKUP_PWD_RESPONSE} | jq -r '.data.data["{{ .Values.credentials.rpcUser }}"]') - fi + rm -f /opt/corda/config/app.properties; + mkdir -p /opt/corda/config + touch /opt/corda/config/app.properties; # create app.properties using values specified by user - cat << EOF > {{ .Values.volume.mountPath }}/config/app.properties + cat << EOF > /opt/corda/config/app.properties config.rpc.username={{ .Values.credentials.rpcUser }} - config.rpc.password=${CONF_RPCPASSWORD} + config.rpc.password={{ .Values.credentials.rpcUserPassword }} config.rpc.host={{ .Values.nodeConf.node }} config.rpc.port={{ .Values.nodeConf.nodeRpcPort }} - config.controller.name={{ .Values.nodeConf.controllerName }} + config.controller.name=Controller config.main.controller.name=MainController - config.ssl.trustStorePath={{ .Values.nodeConf.trustStorePath }} - config.ssl.trustStorePassword=${CONF_TRUSTSTOREPASSWORD} - config.ssl.trustStoreProvider={{ .Values.nodeConf.trustStoreProvider }} + config.ssl.trustStorePath=/opt/corda/certificates/truststore.jks + config.ssl.trustStorePassword={{ .Values.credentials.truststorePassword }} + config.ssl.trustStoreProvider=jks config.legalName="{{ .Values.nodeConf.legalName }}" # Define a custom port instead of the default 8080 server.port={{ .Values.web.port }} # Tell Spring Security (if used) to require requests over HTTPS security.require-ssl={{ .Values.nodeConf.useSSL }} # The format used for the keystore - server.ssl.key-store-type={{ .Values.nodeConf.trustStoreProvider }} + server.ssl.key-store-type=jks # The path to the keystore containing the certificate - server.ssl.key-store={{ .Values.nodeConf.trustStorePath }} + server.ssl.key-store=/opt/corda/certificates/sslkeystore.jks # The password used to generate the certificate - server.ssl.key-store-password=${CONF_KEYSTOREPASSWORD} + server.ssl.key-store-password={{ .Values.credentials.keystorePassword }} # The alias mapped to the certificate - server.ssl.key-alias={{ .Values.nodeConf.tlsAlias }} + server.ssl.key-alias=cordaclienttls EOF volumeMounts: - name: nodeprops - mountPath: "{{ .Values.volume.mountPath }}/config" + mountPath: "/opt/corda/config" - name: init-downloadjars - image: {{ .Values.image.initContainerName }} - imagePullPolicy: Always + image: {{ .Values.image.initContainer }} + imagePullPolicy: IfNotPresent command: ["sh", "-c"] args: - |- #!/usr/bin/env sh #Can be used to download any specific database drivers volumeMounts: - - name: {{ .Values.nodeName }}volume - mountPath: "{{ .Values.volume.mountPath }}" + - name: {{ .Release.Name }}volume + mountPath: "/opt/corda" readOnly: false - name: node-healthcheck - image: {{ .Values.image.initContainerName }} - imagePullPolicy: Always + image: {{ .Values.image.initContainer }} + imagePullPolicy: IfNotPresent command: ["sh", "-c"] args: - |- #!/usr/bin/env sh COUNTER=1 FLAG=true - while [ "$COUNTER" -le {{ $.Values.node.readinessthreshold }} ] + while [ "$COUNTER" -le {{ $.Values.nodeConf.readinessThreshold }} ] do NODE={{ .Values.nodeConf.node }}:{{ .Values.nodeConf.nodeRpcPort }} STATUS=$(nc -vz $NODE 2>&1 | grep -c open ) @@ -190,9 +157,9 @@ spec: fi if [ "$FLAG" == false ] then - echo "Retry attempted $COUNTER times, retrying after {{ $.Values.node.readinesscheckinterval }} seconds" + echo "Retry attempted $COUNTER times, retrying after {{ $.Values.nodeConf.readinessCheckInterval }} seconds" COUNTER=`expr "$COUNTER" + 1` - sleep {{ $.Values.node.readinesscheckinterval }} + sleep {{ $.Values.nodeConf.readinessCheckInterval }} else echo "SUCCESS!" echo "node up and running!" @@ -200,141 +167,21 @@ spec: break fi done - if [ "$COUNTER" -gt {{ $.Values.node.readinessthreshold }} ] || [ "$FLAG" == false ] + if [ "$COUNTER" -gt {{ $.Values.nodeConf.readinessThreshold }} ] || [ "$FLAG" == false ] then echo "Retry attempted $COUNTER times, no node up and running. Giving up!" exit 1 break fi - - name: init-certificates - image: {{ .Values.image.initContainerName }} - imagePullPolicy: Always - env: - - name: VAULT_ADDR - value: {{ $.Values.vault.address }} - - name: KUBERNETES_AUTH_PATH - value: {{ $.Values.vault.authpath }} - - name: VAULT_APP_ROLE - value: {{ $.Values.vault.role }} - - name: BASE_DIR - value: {{ $.Values.volume.mountPath }} - - name: CERTS_SECRET_PREFIX - value: {{ .Values.vault.certsecretprefix }} - command: ["sh", "-c"] - args: - - |- - #!/usr/bin/env sh - validateVaultResponse () { - if echo ${2} | grep "errors"; then - echo "ERROR: unable to retrieve ${1}: ${2}" - exit 1 - fi - } - - # setting up env to get secrets from vault - echo "Getting secrets from Vault Server" - KUBE_SA_TOKEN=$(cat /var/run/secrets/kubernetes.io/serviceaccount/token) - VAULT_TOKEN=$(curl -sS --request POST ${VAULT_ADDR}/v1/auth/${KUBERNETES_AUTH_PATH}/login -H "Content-Type: application/json" -d '{"role":"vault-role","jwt":"'"${KUBE_SA_TOKEN}"'"}' | jq -r 'if .errors then . else .auth.client_token end') - validateVaultResponse 'vault login token' "${VAULT_TOKEN}" - echo "logged into vault" - - OUTPUT_PATH=${BASE_DIR} - - # get nodekeystore.jks from vault - LOOKUP_SECRET_RESPONSE=$(curl -sS --header "X-Vault-Token: ${VAULT_TOKEN}" ${VAULT_ADDR}/v1/${CERTS_SECRET_PREFIX}/nodekeystore | jq -r 'if .errors then . else . end') - validateVaultResponse "secret (${CERTS_SECRET_PREFIX}/nodekeystore)" "${LOOKUP_SECRET_RESPONSE}" - TLS_NODEKEYSTORE=$(echo ${LOOKUP_SECRET_RESPONSE} | jq -r '.data.data["nodekeystore.jks"]') - echo "${TLS_NODEKEYSTORE}" | base64 -d > ${OUTPUT_PATH}/nodekeystore.jks - - # get sslkeystore.jks from vault - LOOKUP_SECRET_RESPONSE=$(curl -sS --header "X-Vault-Token: ${VAULT_TOKEN}" ${VAULT_ADDR}/v1/${CERTS_SECRET_PREFIX}/sslkeystore | jq -r 'if .errors then . else . end') - validateVaultResponse "secret (${CERTS_SECRET_PREFIX}/sslkeystore)" "${LOOKUP_SECRET_RESPONSE}" - TLS_SSLKEYSTORE=$(echo ${LOOKUP_SECRET_RESPONSE} | jq -r '.data.data["sslkeystore.jks"]') - echo "${TLS_SSLKEYSTORE}" | base64 -d > ${OUTPUT_PATH}/sslkeystore.jks - - # get truststore.jks from vault - LOOKUP_SECRET_RESPONSE=$(curl -sS --header "X-Vault-Token: ${VAULT_TOKEN}" ${VAULT_ADDR}/v1/${CERTS_SECRET_PREFIX}/truststore | jq -r 'if .errors then . else . end') - validateVaultResponse "secret (${CERTS_SECRET_PREFIX}/truststore)" "${LOOKUP_SECRET_RESPONSE}" - TLS_TRUSTSTORE=$(echo ${LOOKUP_SECRET_RESPONSE} | jq -r '.data.data["truststore.jks"]') - echo "${TLS_TRUSTSTORE}" | base64 -d > ${OUTPUT_PATH}/truststore.jks - - # get network-map-truststore.jks from vault - if [ {{ $.Values.metadata.type }} == "cordaopensource" ] - then - LOOKUP_SECRET_RESPONSE=$(curl -sS --header "X-Vault-Token: ${VAULT_TOKEN}" ${VAULT_ADDR}/v1/${CERTS_SECRET_PREFIX}/networkmaptruststore | jq -r 'if .errors then . else . end') - validateVaultResponse "secret (${CERTS_SECRET_PREFIX}/networkmaptruststore)" "${LOOKUP_SECRET_RESPONSE}" - TLS_NMS=$(echo ${LOOKUP_SECRET_RESPONSE} | jq -r '.data.data["network-map-truststore"]') - echo "${TLS_NMS}" | base64 -d > ${OUTPUT_PATH}/network-map-truststore.jks - else - LOOKUP_SECRET_RESPONSE=$(curl -sS --header "X-Vault-Token: ${VAULT_TOKEN}" ${VAULT_ADDR}/v1/${CERTS_SECRET_PREFIX}/../root/certs | jq -r 'if .errors then . else . end') - validateVaultResponse "secret (${CERTS_SECRET_PREFIX}/../root/certs)" "${LOOKUP_SECRET_RESPONSE}" - TLS_NMS=$(echo ${LOOKUP_SECRET_RESPONSE} | jq -r '.data.data["network-root-truststore.jks"]') - echo "${TLS_NMS}" | base64 -d > ${OUTPUT_PATH}/network-map-truststore.jks - fi - - # when using doorman and networkmap in TLS: true, and using private certificate then download certificate - if [ "{{ .Values.image.privateCertificate }}" == true ] - then - mkdir -p ${OUTPUT_PATH}/networkmap - mkdir -p ${OUTPUT_PATH}/doorman - - if [ {{ $.Values.metadata.type }} == "cordaopensource" ] - then - LOOKUP_SECRET_RESPONSE=$(curl -sS --header "X-Vault-Token: ${VAULT_TOKEN}" ${VAULT_ADDR}/v1/${CERTS_SECRET_PREFIX}/networkmap | jq -r 'if .errors then . else . end') - validateVaultResponse "secret (${CERTS_SECRET_PREFIX}/networkmap)" "${LOOKUP_SECRET_RESPONSE}" - NETWORKMAP_CRT=$(echo ${LOOKUP_SECRET_RESPONSE} | jq -r '.data.data["networkmap.crt"]') - echo "${NETWORKMAP_CRT}" | base64 -d > ${OUTPUT_PATH}/networkmap/networkmap.crt - - LOOKUP_SECRET_RESPONSE=$(curl -sS --header "X-Vault-Token: ${VAULT_TOKEN}" ${VAULT_ADDR}/v1/${CERTS_SECRET_PREFIX}/doorman | jq -r 'if .errors then . else . end') - validateVaultResponse "secret (${CERTS_SECRET_PREFIX}/doorman)" "${LOOKUP_SECRET_RESPONSE}" - DOORMAN_CRT=$(echo ${LOOKUP_SECRET_RESPONSE} | jq -r '.data.data["doorman.crt"]') - echo "${DOORMAN_CRT}" | base64 -d > ${OUTPUT_PATH}/doorman/doorman.crt - else - LOOKUP_SECRET_RESPONSE=$(curl -sS --header "X-Vault-Token: ${VAULT_TOKEN}" ${VAULT_ADDR}/v1/${CERTS_SECRET_PREFIX}/{{ $.Values.networkservices.networkmap }} | jq -r 'if .errors then . else . end') - validateVaultResponse "secret (${CERTS_SECRET_PREFIX}/{{ $.Values.networkservices.networkmap }})" "${LOOKUP_SECRET_RESPONSE}" - NETWORKMAP_CRT=$(echo ${LOOKUP_SECRET_RESPONSE} | jq -r '.data.data["{{ $.Values.networkservices.networkmap }}.crt"]') - echo "${NETWORKMAP_CRT}" | base64 -d > ${OUTPUT_PATH}/networkmap/networkmap.crt - - LOOKUP_SECRET_RESPONSE=$(curl -sS --header "X-Vault-Token: ${VAULT_TOKEN}" ${VAULT_ADDR}/v1/${CERTS_SECRET_PREFIX}/{{ $.Values.networkservices.doorman }} | jq -r 'if .errors then . else . end') - validateVaultResponse "secret (${CERTS_SECRET_PREFIX}/{{ $.Values.networkservices.doorman }})" "${LOOKUP_SECRET_RESPONSE}" - DOORMAN_CRT=$(echo ${LOOKUP_SECRET_RESPONSE} | jq -r '.data.data["{{ $.Values.networkservices.doorman }}.crt"]') - echo "${DOORMAN_CRT}" | base64 -d > ${OUTPUT_PATH}/doorman/doorman.crt - fi - fi - - # when using custom sslKeystore while setting in node.conf - # TODO for R3 Corda Enterprise - if [ "{{ .Values.nodeConf.useSsl }}" == true ] - then - mkdir -p ${OUTPUT_PATH}/${SSL_CERT_PATH} - chmod -R ${OUTPUT_PATH}/${SSL_CERT_PATH} - SSL_CERT_PATH={{ .Values.nodeConf.ssl.certificatesDirectory }} - SSL_KEYSTORE_FILE_NAME_KEY={{ .Values.nodeConf.ssl.sslKeystoreFileName }} - LOOKUP_SECRET_RESPONSE=$(curl -sS --header "X-Vault-Token: ${VAULT_TOKEN}" ${VAULT_ADDR}/v1/${CERTS_SECRET_PREFIX}/${SSL_KEYSTORE_FILE_NAME_KEY} | jq -r 'if .errors then . else . end') - validateVaultResponse "secret (${CERTS_SECRET_PREFIX}/${SSL_KEYSTORE_FILE_NAME_KEY})" "${LOOKUP_SECRET_RESPONSE}" - SSLKEYSTORE=$(echo ${LOOKUP_SECRET_RESPONSE} | jq -r '.data.data["sslkeystore.jks"]') - echo "${SSLKEYSTORE}" | base64 -d > ${OUTPUT_PATH}/${SSL_CERT_PATH}/sslkeystore.jks - TRUSTKEYSTORE_FILE_NAME_KEY={{ .Values.nodeConf.ssl.ssltruststore }} - LOOKUP_SECRET_RESPONSE=$(curl -sS --header "X-Vault-Token: ${VAULT_TOKEN}" ${VAULT_ADDR}/v1/${CERTS_SECRET_PREFIX}/${TRUSTKEYSTORE_FILE_NAME_KEY} | jq -r 'if .errors then . else . end') - validateVaultResponse "secret (${CERTS_SECRET_PREFIX}/${TRUSTKEYSTORE_FILE_NAME_KEY})" "${LOOKUP_SECRET_RESPONSE}" - TRUSTSTORE=$(echo ${LOOKUP_SECRET_RESPONSE} | jq -r '.data.data["truststore.jks"]') - echo "${TRUSTSTORE}" | base64 -d > ${OUTPUT_PATH}/${SSL_CERT_PATH}/truststore.jks - else - echo "" - fi - echo "Done" - volumeMounts: - - name: certificates - mountPath: {{ .Values.volume.mountPath }}/ imagePullSecrets: - name: {{ .Values.image.imagePullSecret }} volumes: - - name: {{ .Values.nodeName }}volume + - name: {{ .Release.Name }}volume persistentVolumeClaim: - claimName: {{ .Values.nodeName }}-pvc - - name: certificates - emptyDir: - medium: Memory + claimName: {{ .Release.Name }}-pvc + - name: node-certs + secret: + secretName: {{ .Values.nodeConf.node }}-certs - name: nodeprops emptyDir: medium: Memory diff --git a/examples/supplychain-app/charts/springbootwebserver/templates/pvc.yaml b/examples/supplychain-app/charts/springbootwebserver/templates/pvc.yaml index f1eb3085c..467d36471 100644 --- a/examples/supplychain-app/charts/springbootwebserver/templates/pvc.yaml +++ b/examples/supplychain-app/charts/springbootwebserver/templates/pvc.yaml @@ -8,10 +8,10 @@ kind: PersistentVolumeClaim apiVersion: v1 metadata: - name: {{ .Values.nodeName }}-pvc - namespace: {{ .Values.metadata.namespace }} + name: {{ .Release.Name }}-pvc + namespace: {{ .Release.Namespace }} labels: - app.kubernetes.io/name: {{ .Values.nodeName }}-pvc + app.kubernetes.io/name: {{ .Release.Name }}-pvc app.kubernetes.io/managed-by: {{ .Release.Service }} app.kubernetes.io/instance: {{ .Release.Name }} spec: diff --git a/examples/supplychain-app/charts/springbootwebserver/templates/service.yaml b/examples/supplychain-app/charts/springbootwebserver/templates/service.yaml index 741c9493a..50391ea78 100644 --- a/examples/supplychain-app/charts/springbootwebserver/templates/service.yaml +++ b/examples/supplychain-app/charts/springbootwebserver/templates/service.yaml @@ -7,17 +7,17 @@ apiVersion: v1 kind: Service metadata: - name: {{ .Values.nodeName }} - namespace: {{ .Values.metadata.namespace }} + name: {{ .Release.Name }} + namespace: {{ .Release.Namespace }} labels: - run: {{ .Values.nodeName }} - app.kubernetes.io/name: {{ .Values.nodeName }} + run: {{ .Release.Name }} + app.kubernetes.io/name: {{ .Release.Name }} app.kubernetes.io/managed-by: {{ .Release.Service }} app.kubernetes.io/instance: {{ .Release.Name }} spec: - type: {{ .Values.service.type }} + type: NodePort selector: - app: {{ .Values.nodeName }} + app: {{ .Release.Name }} ports: - port: {{ .Values.web.port }} {{- if .Values.web.nodePort }} diff --git a/examples/supplychain-app/charts/springbootwebserver/values.yaml b/examples/supplychain-app/charts/springbootwebserver/values.yaml index ce0e7047d..efea0b53e 100644 --- a/examples/supplychain-app/charts/springbootwebserver/values.yaml +++ b/examples/supplychain-app/charts/springbootwebserver/values.yaml @@ -3,34 +3,22 @@ # # SPDX-License-Identifier: Apache-2.0 ############################################################################################## - -#Provide the nodeName for node -#Eg. nodeName: bank1web -nodeName: - -#Provide the replica set for node deployed -#Eg. replicas: 1 -replicas: - metadata: - #Provide the namespace - #Eg. namespace: default - namespace: - #type of dlt platform, cordaopensource or cordaenterprise - #Eg. type: cordaopensource - type: + deployment: + # annotations: + # key: "value" + annotations: {} image: - #Provide the containerName of image for main container - #Eg. containerName: adopfrablockchain.azurecr.io/springboot-webserver:1.0 - containerName: + #Provide the webserver of image for main container + #Eg. webserver: ghcr.io/bevel-supplychain-corda:springboot-latest + webserver: ghcr.io/hyperledger/bevel-supplychain-corda:springboot-latest #Provide the name of image for init container #Eg. name: adopfrablockchain.azurecr.io/alpine-utils:1.0 - initContainerName: + initContainer: ghcr.io/hyperledger/bevel-alpine:latest #Provide the image pull secret of image #Eg. pullSecret: regcred imagePullSecret: - privateCertificate: true smartContract: #Provide the smart contract name you need to execute @@ -41,12 +29,7 @@ smartContract: path: #Provide java option #Eg. JAVA_OPTIONS : -Xmx512m - JAVA_OPTIONS : -Xmx512m - -volume: - #Provide the base path - #Eg. mountPath: "/opt/corda" - mountPath: + JAVA_OPTIONS : -Xmx512m nodeConf: #Provide the Name of the corda node for node.conf @@ -55,32 +38,28 @@ nodeConf: #Provide the node Rpc Port for node #Eg. nodeRpcPort: 10008 nodeRpcPort: - #Provide the node Rpc Admin Port for node - #Eg. nodeRpcAdminPort: 10108 - nodeRpcAdminPort: - controllerName: Controller - trustStorePath: - trustStoreProvider: jks #Provide the legalName for node #Eg. legalName: "O=Bank1,L=London,C=GB,CN=Bank1" legalName: #Provide the devMode for corda node #Eg. devMode: true devMode: false - #Provide the useHTTPS for corda node - #Eg. useHTTPS: false - useHTTPS: false - useSSL: false - tlsAlias: cordaclienttls - ssl: - certificatesDirectory: - sslKeystoreFileName: - ssltruststore: + useSSL: false + #Provide the interval in seconds you want to iterate till node to be ready + #Eg. readinessCheckInterval: 5 + readinessCheckInterval: 10 + #Provide the threshold till you want to check if specified node up and running + #Eg. readinessThreshold: 2 + readinessThreshold: 15 credentials: #Provide the rpcUser for corda node #Eg. rpcUser: bank1operations rpcUser: + # Provide the password for the RPC User + rpcUserPassword: + keystorePassword: + truststorePassword: resources: #Provide the limit memory for node @@ -100,7 +79,6 @@ storage: web: # Note: Target ports are dependent on image being used. Please change them accordingly -# nodePort should be kept empty while using service type as ClusterIP ( Values.service.type ) #Provide the web port for node #Eg. port: 10009 port: @@ -110,58 +88,3 @@ web: #Provide the web targetPort for node #Eg. targetPort: 10004 targetPort: 20001 - -networkservices: - # Name of the doorman - # Eg. doorman: doorman - doorman: - # Name of the networkmap - # Eg. networkmap: networkmap - networkmap: - -service: -# Note: Target ports are dependent on image being used. Please change them accordingly -# nodePort should be kept empty while using service type as ClusterIP ( Values.service.type ) - #Provide the type of service - #Eg. type: NodePort or LoadBalancer etc - type: NodePort - # annotations: - # key: "value" - annotations: {} - -deployment: - # annotations: - # key: "value" - annotations: {} - -pvc: - # annotations: - # key: "value" - annotations: {} - -vault: - #Provide the vault server address - #Eg. address: http://54.226.163.39:8200 - address: - #Provide the vaultrole - #Eg. role: vault-role - role: - #Provide the authpath - #Eg. authpath: cordabank1 - authpath: - #Provide the serviceaccountname - #Eg. serviceaccountname: vault-auth-issuer - serviceaccountname: - #Provide the secretprefix - #Eg. secretprefix: issuer - secretprefix: - keystoresecretprefix: - rpcusersecretprefix: - -node: - #Provide the interval in seconds you want to iterate till node to be ready - #Eg. readinesscheckinterval: 5 - readinesscheckinterval: 10 - #Provide the threshold till you want to check if specified node up and running - #Eg. readinessthreshold: 2 - readinessthreshold: 15 diff --git a/examples/supplychain-app/configuration/deploy-supplychain-app.yaml b/examples/supplychain-app/configuration/deploy-supplychain-app.yaml index 5702001ce..4b7dc8a98 100644 --- a/examples/supplychain-app/configuration/deploy-supplychain-app.yaml +++ b/examples/supplychain-app/configuration/deploy-supplychain-app.yaml @@ -27,7 +27,7 @@ git_protocol: "{{ item.gitops.git_protocol | default('https') }}" git_url: "{{ item.gitops.git_url }}" git_key: "{{ item.gitops.private_key | default() }}" - flux_version: "0.35.0" + flux_version: "0.41.2" with_items: "{{ network.organizations }}" - name: Copy test env files to build directory diff --git a/examples/supplychain-app/configuration/roles/create/corda/expressapi/tasks/main.yaml b/examples/supplychain-app/configuration/roles/create/corda/expressapi/tasks/main.yaml index bddbe332e..458483946 100644 --- a/examples/supplychain-app/configuration/roles/create/corda/expressapi/tasks/main.yaml +++ b/examples/supplychain-app/configuration/roles/create/corda/expressapi/tasks/main.yaml @@ -30,7 +30,6 @@ charts_dir: "{{ organization_data.gitops.chart_source }}" expressapi_image: "bevel-supplychain-corda:{{ express_image_tag[network.version] }}" url: "https://{{ node.name }}-springboot.{{ component_ns }}" - peer_name: "{{ node.name }}" peer_expressapi_port: "{{ node.expressapi.port }}" peer_expressapi_targetport: "{{ node.expressapi.targetPort }}" peer_restserver_port: "{{ node.springboot.port }}" diff --git a/examples/supplychain-app/configuration/roles/create/corda/expressapi/vars/main.yaml b/examples/supplychain-app/configuration/roles/create/corda/expressapi/vars/main.yaml index f4bf10ead..0eed855d6 100644 --- a/examples/supplychain-app/configuration/roles/create/corda/expressapi/vars/main.yaml +++ b/examples/supplychain-app/configuration/roles/create/corda/expressapi/vars/main.yaml @@ -8,4 +8,4 @@ express_image_tag: 4.1: express-app-0.4.1.0 4.4: express-app-0.4.2.0 4.7: express-app-0.11.0.2 - 4.9: express-app-0.11.0.2 + 4.9: express-app-latest diff --git a/examples/supplychain-app/configuration/roles/create/corda/webserver/tasks/main.yaml b/examples/supplychain-app/configuration/roles/create/corda/webserver/tasks/main.yaml index 7b4188d66..f05cc9142 100644 --- a/examples/supplychain-app/configuration/roles/create/corda/webserver/tasks/main.yaml +++ b/examples/supplychain-app/configuration/roles/create/corda/webserver/tasks/main.yaml @@ -14,7 +14,7 @@ component_name: "{{ node.name | lower }}" kubernetes: "{{ organization_data.k8s }}" label_selectors: - - app = {{ component_name }} + - app.kubernetes.io/release = {{ component_name }} loop: "{{ organization_data.services.peers }}" loop_control: loop_var: node diff --git a/examples/supplychain-app/configuration/roles/helm_component/templates/expressapi-besu.tpl b/examples/supplychain-app/configuration/roles/helm_component/templates/expressapi-besu.tpl index 4eb3c46e6..c6f877ad8 100644 --- a/examples/supplychain-app/configuration/roles/helm_component/templates/expressapi-besu.tpl +++ b/examples/supplychain-app/configuration/roles/helm_component/templates/expressapi-besu.tpl @@ -6,15 +6,15 @@ metadata: annotations: fluxcd.io/automated: "false" spec: - releaseName: {{ name }}{{ network.type }}-expressapi + releaseName: {{ name }}-expressapi interval: 1m chart: - spec: - chart: {{ component_gitops.chart_source }}/expressapp-besu - sourceRef: - kind: GitRepository - name: flux-{{ network.env.type }}-app - namespace: flux-{{ network.env.type }}-app + spec: + chart: {{ component_gitops.chart_source }}/expressapp-besu + sourceRef: + kind: GitRepository + name: flux-{{ network.env.type }}-app + namespace: flux-{{ network.env.type }}-app values: nodeName: {{ name }}-expressapi metadata: diff --git a/examples/supplychain-app/configuration/roles/helm_component/templates/expressapi-corda.tpl b/examples/supplychain-app/configuration/roles/helm_component/templates/expressapi-corda.tpl index 67c5c7743..a68eeb4c8 100644 --- a/examples/supplychain-app/configuration/roles/helm_component/templates/expressapi-corda.tpl +++ b/examples/supplychain-app/configuration/roles/helm_component/templates/expressapi-corda.tpl @@ -1,7 +1,7 @@ apiVersion: helm.toolkit.fluxcd.io/v2beta1 kind: HelmRelease metadata: - name: {{ peer_name }}-expressapi + name: {{ name }}-expressapi namespace: {{ component_ns }} annotations: fluxcd.io/automated: "false" @@ -13,27 +13,19 @@ spec: kind: GitRepository name: flux-{{ network.env.type }}-app namespace: flux-{{ network.env.type }}-app - releaseName: {{ peer_name }}{{ network.type }}-expressapi + releaseName: {{ name }}-expressapi interval: 1m values: - nodeName: {{ peer_name }}-expressapi - metadata: - namespace: {{ component_ns }} - replicaCount: 1 expressapp: - serviceType: ClusterIP image: {{ network.docker.url }}/{{ expressapi_image }} pullPolicy: Always pullSecrets: regcred nodePorts: port: {{ peer_expressapi_port }} targetPort: {{ peer_expressapi_targetport }} - name: tcp - env: - apiUrl: {{ url }}:{{ peer_restserver_port }}/api/v1 + apiUrl: {{ url }}:{{ peer_restserver_port }}/api/v1 proxy: provider: {{ network.env.proxy }} name: {{ name }} type: corda external_url_suffix: {{ organization_data.external_url_suffix }} - peer_name: {{ peer_name }} diff --git a/examples/supplychain-app/configuration/roles/helm_component/templates/expressapi-fabric.tpl b/examples/supplychain-app/configuration/roles/helm_component/templates/expressapi-fabric.tpl index e221fc120..9e3f30d9b 100644 --- a/examples/supplychain-app/configuration/roles/helm_component/templates/expressapi-fabric.tpl +++ b/examples/supplychain-app/configuration/roles/helm_component/templates/expressapi-fabric.tpl @@ -8,32 +8,24 @@ metadata: spec: interval: 1m chart: - spec: - chart: {{ component_gitops.chart_source }}/expressapp - sourceRef: - kind: GitRepository - name: flux-{{ network.env.type }}-app - namespace: flux-{{ network.env.type }}-app - releaseName: {{ name }}{{ network.type }}-expressapi + spec: + chart: {{ component_gitops.chart_source }}/expressapp + sourceRef: + kind: GitRepository + name: flux-{{ network.env.type }}-app + namespace: flux-{{ network.env.type }}-app + releaseName: {{ name }}-expressapi values: - nodeName: {{ name }}-expressapi - metadata: - namespace: {{ component_ns }} - replicaCount: 1 expressapp: - serviceType: ClusterIP image: ghcr.io/hyperledger/bevel-supplychain-fabric:express-app-latest pullPolicy: Always pullSecrets: regcred nodePorts: port: {{ peer_expressapi_port }} targetPort: {{ peer_expressapi_targetport }} - name: tcp - env: - apiUrl: {{ url }}:{{ peer_restserver_port }}/api/v1 + apiUrl: {{ url }}:{{ peer_restserver_port }}/api/v1 proxy: provider: {{ network.env.proxy }} name: {{ name }} type: fabric external_url_suffix: {{ organization_data.external_url_suffix }} - peer_name: {{ peer_name }} diff --git a/examples/supplychain-app/configuration/roles/helm_component/templates/expressapi-quorum.tpl b/examples/supplychain-app/configuration/roles/helm_component/templates/expressapi-quorum.tpl index cc811c707..f8dc5f616 100644 --- a/examples/supplychain-app/configuration/roles/helm_component/templates/expressapi-quorum.tpl +++ b/examples/supplychain-app/configuration/roles/helm_component/templates/expressapi-quorum.tpl @@ -6,7 +6,7 @@ metadata: annotations: fluxcd.io/automated: "false" spec: - releaseName: {{ name }}{{ network.type }}-expressapi + releaseName: {{ name }}-expressapi interval: 1m chart: spec: diff --git a/examples/supplychain-app/configuration/roles/helm_component/templates/frontend.tpl b/examples/supplychain-app/configuration/roles/helm_component/templates/frontend.tpl index 6d1efd13f..28941d3dc 100644 --- a/examples/supplychain-app/configuration/roles/helm_component/templates/frontend.tpl +++ b/examples/supplychain-app/configuration/roles/helm_component/templates/frontend.tpl @@ -6,7 +6,7 @@ metadata: annotations: fluxcd.io/automated: "false" spec: - releaseName: {{ peer_name }}{{ network.type }}-frontend + releaseName: {{ peer_name }}-frontend interval: 1m chart: spec: @@ -16,24 +16,17 @@ spec: name: flux-{{ network.env.type }}-app namespace: flux-{{ network.env.type }}-app values: - nodeName: {{ peer_name }}-frontend - metadata: - namespace: {{ component_ns }} - replicaCount: 1 frontend: - serviceType: ClusterIP nodePorts: port: {{ peer_frontend_port }} targetPort: {{ peer_frontend_targetport }} image: {{ network.docker.url }}/bevel-supplychain-frontend:1.0.0 pullPolicy: IfNotPresent pullSecrets: regcred - env: - webserver: https://{{ peer_name }}api.{{ organization_data.external_url_suffix }} + apiURL: https://{{ peer_name }}api.{{ organization_data.external_url_suffix }} deployment: annotations: {} proxy: provider: {{ network.env.proxy }} peer_name: {{ peer_name }} external_url_suffix: {{ organization_data.external_url_suffix }} - ambassador_secret: {{ ambassador_secret }} diff --git a/examples/supplychain-app/configuration/roles/helm_component/templates/webserver.tpl b/examples/supplychain-app/configuration/roles/helm_component/templates/webserver.tpl index 8ef3a6997..36f0c2615 100644 --- a/examples/supplychain-app/configuration/roles/helm_component/templates/webserver.tpl +++ b/examples/supplychain-app/configuration/roles/helm_component/templates/webserver.tpl @@ -16,65 +16,31 @@ spec: name: flux-{{ network.env.type }}-app namespace: flux-{{ network.env.type }}-app values: - nodeName: {{ name }}-springboot - replicas: 1 - metadata: - namespace: {{ component_ns }} - type: {{ platform_type }} image: - containerName: {{ network.docker.url }}/bevel-supplychain-corda:{{ image_tag }} - initContainerName: {{ network.docker.url }}/alpine-utils:1.0 + webserver: {{ network.docker.url }}/bevel-supplychain-corda:springboot-latest + initContainer: {{ network.docker.url }}/bevel-alpine:latest imagePullSecret: regcred - privateCertificate: true smartContract: JAVA_OPTIONS : -Xmx512m - volume: - mountPath: /opt/corda nodeConf: node: {{ node.name|e }} nodeRpcPort: {{ node.rpc.port|e }} - nodeRpcAdminPort: {{ node.rpcadmin.port|e }} - controllerName: Controller - trustStorePath: /opt/corda/certificates/sslkeystore.jks - trustStoreProvider: jks legalName: {{ node.subject|e }} devMode: false - useHTTPS: true useSSL: false - tlsAlias: cordaclienttls - ssl: - certificatesDirectory: na-ssl-false - sslKeystoreFileName: na-ssl-false - ssltruststore: na-ssl-false + readinessCheckInterval: 10 + readinessThreshold: 15 credentials: - rpcUser: {{ node.name|e }}operations + rpcUser: nodeoperations + rpcUserPassword: nodeoperationsAdmin + keystorePassword: newpass + truststorePassword: newtrustpass resources: limits: "512Mi" requests: "512Mi" storage: memory: 512Mi - name: {{ sc_name }} + name: storage-{{ name }} web: targetPort: {{ node.springboot.targetPort|e }} port: {{ node.springboot.port|e }} - service: - type: NodePort - annotations: {} - networkservices: - networkmap: {{ networkmap_name }} - doorman: {{ doorman_name }} - vault: - address: "{{ component_vault.url }}" - role: vault-role - authpath: corda{{ node.name|e }} - serviceaccountname: vault-auth - rpcusersecretprefix: {{ node.name|e }}/data/credentials/rpcusers - keystoresecretprefix: {{ node.name|e }}/data/credentials/keystore - certsecretprefix: {{ node.name|e }}/data/certs - node: - readinesscheckinterval: 10 - readinessthreshold: 15 - deployment: - annotations: {} - pvc: - annotations: {} diff --git a/examples/supplychain-app/configuration/roles/helm_lint/vars/main.yaml b/examples/supplychain-app/configuration/roles/helm_lint/vars/main.yaml index f831e48bc..baa5762f5 100644 --- a/examples/supplychain-app/configuration/roles/helm_lint/vars/main.yaml +++ b/examples/supplychain-app/configuration/roles/helm_lint/vars/main.yaml @@ -6,7 +6,7 @@ charts: restserver: fabric-restserver - expressapi: expressapp + expressapi-corda: expressapp expressapi-fabric: expressapp webserver: springbootwebserver webserver-ent: springbootwebserver diff --git a/examples/supplychain-app/corda/cordApps_springBoot/README.md b/examples/supplychain-app/corda/cordApps_springBoot/README.md index 7c192075f..53e02c0ee 100644 --- a/examples/supplychain-app/corda/cordApps_springBoot/README.md +++ b/examples/supplychain-app/corda/cordApps_springBoot/README.md @@ -29,6 +29,7 @@ See https://docs.corda.net/getting-set-up.html. Notably: - Set JAVA_HOME to use JDK-8 + `export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64` # Executing Tests diff --git a/examples/supplychain-app/corda/cordApps_springBoot/build.gradle b/examples/supplychain-app/corda/cordApps_springBoot/build.gradle index 0ef33dadf..43a69dc7e 100644 --- a/examples/supplychain-app/corda/cordApps_springBoot/build.gradle +++ b/examples/supplychain-app/corda/cordApps_springBoot/build.gradle @@ -22,7 +22,7 @@ buildscript { //properties that you need to build the project corda_platform_version = constants.getProperty("platformVersion").toInteger() //springboot spring_boot_version = '2.1.3.RELEASE' - spring_boot_gradle_plugin_version = '2.0.2.RELEASE' + spring_boot_gradle_plugin_version = '2.1.3.RELEASE' springfox_version = '2.9.2' } @@ -52,6 +52,7 @@ allprojects { //Properties that you need to compile your project (The applicatio jcenter() mavenCentral() maven { url 'https://download.corda.net/maven/corda-dependencies' } + maven { url 'https://jitpack.io' } } tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile) { @@ -116,7 +117,7 @@ dependencies { cordaCompile "org.apache.logging.log4j:log4j-slf4j-impl:${log4j_version}" cordaCompile "org.apache.logging.log4j:log4j-web:${log4j_version}" cordaCompile "org.slf4j:jul-to-slf4j:$slf4j_version" - cordaDriver "net.corda:corda-shell:4.9" + cordaDriver "net.corda:corda-shell:$corda_release_version" } diff --git a/examples/supplychain-app/corda/cordApps_springBoot/gradle/wrapper/gradle-wrapper.properties b/examples/supplychain-app/corda/cordApps_springBoot/gradle/wrapper/gradle-wrapper.properties index bc1c717e2..177ccd8df 100644 --- a/examples/supplychain-app/corda/cordApps_springBoot/gradle/wrapper/gradle-wrapper.properties +++ b/examples/supplychain-app/corda/cordApps_springBoot/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,6 @@ +# DO NOT UPGRADE TO GRADLE 6.x.x until Java 14 is supported distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https://services.gradle.org/distributions/gradle-6.4.1-all.zip +distributionUrl=https://services.gradle.org/distributions/gradle-5.6.4-all.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/examples/supplychain-app/corda/cordApps_springBoot/src/test/kotlin/com/supplychain/bcc/flows/SupplyChainTests.kt b/examples/supplychain-app/corda/cordApps_springBoot/src/test/kotlin/com/supplychain/bcc/flows/SupplyChainTests.kt index b7b4fb9eb..a65489ad8 100644 --- a/examples/supplychain-app/corda/cordApps_springBoot/src/test/kotlin/com/supplychain/bcc/flows/SupplyChainTests.kt +++ b/examples/supplychain-app/corda/cordApps_springBoot/src/test/kotlin/com/supplychain/bcc/flows/SupplyChainTests.kt @@ -11,7 +11,7 @@ import java.util.* abstract class SupplyChainTests { lateinit var mockNetwork: MockNetwork - lateinit var a: StartedMockNode + lateinit var a: StartedMockNode lateinit var b: StartedMockNode lateinit var c: StartedMockNode diff --git a/examples/supplychain-app/corda/cordApps_springBoot/webserver-supply-chain/build.gradle b/examples/supplychain-app/corda/cordApps_springBoot/webserver-supply-chain/build.gradle index aef5fd127..e4e8496e5 100644 --- a/examples/supplychain-app/corda/cordApps_springBoot/webserver-supply-chain/build.gradle +++ b/examples/supplychain-app/corda/cordApps_springBoot/webserver-supply-chain/build.gradle @@ -36,11 +36,11 @@ compileKotlin { dependencies { // Corda dependencies. - compile "net.corda:corda-jackson:$corda_release_version" compile "$corda_release_group:corda-rpc:$corda_release_version" + compile "net.corda:corda-jackson:$corda_release_version" // CorDapp dependencies. - compile project(":cordapp-supply-chain") + compile project(":cordapp-supply-chain") compile("org.springframework.boot:spring-boot-starter-websocket:$spring_boot_version") compile "io.springfox:springfox-swagger2:$springfox_version" compile "io.springfox:springfox-swagger-ui:$springfox_version" diff --git a/examples/supplychain-app/corda/express_nodeJS/package-lock.json b/examples/supplychain-app/corda/express_nodeJS/package-lock.json index 8cd0021ec..294d3c1a4 100644 --- a/examples/supplychain-app/corda/express_nodeJS/package-lock.json +++ b/examples/supplychain-app/corda/express_nodeJS/package-lock.json @@ -408,9 +408,9 @@ } }, "follow-redirects": { - "version": "1.15.5", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.5.tgz", - "integrity": "sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw==" + "version": "1.15.6", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", + "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==" }, "form-data": { "version": "4.0.0", diff --git a/examples/supplychain-app/fabric/chaincode_rest_server/chaincode-external/go.mod b/examples/supplychain-app/fabric/chaincode_rest_server/chaincode-external/go.mod index 3638d2e12..67cd34a33 100644 --- a/examples/supplychain-app/fabric/chaincode_rest_server/chaincode-external/go.mod +++ b/examples/supplychain-app/fabric/chaincode_rest_server/chaincode-external/go.mod @@ -15,5 +15,5 @@ require ( golang.org/x/text v0.13.0 // indirect google.golang.org/genproto v0.0.0-20230410155749-daa745c078e1 // indirect google.golang.org/grpc v1.56.3 // indirect - google.golang.org/protobuf v1.30.0 // indirect + google.golang.org/protobuf v1.33.0 // indirect ) diff --git a/examples/supplychain-app/fabric/chaincode_rest_server/chaincode-external/go.sum b/examples/supplychain-app/fabric/chaincode_rest_server/chaincode-external/go.sum index 479e39584..d126efc8c 100644 --- a/examples/supplychain-app/fabric/chaincode_rest_server/chaincode-external/go.sum +++ b/examples/supplychain-app/fabric/chaincode_rest_server/chaincode-external/go.sum @@ -1484,8 +1484,9 @@ google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQ google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= google.golang.org/protobuf v1.29.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= -google.golang.org/protobuf v1.30.0 h1:kPPoIgf3TsEvrm0PFe15JQ+570QVxYzEvvHqChK+cng= google.golang.org/protobuf v1.30.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +google.golang.org/protobuf v1.33.0 h1:uNO2rsAINq/JlFpSdYEKIZ0uKD/R9cpdv0T+yoGwGmI= +google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= diff --git a/examples/supplychain-app/fabric/express_nodeJs/package-lock.json b/examples/supplychain-app/fabric/express_nodeJs/package-lock.json index 7554f1089..258d3ad74 100644 --- a/examples/supplychain-app/fabric/express_nodeJs/package-lock.json +++ b/examples/supplychain-app/fabric/express_nodeJs/package-lock.json @@ -337,9 +337,9 @@ } }, "follow-redirects": { - "version": "1.15.5", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.5.tgz", - "integrity": "sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw==" + "version": "1.15.6", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", + "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==" }, "form-data": { "version": "4.0.0", diff --git a/examples/supplychain-app/quorum/smartContracts/package-lock.json b/examples/supplychain-app/quorum/smartContracts/package-lock.json index 29442d116..3d43b7ab3 100644 --- a/examples/supplychain-app/quorum/smartContracts/package-lock.json +++ b/examples/supplychain-app/quorum/smartContracts/package-lock.json @@ -4376,9 +4376,9 @@ } }, "node_modules/follow-redirects": { - "version": "1.15.5", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.5.tgz", - "integrity": "sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw==", + "version": "1.15.6", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", + "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==", "dev": true, "funding": [ { @@ -13148,9 +13148,9 @@ "dev": true }, "follow-redirects": { - "version": "1.15.5", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.5.tgz", - "integrity": "sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw==", + "version": "1.15.6", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", + "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==", "dev": true }, "for-each": { diff --git a/examples/supplychain-app/supplychain-frontend/package-lock.json b/examples/supplychain-app/supplychain-frontend/package-lock.json index d5265bd68..797af4863 100644 --- a/examples/supplychain-app/supplychain-frontend/package-lock.json +++ b/examples/supplychain-app/supplychain-frontend/package-lock.json @@ -9172,9 +9172,9 @@ "integrity": "sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==" }, "node_modules/follow-redirects": { - "version": "1.15.4", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.4.tgz", - "integrity": "sha512-Cr4D/5wlrb0z9dgERpUL3LrmPKVDsETIJhaCMeDfuFYcqa5bldGV6wBsAN6X/vxlXQtFBMrXdXxdL8CbDTGniw==", + "version": "1.15.6", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", + "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==", "funding": [ { "type": "individual", @@ -27544,9 +27544,9 @@ "integrity": "sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==" }, "follow-redirects": { - "version": "1.15.4", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.4.tgz", - "integrity": "sha512-Cr4D/5wlrb0z9dgERpUL3LrmPKVDsETIJhaCMeDfuFYcqa5bldGV6wBsAN6X/vxlXQtFBMrXdXxdL8CbDTGniw==" + "version": "1.15.6", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", + "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==" }, "for-each": { "version": "0.3.3",