staypuft 0.0.11 → 0.0.12

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 1b2f7a42251bc0433abba04f69a42dd0a44ee334
4
- data.tar.gz: 78482c6e8e64e8729a9e68fb30065570f0e4f217
3
+ metadata.gz: 54176ed2876a5cfe10a15aa19cbfdbf35d89d8a1
4
+ data.tar.gz: 3fc002583ba2458fd7cf9c41a592c77f533023d6
5
5
  SHA512:
6
- metadata.gz: 7ab57733b68acf613c73164df5c9084b421db7e322aa32cad1196fa80ddd799d08568f3e88feb77cdbf7076c8852c88309fb7493d3118e133896d58d42482085
7
- data.tar.gz: 974fdbedc6ef92a7fc68e399e1f5249195647a74a52f9e69017a069994395103b0b08bdc2c5e25ae4010cebf8da08aaa273bab42cde728733ea4549edd1c829a
6
+ metadata.gz: 34345fe56f017bc92e93c906ee7608aa6a0a6518522b39961153287ab8ef7bc91f0eb382410c124fdd30b1d51d8f42cb7f6e57ca4ab006668361f832ad649476
7
+ data.tar.gz: f1a524875345eff51897ebc887811d3164d58404e1f55abce6b522c71d9a84bbee8a483ef429db09218b3087dbf11d6f85ac149af674830a735f6d00fa6b7b4d
data/README.md CHANGED
@@ -15,14 +15,6 @@ Symlink `config/staypuft.local.rb` to yours Foreman `bundle.d`.
15
15
 
16
16
  See [this](doc/setup.md) document.
17
17
 
18
- ## TODO
19
-
20
- Much to do:
21
- * UI For launching a basic provisioning workflow,
22
- * Deploy a 3-controller HA configuration,
23
- * Configure an HA OpenStack deployment with three controller nodes and as many compute and storage nodes as are required,
24
- * Configure an OpenStack deployment with a single controller node.
25
-
26
18
  ## Contributing
27
19
 
28
20
  Fork and send a Pull Request. Thanks!
@@ -10,7 +10,7 @@ module Staypuft
10
10
  when :deployment_settings
11
11
  @layouts = ordered_layouts
12
12
  when :services_configuration
13
- @services = @deployment.services
13
+ @services = @deployment.services.order(:name)
14
14
  end
15
15
 
16
16
  render_wizard
@@ -33,10 +33,10 @@ module Staypuft
33
33
  end
34
34
  when :services_configuration
35
35
  # Collect services across all deployment's roles
36
- @services = @deployment.roles(:services).map(&:services).flatten.uniq
36
+ @services = @deployment.services.order(:name)
37
37
  if params[:staypuft_deployment]
38
38
  param_data = params[:staypuft_deployment][:hostgroup_params]
39
- diffs = []
39
+ diffs = []
40
40
  param_data.each do |hostgroup_id, hostgroup_params|
41
41
  hostgroup = Hostgroup.find(hostgroup_id)
42
42
  hostgroup_params[:puppetclass_params].each do |puppetclass_id, puppetclass_params|
@@ -54,7 +54,7 @@ module Staypuft
54
54
 
55
55
  private
56
56
  def get_deployment
57
- @deployment = Deployment.first
57
+ @deployment = Deployment.first
58
58
  @deployment.name = nil if @deployment.name.starts_with?(Deployment::NEW_NAME_PREFIX)
59
59
  end
60
60
 
@@ -63,34 +63,18 @@ module Staypuft
63
63
  hosts_to_assign = targeted_hosts - assigned_hosts
64
64
  hosts_to_remove = assigned_hosts - targeted_hosts
65
65
 
