staypuft 0.1.5 → 0.1.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (45) hide show
  1. checksums.yaml +8 -8
  2. data/app/assets/javascripts/staypuft/staypuft.js +99 -1
  3. data/app/assets/stylesheets/staypuft/bootstrap_and_overrides.css.scss +48 -4
  4. data/app/assets/stylesheets/staypuft/staypuft.css.scss +7 -11
  5. data/app/controllers/staypuft/deployments_controller.rb +23 -20
  6. data/app/controllers/staypuft/steps_controller.rb +18 -24
  7. data/app/helpers/staypuft/application_helper.rb +16 -1
  8. data/app/helpers/staypuft/deployments_helper.rb +1 -1
  9. data/app/lib/actions/staypuft/host/wait_until_host_ready.rb +2 -8
  10. data/app/lib/staypuft/seeder.rb +702 -0
  11. data/app/models/staypuft/concerns/host_open_stack_affiliation.rb +29 -2
  12. data/app/models/staypuft/concerns/hostgroup_extensions.rb +28 -3
  13. data/app/models/staypuft/concerns/lookup_key_extensions.rb +72 -0
  14. data/app/models/staypuft/deployment/abstract_param_scope.rb +31 -0
  15. data/app/models/staypuft/deployment/attribute_param_storage.rb +41 -0
  16. data/app/models/staypuft/deployment/cinder_service.rb +87 -0
  17. data/app/models/staypuft/deployment/glance_service.rb +85 -0
  18. data/app/models/staypuft/deployment/ips.rb +26 -0
  19. data/app/models/staypuft/deployment/neutron_service.rb +165 -0
  20. data/app/models/staypuft/deployment/nova_service.rb +84 -0
  21. data/app/models/staypuft/deployment/passwords.rb +66 -0
  22. data/app/models/staypuft/deployment/vips.rb +36 -0
  23. data/app/models/staypuft/deployment.rb +179 -72
  24. data/app/models/staypuft/deployment_role_hostgroup.rb +1 -1
  25. data/app/models/staypuft/role.rb +8 -1
  26. data/app/models/staypuft/service/ui_params.rb +12 -1
  27. data/app/views/staypuft/deployments/_assigned_hosts_table.html.erb +60 -0
  28. data/app/views/staypuft/deployments/_deployed_hosts_table.html.erb +51 -0
  29. data/app/views/staypuft/deployments/_free_hosts_table.html.erb +47 -0
  30. data/app/views/staypuft/deployments/edit.html.erb +50 -0
  31. data/app/views/staypuft/deployments/show.html.erb +41 -79
  32. data/app/views/staypuft/deployments/summary.html.erb +4 -1
  33. data/app/views/staypuft/steps/_cinder.html.erb +17 -0
  34. data/app/views/staypuft/steps/_glance.html.erb +16 -0
  35. data/app/views/staypuft/steps/_neutron.html.erb +57 -0
  36. data/app/views/staypuft/steps/_nova.html.erb +34 -0
  37. data/app/views/staypuft/steps/deployment_settings.html.erb +41 -17
  38. data/app/views/staypuft/steps/services_configuration.html.erb +19 -32
  39. data/app/views/staypuft/steps/{services_selection.html.erb → services_overview.html.erb} +7 -3
  40. data/config/routes.rb +2 -0
  41. data/db/migrate/20140623142500_remove_amqp_provider_from_staypuft_deployment.rb +6 -0
  42. data/db/seeds.rb +1 -314
  43. data/lib/staypuft/engine.rb +1 -0
  44. data/lib/staypuft/version.rb +1 -1
  45. metadata +23 -3
