1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
|
diff --git a/clearwater.yaml b/clearwater.yaml
index a155c60..1de2e0f 100644
--- a/clearwater.yaml
+++ b/clearwater.yaml
@@ -185,6 +185,7 @@ resources:
ellis:
type: ./ellis.yaml
+ depends_on: dns
properties:
public_mgmt_net_id: { get_param: public_mgmt_net_id }
private_mgmt_net_id: { get_attr: [ mgmt_network, private_net ] }
@@ -202,6 +203,7 @@ resources:
bono:
type: OS::Heat::ResourceGroup
+ depends_on: ellis
properties:
count: { get_param: bono_cluster_size }
index_var: "__index__"
@@ -229,6 +231,7 @@ resources:
sprout:
type: OS::Heat::ResourceGroup
+ depends_on: ellis
properties:
count: { get_param: sprout_cluster_size }
index_var: __index__
@@ -257,6 +260,7 @@ resources:
homer:
type: OS::Heat::ResourceGroup
+ depends_on: ellis
properties:
count: { get_param: homer_cluster_size }
index_var: __index__
@@ -285,6 +289,7 @@ resources:
dime:
type: OS::Heat::ResourceGroup
+ depends_on: ellis
properties:
count: { get_param: dime_cluster_size }
index_var: __index__
@@ -313,6 +318,7 @@ resources:
vellum:
type: OS::Heat::ResourceGroup
+ depends_on: ellis
properties:
count: { get_param: vellum_cluster_size }
index_var: __index__
diff --git a/dns.yaml b/dns.yaml
index 825ede1..3e6c938 100644
--- a/dns.yaml
+++ b/dns.yaml
@@ -91,6 +91,16 @@ resources:
security_groups:
- { get_param: dns_security_group }
+ wait_condition:
+ type: OS::Heat::WaitCondition
+ properties:
+ handle: {get_resource: wait_handle}
+ count: 1
+ timeout: 600
+
+ wait_handle:
+ type: OS::Heat::WaitConditionHandle
+
server:
type: OS::Nova::Server
properties:
@@ -110,6 +120,7 @@ resources:
__public_ip__: { get_attr: [ mgmt_floating_ip, floating_ip_address ] }
__private_sig_ip__: { get_attr: [ sig_port, fixed_ips, 0, ip_address ] }
__private_sig_cidr__: { get_param: private_sig_net_cidr }
+ wc_notify: { get_attr: [wait_handle, curl_cli] }
template: |
#!/bin/bash
@@ -162,6 +173,7 @@ resources:
# Now that BIND configuration is correct, kick it to reload.
service bind9 reload
+ wc_notify --data-binary '{"status": "SUCCESS"}'
outputs:
public_mgmt_ip:
diff --git a/ellis.yaml b/ellis.yaml
index 963352d..d39c235 100644
--- a/ellis.yaml
+++ b/ellis.yaml
@@ -103,6 +103,16 @@ resources:
floating_network_id: { get_param: public_mgmt_net_id }
port_id: { get_resource: mgmt_port }
+ wait_condition:
+ type: OS::Heat::WaitCondition
+ properties:
+ handle: {get_resource: wait_handle}
+ count: 1
+ timeout: 600
+
+ wait_handle:
+ type: OS::Heat::WaitConditionHandle
+
server:
type: OS::Nova::Server
properties:
@@ -126,6 +136,7 @@ resources:
__dnssec_key__: { get_param: dnssec_key }
__etcd_ip__ : { get_param: etcd_ip }
__index__ : { get_param: index }
+ wc_notify: { get_attr: [wait_handle, curl_cli] }
template: |
#!/bin/bash
@@ -227,6 +238,7 @@ resources:
echo 'nameserver __dns_mgmt_ip__' > /etc/dnsmasq.resolv.conf
echo 'RESOLV_CONF=/etc/dnsmasq.resolv.conf' >> /etc/default/dnsmasq
service dnsmasq force-reload
+ wc_notify --data-binary '{"status": "SUCCESS"}'
outputs:
public_mgmt_ip:
|