Merge "Add check for deploy files alternate location"
This commit is contained in:
commit
843d564469
|
@ -394,3 +394,15 @@ CERT_NAMESPACE_PLATFORM_CA_CERTS = 'cert-manager'
|
|||
# The ansible playbook base directories
|
||||
ANSIBLE_CURRENT_VERSION_BASE_PATH = '/usr/share/ansible/stx-ansible/playbooks'
|
||||
ANSIBLE_PREVIOUS_VERSION_BASE_PATH = '/opt/dc-vault/playbooks'
|
||||
|
||||
# The deployment manager artifacts usr directories
|
||||
ALTERNATE_DEPLOY_FILES_DIR = '/usr/local/share/applications'
|
||||
|
||||
ALTERNATE_HELM_CHART_OVERRIDES_DIR = ALTERNATE_DEPLOY_FILES_DIR + '/overrides'
|
||||
HELM_CHART_OVERRIDES_POSTFIX = '-overrides-subcloud.yaml'
|
||||
|
||||
ALTERNATE_HELM_CHART_DIR = ALTERNATE_DEPLOY_FILES_DIR + '/helm'
|
||||
HELM_CHART_POSTFIX = 'deployment-manager'
|
||||
|
||||
ALTERNATE_DEPLOY_PLAYBOOK_DIR = ALTERNATE_DEPLOY_FILES_DIR + '/playbooks'
|
||||
DEPLOY_PLAYBOOK_POSTFIX = 'deployment-manager.yaml'
|
||||
|
|
|
@ -747,6 +747,33 @@ def upload_config_file(file_item, config_file, config_type):
|
|||
pecan.abort(400, msg)
|
||||
|
||||
|
||||
def check_deploy_files_in_alternate_location(payload):
|
||||
for f in os.listdir(consts.ALTERNATE_DEPLOY_PLAYBOOK_DIR):
|
||||
if f.endswith(consts.DEPLOY_PLAYBOOK_POSTFIX):
|
||||
filename = os.path.join(consts.ALTERNATE_DEPLOY_PLAYBOOK_DIR, f)
|
||||
payload.update({consts.DEPLOY_PLAYBOOK: filename})
|
||||
break
|
||||
else:
|
||||
return False
|
||||
|
||||
for f in os.listdir(consts.ALTERNATE_HELM_CHART_OVERRIDES_DIR):
|
||||
if f.endswith(consts.HELM_CHART_OVERRIDES_POSTFIX):
|
||||
filename = os.path.join(consts.ALTERNATE_HELM_CHART_OVERRIDES_DIR, f)
|
||||
payload.update({consts.DEPLOY_OVERRIDES: filename})
|
||||
break
|
||||
else:
|
||||
return False
|
||||
|
||||
for f in os.listdir(consts.ALTERNATE_HELM_CHART_DIR):
|
||||
if consts.HELM_CHART_POSTFIX in str(f):
|
||||
filename = os.path.join(consts.ALTERNATE_HELM_CHART_DIR, f)
|
||||
payload.update({consts.DEPLOY_CHART: filename})
|
||||
break
|
||||
else:
|
||||
return False
|
||||
return True
|
||||
|
||||
|
||||
def get_common_deploy_files(payload, software_version):
|
||||
missing_deploy_files = []
|
||||
for f in consts.DEPLOY_COMMON_FILE_OPTIONS:
|
||||
|
@ -762,9 +789,14 @@ def get_common_deploy_files(payload, software_version):
|
|||
else:
|
||||
payload.update({f: os.path.join(dir_path, filename)})
|
||||
if missing_deploy_files:
|
||||
missing_deploy_files_str = ', '.join(missing_deploy_files)
|
||||
msg = _("Missing required deploy files: %s" % missing_deploy_files_str)
|
||||
pecan.abort(400, msg)
|
||||
if check_deploy_files_in_alternate_location(payload):
|
||||
payload.update({'user_uploaded_artifacts': False})
|
||||
else:
|
||||
missing_deploy_files_str = ', '.join(missing_deploy_files)
|
||||
msg = _("Missing required deploy files: %s" % missing_deploy_files_str)
|
||||
pecan.abort(400, msg)
|
||||
else:
|
||||
payload.update({'user_uploaded_artifacts': True})
|
||||
|
||||
|
||||
def validate_subcloud_name_availability(context, subcloud_name):
|
||||
|
|
|
@ -1967,6 +1967,8 @@ class SubcloudManager(manager.Manager):
|
|||
payload[consts.DEPLOY_CHART]
|
||||
payload['deploy_values']['deployment_manager_overrides'] = \
|
||||
payload[consts.DEPLOY_OVERRIDES]
|
||||
payload['deploy_values']['user_uploaded_artifacts'] = \
|
||||
payload["user_uploaded_artifacts"]
|
||||
self._write_deploy_files(payload, subcloud_name)
|
||||
|
||||
def _delete_subcloud_routes(self, keystone_client, subcloud):
|
||||
|
|
|
@ -0,0 +1,53 @@
|
|||
#
|
||||
# Copyright (c) 2023 Wind River Systems, Inc.
|
||||
#
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
#
|
||||
|
||||
import mock
|
||||
import os
|
||||
|
||||
|
||||
@mock.patch.object(os, 'listdir')
|
||||
def test_check_deploy_files_in_alternate_location_with_all_file_exists(self, mock_os_isdir, mock_os_listdir):
|
||||
payload = {}
|
||||
mock_os_isdir.return_value = True
|
||||
mock_os_listdir.return_value = ['deploy-chart-fake-deployment-manager.tgz',
|
||||
'deploy-overrides-fake-overrides-subcloud.yaml',
|
||||
'deploy-playbook-fake-deployment-manager.yaml']
|
||||
|
||||
response = self.check_deploy_files_in_alternate_location(payload)
|
||||
self.assertEqual(response, True)
|
||||
|
||||
|
||||
def test_check_deploy_files_in_alternate_location_with_deploy_chart_not_exists(self, mock_os_isdir, mock_os_listdir):
|
||||
payload = {}
|
||||
mock_os_isdir.return_value = True
|
||||
mock_os_listdir.return_value = ['deploy-chart-fake.tgz',
|
||||
'deploy-overrides-fake-overrides-subcloud.yaml',
|
||||
'deploy-playbook-fake-deployment-manager.yaml']
|
||||
|
||||
response = self.check_deploy_files_in_alternate_location(payload)
|
||||
self.assertEqual(response, False)
|
||||
|
||||
|
||||
def test_check_deploy_files_in_alternate_location_with_deploy_overrides_not_exists(self, mock_os_isdir, mock_os_listdir):
|
||||
payload = {}
|
||||
mock_os_isdir.return_value = True
|
||||
mock_os_listdir.return_value = ['deploy-chart-fake-deployment-manager.tgz',
|
||||
'deploy-overrides.yaml',
|
||||
'deploy-playbook-fake-deployment-manager.yaml']
|
||||
|
||||
response = self.check_deploy_files_in_alternate_location(payload)
|
||||
self.assertEqual(response, False)
|
||||
|
||||
|
||||
def test_check_deploy_files_in_alternate_location_with_deploy_playbook_not_exists(self, mock_os_isdir, mock_os_listdir):
|
||||
payload = {}
|
||||
mock_os_isdir.return_value = True
|
||||
mock_os_listdir.return_value = ['deploy-chart-fake-deployment-manager.tgz',
|
||||
'deploy-overrides-fake-overrides-subcloud.yaml',
|
||||
'deploy-playbook.yaml']
|
||||
|
||||
response = self.check_deploy_files_in_alternate_location(payload)
|
||||
self.assertEqual(response, False)
|
|
@ -725,7 +725,8 @@ class TestSubcloudManager(base.DCManagerTestCase):
|
|||
"deploy_playbook": "test_playbook.yaml",
|
||||
"deploy_overrides": "test_overrides.yaml",
|
||||
"deploy_chart": "test_chart.yaml",
|
||||
"deploy_config": "subcloud1.yaml"}
|
||||
"deploy_config": "subcloud1.yaml",
|
||||
"user_uploaded_artifacts": True}
|
||||
|
||||
# Create subcloud in DB
|
||||
subcloud = self.create_subcloud_static(self.ctx, name=payload['name'])
|
||||
|
|
Loading…
Reference in New Issue