Merge "Model virtual-mcp11-aio, uses None over List field."
diff --git a/classes/cluster/k8s-aio-calico/kubernetes/control.yml b/classes/cluster/k8s-aio-calico/kubernetes/control.yml
index d26942b..dc719bd 100644
--- a/classes/cluster/k8s-aio-calico/kubernetes/control.yml
+++ b/classes/cluster/k8s-aio-calico/kubernetes/control.yml
@@ -1,5 +1,7 @@
classes:
- service.etcd.server.single
+- service.kubernetes.control.cluster
+- service.kubernetes.control.cluster-admin
- system.linux.system.repo.docker_legacy
- system.salt.minion.cert.etcd_server_single
- system.salt.minion.cert.k8s_server_single
diff --git a/classes/cluster/k8s-aio-contrail/kubernetes/control.yml b/classes/cluster/k8s-aio-contrail/kubernetes/control.yml
index 5923e3d..08791f1 100644
--- a/classes/cluster/k8s-aio-contrail/kubernetes/control.yml
+++ b/classes/cluster/k8s-aio-contrail/kubernetes/control.yml
@@ -1,5 +1,7 @@
classes:
- service.etcd.server.cluster
+- service.kubernetes.control.cluster
+- service.kubernetes.control.cluster-admin
- system.haproxy.proxy.listen.kubernetes.apiserver
- system.linux.system.repo.docker_legacy
- system.salt.minion.cert.etcd_server
diff --git a/classes/cluster/k8s-compact/kubernetes/control.yml b/classes/cluster/k8s-compact/kubernetes/control.yml
index 5564e9c..3a8012f 100644
--- a/classes/cluster/k8s-compact/kubernetes/control.yml
+++ b/classes/cluster/k8s-compact/kubernetes/control.yml
@@ -2,6 +2,8 @@
- system.salt.minion.cert.etcd_server_single
- system.salt.minion.cert.k8s_server_single
- service.etcd.server.single
+- service.kubernetes.control.cluster
+- service.kubernetes.control.cluster-admin
- system.kubernetes.master.single
- cluster.k8s-compact.kubernetes.compute
parameters:
diff --git a/classes/cluster/k8s-ha-calico-cloudprovider/kubernetes/control.yml b/classes/cluster/k8s-ha-calico-cloudprovider/kubernetes/control.yml
index 0d755a2..5144fe6 100644
--- a/classes/cluster/k8s-ha-calico-cloudprovider/kubernetes/control.yml
+++ b/classes/cluster/k8s-ha-calico-cloudprovider/kubernetes/control.yml
@@ -1,5 +1,7 @@
classes:
- service.etcd.server.cluster
+- service.kubernetes.control.cluster
+- service.kubernetes.control.cluster-admin
- system.haproxy.proxy.listen.kubernetes.apiserver
- system.linux.system.repo.docker_legacy
- system.salt.minion.cert.etcd_server
diff --git a/classes/cluster/k8s-ha-calico-syndic/kubernetes/control.yml b/classes/cluster/k8s-ha-calico-syndic/kubernetes/control.yml
index cc7a920..485b274 100644
--- a/classes/cluster/k8s-ha-calico-syndic/kubernetes/control.yml
+++ b/classes/cluster/k8s-ha-calico-syndic/kubernetes/control.yml
@@ -1,5 +1,7 @@
classes:
- service.etcd.server.cluster
+- service.kubernetes.control.cluster
+- service.kubernetes.control.cluster-admin
- system.haproxy.proxy.listen.kubernetes.apiserver
- system.linux.system.repo.docker_legacy
- system.salt.minion.cert.etcd_server
diff --git a/classes/cluster/k8s-ha-calico/kubernetes/control.yml b/classes/cluster/k8s-ha-calico/kubernetes/control.yml
index 26a8608..f685589 100644
--- a/classes/cluster/k8s-ha-calico/kubernetes/control.yml
+++ b/classes/cluster/k8s-ha-calico/kubernetes/control.yml
@@ -1,5 +1,7 @@
classes:
- service.etcd.server.cluster
+- service.kubernetes.control.cluster
+- service.kubernetes.control.cluster-admin
- system.haproxy.proxy.listen.kubernetes.apiserver
- system.linux.system.repo.docker_legacy
- system.salt.minion.cert.etcd_server
diff --git a/classes/cluster/k8s-ha-contrail/kubernetes/control.yml b/classes/cluster/k8s-ha-contrail/kubernetes/control.yml
index 8ef2041..78cd765 100644
--- a/classes/cluster/k8s-ha-contrail/kubernetes/control.yml
+++ b/classes/cluster/k8s-ha-contrail/kubernetes/control.yml
@@ -1,5 +1,7 @@
classes:
- service.etcd.server.cluster
+- service.kubernetes.control.cluster
+- service.kubernetes.control.cluster-admin
- system.haproxy.proxy.listen.kubernetes.apiserver
- system.linux.system.repo.docker_legacy
- system.salt.minion.cert.etcd_server
diff --git a/classes/cluster/model-manager/model_manager/dashboard.yml b/classes/cluster/model-manager/model_manager/dashboard.yml
index 6377ecd..db28c96 100644
--- a/classes/cluster/model-manager/model_manager/dashboard.yml
+++ b/classes/cluster/model-manager/model_manager/dashboard.yml
@@ -13,7 +13,7 @@
protocol: http
endpoint: internalURL
source:
- commit_id: 'd39884f86cb5517c2d058a6772abbb21f87baf73'
+ commit_id: '50cbdce293181e7c789815434f47397ffa526ec9'
linux:
network:
interface:
diff --git a/classes/cluster/virtual-mcp-pike-dvr-ssl/infra/config.yml b/classes/cluster/virtual-mcp-pike-dvr-ssl/infra/config.yml
index f42138b..e88a093 100644
--- a/classes/cluster/virtual-mcp-pike-dvr-ssl/infra/config.yml
+++ b/classes/cluster/virtual-mcp-pike-dvr-ssl/infra/config.yml
@@ -29,6 +29,7 @@
- system.reclass.storage.system.openstack_compute_multi
- system.reclass.storage.system.openstack_gateway_single
- system.reclass.storage.system.openstack_dashboard_single
+- system.reclass.storage.system.openstack_share_single
- system.reclass.storage.system.openstack_telemetry_cluster
- cluster.virtual-mcp-pike-dvr-ssl
parameters:
@@ -129,8 +130,10 @@
node_class:
value_template:
- cluster.<<node_cluster>>.openstack.share
- node_param:
- manila_share_address:
+ cluster_param:
+ openstack_share_node01_address:
+ value_template: <<node_control_ip>>
+ openstack_share_node01_share_address:
value_template: <<node_tenant_ip>>
openstack_telemetry01:
expression: <<node_hostname>>__equals__mdb01
diff --git a/classes/cluster/virtual-mcp-pike-dvr-ssl/openstack/compute.yml b/classes/cluster/virtual-mcp-pike-dvr-ssl/openstack/compute.yml
index 146bbac..089a3cd 100644
--- a/classes/cluster/virtual-mcp-pike-dvr-ssl/openstack/compute.yml
+++ b/classes/cluster/virtual-mcp-pike-dvr-ssl/openstack/compute.yml
@@ -17,6 +17,15 @@
external_interface: ens6
interface_mtu: 1500
linux_system_codename: xenial
+ linux:
+ network:
+ interface:
+ primary_interface:
+ ipflush_onchange: true
+ tenant_interface:
+ ipflush_onchange: true
+ external_interface:
+ ipflush_onchange: true
nova:
compute:
vncproxy_url: http://${_param:cluster_vip_address}:6080
@@ -32,4 +41,4 @@
compute:
notification:
driver: messagingv2
- topics: "notifications"
\ No newline at end of file
+ topics: "notifications"
diff --git a/classes/cluster/virtual-mcp-pike-dvr-ssl/openstack/gateway.yml b/classes/cluster/virtual-mcp-pike-dvr-ssl/openstack/gateway.yml
index 8487021..5dbb948 100644
--- a/classes/cluster/virtual-mcp-pike-dvr-ssl/openstack/gateway.yml
+++ b/classes/cluster/virtual-mcp-pike-dvr-ssl/openstack/gateway.yml
@@ -19,3 +19,12 @@
notification:
driver: messagingv2
topics: "notifications"
+ linux:
+ network:
+ interface:
+ primary_interface:
+ ipflush_onchange: true
+ tenant_interface:
+ ipflush_onchange: true
+ external_interface:
+ ipflush_onchange: true
diff --git a/classes/cluster/virtual-mcp-pike-dvr-ssl/openstack/init.yml b/classes/cluster/virtual-mcp-pike-dvr-ssl/openstack/init.yml
index b9ac82a..9a72e92 100644
--- a/classes/cluster/virtual-mcp-pike-dvr-ssl/openstack/init.yml
+++ b/classes/cluster/virtual-mcp-pike-dvr-ssl/openstack/init.yml
@@ -8,6 +8,7 @@
openstack_control_node01_hostname: ctl01
openstack_control_node02_hostname: ctl02
openstack_control_node03_hostname: ctl03
+ openstack_share_node01_hostname: share01
openstack_control_node01_address: 172.16.10.101
openstack_control_node02_address: 172.16.10.102
openstack_control_node03_address: 172.16.10.103
@@ -23,6 +24,8 @@
openstack_gateway_node01_address: ${_param:openstack_gateway_address}
openstack_dns_node01_address: 172.16.10.111
openstack_dns_node02_address: 172.16.10.112
+ openstack_share_node01_address: 172.16.10.97
+ openstack_share_node01_share_address: ${_param:openstack_share_node01_address}
openstack_telemetry_address: 172.16.10.250
openstack_telemetry_node01_address: 172.16.10.45
openstack_telemetry_node02_address: 172.16.10.46
diff --git a/classes/cluster/virtual-mcp-pike-dvr-ssl/openstack/share.yml b/classes/cluster/virtual-mcp-pike-dvr-ssl/openstack/share.yml
index ad29ff7..a631079 100644
--- a/classes/cluster/virtual-mcp-pike-dvr-ssl/openstack/share.yml
+++ b/classes/cluster/virtual-mcp-pike-dvr-ssl/openstack/share.yml
@@ -10,7 +10,16 @@
manila_lvm_devices:
- /dev/loop0
loopback_device1_size: 20
+ linux:
+ network:
+ interface:
+ ens4:
+ enabled: true
+ type: eth
+ proto: static
+ address: ${_param:single_address}
+ netmask: 255.255.255.0
manila:
common:
identity:
- protocol: https
\ No newline at end of file
+ protocol: https
diff --git a/classes/cluster/virtual-mcp-pike-dvr/infra/config.yml b/classes/cluster/virtual-mcp-pike-dvr/infra/config.yml
index ce5ab70..56e9c28 100644
--- a/classes/cluster/virtual-mcp-pike-dvr/infra/config.yml
+++ b/classes/cluster/virtual-mcp-pike-dvr/infra/config.yml
@@ -30,6 +30,7 @@
- system.reclass.storage.system.openstack_compute_multi
- system.reclass.storage.system.openstack_gateway_single
- system.reclass.storage.system.openstack_dashboard_single
+- system.reclass.storage.system.openstack_share_single
- system.reclass.storage.system.openstack_telemetry_cluster
- cluster.virtual-mcp-pike-dvr.infra.backup.client_common
- cluster.virtual-mcp-pike-dvr
@@ -135,8 +136,10 @@
node_class:
value_template:
- cluster.<<node_cluster>>.openstack.share
- node_param:
- manila_share_address:
+ cluster_param:
+ openstack_share_node01_address:
+ value_template: <<node_control_ip>>
+ openstack_share_node01_share_address:
value_template: <<node_tenant_ip>>
openstack_telemetry01:
expression: <<node_hostname>>__equals__mdb01
diff --git a/classes/cluster/virtual-mcp-pike-dvr/openstack/compute.yml b/classes/cluster/virtual-mcp-pike-dvr/openstack/compute.yml
index 49644e2..deeb36d 100644
--- a/classes/cluster/virtual-mcp-pike-dvr/openstack/compute.yml
+++ b/classes/cluster/virtual-mcp-pike-dvr/openstack/compute.yml
@@ -30,3 +30,12 @@
notification:
driver: messagingv2
topics: "notifications"
+ linux:
+ network:
+ interface:
+ primary_interface:
+ ipflush_onchange: true
+ tenant_interface:
+ ipflush_onchange: true
+ external_interface:
+ ipflush_onchange: true
diff --git a/classes/cluster/virtual-mcp-pike-dvr/openstack/control.yml b/classes/cluster/virtual-mcp-pike-dvr/openstack/control.yml
index 6c9f58d..625e906 100644
--- a/classes/cluster/virtual-mcp-pike-dvr/openstack/control.yml
+++ b/classes/cluster/virtual-mcp-pike-dvr/openstack/control.yml
@@ -75,9 +75,6 @@
domain_id: ${_param:designate_domain_id}
version: ${_param:designate_version}
backend:
- bind9:
- rndc_key: ${_param:designate_bind9_rndc_key}
- rndc_algorithm: ${_param:designate_bind9_rndc_algorithm}
pdns4:
api_token: ${_param:designate_pdns_api_key}
api_endpoint: ${_param:designate_pdns_api_endpoint}
diff --git a/classes/cluster/virtual-mcp-pike-dvr/openstack/gateway.yml b/classes/cluster/virtual-mcp-pike-dvr/openstack/gateway.yml
index 586579c..6ed3f45 100644
--- a/classes/cluster/virtual-mcp-pike-dvr/openstack/gateway.yml
+++ b/classes/cluster/virtual-mcp-pike-dvr/openstack/gateway.yml
@@ -19,3 +19,12 @@
notification:
driver: messagingv2
topics: "notifications"
+ linux:
+ network:
+ interface:
+ primary_interface:
+ ipflush_onchange: true
+ tenant_interface:
+ ipflush_onchange: true
+ external_interface:
+ ipflush_onchange: true
diff --git a/classes/cluster/virtual-mcp-pike-dvr/openstack/init.yml b/classes/cluster/virtual-mcp-pike-dvr/openstack/init.yml
index 5b77433..bcda365 100644
--- a/classes/cluster/virtual-mcp-pike-dvr/openstack/init.yml
+++ b/classes/cluster/virtual-mcp-pike-dvr/openstack/init.yml
@@ -8,6 +8,7 @@
openstack_control_node01_hostname: ctl01
openstack_control_node02_hostname: ctl02
openstack_control_node03_hostname: ctl03
+ openstack_share_node01_hostname: share01
openstack_control_node01_address: 172.16.10.101
openstack_control_node02_address: 172.16.10.102
openstack_control_node03_address: 172.16.10.103
@@ -99,8 +100,6 @@
designate_domain_id: 5186883b-91fb-4891-bd49-e6769234a8fc
designate_mdns_address: 0.0.0.0
designate_mdns_port: 53
- designate_bind9_rndc_key: 4pc+X4PDqb2q+5o72dISm72LM1Ds9X2EYZjqg+nmsS7FhdTwzFFY8l/iEDmHxnyjkA33EQC8
- designate_bind9_rndc_algorithm: hmac-sha512
designate_pdns_api_key: VxK9cMlFL5Ae
designate_pdns_api_endpoint: "http://${_param:openstack_dns_node01_address}:${_param:powerdns_webserver_port}"
designate_pool_manager_enabled: True
diff --git a/classes/cluster/virtual-mcp-pike-dvr/openstack/share.yml b/classes/cluster/virtual-mcp-pike-dvr/openstack/share.yml
index 57625ca..04de039 100644
--- a/classes/cluster/virtual-mcp-pike-dvr/openstack/share.yml
+++ b/classes/cluster/virtual-mcp-pike-dvr/openstack/share.yml
@@ -4,9 +4,18 @@
- system.linux.storage.loopback_manila
- system.manila.share
- system.manila.share.backend.lvm
-- cluster.virtual-mcp-pike-ovs
+- cluster.virtual-mcp-pike-dvr
parameters:
_param:
manila_lvm_devices:
- /dev/loop0
loopback_device1_size: 20
+ linux:
+ network:
+ interface:
+ ens4:
+ enabled: true
+ type: eth
+ proto: static
+ address: ${_param:single_address}
+ netmask: 255.255.255.0
diff --git a/classes/cluster/virtual-mcp-pike-ovs/infra/config.yml b/classes/cluster/virtual-mcp-pike-ovs/infra/config.yml
index 0cb7cf0..d1b2b88 100644
--- a/classes/cluster/virtual-mcp-pike-ovs/infra/config.yml
+++ b/classes/cluster/virtual-mcp-pike-ovs/infra/config.yml
@@ -29,6 +29,7 @@
- system.reclass.storage.system.openstack_compute_multi
- system.reclass.storage.system.openstack_gateway_single
- system.reclass.storage.system.openstack_dashboard_single
+- system.reclass.storage.system.openstack_share_single
- system.reclass.storage.system.openstack_telemetry_cluster
- cluster.virtual-mcp-pike-ovs.infra.backup.client_common
- cluster.virtual-mcp-pike-ovs
@@ -134,8 +135,10 @@
node_class:
value_template:
- cluster.<<node_cluster>>.openstack.share
- node_param:
- manila_share_address:
+ cluster_param:
+ openstack_share_node01_address:
+ value_template: <<node_control_ip>>
+ openstack_share_node01_share_address:
value_template: <<node_tenant_ip>>
openstack_telemetry01:
expression: <<node_hostname>>__equals__mdb01
diff --git a/classes/cluster/virtual-mcp-pike-ovs/openstack/control.yml b/classes/cluster/virtual-mcp-pike-ovs/openstack/control.yml
index 67d9437..e4923a0 100644
--- a/classes/cluster/virtual-mcp-pike-ovs/openstack/control.yml
+++ b/classes/cluster/virtual-mcp-pike-ovs/openstack/control.yml
@@ -47,13 +47,6 @@
_param:
keepalived_vip_interface: ens4
apache_manila_api_address: ${_param:cluster_local_address}
- galera:
- master:
- innodb_buffer_pool_size: 1024M
- max_connections: 1000
- slave:
- innodb_buffer_pool_size: 1024M
- max_connections: 1000
linux:
system:
package:
diff --git a/classes/cluster/virtual-mcp-pike-ovs/openstack/init.yml b/classes/cluster/virtual-mcp-pike-ovs/openstack/init.yml
index 6918620..647c79f 100644
--- a/classes/cluster/virtual-mcp-pike-ovs/openstack/init.yml
+++ b/classes/cluster/virtual-mcp-pike-ovs/openstack/init.yml
@@ -8,6 +8,7 @@
openstack_control_node01_hostname: ctl01
openstack_control_node02_hostname: ctl02
openstack_control_node03_hostname: ctl03
+ openstack_share_node01_hostname: share01
openstack_control_node01_address: 172.16.10.101
openstack_control_node02_address: 172.16.10.102
openstack_control_node03_address: 172.16.10.103
diff --git a/classes/cluster/virtual-mcp-pike-ovs/openstack/share.yml b/classes/cluster/virtual-mcp-pike-ovs/openstack/share.yml
index 57625ca..449310b 100644
--- a/classes/cluster/virtual-mcp-pike-ovs/openstack/share.yml
+++ b/classes/cluster/virtual-mcp-pike-ovs/openstack/share.yml
@@ -10,3 +10,12 @@
manila_lvm_devices:
- /dev/loop0
loopback_device1_size: 20
+ linux:
+ network:
+ interface:
+ ens4:
+ enabled: true
+ type: eth
+ proto: static
+ address: ${_param:single_address}
+ netmask: 255.255.255.0
diff --git a/classes/cluster/virtual-mcp11-k8s-calico-dyn/kubernetes/control.yml b/classes/cluster/virtual-mcp11-k8s-calico-dyn/kubernetes/control.yml
index e2b9819..250d608 100644
--- a/classes/cluster/virtual-mcp11-k8s-calico-dyn/kubernetes/control.yml
+++ b/classes/cluster/virtual-mcp11-k8s-calico-dyn/kubernetes/control.yml
@@ -1,5 +1,7 @@
classes:
- service.etcd.server.cluster
+- service.kubernetes.control.cluster
+- service.kubernetes.control.cluster-admin
- system.haproxy.proxy.listen.kubernetes.apiserver
- system.linux.system.repo.docker_legacy
- system.salt.minion.cert.etcd_server
diff --git a/classes/cluster/virtual-mcp11-k8s-calico-minimal/kubernetes/control.yml b/classes/cluster/virtual-mcp11-k8s-calico-minimal/kubernetes/control.yml
index 0588b70..aea660b 100644
--- a/classes/cluster/virtual-mcp11-k8s-calico-minimal/kubernetes/control.yml
+++ b/classes/cluster/virtual-mcp11-k8s-calico-minimal/kubernetes/control.yml
@@ -1,5 +1,7 @@
classes:
- service.etcd.server.cluster
+- service.kubernetes.control.cluster
+- service.kubernetes.control.cluster-admin
- system.haproxy.proxy.listen.kubernetes.apiserver
- system.linux.system.repo.docker_legacy
- system.salt.minion.cert.etcd_server
diff --git a/classes/cluster/virtual-mcp11-k8s-calico/kubernetes/control.yml b/classes/cluster/virtual-mcp11-k8s-calico/kubernetes/control.yml
index 9797bb4..352aa0e 100644
--- a/classes/cluster/virtual-mcp11-k8s-calico/kubernetes/control.yml
+++ b/classes/cluster/virtual-mcp11-k8s-calico/kubernetes/control.yml
@@ -1,5 +1,7 @@
classes:
- service.etcd.server.cluster
+- service.kubernetes.control.cluster
+- service.kubernetes.control.cluster-admin
- system.haproxy.proxy.listen.kubernetes.apiserver
- system.linux.system.repo.mcp.apt_mirantis.docker_legacy
- system.salt.minion.cert.etcd_server
diff --git a/classes/cluster/virtual-mcp11-k8s-contrail/kubernetes/control.yml b/classes/cluster/virtual-mcp11-k8s-contrail/kubernetes/control.yml
index d2210eb..ddfd347 100644
--- a/classes/cluster/virtual-mcp11-k8s-contrail/kubernetes/control.yml
+++ b/classes/cluster/virtual-mcp11-k8s-contrail/kubernetes/control.yml
@@ -1,5 +1,7 @@
classes:
- service.etcd.server.cluster
+- service.kubernetes.control.cluster
+- service.kubernetes.control.cluster-admin
- system.haproxy.proxy.listen.kubernetes.apiserver
- system.linux.system.repo.docker_legacy
- system.salt.minion.cert.etcd_server
diff --git a/classes/cluster/virtual-mcp11-ovs-ironic-ssl/.env b/classes/cluster/virtual-mcp11-ovs-ironic-ssl/.env
new file mode 100644
index 0000000..22a903b
--- /dev/null
+++ b/classes/cluster/virtual-mcp11-ovs-ironic-ssl/.env
@@ -0,0 +1 @@
+FORMULAS_SALT_MASTER+=(ntp sphinx nginx collectd heka grafana)
diff --git a/classes/cluster/virtual-mcp11-ovs-ironic/.env b/classes/cluster/virtual-mcp11-ovs-ironic/.env
new file mode 100644
index 0000000..22a903b
--- /dev/null
+++ b/classes/cluster/virtual-mcp11-ovs-ironic/.env
@@ -0,0 +1 @@
+FORMULAS_SALT_MASTER+=(ntp sphinx nginx collectd heka grafana)
diff --git a/classes/cluster/virtual-offline-pike-ovs-dpdk/init.yml b/classes/cluster/virtual-offline-pike-ovs-dpdk/init.yml
index d6ac994..0dade38 100644
--- a/classes/cluster/virtual-offline-pike-ovs-dpdk/init.yml
+++ b/classes/cluster/virtual-offline-pike-ovs-dpdk/init.yml
@@ -8,7 +8,6 @@
- system.linux.system.repo_local.mcp.apt_mirantis.ubuntu
- system.linux.system.single
- system.rsyslog.client.single
-- system.watchdog.server
- system.prometheus.collector
- system.telegraf.agent
- system.openssh.server.team.lab
diff --git a/classes/cluster/virtual-offline-pike-ovs/init.yml b/classes/cluster/virtual-offline-pike-ovs/init.yml
index 6671672..959ed0b 100644
--- a/classes/cluster/virtual-offline-pike-ovs/init.yml
+++ b/classes/cluster/virtual-offline-pike-ovs/init.yml
@@ -8,7 +8,6 @@
- system.linux.system.repo_local.mcp.apt_mirantis.ubuntu
- system.linux.system.single
- system.rsyslog.client.single
-- system.watchdog.server
- system.prometheus.collector
- system.telegraf.agent
- system.openssh.server.team.lab
diff --git a/classes/system b/classes/system
index 5b746c4..ad28e21 160000
--- a/classes/system
+++ b/classes/system
@@ -1 +1 @@
-Subproject commit 5b746c4d08ef1374fa57fdda6dfa7ea8104197e8
+Subproject commit ad28e212e503c42a20dd8ca7ebf2daaf22939dba