From 22e6df087015beff6d7aec5b33edd7fddec606f2 Mon Sep 17 00:00:00 2001 From: Apurva Gokani Date: Fri, 22 May 2020 10:28:06 -0500 Subject: [PATCH] adding site_type to deployment-data schema This change adds the site_type parameter in deployment_data The value will be taken from respective site-definition.yaml Change-Id: I8e65b39c73c94caf3ed4cc517520b9577160b20d --- doc/source/cli/cli.rst | 6 ++++++ pegleg/engine/site.py | 19 ++++++++++++++----- pegleg/engine/util/git.py | 2 ++ pegleg/engine/util/shipyard_helper.py | 2 +- tests/unit/engine/test_site_render.py | 11 +++++++++++ .../unit/engine/util/test_shipyard_helper.py | 6 +++--- 6 files changed, 37 insertions(+), 9 deletions(-) diff --git a/doc/source/cli/cli.rst b/doc/source/cli/cli.rst index 531c238d..672d95b7 100644 --- a/doc/source/cli/cli.rst +++ b/doc/source/cli/cli.rst @@ -28,6 +28,12 @@ called ``pegleg.sh``. The default workspace for the ``pegleg.sh`` script is ``/workspace``. The examples below require that this workspace be used. +.. note:: + Pegleg collect and render commands generate a deployment-version + document containing information gathered from the site-definition, which + includes the specific commit for each repository used and whether that + repository was clean or dirty. + Environment Variables ===================== diff --git a/pegleg/engine/site.py b/pegleg/engine/site.py index 1661c02f..934cc1d0 100644 --- a/pegleg/engine/site.py +++ b/pegleg/engine/site.py @@ -55,7 +55,7 @@ def _collect_to_stdout(site_name): click.echo("\n".join(line.splitlines())) add_representer_ordered_dict() res = yaml.safe_dump( - get_deployment_data_doc(), + get_deployment_data_doc(site_name), explicit_start=True, explicit_end=True, default_flow_style=False) @@ -88,7 +88,7 @@ def _collect_to_file(site_name, save_location): add_representer_ordered_dict() save_files[curr_site_repo].writelines( yaml.safe_dump( - get_deployment_data_doc(), + get_deployment_data_doc(site_name), default_flow_style=False, explicit_start=True, explicit_end=True)) @@ -108,7 +108,7 @@ def collect(site_name, save_location): def render(site_name, output_stream, validate): rendered_documents = get_rendered_docs(site_name, validate=validate) - rendered_documents.append(get_deployment_data_doc()) + rendered_documents.append(get_deployment_data_doc(site_name)) if output_stream: files.dump_all( rendered_documents, @@ -213,12 +213,12 @@ def show(site_name, output_stream): click.echo(msg) -def get_deployment_data_doc(): +def get_deployment_data_doc(site_name): stanzas = { files.path_leaf(repo): _get_repo_deployment_data_stanza(repo) for repo in config.all_repos() } - return OrderedDict( + basedeployment_data = OrderedDict( [ ("schema", "pegleg/DeploymentData/v1"), ( @@ -234,6 +234,15 @@ def get_deployment_data_doc(): ("storagePolicy", "cleartext"), ])), ("data", OrderedDict([("documents", stanzas)])) ]) + try: + data = util.definition.load_as_params(site_name) + basedeployment_data['data'].update({'site_type': data['site_type']}) + return basedeployment_data + except Exception as ex: + LOG.debug( + "Unable to get the site definition data for" + " site: %s, Exception :%s", site_name, ex) + return basedeployment_data def _get_repo_deployment_data_stanza(repo_path): diff --git a/pegleg/engine/util/git.py b/pegleg/engine/util/git.py index 0dce29ed..0342c8c8 100644 --- a/pegleg/engine/util/git.py +++ b/pegleg/engine/util/git.py @@ -146,6 +146,7 @@ def _get_current_ref(repo_url): 'checked out ref=%s', repo_url, current_ref) return current_ref except Exception as e: + LOG.debug('Exception : %s', str(e)) return None @@ -154,6 +155,7 @@ def get_remote_url(repo_url): repo = Repo(repo_url, search_parent_directories=True) return repo.remotes.origin.url except Exception as e: + LOG.debug('Exception : %s', str(e)) return None diff --git a/pegleg/engine/util/shipyard_helper.py b/pegleg/engine/util/shipyard_helper.py index 13c5fe43..4a189b2f 100644 --- a/pegleg/engine/util/shipyard_helper.py +++ b/pegleg/engine/util/shipyard_helper.py @@ -77,7 +77,7 @@ class ShipyardHelper(object): collected_documents = files.collect_files_by_repo(self.site_name) - collection_data = [site.get_deployment_data_doc()] + collection_data = [site.get_deployment_data_doc(self.site_name)] LOG.info("Processing %d collection(s)", len(collected_documents)) for idx, document in enumerate(collected_documents): # Decrypt the documents if encrypted diff --git a/tests/unit/engine/test_site_render.py b/tests/unit/engine/test_site_render.py index fea9552a..e02ad633 100644 --- a/tests/unit/engine/test_site_render.py +++ b/tests/unit/engine/test_site_render.py @@ -223,3 +223,14 @@ def test_site_render(create_tmp_site_structure): doc2['data']['managedDocument']['data'] = doc2['data'][ 'managedDocument']['data'].decode() assert doc2['data']['managedDocument'] == doc + + +def test_deployment_version_doc(create_tmp_site_structure): + """ + This test case checks the deployment-version document, + test case passes if the site_type parameter exists + """ + sitename = "test" + rootpath = create_tmp_site_structure(sitename) + rendered_doc = site.get_deployment_data_doc(sitename) + assert rendered_doc['data']['site_type'] == sitename diff --git a/tests/unit/engine/util/test_shipyard_helper.py b/tests/unit/engine/util/test_shipyard_helper.py index 9704d633..1017078e 100644 --- a/tests/unit/engine/util/test_shipyard_helper.py +++ b/tests/unit/engine/util/test_shipyard_helper.py @@ -152,8 +152,8 @@ def _get_data_as_collection(data): return yaml.dump_all(collection, Dumper=yaml.SafeDumper) -def _get_deployment_data_as_yaml(): - return yaml.safe_dump(get_deployment_data_doc()) +def _get_deployment_data_as_yaml(site_name): + return yaml.safe_dump(get_deployment_data_doc(site_name)) def test_shipyard_helper_init_(): @@ -204,7 +204,7 @@ def test_upload_documents(*args): # collection name and buffer mode. expected_data = '---\n'.join( [ - _get_deployment_data_as_yaml(), + _get_deployment_data_as_yaml(context.obj['site_name']), _get_data_as_collection(MULTI_REPO_DATA) ]) mock_api_client.post_configdocs.assert_called_with(