Skip to content

Commit f55c7de

Browse files
authored
Merge pull request #889 from stackhpc/upstream/master-2026-06-22
Synchronise master with upstream
2 parents 870a499 + b226dff commit f55c7de

35 files changed

Lines changed: 363 additions & 135 deletions

File tree

ansible/group_vars/all/cinder.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ enable_cinder_backend_pure_fc: false
1010
enable_cinder_backend_pure_roce: false
1111
enable_cinder_backend_pure_nvme_tcp: false
1212
enable_cinder_backend_lightbits: false
13+
enable_cinder_backend_vast: false
1314

1415
#################################
1516
# Cinder options

ansible/group_vars/all/ovn.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ ovn_sb_db_port: "6642"
88
ovn_sb_db_relay_count: "{{ ((groups['ovn-controller'] | length) / ovn_sb_db_relay_compute_per_relay | int) | round(0, 'ceil') | int }}"
99
ovn_sb_db_relay_compute_per_relay: "50"
1010
ovn_sb_db_relay_port_prefix: "1664"
11-
ovn_sb_db_relay_port: "{{ ovn_sb_db_relay_port_prefix ~ ovn_sb_db_relay_client_group_id }}"
11+
ovn_sb_db_relay_port: "{{ (ovn_sb_db_relay_port_prefix | int) * 10 + (ovn_sb_db_relay_client_group_id | int) }}"
1212
ovn_sb_db_relay_client_group_id: "{{ range(1, ovn_sb_db_relay_count | int + 1) | random(seed=inventory_hostname) }}"
1313
ovn_nb_connection:
1414
"{% for host in groups['ovn-nb-db'] %}\

ansible/module_utils/kolla_podman_worker.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
from podman.errors import APIError
1414
from podman import PodmanClient
1515

16+
import os
1617
import shlex
1718

1819
from ansible.module_utils.kolla_container_worker import COMPARE_CONFIG_CMD
@@ -591,6 +592,7 @@ def build_ulimits(self, ulimits):
591592
def create_container(self):
592593
# ensure volumes are pre-created before container creation
593594
self.create_container_volumes()
595+
self.create_missing_bind_directories()
594596

595597
args = self.prepare_container_args()
596598
container = self.pc.containers.create(**args)
@@ -740,6 +742,19 @@ def create_container_volumes(self):
740742

741743
self.create_volume(name=volume_name)
742744

745+
def create_missing_bind_directories(self):
746+
volumes = self.params.get('volumes')
747+
if not volumes:
748+
return
749+
for volume in volumes:
750+
if not volume or not volume.strip():
751+
continue
752+
if volume[0] != '/':
753+
continue
754+
src = volume.split(':')[0]
755+
if not os.path.exists(src):
756+
os.makedirs(src, exist_ok=True)
757+
743758
def remove_volume(self):
744759
if self.check_volume():
745760
self.changed = True

ansible/roles/cinder/defaults/main.yml

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -270,6 +270,8 @@ cinder_backends:
270270
enabled: "{{ enable_cinder_backend_pure_nvme_tcp | bool }}"
271271
- name: "{{ cinder_backend_lightbits_name }}"
272272
enabled: "{{ enable_cinder_backend_lightbits | bool }}"
273+
- name: "{{ cinder_backend_vast_name }}"
274+
enabled: "{{ enable_cinder_backend_vast | bool }}"
273275

274276
cinder_backend_ceph_name: "rbd-1"
275277
cinder_backend_lvm_name: "lvm-1"
@@ -280,6 +282,7 @@ cinder_backend_pure_fc_name: "Pure-FlashArray-fc"
280282
cinder_backend_pure_roce_name: "Pure-FlashArray-roce"
281283
cinder_backend_pure_nvme_tcp_name: "Pure-FlashArray-nvme-tcp"
282284
cinder_backend_lightbits_name: "Lightbits-NVMe-TCP"
285+
cinder_backend_vast_name: "vast-nvme-tcp"
283286

284287
cinder_ceph_backends:
285288
- name: "{{ cinder_backend_ceph_name }}"
@@ -339,6 +342,12 @@ lightos_default_num_replicas: 3
339342
lightos_api_address:
340343
lightos_jwt:
341344

345+
################################
346+
# Cinder VAST Storage Driver
347+
################################
348+
cinder_vast_username: admin
349+
cinder_vast_port: 443
350+
342351
################################
343352
# Cinder Backup S3
344353
################################

ansible/roles/cinder/tasks/precheck.yml

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@
4343
- not enable_cinder_backend_pure_roce | bool
4444
- not enable_cinder_backend_pure_nvme_tcp | bool
4545
- not enable_cinder_backend_lightbits | bool
46+
- not enable_cinder_backend_vast | bool
4647

4748
- name: Checking LVM volume group exists for Cinder
4849
become: true
@@ -88,6 +89,18 @@
8889
- lightos_jwt
8990
when: enable_cinder_backend_lightbits == "yes"
9091

