Add functional tests and examples for merge

merge.py is undocumented and untested, which is undesirable, as it does
not seem to be going away any time soon.

Change-Id: I7e4870e58a32c567e5947b9a48893b8210ad4d65
This commit is contained in:
Clint Byrum 2013-09-18 18:08:08 -07:00
parent b7f0bb6123
commit 0dbf2810a0
7 changed files with 86 additions and 1 deletions

2
.gitignore vendored
View File

@ -39,3 +39,5 @@ nosetests.xml
*~
*.swp
doc/_build

View File

@ -6,3 +6,6 @@ notcompute.yaml: $(NOTCOMPUTE)
overcloud.yaml: overcloud-source.yaml nova-compute-instance.yaml
python merge.py $< > $@.tmp
mv $@.tmp $@
test:
@bash test_merge.bash

View File

@ -1,4 +1,10 @@
templates
=========
Generic templates to describe multi-host infrastructure, consumable by OpenStack Heat, Crowbar, others.
Generic templates to describe multi-host infrastructure, consumable by OpenStack Heat, Crowbar, others.
merge.py
========
The Makefile contains several targets for generated templates, see its contents for all of them. To run functional tests for merge.py, run 'make test'.

11
examples/lib.yaml Normal file
View File

@ -0,0 +1,11 @@
Parameters:
ImportantValue:
Default: a_default
Type: String
Resources:
GenericB:
Type: OS::Nova::Server
Properties:
image: {Ref: BImage}
Metadata:
my_meta: {Ref: ImportantValue}

15
examples/source.yaml Normal file
View File

@ -0,0 +1,15 @@
Parameters:
SourceImage:
Type: String
Default: my_image
Resources:
A:
Type: OS::Nova::Server
Properties:
image: {Ref: SourceImage}
B:
Type: FileInclude
Path: examples/lib.yaml
SubKey: Resources.GenericB
Parameters:
ImportantValue: {'Fn::Join': [ '', ['one', 'two', 'three']]}

View File

@ -0,0 +1,24 @@
Description: examples/source.yaml
HeatTemplateFormatVersion: '2012-12-12'
Parameters:
AImage: null
Default: my_image
Type: String
Resources:
A:
Properties:
image:
Ref: AImage
Type: OS::Nova::Server
B:
Metadata:
my_meta:
Fn::Join:
- ''
- - one
- two
- three
Properties:
image:
Ref: BImage
Type: OS::Nova::Server

24
test_merge.bash Normal file
View File

@ -0,0 +1,24 @@
#!/bin/bash
set -ue
result=""
cleanup() {
if [ -n "$result" ] ; then
rm -f $result
fi
}
trap cleanup EXIT
result=$(mktemp /tmp/test_merge.XXXXXX)
fail=0
python merge.py examples/source.yaml > $result
if ! cmp $result examples/source_lib_result.yaml ; then
diff -u $result examples/source_lib_result.yaml
echo
echo FAIL - merge of source.yaml result does not match expected output
echo
fail=1
else
echo
echo PASS - merge of source.yaml result matches expected output
echo
fi
exit $fail