staypuft 0.1.5 → 0.1.6

Sign up to get free protection for your applications and to get access to all the features.
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