Skip to content
This repository was archived by the owner on Aug 1, 2023. It is now read-only.

Commit 4ad4160

Browse files
committed
Merge pull request #486 from pratikmallya/enable_template_environment_parsing
[rfr]Enable template environment parsing
2 parents f928634 + 3de347f commit 4ad4160

File tree

27 files changed

+2354
-294
lines changed

27 files changed

+2354
-294
lines changed

.travis.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,10 @@ language: go
22
install:
33
- go get -v -tags 'fixtures acceptance' ./...
44
go:
5-
- 1.1
65
- 1.2
76
- 1.3
87
- 1.4
8+
- 1.5
99
- tip
1010
script: script/cibuild
1111
after_success:

acceptance/openstack/orchestration/v1/stacks_test.go

Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,3 +79,75 @@ func TestStacks(t *testing.T) {
7979
t.Logf("Abandonded stack %+v\n", abandonedStack)
8080
th.AssertNoErr(t, err)
8181
}
82+
83+
// Test using the updated interface
84+
func TestStacksNewTemplateFormat(t *testing.T) {
85+
// Create a provider client for making the HTTP requests.
86+
// See common.go in this directory for more information.
87+
client := newClient(t)
88+
89+
stackName1 := "gophercloud-test-stack-2"
90+
templateOpts := new(osStacks.Template)
91+
templateOpts.Bin = []byte(template)
92+
createOpts := osStacks.CreateOpts{
93+
Name: stackName1,
94+
TemplateOpts: templateOpts,
95+
Timeout: 5,
96+
}
97+
stack, err := stacks.Create(client, createOpts).Extract()
98+
th.AssertNoErr(t, err)
99+
t.Logf("Created stack: %+v\n", stack)
100+
defer func() {
101+
err := stacks.Delete(client, stackName1, stack.ID).ExtractErr()
102+
th.AssertNoErr(t, err)
103+
t.Logf("Deleted stack (%s)", stackName1)
104+
}()
105+
err = gophercloud.WaitFor(60, func() (bool, error) {
106+
getStack, err := stacks.Get(client, stackName1, stack.ID).Extract()
107+
if err != nil {
108+
return false, err
109+
}
110+
if getStack.Status == "CREATE_COMPLETE" {
111+
return true, nil
112+
}
113+
return false, nil
114+
})
115+
116+
updateOpts := osStacks.UpdateOpts{
117+
TemplateOpts: templateOpts,
118+
Timeout: 20,
119+
}
120+
err = stacks.Update(client, stackName1, stack.ID, updateOpts).ExtractErr()
121+
th.AssertNoErr(t, err)
122+
err = gophercloud.WaitFor(60, func() (bool, error) {
123+
getStack, err := stacks.Get(client, stackName1, stack.ID).Extract()
124+
if err != nil {
125+
return false, err
126+
}
127+
if getStack.Status == "UPDATE_COMPLETE" {
128+
return true, nil
129+
}
130+
return false, nil
131+
})
132+
133+
t.Logf("Updated stack")
134+
135+
err = stacks.List(client, nil).EachPage(func(page pagination.Page) (bool, error) {
136+
stackList, err := osStacks.ExtractStacks(page)
137+
th.AssertNoErr(t, err)
138+
139+
t.Logf("Got stack list: %+v\n", stackList)
140+
141+
return true, nil
142+
})
143+
th.AssertNoErr(t, err)
144+
145+
getStack, err := stacks.Get(client, stackName1, stack.ID).Extract()
146+
th.AssertNoErr(t, err)
147+
t.Logf("Got stack: %+v\n", getStack)
148+
149+
abandonedStack, err := stacks.Abandon(client, stackName1, stack.ID).Extract()
150+
th.AssertNoErr(t, err)
151+
t.Logf("Abandonded stack %+v\n", abandonedStack)
152+
th.AssertNoErr(t, err)
153+
}

acceptance/openstack/orchestration/v1/stacktemplates_test.go