92+
- name: Check if VAST configurations are defined
93+
ansible.builtin.assert:
94+
that:
95+
- vars[item] is defined
96+
msg: "Cinder VAST backend is enabled, the {{ item }} variable must be defined."
97+
with_items:
98+
- cinder_vast_ip
99+
- cinder_vast_password
100+
- cinder_vast_vippool_name
101+
- cinder_vast_subsystem
102+
when: enable_cinder_backend_vast | bool
103+
91104
- name: Check if cinder_cluster_name is configured for HA configurations
92105
ansible.builtin.assert:
93106
that:

ansible/roles/cinder/templates/cinder.conf.j2

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -228,6 +228,18 @@ lightos_skip_ssl_verify = {{ lightbits_skip_ssl_verify | bool }}
228228
lightos_jwt = {{ lightbits_jwt }}
229229
{% endif %}
230230

231+
{% if enable_cinder_backend_vast | bool %}
232+
[{{ cinder_backend_vast_name }}]
233+
volume_driver = cinder.volume.drivers.vastdata.driver.VASTVolumeDriver
234+
volume_backend_name = {{ cinder_backend_vast_name }}
235+
vast_vippool_name = {{ cinder_vast_vippool_name }}
236+
vast_subsystem = {{ cinder_vast_subsystem }}
237+
san_ip = {{ cinder_vast_ip }}
238+
san_api_port = {{ cinder_vast_port }}
239+
san_login = {{ cinder_vast_username }}
240+
san_password = {{ cinder_vast_password }}
241+
{% endif %}
242+
231243
[privsep_entrypoint]
232244
helper_command=sudo cinder-rootwrap /etc/cinder/rootwrap.conf privsep-helper --config-file /etc/cinder/cinder.conf
233245

ansible/roles/glance/defaults/main.yml

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ glance_services:
77
enabled: true
88
image: "{{ glance_api_image_full }}"
99
environment: "{{ glance_api_container_proxy }}"
10-
privileged: "{{ enable_cinder | bool and (enable_cinder_backend_iscsi | bool or cinder_backend_ceph | bool) }}"
10+
privileged: "{{ glance_api_privileged | bool }}"
1111
volumes: "{{ glance_api_default_volumes + glance_api_extra_volumes }}"
1212
dimensions: "{{ glance_api_dimensions }}"
1313
healthcheck: "{{ glance_api_healthcheck }}"
@@ -181,9 +181,8 @@ glance_api_default_volumes:
181181
- "{{ kolla_dev_repos_directory ~ '/glance:/dev-mode/glance' if glance_dev_mode | bool else '' }}"
182182
- "kolla_logs:/var/log/kolla/"
183183
- "{{ '/dev/shm:/dev/shm' }}"
184-
# NOTE(yoctozepto): below to support Cinder iSCSI backends
185184
- "{% if enable_cinder | bool and enable_cinder_backend_iscsi | bool %}iscsi_info:/etc/iscsi{% endif %}"
186-
- "{% if enable_cinder | bool and enable_cinder_backend_iscsi | bool %}/dev:/dev{% endif %}"
185+
- "{% if glance_api_privileged | bool %}/dev:/dev{% endif %}"
187186

188187
glance_extra_volumes: "{{ default_extra_volumes }}"
189188
glance_api_extra_volumes: "{{ glance_extra_volumes }}"
@@ -240,6 +239,12 @@ glance_dev_repos_pull: "{{ kolla_dev_repos_pull }}"
240239
glance_dev_mode: "{{ kolla_dev_mode }}"
241240
glance_source_version: "{{ kolla_source_version }}"
242241

242+
# iSCSI and VAST NVME-over-TCP need access to the real /dev fs.
243+
glance_api_privileged: "{{ (enable_cinder | bool) and
244+
(enable_cinder_backend_iscsi | bool or
245+
cinder_backend_ceph | bool or
246+
enable_cinder_backend_vast | bool) }}"
247+
243248
###################
244249
# Glance cache
245250
###################

ansible/roles/horizon/templates/_9998-kolla-settings.py.j2

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
DEBUG = {{ horizon_logging_debug }}
2-
TEMPLATE_DEBUG = DEBUG
32
COMPRESS_OFFLINE = True
43
WEBROOT = '/'
54
ALLOWED_HOSTS = ['*']
@@ -138,9 +137,6 @@ OPENSTACK_NEUTRON_NETWORK = {
138137
'enable_ipv6': True,
139138
'enable_distributed_router': False,
140139
'enable_ha_router': False,
141-
'enable_lb': True,
142-
'enable_firewall': True,
143-
'enable_vpn': True,
144140
'enable_fip_topology_check': True,
145141
'supported_vnic_types': ['*'],
146142
}

ansible/roles/ironic/templates/ironic-conductor.json.j2

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,5 +36,12 @@
3636
"owner": "ironic:ironic",
3737
"recurse": true
3838
}{% endif %}
39+
],
40+
"directories": [
41+
{
42+
"path": "/var/lib/ironic/tmp",
43+
"owner": "ironic:ironic",
44+
"perm": "0700"
45+
}
3946
]
4047
}

ansible/roles/ironic/templates/ironic.conf.j2

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@ auth_strategy = noauth
44
{% endif %}
55
debug = {{ ironic_logging_debug }}
66

7+
tempdir = /var/lib/ironic/tmp
8+
79
log_file = /var/log/kolla/ironic/{{ service_name }}.log
810

911
transport_url = {{ rpc_transport_url }}

0 commit comments

Comments
 (0)