data/db/seeds.rb CHANGED
@@ -1,314 +1 @@
1
- # Libs
2
- require 'facter'
3
- require 'securerandom'
4
-
5
- # enabling puppet run'
6
- #Setting['puppetrun'] = true
7
-
8
- # FIXME: this is the list pulled as-is from astapor. Any changes for staypuft are not
9
- # yet in place. In addition, I don't know if we want to break these down by
10
- # Role, or leave them in one big list (internally they get set per puppetclass)
11
- params = {
12
- 'verbose' => 'true',
13
- 'heat_cfn' => 'false',
14
- 'heat_cloudwatch' => 'false',
15
- 'admin_password' => SecureRandom.hex,
16
- 'ceilometer' => 'true',
17
- 'ceilometer_host' => 'false',
18
- 'ceilometer_metering_secret' => SecureRandom.hex,
19
- 'ceilometer_user_password' => SecureRandom.hex,
20
- 'cinder_db_password' => SecureRandom.hex,
21
- 'cinder_user_password' => SecureRandom.hex,
22
- 'cinder_backend_gluster' => 'false',
23
- 'cinder_backend_gluster_name' => 'glusterfs_backend',
24
- 'cinder_backend_iscsi' => 'false',
25
- 'cinder_backend_iscsi_name' => 'iscsi_backend',
26
- 'cinder_backend_nfs' => 'false',
27
- 'cinder_backend_nfs_name' => 'nfs_backend',
28
- 'cinder_backend_eqlx' => 'false',
29
- 'cinder_backend_eqlx_name' => 'eqlx_backend',
30
- 'cinder_multiple_backends' => 'false',
31
- 'cinder_gluster_peers' => [],
32
- 'cinder_gluster_volume' => 'cinder',
33
- 'cinder_gluster_replica_count' => '3',
34
- 'cinder_gluster_peers' => %w(192.168.0.4 192.168.0.5 192.168.0.6),
35
- 'cinder_gluster_shares' => [ '192.168.0.4:/cinder -o backup-volfile-servers=192.168.0.5' ],
36
- 'cinder_nfs_shares' => [ '192.168.0.4:/cinder' ],
37
- 'cinder_nfs_mount_options' => '',
38
- 'cinder_san_ip' => '192.168.124.11',
39
- 'cinder_san_login' => 'grpadmin',
40
- 'cinder_san_password' => SecureRandom.hex,
41
- 'cinder_san_thin_provision' => 'false',
42
- 'cinder_eqlx_group_name' => 'group-0',
43
- 'cinder_eqlx_pool' => 'default',
44
- 'cinder_eqlx_use_chap' => 'false',
45
- 'cinder_eqlx_chap_login' => 'chapadmin',
46
- 'cinder_eqlx_chap_password' => SecureRandom.hex,
47
- 'glance_db_password' => SecureRandom.hex,
48
- 'glance_user_password' => SecureRandom.hex,
49
- 'glance_gluster_peers' => [],
50
- 'glance_gluster_volume' => 'glance',
51
- 'glance_gluster_replica_count' => '3',
52
- 'gluster_open_port_count' => '10',
53
- 'heat_db_password' => SecureRandom.hex,
54
- 'heat_user_password' => SecureRandom.hex,
55
- 'heat_cfn_user_password' => SecureRandom.hex,
56
- 'heat_auth_encrypt_key' => SecureRandom.hex,
57
- 'horizon_secret_key' => SecureRandom.hex,
58
- 'keystone_admin_token' => SecureRandom.hex,
59
- 'keystone_db_password' => SecureRandom.hex,
60
- 'keystone_user_password' => SecureRandom.hex,
61
- 'mysql_root_password' => SecureRandom.hex,
62
- 'neutron_db_password' => SecureRandom.hex,
63
- 'neutron_user_password' => SecureRandom.hex,
64
- 'nova_db_password' => SecureRandom.hex,
65
- 'nova_user_password' => SecureRandom.hex,
66
- 'nova_default_floating_pool' => 'nova',
67
- 'swift_admin_password' => SecureRandom.hex,
68
- 'swift_shared_secret' => SecureRandom.hex,
69
- 'swift_user_password' => SecureRandom.hex,
70
- 'swift_all_ips' => %w(192.168.203.1 192.168.203.2 192.168.203.3 192.168.203.4),
71
- 'swift_ext4_device' => '/dev/sdc2',
72
- 'swift_local_interface' => 'eth3',
73
- 'swift_loopback' => true,
74
- 'swift_ring_server' => '192.168.203.1',
75
- 'fixed_network_range' => '10.0.0.0/24',
76
- 'floating_network_range' => '10.0.1.0/24',
77
- 'controller_admin_host' => '172.16.0.1',
78
- 'controller_priv_host' => '172.16.0.1',
79
- 'controller_pub_host' => '172.16.1.1',
80
- 'mysql_host' => '172.16.0.1',
81
- 'mysql_virtual_ip' => '192.168.200.220',
82
- 'mysql_bind_address' => '0.0.0.0',
83
- 'mysql_virt_ip_nic' => 'eth1',
84
- 'mysql_virt_ip_cidr_mask' => '24',
85
- 'mysql_shared_storage_device' => '192.168.203.200:/mnt/mysql',
86
- 'mysql_shared_storage_type' => 'nfs',
87
- 'mysql_resource_group_name' => 'mysqlgrp',
88
- 'mysql_clu_member_addrs' => '192.168.203.11 192.168.203.12 192.168.203.13',
89
- "amqp_server" => 'rabbitmq',
90
- 'amqp_host' => '172.16.0.1',
91
- 'amqp_username' => 'openstack',
92
- 'amqp_password' => SecureRandom.hex,
93
- 'admin_email' => "admin@#{Facter.value(:domain)}",
94
- 'neutron_metadata_proxy_secret' => SecureRandom.hex,
95
- 'enable_ovs_agent' => 'true',
96
- 'ovs_vlan_ranges' => '',
97
- 'ovs_bridge_mappings' => [],
98
- 'ovs_bridge_uplinks' => [],
99
- 'ovs_tunnel_iface' => 'eth0',
100
- 'tenant_network_type' => 'vxlan',
101
- 'enable_tunneling' => 'True',
102
- 'ovs_vxlan_udp_port' => '4789',
103
- 'ovs_tunnel_types' => ['vxlan'],
104
- 'auto_assign_floating_ip' => 'True',
105
- 'cisco_vswitch_plugin' => 'neutron.plugins.openvswitch.ovs_neutron_plugin.OVSNeutronPluginV2',
106
- 'cisco_nexus_plugin' => 'neutron.plugins.cisco.nexus.cisco_nexus_plugin_v2.NexusPlugin',
107
- 'nexus_config' => {},
108
- 'nexus_credentials' => [],
109
- 'provider_vlan_auto_create' => 'false',
110
- 'provider_vlan_auto_trunk' => 'false',
111
- 'backend_server_names' => [],
112
- 'backend_server_addrs' => [],
113
- 'lb_backend_server_names' => [],
114
- 'lb_backend_server_addrs' => [],
115
- 'configure_ovswitch' => 'true',
116
- 'neutron' => 'false',
117
- 'ssl' => 'false',
118
- 'freeipa' => 'false',
119
- 'mysql_ca' => '/etc/ipa/ca.crt',
120
- 'mysql_cert' => '/etc/pki/tls/certs/PRIV_HOST-mysql.crt',
121
- 'mysql_key' => '/etc/pki/tls/private/PRIV_HOST-mysql.key',
122
- 'amqp_ca' => '/etc/ipa/ca.crt',
123
- 'amqp_cert' => '/etc/pki/tls/certs/PRIV_HOST-amqp.crt',
124
- 'amqp_key' => '/etc/pki/tls/private/PRIV_HOST-amqp.key',
125
- 'horizon_ca' => '/etc/ipa/ca.crt',
126
- 'horizon_cert' => '/etc/pki/tls/certs/PUB_HOST-horizon.crt',
127
- 'horizon_key' => '/etc/pki/tls/private/PUB_HOST-horizon.key',
128
- 'amqp_nssdb_password' => SecureRandom.hex,
129
- 'fence_xvm_key_file_password' => SecureRandom.hex,
130
- 'use_qemu_for_poc' => 'false',
131
- 'secret_key' => SecureRandom.hex,
132
- 'admin_token' => SecureRandom.hex,
133
- }
134
-
135
- get_key_type = lambda do |value|
136
- key_list = LookupKey::KEY_TYPES
137
- value_type = value.class.to_s.downcase
138
- if key_list.include?(value_type)
139
- value_type
140
- elsif [FalseClass, TrueClass].include? value.class
141
- 'boolean'
142
- end
143
- # If we need to handle actual number classes like Fixnum, add those here
144
- end
145
-
146
-
147
- # key (:ha, etc) is only used internally for referencing from roles
148
- layouts = {
149
- :ha_nova => Staypuft::Layout.where(:name => 'Distributed with High Availability',
150
- :networking => 'nova').first_or_create!,
151
- :non_ha_nova => Staypuft::Layout.where(:name => 'Distributed',
152
- :networking => 'nova').first_or_create!,
153
- :ha_neutron => Staypuft::Layout.where(:name => 'Distributed with High Availability',
154
- :networking => 'neutron').first_or_create!,
155
- :non_ha_neutron => Staypuft::Layout.where(:name => 'Distributed',
156
- :networking => 'neutron').first_or_create!,
157
- }
158
-
159
- # services don't have puppetclasses yet, since they aren't broken out on the back end
160
- services = {
161
- :non_ha_amqp => { :name => 'AMQP (non-HA)', :class => [] },
162
- :mysql => { :name => 'MySQL', :class => [] },
163
- :non_ha_keystone => { :name => 'Keystone (non-HA)', :class => [] },
164
- :nova_controller => { :name => 'Nova (Controller)', :class => [] },
165
- :neutron_controller => { :name => 'Neutron (Controller)', :class => [] },
166
- :non_ha_glance => { :name => 'Glance (non-HA)', :class => [] },
167
- :cinder_controller => { :name => 'Cinder (controller)', :class => [] },
168
- :cinder_node => { :name => 'Cinder (node)', :class => ['quickstack::storage_backend::cinder'] },
169
- :heat => { :name => 'Heat', :class => [] },
170
- :ceilometer => { :name => 'Ceilometer', :class => [] },
171
- :neutron_networker => { :name => 'Neutron Networker', :class => ['quickstack::neutron::networker'] },
172
- :nova_compute => { :name => 'Nova-compute', :class => ['quickstack::nova_network::compute'] },
173
- :neutron_compute => { :name => 'Neutron-compute', :class => ['quickstack::neutron::compute'] },
174
- :swift => { :name => 'Swift (node)', :class => ['quickstack::swift::storage'] },
175
- :ha_controller => { :name => 'HA (Controller)',
176
- :class => ['quickstack::openstack_common',
177
- 'quickstack::pacemaker::common',
178
- 'quickstack::pacemaker::params'] },
179
- :keystone_ha => { :name => 'Keystone (HA)',
180
- :class => ['quickstack::pacemaker::keystone'] },
181
- :load_balancer_ha => { :name => 'Load Balancer (HA)',
182
- :class => ['quickstack::pacemaker::load_balancer'] },
183
- :memcached_ha => { :name => 'Memcached (HA)',
184
- :class => ['quickstack::pacemaker::memcached'] },
185
- :qpid_ha => { :name => 'qpid (HA)', :class => ['quickstack::pacemaker::qpid'] },
186
- :glance_ha => { :name => 'Glance (HA)', :class => ['quickstack::pacemaker::glance'] },
187
- :nova_ha => { :name => 'Nova (HA)', :class => ['quickstack::pacemaker::nova'] },
188
- :heat_ha => { :name => 'Heat (HA)', :class => ['quickstack::pacemaker::heat'] },
189
- :cinder_ha => { :name => 'Cinder (HA)', :class => ['quickstack::pacemaker::cinder'] },
190
- :swift_ha => { :name => 'Swift (HA)', :class => ['quickstack::pacemaker::swift'] },
191
- :horizon_ha => { :name => 'Horizon (HA)', :class => ['quickstack::pacemaker::horizon'] },
192
- :mysql_ha => { :name => 'Mysql (HA)', :class => ['quickstack::pacemaker::mysql'] },
193
- :neutron_ha => { :name => 'Neutron (HA)', :class => ['quickstack::pacemaker::neutron'] }
194
- }
195
- services.each do |key, service_hash|
196
- service = Staypuft::Service.where(:name => service_hash[:name]).first_or_create!
197
-
198
- # set params in puppetclass
199
- puppet_class_names = service_hash[:class].kind_of?(Array) ? service_hash[:class] : [service_hash[:class]]
200
- service.puppetclasses = puppet_class_names.collect do |puppet_class_name|
201
- puppet_class = Puppetclass.find_by_name puppet_class_name
202
- # skip if puppet class isn't found (yet)
203
- if puppet_class
204
- puppet_class.class_params.each do |p|
205
- if params.include?(p.key)
206
- p.key_type = get_key_type.(params[p.key])
207
- p.default_value = params[p.key]
208
- end
209
- p.override = true
210
- p.save!
211
- end
212
- puppet_class
213
- end
214
- end.compact
215
-
216
- service.description = service_hash[:description]
217
- service.save!
218
- service_hash[:obj] = service
219
- end
220
-
221
- # The list of roles is still from astapor
222
- # FIXME for now layouts are different based on Nova vs. Neutron networks. This is
223
- # actually incorrect, but it's a placeholder example of how layouts might differ
224
- # until we get the real list of roles per layout
225
- # layout refs below specify layout keys from layouts hash
226
- roles = [
227
- { :name => 'Controller (Nova)',
228
- :class => 'quickstack::nova_network::controller',
229
- :layouts => [[:non_ha_nova, 1]],
230
- :services => [:non_ha_amqp, :mysql, :non_ha_keystone, :nova_controller, :non_ha_glance,
231
- :cinder_controller, :heat, :ceilometer] },
232
- { :name => 'Compute (Nova)',
233
- :class => [],
234
- :layouts => [[:ha_nova, 10], [:non_ha_nova, 10]],
235
- :services => [:nova_compute] },
236
- { :name => 'Controller (Neutron)',
237
- :class => 'quickstack::neutron::controller',
238
- :layouts => [[:non_ha_neutron, 1]],
239
- :services => [:non_ha_amqp, :mysql, :non_ha_keystone, :neutron_controller, :non_ha_glance,
240
- :cinder_controller, :heat, :ceilometer] },
241
- { :name => 'Compute (Neutron)',
242
- :class => [],
243
- :layouts => [[:ha_neutron, 10], [:non_ha_neutron, 10]],
244
- :services => [:neutron_compute] },
245
- { :name => 'Neutron Networker',
246
- :class => [],
247
- :layouts => [[:non_ha_neutron, 3]],
248
- :services => [:neutron_networker] },
249
- { :name => 'Cinder Block Storage',
250
- :class => [],
251
- :layouts => [[:ha_nova, 2], [:ha_neutron, 2], [:non_ha_nova, 2], [:non_ha_neutron, 2]],
252
- :services => [:cinder_node] },
253
- { :name => 'Swift Storage Node',
254
- :class => [],
255
- :layouts => [[:ha_nova, 5], [:ha_neutron, 5], [:non_ha_nova, 5], [:non_ha_neutron, 5]],
256
- :services => [:swift] },
257
- { :name => 'HA Controller',
258
- :class => [],
259
- :layouts => [[:ha_nova, 1], [:ha_neutron, 1]],
260
- :services => [:ha_controller, :keystone_ha, :load_balancer_ha, :memcached_ha, :qpid_ha,
261
- :glance_ha, :nova_ha, :heat_ha, :cinder_ha, :swift_ha, :horizon_ha, :mysql_ha,
262
- :neutron_ha] }
263
- ]
264
-
265
- roles.each do |role_hash|
266
- #create role
267
- role = Staypuft::Role.where(:name => role_hash[:name]).first_or_create!
268
-
269
- # set params in puppetclass
270
- puppet_class_names = role_hash[:class].kind_of?(Array) ? role_hash[:class] : [role_hash[:class]]
271
- role.puppetclasses = puppet_class_names.collect do |puppet_class_name|
272
- puppet_class = Puppetclass.find_by_name puppet_class_name
273
-
274
- # skip if puppet class isn't found (yet)
275
- if puppet_class
276
- puppet_class.class_params.each do |param|
277
- if params.include?(param.key)
278
- param.key_type = get_key_type.(params[param.key])
279
- param.default_value = params[param.key]
280
- end
281
- param.override = true
282
- param.save!
283
- end
284
- puppet_class
285
- else
286
- Rails.logger.warn "no puppet_class: #{puppet_class_name} found"
287
- nil
288
- end
289
- end.compact
290
-
291
- role.description = role_hash[:description]
292
- old_role_services_arr = role.role_services.to_a
293
- role_hash[:services].each do |key|
294
- role_service = role.role_services.where(:service_id => services[key][:obj].id).first_or_create!
295
- old_role_services_arr.delete(role_service)
296
- end
297
-
298
- # delete any prior mappings that remain
299
- old_role_services_arr.each do |role_service|
300
- role.services.destroy(role_service.service)
301
- end
302
- role.save!
303
- old_layout_roles_arr = role.layout_roles.to_a
304
- role_hash[:layouts].each do |layout, deploy_order|
305
- layout_role = role.layout_roles.where(:layout_id => layouts[layout].id).first_or_initialize
306
- layout_role.deploy_order = deploy_order
307
- layout_role.save!
308
- old_layout_roles_arr.delete(layout_role)
309
- end
310
- # delete any prior mappings that remain
311
- old_layout_roles_arr.each do |layout_role|
312
- role.layouts.destroy(layout_role.layout)
313
- end
314
- end
1
+ Staypuft::Seeder.new.seed
@@ -33,6 +33,7 @@ module Staypuft
33
33
  ::Puppetclass.send :include, Staypuft::Concerns::PuppetclassExtensions
