Upgrade openstack-helm-infra
Upgrade openstack-helm-infra to below version. commit 34d54f2812b7d54431d548cff08fe8da7f838124 Date: Sat Apr 11 15:24:54 2020 +0200 Cleanup py27 support and docs Below 3 patches are removed as they are already merged. Allow-multiple-containers-per-daemonset-pod.patch Add-TLS-support-for-Gnocchi-public-endpoint.patch Update ingress chart for Helm v3 Story: 2007474 Task: 39394 Change-Id: Icf624c8a0a6c74c8cfdb75ad45162e4a7aa5e404 Signed-off-by: Zhipeng Liu <zhipengs.liu@intel.com>
This commit is contained in:
parent
7ff175f60c
commit
2bd74e1baf
|
@ -1,8 +1,8 @@
|
||||||
TAR_NAME=openstack-helm-infra
|
TAR_NAME=openstack-helm-infra
|
||||||
SHA=c9d6676bf9a5aceb311dc31dadd07cba6a3d6392
|
SHA=34d54f2812b7d54431d548cff08fe8da7f838124
|
||||||
VERSION=1.0.0
|
VERSION=1.0.0
|
||||||
TAR="$TAR_NAME-$SHA.tar.gz"
|
TAR="$TAR_NAME-$SHA.tar.gz"
|
||||||
|
|
||||||
COPY_LIST="${CGCS_BASE}/downloads/$TAR $PKG_BASE/files/*"
|
COPY_LIST="${CGCS_BASE}/downloads/$TAR $PKG_BASE/files/*"
|
||||||
|
|
||||||
TIS_PATCH_VER=16
|
TIS_PATCH_VER=17
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
%global sha c9d6676bf9a5aceb311dc31dadd07cba6a3d6392
|
%global sha 34d54f2812b7d54431d548cff08fe8da7f838124
|
||||||
%global helm_folder /usr/lib/helm
|
%global helm_folder /usr/lib/helm
|
||||||
|
|
||||||
Summary: Openstack-Helm-Infra charts
|
Summary: Openstack-Helm-Infra charts
|
||||||
|
@ -15,19 +15,16 @@ Source1: repositories.yaml
|
||||||
|
|
||||||
BuildArch: noarch
|
BuildArch: noarch
|
||||||
|
|
||||||
Patch01: 0001-Allow-multiple-containers-per-daemonset-pod.patch
|
Patch01: 0001-Add-imagePullSecrets-in-service-account.patch
|
||||||
Patch02: 0002-Add-imagePullSecrets-in-service-account.patch
|
Patch02: 0002-Set-Min-NGINX-handles.patch
|
||||||
Patch03: 0003-Set-Min-NGINX-handles.patch
|
Patch03: 0003-Partial-revert-of-31e3469d28858d7b5eb6355e88b6f49fd6.patch
|
||||||
Patch04: 0004-Partial-revert-of-31e3469d28858d7b5eb6355e88b6f49fd6.patch
|
Patch04: 0004-Fix-pod-restarts-on-all-workers-when-worker-added-re.patch
|
||||||
Patch05: 0005-Add-TLS-support-for-Gnocchi-public-endpoint.patch
|
Patch05: 0005-Add-io_thread_pool-for-rabbitmq.patch
|
||||||
Patch06: 0006-Fix-pod-restarts-on-all-workers-when-worker-added-re.patch
|
Patch06: 0006-Enable-override-of-rabbitmq-probe-parameters.patch
|
||||||
Patch07: 0007-Add-io_thread_pool-for-rabbitmq.patch
|
Patch07: 0007-Fix-ipv6-address-issue-causing-mariadb-ingress-not-ready.patch
|
||||||
Patch08: 0008-Enable-override-of-rabbitmq-probe-parameters.patch
|
Patch08: 0008-Fix-rabbitmq-could-not-bind-port-to-ipv6-address-iss.patch
|
||||||
Patch09: 0009-Fix-ipv6-address-issue-causing-mariadb-ingress-not-ready.patch
|
Patch09: 0009-Enable-override-of-mariadb-server-probe-parameters.patch
|
||||||
Patch10: 0010-Fix-rabbitmq-could-not-bind-port-to-ipv6-address-iss.patch
|
Patch10: 0010-Mariadb-use-utf8_general_ci-collation-as-default.patch
|
||||||
Patch11: 0011-Enable-override-of-mariadb-server-probe-parameters.patch
|
|
||||||
Patch12: 0012-Mariadb-use-utf8_general_ci-collation-as-default.patch
|
|
||||||
Patch13: 0013-Update-ingress-chart-for-Helm-v3.patch
|
|
||||||
|
|
||||||
BuildRequires: helm
|
BuildRequires: helm
|
||||||
BuildRequires: chartmuseum
|
BuildRequires: chartmuseum
|
||||||
|
@ -47,9 +44,6 @@ Openstack Helm Infra charts
|
||||||
%patch08 -p1
|
%patch08 -p1
|
||||||
%patch09 -p1
|
%patch09 -p1
|
||||||
%patch10 -p1
|
%patch10 -p1
|
||||||
%patch11 -p1
|
|
||||||
%patch12 -p1
|
|
||||||
%patch13 -p1
|
|
||||||
|
|
||||||
%build
|
%build
|
||||||
# Host a server for the charts
|
# Host a server for the charts
|
||||||
|
|
|
@ -1,40 +0,0 @@
|
||||||
From 47315e28d44cff586f6fff026dd00e61c2c77bcd Mon Sep 17 00:00:00 2001
|
|
||||||
From: Gerry Kopec <Gerry.Kopec@windriver.com>
|
|
||||||
Date: Wed, 9 Jan 2019 20:11:33 -0500
|
|
||||||
Subject: [PATCH 1/4] Allow multiple containers per daemonset pod
|
|
||||||
|
|
||||||
Remove code that restricted daemonset pods to single containers.
|
|
||||||
Container names will default to name from helm chart template.
|
|
||||||
Required for nova cold migrations to work.
|
|
||||||
|
|
||||||
Story: 2003876
|
|
||||||
Task: 26735
|
|
||||||
Change-Id: Icce660415d43baefbbf768a785c5dedf04ea2930
|
|
||||||
Signed-off-by: Gerry Kopec <Gerry.Kopec@windriver.com>
|
|
||||||
(cherry picked from commit 7ca30319f418cd39db5ecf44cce5fb5fe39c458e)
|
|
||||||
Signed-off-by: Robert Church <robert.church@windriver.com>
|
|
||||||
---
|
|
||||||
helm-toolkit/templates/utils/_daemonset_overrides.tpl | 7 -------
|
|
||||||
1 file changed, 7 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/helm-toolkit/templates/utils/_daemonset_overrides.tpl b/helm-toolkit/templates/utils/_daemonset_overrides.tpl
|
|
||||||
index e352bc9..10ab166 100644
|
|
||||||
--- a/helm-toolkit/templates/utils/_daemonset_overrides.tpl
|
|
||||||
+++ b/helm-toolkit/templates/utils/_daemonset_overrides.tpl
|
|
||||||
@@ -225,13 +225,6 @@ limitations under the License.
|
|
||||||
{{- if not $context.Values.__daemonset_yaml.metadata.name }}{{- $_ := set $context.Values.__daemonset_yaml.metadata "name" dict }}{{- end }}
|
|
||||||
{{- $_ := set $context.Values.__daemonset_yaml.metadata "name" $current_dict.dns_1123_name }}
|
|
||||||
|
|
||||||
- {{/* set container name
|
|
||||||
- assume not more than one container is defined */}}
|
|
||||||
- {{- $container := first $context.Values.__daemonset_yaml.spec.template.spec.containers }}
|
|
||||||
- {{- $_ := set $container "name" $current_dict.dns_1123_name }}
|
|
||||||
- {{- $cont_list := list $container }}
|
|
||||||
- {{- $_ := set $context.Values.__daemonset_yaml.spec.template.spec "containers" $cont_list }}
|
|
||||||
-
|
|
||||||
{{/* cross-reference configmap name to container volume definitions */}}
|
|
||||||
{{- $_ := set $context.Values "__volume_list" list }}
|
|
||||||
{{- range $current_volume := $context.Values.__daemonset_yaml.spec.template.spec.volumes }}
|
|
||||||
--
|
|
||||||
2.7.4
|
|
||||||
|
|
|
@ -1,77 +0,0 @@
|
||||||
From e2e9b3c707599b4074ebf504f6a2fa5c185481e2 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Angie Wang <angie.wang@windriver.com>
|
|
||||||
Date: Tue, 9 Jul 2019 13:37:29 -0400
|
|
||||||
Subject: [PATCH 1/1] Add TLS support for Gnocchi public endpoint
|
|
||||||
|
|
||||||
Signed-off-by: Angie Wang <angie.wang@windriver.com>
|
|
||||||
---
|
|
||||||
gnocchi/templates/secret-ingress-tls.yaml | 19 +++++++++++++++++++
|
|
||||||
gnocchi/values.yaml | 12 ++++++++++++
|
|
||||||
2 files changed, 31 insertions(+)
|
|
||||||
create mode 100644 gnocchi/templates/secret-ingress-tls.yaml
|
|
||||||
|
|
||||||
diff --git a/gnocchi/templates/secret-ingress-tls.yaml b/gnocchi/templates/secret-ingress-tls.yaml
|
|
||||||
new file mode 100644
|
|
||||||
index 0000000..fc279cd
|
|
||||||
--- /dev/null
|
|
||||||
+++ b/gnocchi/templates/secret-ingress-tls.yaml
|
|
||||||
@@ -0,0 +1,19 @@
|
|
||||||
+{{/*
|
|
||||||
+Copyright 2019 Wind River Systems, Inc.
|
|
||||||
+
|
|
||||||
+Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
+you may not use this file except in compliance with the License.
|
|
||||||
+You may obtain a copy of the License at
|
|
||||||
+
|
|
||||||
+ http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
+
|
|
||||||
+Unless required by applicable law or agreed to in writing, software
|
|
||||||
+distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
+See the License for the specific language governing permissions and
|
|
||||||
+limitations under the License.
|
|
||||||
+*/}}
|
|
||||||
+
|
|
||||||
+{{- if .Values.manifests.secret_ingress_tls }}
|
|
||||||
+{{- include "helm-toolkit.manifests.secret_ingress_tls" ( dict "envAll" . "backendServiceType" "metric" ) }}
|
|
||||||
+{{- end }}
|
|
||||||
diff --git a/gnocchi/values.yaml b/gnocchi/values.yaml
|
|
||||||
index a4496b7..394e82a 100644
|
|
||||||
--- a/gnocchi/values.yaml
|
|
||||||
+++ b/gnocchi/values.yaml
|
|
||||||
@@ -472,6 +472,10 @@ secrets:
|
|
||||||
admin: gnocchi-db-indexer-admin
|
|
||||||
gnocchi: gnocchi-db-indexer-user
|
|
||||||
rbd: gnocchi-rbd-keyring
|
|
||||||
+ tls:
|
|
||||||
+ metric:
|
|
||||||
+ api:
|
|
||||||
+ public: gnocchi-tls-public
|
|
||||||
|
|
||||||
bootstrap:
|
|
||||||
enabled: false
|
|
||||||
@@ -538,6 +542,13 @@ endpoints:
|
|
||||||
public: gnocchi
|
|
||||||
host_fqdn_override:
|
|
||||||
default: null
|
|
||||||
+ # NOTE: this chart supports TLS for fqdn over-ridden public
|
|
||||||
+ # endpoints using the following format:
|
|
||||||
+ # public:
|
|
||||||
+ # host: null
|
|
||||||
+ # tls:
|
|
||||||
+ # crt: null
|
|
||||||
+ # key: null
|
|
||||||
path:
|
|
||||||
default: null
|
|
||||||
scheme:
|
|
||||||
@@ -633,6 +644,7 @@ manifests:
|
|
||||||
pod_gnocchi_test: true
|
|
||||||
secret_db: true
|
|
||||||
secret_keystone: true
|
|
||||||
+ secret_ingress_tls: true
|
|
||||||
service_api: true
|
|
||||||
service_ingress_api: true
|
|
||||||
service_statsd: true
|
|
||||||
--
|
|
||||||
2.7.4
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
From 8b095bbcbf490da064c6480607c27e30c915b26e Mon Sep 17 00:00:00 2001
|
From d6ed947c071d8eeaf646e42dae55fc0d0764d23c Mon Sep 17 00:00:00 2001
|
||||||
From: Zhipeng Liu <zhipengs.liu@intel.com>
|
From: Zhipeng Liu <zhipengs.liu@intel.com>
|
||||||
Date: Fri, 20 Mar 2020 23:37:20 +0800
|
Date: Fri, 20 Mar 2020 23:37:20 +0800
|
||||||
Subject: [PATCH] Fix rabbitmq could not bind port to ipv6 address issue
|
Subject: [PATCH] Fix rabbitmq could not bind port to ipv6 address issue
|
||||||
|
@ -38,10 +38,10 @@ index 87f25f5..ca05c8e 100644
|
||||||
+{{- end }}
|
+{{- end }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
diff --git a/rabbitmq/templates/statefulset.yaml b/rabbitmq/templates/statefulset.yaml
|
diff --git a/rabbitmq/templates/statefulset.yaml b/rabbitmq/templates/statefulset.yaml
|
||||||
index 41dc198..3597c83 100644
|
index 96334de..4fb1f38 100644
|
||||||
--- a/rabbitmq/templates/statefulset.yaml
|
--- a/rabbitmq/templates/statefulset.yaml
|
||||||
+++ b/rabbitmq/templates/statefulset.yaml
|
+++ b/rabbitmq/templates/statefulset.yaml
|
||||||
@@ -228,6 +228,16 @@ spec:
|
@@ -239,6 +239,16 @@ spec:
|
||||||
mountPath: /etc/rabbitmq/rabbitmq.conf
|
mountPath: /etc/rabbitmq/rabbitmq.conf
|
||||||
subPath: rabbitmq.conf
|
subPath: rabbitmq.conf
|
||||||
readOnly: true
|
readOnly: true
|
||||||
|
@ -59,7 +59,7 @@ index 41dc198..3597c83 100644
|
||||||
- name: pod-tmp
|
- name: pod-tmp
|
||||||
emptyDir: {}
|
emptyDir: {}
|
||||||
diff --git a/rabbitmq/values.yaml b/rabbitmq/values.yaml
|
diff --git a/rabbitmq/values.yaml b/rabbitmq/values.yaml
|
||||||
index 6c95787..f00b23b 100644
|
index ebaf43c..0824a0e 100644
|
||||||
--- a/rabbitmq/values.yaml
|
--- a/rabbitmq/values.yaml
|
||||||
+++ b/rabbitmq/values.yaml
|
+++ b/rabbitmq/values.yaml
|
||||||
@@ -36,9 +36,9 @@ images:
|
@@ -36,9 +36,9 @@ images:
|
||||||
|
@ -68,13 +68,13 @@ index 6c95787..f00b23b 100644
|
||||||
rabbitmq_init: docker.io/openstackhelm/heat:ocata-ubuntu_xenial
|
rabbitmq_init: docker.io/openstackhelm/heat:ocata-ubuntu_xenial
|
||||||
- rabbitmq: docker.io/rabbitmq:3.7.13
|
- rabbitmq: docker.io/rabbitmq:3.7.13
|
||||||
+ rabbitmq: docker.io/rabbitmq:3.7.24
|
+ rabbitmq: docker.io/rabbitmq:3.7.24
|
||||||
dep_check: quay.io/stackanetes/kubernetes-entrypoint:v0.3.1
|
dep_check: quay.io/airshipit/kubernetes-entrypoint:v1.0.0
|
||||||
- scripted_test: docker.io/rabbitmq:3.7.13-management
|
- scripted_test: docker.io/rabbitmq:3.7.13-management
|
||||||
+ scripted_test: docker.io/rabbitmq:3.7.24-management
|
+ scripted_test: docker.io/rabbitmq:3.7.24-management
|
||||||
image_repo_sync: docker.io/docker:17.07.0
|
image_repo_sync: docker.io/docker:17.07.0
|
||||||
pull_policy: "IfNotPresent"
|
pull_policy: "IfNotPresent"
|
||||||
local_registry:
|
local_registry:
|
||||||
@@ -171,6 +171,8 @@ conf:
|
@@ -195,6 +195,8 @@ conf:
|
||||||
queue_master_locator: min-masters
|
queue_master_locator: min-masters
|
||||||
loopback_users.guest: "false"
|
loopback_users.guest: "false"
|
||||||
management.load_definitions: "/var/lib/rabbitmq/definitions.json"
|
management.load_definitions: "/var/lib/rabbitmq/definitions.json"
|
||||||
|
@ -83,11 +83,11 @@ index 6c95787..f00b23b 100644
|
||||||
|
|
||||||
dependencies:
|
dependencies:
|
||||||
dynamic:
|
dynamic:
|
||||||
@@ -353,3 +355,4 @@ manifests:
|
@@ -385,3 +387,4 @@ manifests:
|
||||||
service_ingress_management: true
|
service_ingress_management: true
|
||||||
service: true
|
service: true
|
||||||
statefulset: true
|
statefulset: true
|
||||||
+ config_ipv6: false
|
+ config_ipv6: false
|
||||||
--
|
--
|
||||||
2.7.4
|
1.8.3.1
|
||||||
|
|
|
@ -17,61 +17,32 @@ parameters and override the related probe pareameters.
|
||||||
Signed-off-by: Hu, Yong <yong.hu@intel.com>
|
Signed-off-by: Hu, Yong <yong.hu@intel.com>
|
||||||
Co-Authored-By: Zhipeng, Liu <zhipengs.liu@intel.com>
|
Co-Authored-By: Zhipeng, Liu <zhipengs.liu@intel.com>
|
||||||
---
|
---
|
||||||
mariadb/templates/statefulset.yaml | 16 +++++++++-------
|
mariadb/templates/statefulset.yaml | 3 ++-
|
||||||
mariadb/values.yaml | 16 ++++++++++++++++
|
mariadb/values.yaml | 7 +++++++
|
||||||
2 files changed, 25 insertions(+), 7 deletions(-)
|
2 files changed, 9 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
diff --git a/mariadb/templates/statefulset.yaml b/mariadb/templates/statefulset.yaml
|
diff --git a/mariadb/templates/statefulset.yaml b/mariadb/templates/statefulset.yaml
|
||||||
index 66d5339..9e3d37d 100644
|
index e31d4ac..83e135f 100644
|
||||||
--- a/mariadb/templates/statefulset.yaml
|
--- a/mariadb/templates/statefulset.yaml
|
||||||
+++ b/mariadb/templates/statefulset.yaml
|
+++ b/mariadb/templates/statefulset.yaml
|
||||||
@@ -14,6 +14,13 @@ See the License for the specific language governing permissions and
|
@@ -187,7 +187,8 @@ spec:
|
||||||
limitations under the License.
|
|
||||||
*/}}
|
|
||||||
|
|
||||||
+{{- define "mariadbReadinessProbe" }}
|
|
||||||
+exec:
|
|
||||||
+ command:
|
|
||||||
+ - /tmp/readiness.sh
|
|
||||||
+{{- end }}
|
|
||||||
+
|
|
||||||
+
|
|
||||||
{{- if .Values.manifests.statefulset }}
|
|
||||||
{{- $envAll := . }}
|
|
||||||
|
|
||||||
@@ -170,13 +177,8 @@ spec:
|
|
||||||
exec:
|
exec:
|
||||||
command:
|
command:
|
||||||
- /tmp/stop.sh
|
- /tmp/stop.sh
|
||||||
- readinessProbe:
|
-{{ dict "envAll" . "component" "server" "container" "mariadb" "type" "readiness" "probeTemplate" (include "mariadbReadinessProbe" . | fromYaml) | include "helm-toolkit.snippets.kubernetes_probe" | indent 10 -}}
|
||||||
- initialDelaySeconds: 30
|
|
||||||
- periodSeconds: 30
|
|
||||||
- timeoutSeconds: 3
|
|
||||||
- exec:
|
|
||||||
- command:
|
|
||||||
- - /tmp/readiness.sh
|
|
||||||
+{{ dict "envAll" . "component" "server" "container" "mariadb" "type" "readiness" "probeTemplate" (include "mariadbReadinessProbe" . | fromYaml) | include "helm-toolkit.snippets.kubernetes_probe" | indent 10 }}
|
+{{ dict "envAll" . "component" "server" "container" "mariadb" "type" "readiness" "probeTemplate" (include "mariadbReadinessProbe" . | fromYaml) | include "helm-toolkit.snippets.kubernetes_probe" | indent 10 }}
|
||||||
+{{ dict "envAll" . "component" "server" "container" "mariadb" "type" "startup" "probeTemplate" (include "mariadbReadinessProbe" . | fromYaml) | include "helm-toolkit.snippets.kubernetes_probe" | indent 10 }}
|
+{{ dict "envAll" . "component" "server" "container" "mariadb" "type" "startup" "probeTemplate" (include "mariadbReadinessProbe" . | fromYaml) | include "helm-toolkit.snippets.kubernetes_probe" | indent 10 }}
|
||||||
volumeMounts:
|
volumeMounts:
|
||||||
- name: pod-tmp
|
- name: pod-tmp
|
||||||
mountPath: /tmp
|
mountPath: /tmp
|
||||||
diff --git a/mariadb/values.yaml b/mariadb/values.yaml
|
diff --git a/mariadb/values.yaml b/mariadb/values.yaml
|
||||||
index b913636..c7a70d2 100644
|
index 2d75f39..444bba3 100644
|
||||||
--- a/mariadb/values.yaml
|
--- a/mariadb/values.yaml
|
||||||
+++ b/mariadb/values.yaml
|
+++ b/mariadb/values.yaml
|
||||||
@@ -59,6 +59,22 @@ labels:
|
@@ -69,6 +69,13 @@ pod:
|
||||||
node_selector_value: enabled
|
initialDelaySeconds: 30
|
||||||
|
periodSeconds: 30
|
||||||
pod:
|
timeoutSeconds: 15
|
||||||
+ probes:
|
|
||||||
+ server:
|
|
||||||
+ mariadb:
|
|
||||||
+ readiness:
|
|
||||||
+ enabled: true
|
|
||||||
+ params:
|
|
||||||
+ initialDelaySeconds: 30
|
|
||||||
+ periodSeconds: 30
|
|
||||||
+ timeoutSeconds: 15
|
|
||||||
+ failureThreshold: 3
|
+ failureThreshold: 3
|
||||||
+ startup:
|
+ startup:
|
||||||
+ enabled: false
|
+ enabled: false
|
||||||
|
@ -82,6 +53,6 @@ index b913636..c7a70d2 100644
|
||||||
security_context:
|
security_context:
|
||||||
server:
|
server:
|
||||||
pod:
|
pod:
|
||||||
--
|
--
|
||||||
2.7.4
|
1.8.3.1
|
||||||
|
|
|
@ -1,24 +0,0 @@
|
||||||
From 06ca3c8594c73d2aacc3958f6e94a4911e2caa8a Mon Sep 17 00:00:00 2001
|
|
||||||
From: Jim Gauld <james.gauld@windriver.com>
|
|
||||||
Date: Mon, 6 Apr 2020 09:17:47 -0400
|
|
||||||
Subject: [PATCH] Update ingress chart for Helm v3
|
|
||||||
|
|
||||||
---
|
|
||||||
ingress/Chart.yaml | 1 +
|
|
||||||
1 file changed, 1 insertion(+)
|
|
||||||
|
|
||||||
diff --git a/ingress/Chart.yaml b/ingress/Chart.yaml
|
|
||||||
index 70d7467..a9030e2 100644
|
|
||||||
--- a/ingress/Chart.yaml
|
|
||||||
+++ b/ingress/Chart.yaml
|
|
||||||
@@ -12,6 +12,7 @@
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
|
|
||||||
+apiVersion: v1
|
|
||||||
description: OpenStack-Helm Ingress Controller
|
|
||||||
name: ingress
|
|
||||||
version: 0.1.0
|
|
||||||
--
|
|
||||||
1.8.3.1
|
|
||||||
|
|
Loading…
Reference in New Issue