66
- hosts_to_assign.each do |discovered_host|
67
- original_type = discovered_host.type
68
- host = discovered_host.becomes(::Host::Managed)
69
- host.type = 'Host::Managed'
70
- host.managed = true
71
- host.build = true
72
-
73
- host.hostgroup = hostgroup
74
- # set discovery environment to keep booting discovery image
75
- host.environment = Environment.get_discovery
76
-
77
- # root_pass is not copied for some reason
78
- host.root_pass = hostgroup.root_pass
79
-
80
- # I do not why but the final save! adds following condytion to the update SQL command
81
- # "WHERE "hosts"."type" IN ('Host::Managed') AND "hosts"."id" = 283"
82
- # which will not find the record since it's still Host::Discovered.
83
- # Using #update_column to change it directly in DB
84
- # (discovered_host is used to avoid same WHERE condition problem here).
85
- # FIXME this is definitely ugly, needs to be properly fixed
86
- discovered_host.update_column :type, 'Host::Managed'
87
-
88
- begin
89
- host.save!
90
- rescue => e
91
- discovered_host.update_column :type, original_type
92
- raise e
93
- end
66
+ unassigned_hosts = hosts_to_assign.reduce([]) do |unassigned_hosts, discovered_host|
67
+ success, host = assign_host_to_hostgroup discovered_host, hostgroup
68
+ success ? unassigned_hosts : [*unassigned_hosts, host]
69
+ end
70
+
71
+ unless unassigned_hosts.empty?
72
+ flash[:warning] = 'Unassigned hosts: ' + unassigned_hosts.map(&:name_was).join(', ')
73
+ Rails.logger.warn(
74
+ "Unassigned hosts: \n" +
75
+ unassigned_hosts.
76
+ map { |h| format '%s (%s)', h.name_was, h.errors.full_messages.join(',') }.
77
+ join("\n"))
94
78
  end
95
79
 
96
80
  hosts_to_remove.each do |host|
@@ -100,6 +84,35 @@ module Staypuft
100
84
 
101
85
  redirect_to deployment_path(id: ::Staypuft::Deployment.first)
102
86
  end
87
+
88
+ private
89
+
90
+ def assign_host_to_hostgroup(discovered_host, hostgroup)
91
+ original_type = discovered_host.type
92
+ host = discovered_host.becomes(::Host::Managed)
93
+ host.type = 'Host::Managed'
94
+ host.managed = true
95
+ host.build = true
96
+
97
+ host.hostgroup = hostgroup
98
+ # set discovery environment to keep booting discovery image
99
+ host.environment = Environment.get_discovery
100
+
101
+ # root_pass is not copied for some reason
102
+ host.root_pass = hostgroup.root_pass
103
+
104
+ # I do not why but the final save! adds following condytion to the update SQL command
105
+ # "WHERE "hosts"."type" IN ('Host::Managed') AND "hosts"."id" = 283"
106
+ # which will not find the record since it's still Host::Discovered.
107
+ # Using #update_column to change it directly in DB
108
+ # (discovered_host is used to avoid same WHERE condition problem here).
109
+ # FIXME this is definitely ugly, needs to be properly fixed
110
+ discovered_host.update_column :type, 'Host::Managed'
111
+
112
+ [host.save, host].tap do |saved, _|
113
+ discovered_host.becomes(Host::Base).update_column(:type, original_type) unless saved
114
+ end
115
+ end
103
116
  end
104
117
 
105
118
  end
@@ -14,7 +14,7 @@ module Staypuft
14
14
  end
15
15
 
16
16
  def alert_if_deployed
