From 4b74774b378d9cfaa48d740f92b12bdca2df04b5 Mon Sep 17 00:00:00 2001 From: Tony Hansen Date: Tue, 19 Sep 2017 05:04:05 +0000 Subject: add tools to support PGaaS integration add pom files for check-blueprint-vs-input, repackage fill in deployment step within mvn script fix warnings generated during jenkins build Change-Id: Id8d10180a4e32b5125c586804086ea86c3b85a78 Signed-off-by: Tony Hansen Issue: DCAEGEN2-49 Signed-off-by: Tony Hansen --- .../bin/check-blueprint-vs-input | 215 ++++++++++++++++ check-blueprint-vs-input/check-blueprint-vs-input | 215 ---------------- .../check-blueprint-vs-input.1 | 50 ---- .../check-blueprint-vs-input.man | 55 ----- .../man/check-blueprint-vs-input.1 | 50 ++++ .../man/check-blueprint-vs-input.man | 55 +++++ check-blueprint-vs-input/pom.xml | 270 ++++++++++++++++++++ mvn-phase-script.sh | 47 +++- pom.xml | 2 + python-cbs-docker-client/pom.xml | 6 +- python-dcae-policy/pom.xml | 6 +- python-discovery-client/pom.xml | 6 +- python-dockering/pom.xml | 6 +- repackage/pom.xml | 272 +++++++++++++++++++++ 14 files changed, 918 insertions(+), 337 deletions(-) create mode 100755 check-blueprint-vs-input/bin/check-blueprint-vs-input delete mode 100755 check-blueprint-vs-input/check-blueprint-vs-input delete mode 100644 check-blueprint-vs-input/check-blueprint-vs-input.1 delete mode 100644 check-blueprint-vs-input/check-blueprint-vs-input.man create mode 100644 check-blueprint-vs-input/man/check-blueprint-vs-input.1 create mode 100644 check-blueprint-vs-input/man/check-blueprint-vs-input.man create mode 100644 check-blueprint-vs-input/pom.xml create mode 100644 repackage/pom.xml diff --git a/check-blueprint-vs-input/bin/check-blueprint-vs-input b/check-blueprint-vs-input/bin/check-blueprint-vs-input new file mode 100755 index 0000000..9174526 --- /dev/null +++ b/check-blueprint-vs-input/bin/check-blueprint-vs-input @@ -0,0 +1,215 @@ +#!/usr/bin/env python3 +# -*- indent-tabs-mode: nil -*- +# Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this code 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 print_function + +""" + + NAME + check-blueprint-vs-input - given a blueprint and inputs file pair, validate them against each other + + USAGE + check-blueprint-vs-input [-v] [-t] -b BLUEPRINT [-B exclusion-list] -i INPUTS [-B exclusion-list] + + DESCRIPTION +""" +description = """ + Validate a blueprint and inputs file against each other. This looks for the inputs: node of the blueprint + file, the inputs used by {get_input} within the blueprint, and the values found in the inputs file. The + files may be in either YAML or JSON formats. The names default to blueprint.yaml and inputs.yaml. If + a blueprint inputs name has a default value, it is not considered an error if it is not in the inputs file. + + If using a template inputs file, add the -t/--template option. This will look for the inputs under + an "inputs:" node instead of at the top level. + + If there are blueprint nodes or inputs nodes that should not be considered an error, specify them + using the -B/--blueprint-exclusion-list and -I/inputs-exclusion-list parameters. + + "check-blueprint-vs-input --help" will list all of the available options. +""" +epilog = """ + NOTE + Values specified within the inputs file with no value or a value of {} (such as 'openstack: {}') + do not get loaded from the yaml dictionary, and will show up as false positives. It is suggested that + -B/--blueprint-exclusion-list be used for these, and then do a subsequent grep for those variables + being in the inputs file, as in: + + grep 'openstack: {}' $(BLUEPRINT) + +""" + +import yaml +import sys +import argparse + +def main(): + DEF_BLUEPRINT_NAME = "blueprint.yaml" + DEF_INPUTS_NAME = "inputs.yaml" + parser = argparse.ArgumentParser(description=description, epilog=epilog) + parser.add_argument("-b", "--blueprint", type=str, help="Path to blueprint file, defaults to '%s'" % DEF_BLUEPRINT_NAME, + default=DEF_BLUEPRINT_NAME) + parser.add_argument("-i", "--inputs", type=str, help="Port to listen on, defaults to '%s'" % DEF_INPUTS_NAME, + default=DEF_INPUTS_NAME) + parser.add_argument("-B", "--blueprint-exclusion-list", type=str, help="Comma-separated list of names not to warn about not being in the blueprint file", default="") + parser.add_argument("-I", "--inputs-exclusion-list", type=str, help="Comma-separated list of names not to warn about not being in the inputs file", default="") + parser.add_argument("-t", "--inputs-template", help="Treat inputs file as coming from template area", action="store_true") + parser.add_argument("-v", "--verbose", help="Verbose, may be specified multiple times", action="count", default=0) + args = parser.parse_args() + + blueprintExclusionList = args.blueprint_exclusion_list.split(",") + if args.verbose: print("blueprintExclusionList=%s" % blueprintExclusionList) + + inputsExclusionList = args.inputs_exclusion_list.split(",") + if args.verbose: print("inputsExclusionList=%s" % inputsExclusionList) + + def loadYaml(filename): + """ + Load a YAML file + """ + with open(filename, "r") as fd: + try: + y = yaml.safe_load(fd) + if args.verbose > 1: + print("Contents of %s:" % filename) + yaml.dump(y, sys.stdout) + except: + type, value, traceback = sys.exc_info() + print('value=%s' % value, file=sys.stderr) + return y + + blueprint = loadYaml(args.blueprint) + inputs = loadYaml(args.inputs) + + # if inputs file is empty, provide an empty dictionary + if inputs is None: inputs = { } + + # blueprint file has inputs under the inputs: node + blueprintInputs = blueprint['inputs'] + + # inputs file normally has inputs at the top level, + # but templated inputs files have themunder the inputs: node + if args.inputs_template: inputs = inputs['inputs'] + + + exitval = 0 + + def check_blueprint_inputs(blueprintInputs, inputs, inputsExclusionList): + """ + check the blueprint inputs against the inputs file + """ + foundone = False + for input in blueprintInputs: + if args.verbose: print("blueprint input=%s" % input) + if input in inputs: + if args.verbose: print("\tIS in inputs file") + else: + # print("blueprintInputs.get(input)=%s and blueprintInputs[input].get('default')=%s" % (blueprintInputs.get(input), blueprintInputs[input].get('default'))) + if blueprintInputs.get(input) and blueprintInputs[input].get('default'): + if args.verbose: print("\tHAS a default value") + elif input not in inputsExclusionList: + print("<<<<<<<<<<<<<<<< %s not in inputs file" % input) + foundone = True + else: + if args.verbose: print("<<<<<<<<<<<<<<<< %s not in inputs file, but being ignored" % input) + return foundone + + # check the blueprint inputs: against the inputs file + if args.verbose: print("================ check the blueprint inputs: against the inputs file") + foundone = check_blueprint_inputs(blueprintInputs, inputs, inputsExclusionList) + if foundone: print("") + if foundone: exitval = 1 + + def check_get_inputs(blueprint, blueprintInputs, inputs, inputsExclusionList): + """ + check the blueprint get_input values against the inputs file + """ + if args.verbose > 2: print("check_get_inputs(): d=%s" % d) + + def findInputs(d): + ret = [ ] + if isinstance(d, dict): + if args.verbose: print("type(d) is dict") + for key in d.keys(): + if args.verbose: print("looking at d[key=%s]" % key) + if key == "get_input": + if args.verbose: print("found get_input, adding '%s'" % d[key]) + ret += [ d[key] ] + return ret + else: + if args.verbose: print("going recursive on '%s'" % d[key]) + ret += findInputs(d[key]) + elif isinstance(d, list): + if args.verbose: print("type(d) is list") + for val in d: + if args.verbose: print("going recursive on '%s'" % val) + ret += findInputs(val) + else: + if args.verbose: print("type(d) is scalar: %s" % d) + return ret + + foundone = False + inputList = findInputs(blueprint) + if args.verbose: print("done looking for get_input, found:\n%s" % inputList) + alreadySeen = { } + for input in inputList: + if input not in alreadySeen: + alreadySeen[input] = True + if args.verbose: print("checking input %s" % input) + if input in inputs: + if args.verbose: print("\tIS in input file") + else: + if blueprintInputs.get(input) and blueprintInputs[input].get('default'): + if args.verbose: print("\tHAS a default value") + elif input not in inputsExclusionList: + print(":::::::::::::::: get_input: %s is NOT in input file" % input) + foundone = True + else: + if args.verbose: print(":::::::::::::::: get_input: %s is NOT in input file, but being ignored" % input) + + return foundone + + + + # check the blueprint's get_input calls against the inputs file + if args.verbose: print("================ check the blueprint's get_input calls against the inputs file ================") + foundone = check_get_inputs(blueprint, blueprintInputs, inputs, inputsExclusionList) + if foundone: print("") + if foundone: exitval = 1 + + def check_inputs(blueprintInputs, inputs, blueprintExclusionList): + """ + check the inputs file against the blueprints inputs list + """ + foundone = False + for key in inputs: + if args.verbose: print("inputs key=%s" % key) + if key in blueprintInputs: + if args.verbose: print("\tIS in blueprint") + else: + if key not in blueprintExclusionList: + print(">>>>>>>>>>>>>>>> %s not in blueprint file" % key) + foundone = True + else: + if args.verbose: print(">>>>>>>>>>>>>>>> %s not in blueprint file, but being ignored" % key) + return foundone + + # check the inputs file against the blueprints input: section + if args.verbose: print("================ check the inputs file against the blueprints input: section ================") + foundone = check_inputs(blueprintInputs, inputs, blueprintExclusionList) + if foundone: exitval = 1 + sys.exit(exitval) + +if __name__ == "__main__": + main() diff --git a/check-blueprint-vs-input/check-blueprint-vs-input b/check-blueprint-vs-input/check-blueprint-vs-input deleted file mode 100755 index 9174526..0000000 --- a/check-blueprint-vs-input/check-blueprint-vs-input +++ /dev/null @@ -1,215 +0,0 @@ -#!/usr/bin/env python3 -# -*- indent-tabs-mode: nil -*- -# Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this code 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 print_function - -""" - - NAME - check-blueprint-vs-input - given a blueprint and inputs file pair, validate them against each other - - USAGE - check-blueprint-vs-input [-v] [-t] -b BLUEPRINT [-B exclusion-list] -i INPUTS [-B exclusion-list] - - DESCRIPTION -""" -description = """ - Validate a blueprint and inputs file against each other. This looks for the inputs: node of the blueprint - file, the inputs used by {get_input} within the blueprint, and the values found in the inputs file. The - files may be in either YAML or JSON formats. The names default to blueprint.yaml and inputs.yaml. If - a blueprint inputs name has a default value, it is not considered an error if it is not in the inputs file. - - If using a template inputs file, add the -t/--template option. This will look for the inputs under - an "inputs:" node instead of at the top level. - - If there are blueprint nodes or inputs nodes that should not be considered an error, specify them - using the -B/--blueprint-exclusion-list and -I/inputs-exclusion-list parameters. - - "check-blueprint-vs-input --help" will list all of the available options. -""" -epilog = """ - NOTE - Values specified within the inputs file with no value or a value of {} (such as 'openstack: {}') - do not get loaded from the yaml dictionary, and will show up as false positives. It is suggested that - -B/--blueprint-exclusion-list be used for these, and then do a subsequent grep for those variables - being in the inputs file, as in: - - grep 'openstack: {}' $(BLUEPRINT) - -""" - -import yaml -import sys -import argparse - -def main(): - DEF_BLUEPRINT_NAME = "blueprint.yaml" - DEF_INPUTS_NAME = "inputs.yaml" - parser = argparse.ArgumentParser(description=description, epilog=epilog) - parser.add_argument("-b", "--blueprint", type=str, help="Path to blueprint file, defaults to '%s'" % DEF_BLUEPRINT_NAME, - default=DEF_BLUEPRINT_NAME) - parser.add_argument("-i", "--inputs", type=str, help="Port to listen on, defaults to '%s'" % DEF_INPUTS_NAME, - default=DEF_INPUTS_NAME) - parser.add_argument("-B", "--blueprint-exclusion-list", type=str, help="Comma-separated list of names not to warn about not being in the blueprint file", default="") - parser.add_argument("-I", "--inputs-exclusion-list", type=str, help="Comma-separated list of names not to warn about not being in the inputs file", default="") - parser.add_argument("-t", "--inputs-template", help="Treat inputs file as coming from template area", action="store_true") - parser.add_argument("-v", "--verbose", help="Verbose, may be specified multiple times", action="count", default=0) - args = parser.parse_args() - - blueprintExclusionList = args.blueprint_exclusion_list.split(",") - if args.verbose: print("blueprintExclusionList=%s" % blueprintExclusionList) - - inputsExclusionList = args.inputs_exclusion_list.split(",") - if args.verbose: print("inputsExclusionList=%s" % inputsExclusionList) - - def loadYaml(filename): - """ - Load a YAML file - """ - with open(filename, "r") as fd: - try: - y = yaml.safe_load(fd) - if args.verbose > 1: - print("Contents of %s:" % filename) - yaml.dump(y, sys.stdout) - except: - type, value, traceback = sys.exc_info() - print('value=%s' % value, file=sys.stderr) - return y - - blueprint = loadYaml(args.blueprint) - inputs = loadYaml(args.inputs) - - # if inputs file is empty, provide an empty dictionary - if inputs is None: inputs = { } - - # blueprint file has inputs under the inputs: node - blueprintInputs = blueprint['inputs'] - - # inputs file normally has inputs at the top level, - # but templated inputs files have themunder the inputs: node - if args.inputs_template: inputs = inputs['inputs'] - - - exitval = 0 - - def check_blueprint_inputs(blueprintInputs, inputs, inputsExclusionList): - """ - check the blueprint inputs against the inputs file - """ - foundone = False - for input in blueprintInputs: - if args.verbose: print("blueprint input=%s" % input) - if input in inputs: - if args.verbose: print("\tIS in inputs file") - else: - # print("blueprintInputs.get(input)=%s and blueprintInputs[input].get('default')=%s" % (blueprintInputs.get(input), blueprintInputs[input].get('default'))) - if blueprintInputs.get(input) and blueprintInputs[input].get('default'): - if args.verbose: print("\tHAS a default value") - elif input not in inputsExclusionList: - print("<<<<<<<<<<<<<<<< %s not in inputs file" % input) - foundone = True - else: - if args.verbose: print("<<<<<<<<<<<<<<<< %s not in inputs file, but being ignored" % input) - return foundone - - # check the blueprint inputs: against the inputs file - if args.verbose: print("================ check the blueprint inputs: against the inputs file") - foundone = check_blueprint_inputs(blueprintInputs, inputs, inputsExclusionList) - if foundone: print("") - if foundone: exitval = 1 - - def check_get_inputs(blueprint, blueprintInputs, inputs, inputsExclusionList): - """ - check the blueprint get_input values against the inputs file - """ - if args.verbose > 2: print("check_get_inputs(): d=%s" % d) - - def findInputs(d): - ret = [ ] - if isinstance(d, dict): - if args.verbose: print("type(d) is dict") - for key in d.keys(): - if args.verbose: print("looking at d[key=%s]" % key) - if key == "get_input": - if args.verbose: print("found get_input, adding '%s'" % d[key]) - ret += [ d[key] ] - return ret - else: - if args.verbose: print("going recursive on '%s'" % d[key]) - ret += findInputs(d[key]) - elif isinstance(d, list): - if args.verbose: print("type(d) is list") - for val in d: - if args.verbose: print("going recursive on '%s'" % val) - ret += findInputs(val) - else: - if args.verbose: print("type(d) is scalar: %s" % d) - return ret - - foundone = False - inputList = findInputs(blueprint) - if args.verbose: print("done looking for get_input, found:\n%s" % inputList) - alreadySeen = { } - for input in inputList: - if input not in alreadySeen: - alreadySeen[input] = True - if args.verbose: print("checking input %s" % input) - if input in inputs: - if args.verbose: print("\tIS in input file") - else: - if blueprintInputs.get(input) and blueprintInputs[input].get('default'): - if args.verbose: print("\tHAS a default value") - elif input not in inputsExclusionList: - print(":::::::::::::::: get_input: %s is NOT in input file" % input) - foundone = True - else: - if args.verbose: print(":::::::::::::::: get_input: %s is NOT in input file, but being ignored" % input) - - return foundone - - - - # check the blueprint's get_input calls against the inputs file - if args.verbose: print("================ check the blueprint's get_input calls against the inputs file ================") - foundone = check_get_inputs(blueprint, blueprintInputs, inputs, inputsExclusionList) - if foundone: print("") - if foundone: exitval = 1 - - def check_inputs(blueprintInputs, inputs, blueprintExclusionList): - """ - check the inputs file against the blueprints inputs list - """ - foundone = False - for key in inputs: - if args.verbose: print("inputs key=%s" % key) - if key in blueprintInputs: - if args.verbose: print("\tIS in blueprint") - else: - if key not in blueprintExclusionList: - print(">>>>>>>>>>>>>>>> %s not in blueprint file" % key) - foundone = True - else: - if args.verbose: print(">>>>>>>>>>>>>>>> %s not in blueprint file, but being ignored" % key) - return foundone - - # check the inputs file against the blueprints input: section - if args.verbose: print("================ check the inputs file against the blueprints input: section ================") - foundone = check_inputs(blueprintInputs, inputs, blueprintExclusionList) - if foundone: exitval = 1 - sys.exit(exitval) - -if __name__ == "__main__": - main() diff --git a/check-blueprint-vs-input/check-blueprint-vs-input.1 b/check-blueprint-vs-input/check-blueprint-vs-input.1 deleted file mode 100644 index 247fbc6..0000000 --- a/check-blueprint-vs-input/check-blueprint-vs-input.1 +++ /dev/null @@ -1,50 +0,0 @@ -check-blueprint-vs-input(1UTIL) ONAP check-blueprint-vs-input(1UTIL) - - - -NNAAMMEE - check-blueprint-vs-input - -SSYYNNOOPPSSIISS - check-blueprint-vs-input [-h] [-b BLUEPRINT] [-i INPUTS] - [-B BLUEPRINT_EXCLUSION_LIST] - [-I INPUTS_EXCLUSION_LIST] [-t] [-v] - -DDEESSCCRRIIPPTTIIOONN - Validate a blueprint and inputs file against each other. This looks for - the inputs: node of the blueprint file, the inputs used by {get_input} - within the blueprint, and the values found in the inputs file. The - files may be in either YAML or JSON formats. The names default to blue‐ - print.yaml and inputs.yaml. If a blueprint inputs name has a default - value, it is not considered an error if it is not in the inputs file. - If using a template inputs file, add the -t/--template option. This - will look for the inputs under an "inputs:" node instead of at the top - level. If there are blueprint nodes or inputs nodes that should not be - considered an error, specify them using the -B/--blueprint- exclusion- - list and -I/inputs-exclusion-list parameters. "check-blueprint-vs- - input --help" will list all of the available options. - - OOPPTTIIOONNSS - -h, --help show this help message and exit - - -b BLUEPRINT, --blueprint BLUEPRINT Path to blueprint file, defaults to - 'blueprint.yaml' - - -i INPUTS, --inputs INPUTS Port to listen on, defaults to 'inputs.yaml' - - -B BLUEPRINT_EXCLUSION_LIST, --blueprint-exclusion-list BLUE‐ - PRINT_EXCLUSION_LIST Comma-separated list of names - not to warn about not - being in the blueprint file - - -I INPUTS_EXCLUSION_LIST, --inputs-exclusion-list INPUTS_EXCLUSION_LIST - Comma-separated list of names not to warn about not - being in the inputs file - - -t, --inputs-template Treat inputs file as coming from template area - - -v, --verbose Verbose, may be specified multiple times - - - -ONAP {{DATE}} check-blueprint-vs-input(1UTIL) diff --git a/check-blueprint-vs-input/check-blueprint-vs-input.man b/check-blueprint-vs-input/check-blueprint-vs-input.man deleted file mode 100644 index 017d529..0000000 --- a/check-blueprint-vs-input/check-blueprint-vs-input.man +++ /dev/null @@ -1,55 +0,0 @@ -'\" Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. -'\" -'\" Licensed under the Apache License, Version 2.0 (the "License"); -'\" you may not use this code 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. -.TH check-blueprint-vs-input 1UTIL {{DATE}} ONAP ONAP -.SH NAME -check-blueprint-vs-input -.SH SYNOPSIS -check-blueprint-vs-input [-h] [-b BLUEPRINT] [-i INPUTS] - [-B BLUEPRINT_EXCLUSION_LIST] - [-I INPUTS_EXCLUSION_LIST] [-t] [-v] -.SH DESCRIPTION -Validate a blueprint and inputs file against each other. This looks for the -inputs: node of the blueprint file, the inputs used by {get_input} within the -blueprint, and the values found in the inputs file. The files may be in either -YAML or JSON formats. The names default to blueprint.yaml and inputs.yaml. If -a blueprint inputs name has a default value, it is not considered an error if -it is not in the inputs file. If using a template inputs file, add the --t/--template option. This will look for the inputs under an "inputs:" node -instead of at the top level. If there are blueprint nodes or inputs nodes that -should not be considered an error, specify them using the -B/--blueprint- -exclusion-list and -I/inputs-exclusion-list parameters. "check-blueprint-vs- -input --help" will list all of the available options. -.SS OPTIONS -.HP 20 --h, --help -show this help message and exit -.HP 20 --b BLUEPRINT, --blueprint BLUEPRINT -Path to blueprint file, defaults to 'blueprint.yaml' -.HP 20 --i INPUTS, --inputs INPUTS -Port to listen on, defaults to 'inputs.yaml' -.HP 20 --B BLUEPRINT_EXCLUSION_LIST, --blueprint-exclusion-list BLUEPRINT_EXCLUSION_LIST -Comma-separated list of names not to warn about not - being in the blueprint file -.HP 20 --I INPUTS_EXCLUSION_LIST, --inputs-exclusion-list INPUTS_EXCLUSION_LIST -Comma-separated list of names not to warn about not - being in the inputs file -.HP 20 --t, --inputs-template -Treat inputs file as coming from template area -.HP 20 --v, --verbose -Verbose, may be specified multiple times diff --git a/check-blueprint-vs-input/man/check-blueprint-vs-input.1 b/check-blueprint-vs-input/man/check-blueprint-vs-input.1 new file mode 100644 index 0000000..247fbc6 --- /dev/null +++ b/check-blueprint-vs-input/man/check-blueprint-vs-input.1 @@ -0,0 +1,50 @@ +check-blueprint-vs-input(1UTIL) ONAP check-blueprint-vs-input(1UTIL) + + + +NNAAMMEE + check-blueprint-vs-input + +SSYYNNOOPPSSIISS + check-blueprint-vs-input [-h] [-b BLUEPRINT] [-i INPUTS] + [-B BLUEPRINT_EXCLUSION_LIST] + [-I INPUTS_EXCLUSION_LIST] [-t] [-v] + +DDEESSCCRRIIPPTTIIOONN + Validate a blueprint and inputs file against each other. This looks for + the inputs: node of the blueprint file, the inputs used by {get_input} + within the blueprint, and the values found in the inputs file. The + files may be in either YAML or JSON formats. The names default to blue‐ + print.yaml and inputs.yaml. If a blueprint inputs name has a default + value, it is not considered an error if it is not in the inputs file. + If using a template inputs file, add the -t/--template option. This + will look for the inputs under an "inputs:" node instead of at the top + level. If there are blueprint nodes or inputs nodes that should not be + considered an error, specify them using the -B/--blueprint- exclusion- + list and -I/inputs-exclusion-list parameters. "check-blueprint-vs- + input --help" will list all of the available options. + + OOPPTTIIOONNSS + -h, --help show this help message and exit + + -b BLUEPRINT, --blueprint BLUEPRINT Path to blueprint file, defaults to + 'blueprint.yaml' + + -i INPUTS, --inputs INPUTS Port to listen on, defaults to 'inputs.yaml' + + -B BLUEPRINT_EXCLUSION_LIST, --blueprint-exclusion-list BLUE‐ + PRINT_EXCLUSION_LIST Comma-separated list of names + not to warn about not + being in the blueprint file + + -I INPUTS_EXCLUSION_LIST, --inputs-exclusion-list INPUTS_EXCLUSION_LIST + Comma-separated list of names not to warn about not + being in the inputs file + + -t, --inputs-template Treat inputs file as coming from template area + + -v, --verbose Verbose, may be specified multiple times + + + +ONAP {{DATE}} check-blueprint-vs-input(1UTIL) diff --git a/check-blueprint-vs-input/man/check-blueprint-vs-input.man b/check-blueprint-vs-input/man/check-blueprint-vs-input.man new file mode 100644 index 0000000..017d529 --- /dev/null +++ b/check-blueprint-vs-input/man/check-blueprint-vs-input.man @@ -0,0 +1,55 @@ +'\" Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. +'\" +'\" Licensed under the Apache License, Version 2.0 (the "License"); +'\" you may not use this code 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. +.TH check-blueprint-vs-input 1UTIL {{DATE}} ONAP ONAP +.SH NAME +check-blueprint-vs-input +.SH SYNOPSIS +check-blueprint-vs-input [-h] [-b BLUEPRINT] [-i INPUTS] + [-B BLUEPRINT_EXCLUSION_LIST] + [-I INPUTS_EXCLUSION_LIST] [-t] [-v] +.SH DESCRIPTION +Validate a blueprint and inputs file against each other. This looks for the +inputs: node of the blueprint file, the inputs used by {get_input} within the +blueprint, and the values found in the inputs file. The files may be in either +YAML or JSON formats. The names default to blueprint.yaml and inputs.yaml. If +a blueprint inputs name has a default value, it is not considered an error if +it is not in the inputs file. If using a template inputs file, add the +-t/--template option. This will look for the inputs under an "inputs:" node +instead of at the top level. If there are blueprint nodes or inputs nodes that +should not be considered an error, specify them using the -B/--blueprint- +exclusion-list and -I/inputs-exclusion-list parameters. "check-blueprint-vs- +input --help" will list all of the available options. +.SS OPTIONS +.HP 20 +-h, --help +show this help message and exit +.HP 20 +-b BLUEPRINT, --blueprint BLUEPRINT +Path to blueprint file, defaults to 'blueprint.yaml' +.HP 20 +-i INPUTS, --inputs INPUTS +Port to listen on, defaults to 'inputs.yaml' +.HP 20 +-B BLUEPRINT_EXCLUSION_LIST, --blueprint-exclusion-list BLUEPRINT_EXCLUSION_LIST +Comma-separated list of names not to warn about not + being in the blueprint file +.HP 20 +-I INPUTS_EXCLUSION_LIST, --inputs-exclusion-list INPUTS_EXCLUSION_LIST +Comma-separated list of names not to warn about not + being in the inputs file +.HP 20 +-t, --inputs-template +Treat inputs file as coming from template area +.HP 20 +-v, --verbose +Verbose, may be specified multiple times diff --git a/check-blueprint-vs-input/pom.xml b/check-blueprint-vs-input/pom.xml new file mode 100644 index 0000000..9af1db6 --- /dev/null +++ b/check-blueprint-vs-input/pom.xml @@ -0,0 +1,270 @@ + + + + 4.0.0 + + org.onap.dcaegen2 + utils + 1.0.0-SNAPSHOT + + org.onap.dcaegen2.utils + check-blueprint-vs-input + check-blueprint-vs-input + 1.0.0-SNAPSHOT + http://maven.apache.org + + + UTF-8 + true + . + + + + + py + Python + **/*.py + + + + + ${project.artifactId}-${project.version} + + + + + org.sonatype.plugins + nexus-staging-maven-plugin + 1.6.7 + + true + + + + org.apache.maven.plugins + maven-deploy-plugin + + 2.8 + + true + + + + + + org.apache.maven.plugins + maven-resources-plugin + 2.6 + + true + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.1 + + true + + + + + org.apache.maven.plugins + maven-jar-plugin + 2.4 + + + default-jar + + + + + + + org.apache.maven.plugins + maven-install-plugin + 2.4 + + true + + + + + org.apache.maven.plugins + maven-surefire-plugin + 2.12.4 + + true + + + + org.codehaus.mojo + exec-maven-plugin + 1.2.1 + + ${session.executionRootDirectory}/mvn-phase-script.sh + + + ${project.parent.groupId} + ${project.parent.artifactId} + ${project.parent.version} + ${onap.nexus.url} + ${onap.nexus.rawrepo.baseurl.upload} + ${onap.nexus.rawrepo.baseurl.download} + ${onap.nexus.rawrepo.serverid} + ${onap.nexus.dockerregistry.daily} + ${onap.nexus.dockerregistry.release} + + + + + + + + + + org.codehaus.mojo + exec-maven-plugin + 1.2.1 + + + clean phase script + clean + + exec + + + + ${project.artifactId} + clean + + + + + generate-sources script + generate-sources + + exec + + + + ${project.artifactId} + generate-sources + + + + + compile script + compile + + exec + + + + ${project.artifactId} + compile + + + + + package script + package + + exec + + + + ${project.artifactId} + package + + + + + test script + test + + exec + + + + ${project.artifactId} + test + + + + + install script + install + + exec + + + + ${project.artifactId} + install + + + + + deploy script + deploy + + exec + + + + ${project.artifactId} + deploy + bin/check-blueprint-vs-input + man/check-blueprint-vs-input.1 + + + + + + + + diff --git a/mvn-phase-script.sh b/mvn-phase-script.sh index a4d52d9..78da207 100755 --- a/mvn-phase-script.sh +++ b/mvn-phase-script.sh @@ -22,45 +22,82 @@ echo "running script: [$0] for module [$1] at stage [$2]" echo "=> Prepare environment " -#env +env -TIMESTAMP=$(date +%C%y%m%dT%H%M%S) +# This is the base for where "deploy" will upload +# MVN_NEXUSPROXY is set in the pom.xml +REPO=$MVN_NEXUSPROXY/content/sites/raw/$MVN_PROJECT_GROUPID + +TIMESTAMP=$(date +%C%y%m%dT%H%M%S) export BUILD_NUMBER="${TIMESTAMP}" -# expected environment variables +# expected environment variables if [ -z "${MVN_NEXUSPROXY}" ]; then echo "MVN_NEXUSPROXY environment variable not set. Cannot proceed" exit fi MVN_NEXUSPROXY_HOST=$(echo "$MVN_NEXUSPROXY" |cut -f3 -d'/' | cut -f1 -d':') -echo "=> Nexu Proxy at $MVN_NEXUSPROXY_HOST, $MVN_NEXUSPROXY" +echo "=> Nexus Proxy at $MVN_NEXUSPROXY_HOST, $MVN_NEXUSPROXY" # use the version text detect which phase we are in in LF CICD process: verify, merge, or (daily) release -# mvn phase in life cycle +# mvn phase in life cycle MVN_PHASE="$2" +shift 2 case $MVN_PHASE in clean) echo "==> clean phase script" + if [ -f makefile -o -f Makefile ];then make clean; else :; fi ;; generate-sources) echo "==> generate-sources phase script" + if [ -f makefile -o -f Makefile ];then make generate-sources; else :; fi ;; compile) echo "==> compile phase script" + if [ -f makefile -o -f Makefile ];then make compile; else :; fi ;; test) echo "==> test phase script" + if [ -f makefile -o -f Makefile ];then make test; else :; fi ;; package) echo "==> package phase script" + if [ -f makefile -o -f Makefile ];then make package; else :; fi ;; install) echo "==> install phase script" + if [ -f makefile -o -f Makefile ];then make install; else :; fi ;; deploy) echo "==> deploy phase script" + if [ -f makefile -o -f Makefile ];then make deploy + else + # Upload all files (listed as additional deployment arguments) to Nexus + set -e -x + function setnetrc { + # Turn off -x so won't leak the credentials + set +x + hostport=$(echo $1 | cut -f3 -d /) + host=$(echo $hostport | cut -f1 -d:) + settings=${SETTINGS_FILE:-$HOME/.m2/settings.xml} + echo machine $host login $(xpath -q -e "//servers/server[id='$MVN_SERVER_ID']/username/text()" $settings) password $(xpath -q -e "//servers/server[id='$MVN_SERVER_ID']/password/text()" $settings) >$HOME/.netrc + chmod 600 $HOME/.netrc + set -x + } + function putraw { + curl -X PUT -H "Content-Type: $3" --netrc --upload-file $1 --url $REPO/$2 + } + setnetrc $REPO + + # additional + for artifact + do + putraw $artifact artifacts/$artifact application/data + done + set +e +x + fi ;; *) echo "==> unprocessed phase" diff --git a/pom.xml b/pom.xml index 8143cd7..2c6e57a 100644 --- a/pom.xml +++ b/pom.xml @@ -37,6 +37,8 @@ ECOMP is a trademark and service mark of AT&T Intellectual Property. python-dcae-policy python-discovery-client python-dockering + check-blueprint-vs-input + repackage diff --git a/python-cbs-docker-client/pom.xml b/python-cbs-docker-client/pom.xml index 77de1b9..f2e2ea1 100644 --- a/python-cbs-docker-client/pom.xml +++ b/python-cbs-docker-client/pom.xml @@ -131,9 +131,9 @@ ECOMP is a trademark and service mark of AT&T Intellectual Property. ${session.executionRootDirectory}/mvn-phase-script.sh - ${parent.groupId} - ${parent.artifactId} - ${parent.version} + ${project.parent.groupId} + ${project.parent.artifactId} + ${project.parent.version} ${onap.nexus.url} ${onap.nexus.rawrepo.baseurl.upload} ${onap.nexus.rawrepo.baseurl.download} diff --git a/python-dcae-policy/pom.xml b/python-dcae-policy/pom.xml index 1d4571f..e5b30c8 100644 --- a/python-dcae-policy/pom.xml +++ b/python-dcae-policy/pom.xml @@ -131,9 +131,9 @@ ECOMP is a trademark and service mark of AT&T Intellectual Property. ${session.executionRootDirectory}/mvn-phase-script.sh - ${parent.groupId} - ${parent.artifactId} - ${parent.version} + ${project.parent.groupId} + ${project.parent.artifactId} + ${project.parent.version} ${onap.nexus.url} ${onap.nexus.rawrepo.baseurl.upload} ${onap.nexus.rawrepo.baseurl.download} diff --git a/python-discovery-client/pom.xml b/python-discovery-client/pom.xml index bdc9ffd..0b05110 100644 --- a/python-discovery-client/pom.xml +++ b/python-discovery-client/pom.xml @@ -131,9 +131,9 @@ ECOMP is a trademark and service mark of AT&T Intellectual Property. ${session.executionRootDirectory}/mvn-phase-script.sh - ${parent.groupId} - ${parent.artifactId} - ${parent.version} + ${project.parent.groupId} + ${project.parent.artifactId} + ${project.parent.version} ${onap.nexus.url} ${onap.nexus.rawrepo.baseurl.upload} ${onap.nexus.rawrepo.baseurl.download} diff --git a/python-dockering/pom.xml b/python-dockering/pom.xml index dd5fcdd..37175e5 100644 --- a/python-dockering/pom.xml +++ b/python-dockering/pom.xml @@ -131,9 +131,9 @@ ECOMP is a trademark and service mark of AT&T Intellectual Property. ${session.executionRootDirectory}/mvn-phase-script.sh - ${parent.groupId} - ${parent.artifactId} - ${parent.version} + ${project.parent.groupId} + ${project.parent.artifactId} + ${project.parent.version} ${onap.nexus.url} ${onap.nexus.rawrepo.baseurl.upload} ${onap.nexus.rawrepo.baseurl.download} diff --git a/repackage/pom.xml b/repackage/pom.xml new file mode 100644 index 0000000..055c087 --- /dev/null +++ b/repackage/pom.xml @@ -0,0 +1,272 @@ + + + + 4.0.0 + + org.onap.dcaegen2 + utils + 1.0.0-SNAPSHOT + + org.onap.dcaegen2.utils + repackage + repackage + 1.0.0-SNAPSHOT + http://maven.apache.org + + + UTF-8 + true + . + + + + + py + Python + **/*.py + + + + + ${project.artifactId}-${project.version} + + + + + org.sonatype.plugins + nexus-staging-maven-plugin + 1.6.7 + + true + + + + org.apache.maven.plugins + maven-deploy-plugin + + 2.8 + + true + + + + + + org.apache.maven.plugins + maven-resources-plugin + 2.6 + + true + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.1 + + true + + + + + org.apache.maven.plugins + maven-jar-plugin + 2.4 + + + default-jar + + + + + + + org.apache.maven.plugins + maven-install-plugin + 2.4 + + true + + + + + org.apache.maven.plugins + maven-surefire-plugin + 2.12.4 + + true + + + + org.codehaus.mojo + exec-maven-plugin + 1.2.1 + + ${session.executionRootDirectory}/mvn-phase-script.sh + + + ${project.parent.groupId} + ${project.parent.artifactId} + ${project.parent.version} + ${onap.nexus.url} + ${onap.nexus.rawrepo.baseurl.upload} + ${onap.nexus.rawrepo.baseurl.download} + ${onap.nexus.rawrepo.serverid} + ${onap.nexus.dockerregistry.daily} + ${onap.nexus.dockerregistry.release} + + + + + + + + + + org.codehaus.mojo + exec-maven-plugin + 1.2.1 + + + clean phase script + clean + + exec + + + + ${project.artifactId} + clean + + + + + generate-sources script + generate-sources + + exec + + + + ${project.artifactId} + generate-sources + + + + + compile script + compile + + exec + + + + ${project.artifactId} + compile + + + + + package script + package + + exec + + + + ${project.artifactId} + package + + + + + test script + test + + exec + + + + ${project.artifactId} + test + + + + + install script + install + + exec + + + + ${project.artifactId} + install + + + + + deploy script + deploy + + exec + + + + ${project.artifactId} + deploy + bin/repackage + bin/yamltojson + man/repackage.1 + man/yamltojson.1 + + + + + + + + -- cgit 1.2.3-korg