
This patch set standardizes the Pegleg directory structure because of the following reasons: 1) src/bin/pegleg is not necessary and only makes building (e.g. documentation building) and running of tox targets unnecessarily difficult. 2) src/bin/pegleg is a Java-like standard that bears no relevance to Python. Change-Id: I37d39d3d6186b92f8fbfe234221c9e44da48cf10
157 lines
4.4 KiB
Python
157 lines
4.4 KiB
Python
# Copyright 2018 AT&T Intellectual Property. All other rights reserved.
|
|
#
|
|
# 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.
|
|
|
|
from __future__ import absolute_import
|
|
import copy
|
|
import os
|
|
import tempfile
|
|
|
|
import pytest
|
|
import yaml
|
|
|
|
from pegleg import config
|
|
from pegleg.engine.util import files
|
|
|
|
TEST_DOCUMENT = """
|
|
---
|
|
schema: deckhand/Passphrase/v1
|
|
metadata:
|
|
schema: metadata/Document/v1
|
|
name: %(name)s
|
|
storagePolicy: cleartext
|
|
layeringDefinition:
|
|
abstract: False
|
|
layer: %(layer)s
|
|
data: %(name)s-password
|
|
...
|
|
"""
|
|
|
|
|
|
def _gen_document(**kwargs):
|
|
test_document = TEST_DOCUMENT % kwargs
|
|
return yaml.load(test_document)
|
|
|
|
|
|
@pytest.fixture()
|
|
def create_tmp_deployment_files(tmpdir):
|
|
"""Fixture that creates a temporary directory structure."""
|
|
sitenames = ['cicd', 'lab']
|
|
|
|
SITE_TEST_STRUCTURE = {
|
|
'directories': {
|
|
'secrets': {
|
|
'directories': {
|
|
'passphrases': {
|
|
'files': {}
|
|
},
|
|
},
|
|
},
|
|
'software': {
|
|
'directories': {
|
|
'charts': {
|
|
'files': {}
|
|
},
|
|
},
|
|
},
|
|
},
|
|
'files': {}
|
|
}
|
|
|
|
p = tmpdir.mkdir("deployment_files")
|
|
config.set_site_repo(str(p))
|
|
|
|
# Create global directories and files.
|
|
files._create_tree(
|
|
os.path.join(str(p), 'global'),
|
|
tree={
|
|
'directories': {
|
|
'common': {
|
|
'files': {
|
|
'global-common.yaml':
|
|
_gen_document(name="global-common", layer='global')
|
|
}
|
|
},
|
|
'v1.0': {
|
|
'files': {
|
|
'global-v1.0.yaml':
|
|
_gen_document(name="global-v1.0", layer='global')
|
|
}
|
|
}
|
|
}
|
|
})
|
|
|
|
# Create type directories and files.
|
|
files._create_tree(
|
|
os.path.join(str(p), 'type'),
|
|
tree={
|
|
'directories': {
|
|
site: {
|
|
'directories': {
|
|
'common': {
|
|
'files': {
|
|
'%s-type-common.yaml' % site:
|
|
_gen_document(
|
|
name="%s-type-common" % site, layer='type')
|
|
}
|
|
},
|
|
'v1.0': {
|
|
'files': {
|
|
'%s-type-v1.0.yaml' % site:
|
|
_gen_document(
|
|
name="%s-type-v1.0" % site, layer='type')
|
|
}
|
|
}
|
|
}
|
|
}
|
|
for site in sitenames
|
|
}
|
|
})
|
|
|
|
# Create site directories and files.
|
|
for site in sitenames:
|
|
site_definition = """
|
|
---
|
|
data:
|
|
repositories:
|
|
global:
|
|
revision: v1.0
|
|
url: http://nothing.com
|
|
site_type: %s
|
|
metadata:
|
|
layeringDefinition: {abstract: false, layer: site}
|
|
name: %s
|
|
schema: metadata/Document/v1
|
|
storagePolicy: cleartext
|
|
schema: pegleg/SiteDefinition/v1
|
|
""" % (site, site)
|
|
|
|
test_structure = SITE_TEST_STRUCTURE.copy()
|
|
test_structure['directories']['secrets']['directories']['passphrases'][
|
|
'files'] = {
|
|
'%s-passphrase.yaml' % site:
|
|
_gen_document(name="%s-passphrase" % site, layer='site')
|
|
}
|
|
test_structure['directories']['software']['directories']['charts'][
|
|
'files'] = {
|
|
'%s-chart.yaml' % site:
|
|
_gen_document(name="%s-chart" % site, layer='site')
|
|
}
|
|
test_structure['files']['site-definition.yaml'] = yaml.safe_load(
|
|
site_definition)
|
|
|
|
cicd_path = os.path.join(str(p), files._site_path(site))
|
|
files._create_tree(cicd_path, tree=test_structure)
|
|
|
|
yield
|