34
34
  ::Hostgroup.send :include, Staypuft::Concerns::HostgroupExtensions
35
35
  ::Environment.send :include, Staypuft::Concerns::EnvironmentExtensions
36
+ ::LookupKey.send :include, Staypuft::Concerns::LookupKeyExtensions
36
37
  end
37
38
 
38
39
  rake_tasks do
@@ -1,3 +1,3 @@
1
1
  module Staypuft
2
- VERSION = '0.1.5'
2
+ VERSION = '0.1.6'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: staypuft
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.5
4
+ version: 0.1.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Staypuft team
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-06-26 00:00:00.000000000 Z
11
+ date: 2014-07-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: foreman-tasks
@@ -98,13 +98,24 @@ files:
98
98
  - app/lib/staypuft/deployment_param_exporter.rb
99
99
  - app/lib/staypuft/deployment_param_importer.rb
100
100
  - app/lib/staypuft/exception.rb
101
+ - app/lib/staypuft/seeder.rb
101
102
  - app/models/setting/staypuft_provisioning.rb
102
103
  - app/models/staypuft/concerns/environment_extensions.rb
103
104
  - app/models/staypuft/concerns/host_open_stack_affiliation.rb
104
105
  - app/models/staypuft/concerns/host_orchestration_build_hook.rb