17
- if @deployment.hosts.any?(&:open_stack_deployed?)
17
+ if @deployment.deployed?
18
18
  (alert :class => 'alert-warning',
19
19
  :text => _('Machines are already deployed with this configuration. Changing the configuration parameters
20
20
  is unsupported and may result in an unusable configuration. <br/>Please proceed with caution.'),
@@ -21,12 +21,8 @@ module Actions
21
21
  def plan(deployment)
22
22
  Type! deployment, ::Staypuft::Deployment
23
23
 
24
- ordered_hostgroups = deployment.child_hostgroups.
25
- reorder("#{::Staypuft::DeploymentRoleHostgroup.table_name}.deploy_order").to_a
26
24
  input.update id: deployment.id, name: deployment.name
27
-
28
- plan_action Hostgroup::OrderedDeploy, ordered_hostgroups
29
-
25
+ plan_action Hostgroup::OrderedDeploy, deployment.child_hostgroups.deploy_order.to_a
30
26
  lock! deployment
31
27
  end
32
28
 
@@ -29,10 +29,6 @@ module Actions
29
29
  Type! compute_resource, *[ComputeResource, (NilClass if fake)].compact
30
30
 
31
31
  sequence do
32
- plan_self deployment_id: deployment.id,
33
- deployment_name: deployment.name,
34
- fake: fake,
35
- assign: assign
36
32
 
37
33
  hostgroups = deployment.child_hostgroups
38
34
  hostgroups.each do |hostgroup|
@@ -47,15 +43,6 @@ module Actions
47
43
  end
48
44
  end
49
45
 
50
- def run
51
- deployment = ::Staypuft::Deployment.find input.fetch(:deployment_id)
52
- hostgroups = deployment.child_hostgroups
53
- hostgroups.each do |hostgroup|
54
- hostgroup.hosts.each do |host|
55
- host.destroy # TODO make action for it
56
- end
57
- end
58
- end
59
46
 
60
47
  def humanized_input
61
48
  "#{input[:deployment_name]} #{input[:fake] ? 'fake' : 'real'}"
@@ -7,6 +7,9 @@ module Staypuft::Concerns::HostgroupExtensions
7
7
  has_one :role, :through => :deployment_role_hostgroup, :class_name => 'Staypuft::Role'
8
8
 
9
9
  has_one :deployment, :class_name => 'Staypuft::Deployment'
10
+
11
+ scope :deploy_order,
12
+ lambda { reorder "#{::Staypuft::DeploymentRoleHostgroup.table_name}.deploy_order" }
10
13
  end
11
14
 
12
15
  def add_puppetclasses_from_resource(resource)
@@ -10,9 +10,17 @@ module Staypuft
10
10
  belongs_to :hostgroup, :dependent => :destroy
11
11
 
12
12
  has_many :deployment_role_hostgroups, :dependent => :destroy
13
- has_many :child_hostgroups, :through => :deployment_role_hostgroups, :class_name => 'Hostgroup',
14
- :source => :hostgroup
15
- has_many :roles, :through => :deployment_role_hostgroups
13
+ has_many :child_hostgroups,
14
+ :through => :deployment_role_hostgroups,
15
+ :class_name => 'Hostgroup',
16
+ :source => :hostgroup
17
+
18
+ has_many :roles,
19
+ :through => :deployment_role_hostgroups
20
+ has_many :roles_ordered,
21
+ :through => :deployment_role_hostgroups,
22
+ :source => :role,
23
+ :order => "#{::Staypuft::DeploymentRoleHostgroup.table_name}.deploy_order"
16
24
 
17
25
  has_many :services, :through => :roles
18
26
  has_many :hosts, :through => :child_hostgroups
@@ -69,16 +77,20 @@ module Staypuft
69
77
  def set_networking_params
70
78
  child_hostgroups.each do |the_hostgroup|
71
79
  the_hostgroup.puppetclasses.each do |pclass|
72
- if pclass.class_params.where(:key=> "include_neutron").first
80
+ if pclass.class_params.where(:key => "include_neutron").first
73
81
  the_hostgroup.set_param_value_if_changed(pclass, "include_neutron",
74
- (layout.networking == 'neutron') ? true : false)
82
+ layout.networking == 'neutron')
75
83
  end
76
- if pclass.class_params.where(:key=> "neutron").first
84
+ if pclass.class_params.where(:key => "neutron").first
77
85
  the_hostgroup.set_param_value_if_changed(pclass, "neutron",
78
- (layout.networking == 'neutron') ? true : false)
86
+ layout.networking == 'neutron')
79
87
  end