Lines changed: 10 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -46,31 +46,29 @@ func TestStackTemplates(t *testing.T) {
4646
th.AssertNoErr(t, err)
4747
t.Logf("retrieved template: %+v\n", tmpl)
4848

49-
validateOpts := stacktemplates.ValidateOpts{
50-
Template: map[string]interface{}{
51-
"heat_template_version": "2013-05-23",
52-
"description": "Simple template to test heat commands",
53-
"parameters": map[string]interface{}{
54-
"flavor": map[string]interface{}{
49+
validateOpts := osStacktemplates.ValidateOpts{
50+
Template: `{"heat_template_version": "2013-05-23",
51+
"description": "Simple template to test heat commands",
52+
"parameters": {
53+
"flavor": {
5554
"default": "m1.tiny",
5655
"type": "string",
5756
},
5857
},
59-
"resources": map[string]interface{}{
60-
"hello_world": map[string]interface{}{
58+
"resources": {
59+
"hello_world": {
6160
"type": "OS::Nova::Server",
62-
"properties": map[string]interface{}{
61+
"properties": {
6362
"key_name": "heat_key",
64-
"flavor": map[string]interface{}{
63+
"flavor": {
6564
"get_param": "flavor",
6665
},
6766
"image": "ad091b52-742f-469e-8f3c-fd81cadf0743",
6867
"user_data": "#!/bin/bash -xv\necho \"hello world\" > /root/hello-world.txt\n",
6968
},
7069
},
7170
},
72-
},
73-
}
71+
}`}
7472
validatedTemplate, err := stacktemplates.Validate(client, validateOpts).Extract()
7573
th.AssertNoErr(t, err)
7674
t.Logf("validated template: %+v\n", validatedTemplate)

acceptance/rackspace/orchestration/v1/stacks_test.go

Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,3 +80,75 @@ func TestStacks(t *testing.T) {
8080
t.Logf("Abandonded stack %+v\n", abandonedStack)
8181
th.AssertNoErr(t, err)
8282
}
83+
84+
// Test using the updated interface
85+
func TestStacksNewTemplateFormat(t *testing.T) {
86+
// Create a provider client for making the HTTP requests.
87+
// See common.go in this directory for more information.
88+
client := newClient(t)
89+
90+
stackName1 := "gophercloud-test-stack-2"
91+
templateOpts := new(osStacks.Template)
92+
templateOpts.Bin = []byte(template)
93+
createOpts := osStacks.CreateOpts{
94+
Name: stackName1,
95+
TemplateOpts: templateOpts,
96+
Timeout: 5,
97+
}
98+
stack, err := stacks.Create(client, createOpts).Extract()
99+
th.AssertNoErr(t, err)
100+
t.Logf("Created stack: %+v\n", stack)
101+
defer func() {
102+
err := stacks.Delete(client, stackName1, stack.ID).ExtractErr()
103+
th.AssertNoErr(t, err)
104+
t.Logf("Deleted stack (%s)", stackName1)
105+
}()
106+
err = gophercloud.WaitFor(60, func() (bool, error) {
107+
getStack, err := stacks.Get(client, stackName1, stack.ID).Extract()
108+
if err != nil {
109+
return false, err
110+
}
111+
if getStack.Status == "CREATE_COMPLETE" {
112+
return true, nil
113+
}
114+
return false, nil
115+
})
116+
117+
updateOpts := osStacks.UpdateOpts{
118+
TemplateOpts: templateOpts,
119+
Timeout: 20,
120+
}
121+
err = stacks.Update(client, stackName1, stack.ID, updateOpts).ExtractErr()
122+
th.AssertNoErr(t, err)
123+
err = gophercloud.WaitFor(60, func() (bool, error) {
124+
getStack, err := stacks.Get(client, stackName1, stack.ID).Extract()
125+
if err != nil {
126+
return false, err
127+
}
128+
if getStack.Status == "UPDATE_COMPLETE" {
129+
return true, nil
130+
}
131+
return false, nil
132+
})
133+
134+
t.Logf("Updated stack")
135+
136+
err = stacks.List(client, nil).EachPage(func(page pagination.Page) (bool, error) {
137+
stackList, err := osStacks.ExtractStacks(page)
138+
th.AssertNoErr(t, err)
139+
140+
t.Logf("Got stack list: %+v\n", stackList)
141+
142+
return true, nil
143+
})
144+
th.AssertNoErr(t, err)
145+
146+
getStack, err := stacks.Get(client, stackName1, stack.ID).Extract()
147+
th.AssertNoErr(t, err)
148+
t.Logf("Got stack: %+v\n", getStack)
149+
150+
abandonedStack, err := stacks.Abandon(client, stackName1, stack.ID).Extract()
151+
th.AssertNoErr(t, err)
152+
t.Logf("Abandonded stack %+v\n", abandonedStack)
153+
th.AssertNoErr(t, err)
154+
}

acceptance/rackspace/orchestration/v1/stacktemplates_test.go

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -49,30 +49,28 @@ func TestStackTemplates(t *testing.T) {
4949
t.Logf("retrieved template: %+v\n", tmpl)
5050

5151
validateOpts := osStacktemplates.ValidateOpts{
52-
Template: map[string]interface{}{
53-
"heat_template_version": "2013-05-23",
52+
Template: `{"heat_template_version": "2013-05-23",
5453
"description": "Simple template to test heat commands",
55-
"parameters": map[string]interface{}{
56-
"flavor": map[string]interface{}{
54+
"parameters": {
55+
"flavor": {
5756
"default": "m1.tiny",
5857
"type": "string",
5958
},
6059
},
61-
"resources": map[string]interface{}{
62-
"hello_world": map[string]interface{}{
60+
"resources": {
61+
"hello_world": {
6362
"type": "OS::Nova::Server",
64-
"properties": map[string]interface{}{
63+
"properties": {
6564
"key_name": "heat_key",
66-
"flavor": map[string]interface{}{
65+
"flavor": {
6766
"get_param": "flavor",
6867
},
6968
"image": "ad091b52-742f-469e-8f3c-fd81cadf0743",
7069
"user_data": "#!/bin/bash -xv\necho \"hello world\" > /root/hello-world.txt\n",
7170
},
7271
},
7372
},
74-
},
75-
}
73+
}`}
7674
validatedTemplate, err := stacktemplates.Validate(client, validateOpts).Extract()
7775
th.AssertNoErr(t, err)
7876
t.Logf("validated template: %+v\n", validatedTemplate)

0 commit comments

Comments
 (0)