105
106
  - app/models/staypuft/concerns/hostgroup_extensions.rb
107
+ - app/models/staypuft/concerns/lookup_key_extensions.rb
106
108
  - app/models/staypuft/concerns/puppetclass_extensions.rb
107
109
  - app/models/staypuft/deployment.rb
110
+ - app/models/staypuft/deployment/abstract_param_scope.rb
111
+ - app/models/staypuft/deployment/attribute_param_storage.rb
112
+ - app/models/staypuft/deployment/cinder_service.rb
113
+ - app/models/staypuft/deployment/glance_service.rb
114
+ - app/models/staypuft/deployment/ips.rb
115
+ - app/models/staypuft/deployment/neutron_service.rb
116
+ - app/models/staypuft/deployment/nova_service.rb
117
+ - app/models/staypuft/deployment/passwords.rb
118
+ - app/models/staypuft/deployment/vips.rb
108
119
  - app/models/staypuft/deployment_role_hostgroup.rb
109
120
  - app/models/staypuft/layout.rb
110
121
  - app/models/staypuft/layout_role.rb
@@ -115,15 +126,23 @@ files:
115
126
  - app/models/staypuft/service/ui_params.rb
116
127
  - app/models/staypuft/service_class.rb
117
128
  - app/overrides/hide_subscription_manager_passwords.rb