80
88
  end
81
- end
89
+ end
90
+ end
91
+
92
+ def deployed?
93
+ self.hosts.any?(&:open_stack_deployed?)
82
94
  end
83
95
 
84
96
  private
@@ -15,7 +15,7 @@ module Staypuft
15
15
  # for a param name, an array of [param_name, puppetclass] in the case where
16
16
  # there are possibly multiple puppetclass matches. without this, we'll
17
17
  # just grab the first puppetclass from the matching hostgroup
18
- UI_PARAMS = {
18
+ UI_PARAMS = {
19
19
  "qpid (non-HA)"=> ["qpid_ca", "qpid_cert", "qpid_host", "qpid_key", "qpid_nssdb_password"],
20
20
  "MySQL"=> ["mysql_ca", "mysql_cert", "mysql_host", "mysql_key",
21
21
  "mysql_root_password"],
@@ -53,8 +53,9 @@ module Staypuft
53
53
  "Cinder"=> ["cinder_backend_gluster", "cinder_backend_iscsi",
54
54
  "cinder_db_password", "cinder_gluster_servers",
55
55
  "cinder_gluster_volume", "cinder_user_password"],
56
- "Heat"=> ["heat_cfn", "heat_cloudwatch", "heat_db_password", "heat_user_password"],
57
- "Ceilometer"=> ["ceilometer_metering_secret", "ceilometer_user_password"
56
+ "Heat"=> ["heat_cfn", "heat_cloudwatch", "heat_db_password", "heat_user_password", "heat_auth_encrypt_key"],
57
+ "Ceilometer"=> ["ceilometer", "ceilometer_host",
58
+ "ceilometer_metering_secret", "ceilometer_user_password"
58
59
  ],
59
60
  "Neutron - L3" => ["controller_priv_host", "enable_tunneling",
60
61
  "external_network_bridge", "fixed_network_range",
@@ -68,16 +69,18 @@ module Staypuft
68
69
  "ovs_tunnel_iface", "ovs_tunnel_network", "ovs_tunnel_types",
69
70
  "ovs_vlan_ranges", "ovs_vxlan_udp_port" ],
70
71
  "Nova-compute" => ["admin_password", "auto_assign_floating_ip",
72
+ "ceilometer", "ceilometer_host",
71
73
  "ceilometer_metering_secret", "ceilometer_user_password",
72
74
  "cinder_backend_gluster", "controller_priv_host",
73
75
  "controller_pub_host", "fixed_network_range",
74
76
  "floating_network_range", "mysql_ca", "mysql_host",
75
77
  "nova_db_password", "network_private_iface",
76
- "network_private_network",
78
+ "network_private_network",
77
79
  "network_public_iface",
78
80
  "network_public_network", "nova_user_password",
79
81
  "qpid_host", "ssl", "verbose", "use_qemu_for_poc"],
80
- "Neutron-compute" => ["admin_password", "ceilometer_metering_secret",
82
+ "Neutron-compute" => ["admin_password", "ceilometer", "ceilometer_host",
83
+ "ceilometer_metering_secret",
81
84
  "ceilometer_user_password", "cinder_backend_gluster",
82
85
  "controller_admin_host", "controller_priv_host",
83
86
  "controller_pub_host", "enable_tunneling", "mysql_ca",
@@ -9,7 +9,7 @@
9
9
  <h4><%= "#{@deployment.layout.name} - #{@deployment.layout.networking.capitalize} " + _("Networking") %></h4>
10
10
 
11
11
  <div class="clearfix">
12
- <% @deployment.roles.each do |role| %>
12
+ <% @deployment.roles_ordered.each do |role| %>
13
13
  <div class="panel panel-default service-box">
14
14
  <div class="panel-heading"><strong><%= role.name %></strong></div>
15
15
  <div class="panel-body">
@@ -2,7 +2,11 @@
2
2
 
3
3
  <% content_for(:title_actions) do %>
4
4
 
5
- <%= link_to(_("Edit"), deployment_steps_path) %>
5
+ <%= link_to(_("Edit"), if @deployment.deployed?
6
+ deployment_step_path(id: 'services_configuration')
7
+ else
8
+ deployment_steps_path
9
+ end) %>
6
10
  <%= link_to(_("Configuration Summary"), summary_deployment_path(@deployment.id), :class => '') %>
7
11
 
8
12
  <% if Rails.env.development? %>
@@ -33,7 +37,7 @@
33
37
  <% else %>
34
38
  <%= link_to(_("Deploy"),
35
39
  "",
36
- :class => %w(btn btn-success),
40
+ :class => %w(btn btn-success),
37
41
  :'data-toggle' => "modal",
38
42
  :'data-target' => "#deploy_modal") %>
39
43
  <% end %>
@@ -43,7 +47,7 @@
43
47
  <div class="row tabbed_side_nav_table">
44
48
  <ul class="nav nav-pills nav-stacked col-md-4" data-tabs="pills">
45
49
  <h3><%= _("Host Groups") %></h3>
46
- <% @deployment.child_hostgroups.each_with_index do |child_hostgroup, i| %>
50
+ <% @deployment.child_hostgroups.deploy_order.each_with_index do |child_hostgroup, i| %>
47
51
  <li class="<%= 'active' if i == 0 %>">
48
52
  <a href="#<%= child_hostgroup.name.parameterize.underscore %>" data-toggle="tab" class="roles_list">
49
53
  <div class="col-xs-2 text-center">
@@ -66,7 +70,7 @@
66
70
  </ul>
67
71
 
68
72
  <div class="tab-content col-md-8">
69
- <% @deployment.child_hostgroups.each_with_index do |child_hostgroup, i| %>
73
+ <% @deployment.child_hostgroups.deploy_order.each_with_index do |child_hostgroup, i| %>
70
74
  <div class="tab-pane <%= 'active' if i == 0 %>" id="<%= child_hostgroup.name.parameterize.underscore %>">
71
75
  <h3><%= _("Hosts") %></h3>
72
76
  <% if child_hostgroup.own_and_free_hosts.present? %>
@@ -97,7 +101,16 @@
97
101
  :disabled => host.open_stack_deployed? %>
98
102
  <%= hidden_field_tag 'host_ids[]', host.id if host.open_stack_deployed? %>
99
103
  </td>
100
- <td class="ellipsis"><%= host.name %></td>
104
+ <td class="ellipsis">
105
+ <% case host %>
106
+ <% when Host::Managed %>
107
+ <%= link_to_if_authorized host.name, hash_for_host_path(host) %>
108
+ <% when Host::Discovered %>
109
+ <%= link_to_if_authorized host.name, hash_for_discover_path(host) %>
110
+ <% else %>
111
+ <%= host.name %>
112
+ <% end %>
113
+ </td>
101
114
  <td class="hidden-s hidden-xs"><%= host.mac %></td>
102
115
  <td class="hidden-s hidden-xs"><%= host.type %></td>
103
116
  </tr>
data/db/seeds.rb CHANGED
@@ -34,6 +34,7 @@ params = {
34
34
  "heat_db_password" => SecureRandom.hex,
35
35
  "heat_user_password" => SecureRandom.hex,
36
36
  "heat_cfn_user_password" => SecureRandom.hex,
37
+ "heat_auth_encrypt_key" => SecureRandom.hex,
37
38
  "horizon_secret_key" => SecureRandom.hex,
38
39
  "keystone_admin_token" => SecureRandom.hex,
39
40
  "keystone_db_password" => SecureRandom.hex,
@@ -1,3 +1,3 @@
1
1
  module Staypuft
2
- VERSION = '0.0.11'
2
+ VERSION = '0.0.12'
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.0.11
4
+ version: 0.0.12
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-04-23 00:00:00.000000000 Z
11
+ date: 2014-05-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: foreman-tasks