129
+ - app/views/staypuft/deployments/_assigned_hosts_table.html.erb
130
+ - app/views/staypuft/deployments/_deployed_hosts_table.html.erb
131
+ - app/views/staypuft/deployments/_free_hosts_table.html.erb
118
132
  - app/views/staypuft/deployments/_import_form.html.erb
133
+ - app/views/staypuft/deployments/edit.html.erb
119
134
  - app/views/staypuft/deployments/index.html.erb
120
135
  - app/views/staypuft/deployments/show.html.erb
121
136
  - app/views/staypuft/deployments/summary.html.erb
122
137
  - app/views/staypuft/layouts/staypuft.html.erb
138
+ - app/views/staypuft/steps/_cinder.html.erb
139
+ - app/views/staypuft/steps/_glance.html.erb
140
+ - app/views/staypuft/steps/_neutron.html.erb
141
+ - app/views/staypuft/steps/_nova.html.erb
123
142
  - app/views/staypuft/steps/_title.html.erb
124
143
  - app/views/staypuft/steps/deployment_settings.html.erb
125
144
  - app/views/staypuft/steps/services_configuration.html.erb
126
- - app/views/staypuft/steps/services_selection.html.erb
145
+ - app/views/staypuft/steps/services_overview.html.erb
127
146
  - config/routes.rb
128
147
  - config/staypuft.local.rb
129
148
  - db/migrate/20140309021811_create_staypuft_layouts.rb
@@ -143,6 +162,7 @@ files:
143
162
  - db/migrate/20140507103716_add_form_step_to_staypuft_deployment.rb
144
163
  - db/migrate/20140513124807_change_column_default_form_step_on_staypuft_deployment.rb
145
164
  - db/migrate/20140602121501_add_amqp_provider_to_staypuft_deployment.rb
165
+ - db/migrate/20140623142500_remove_amqp_provider_from_staypuft_deployment.rb
146
166
  - db/seeds.rb
147
167
  - lib/staypuft.rb
148
168
  - lib/staypuft/engine.rb