staypuft 0.3.1 → 0.3.2
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 +4 -4
- data/app/assets/javascripts/staypuft/nics_assignment.js +5 -5
- data/app/assets/javascripts/staypuft/staypuft.js +58 -5
- data/app/assets/javascripts/staypuft/subnets_assignment.js +5 -4
- data/app/assets/stylesheets/staypuft/bootstrap_and_overrides.css.scss +16 -0
- data/app/assets/stylesheets/staypuft/staypuft.css.scss +30 -71
- data/app/controllers/staypuft/deployments_controller.rb +23 -0
- data/app/controllers/staypuft/interface_assignments_controller.rb +2 -1
- data/app/lib/staypuft/network_query.rb +88 -5
- data/app/lib/staypuft/seeder.rb +75 -71
- data/app/models/staypuft/concerns/host_interface_management.rb +25 -2
- data/app/models/staypuft/concerns/subnet_ip_management.rb +17 -0
- data/app/models/staypuft/concerns/vip_nic_scopes.rb +13 -0
- data/app/models/staypuft/deployment/attribute_param_storage.rb +59 -1
- data/app/models/staypuft/deployment/cinder_service/equallogic.rb +80 -0
- data/app/models/staypuft/deployment/cinder_service.rb +53 -94
- data/app/models/staypuft/deployment/neutron_service.rb +20 -83
- data/app/models/staypuft/deployment/nova_service.rb +2 -31
- data/app/models/staypuft/deployment.rb +9 -7
- data/app/models/staypuft/subnet_type.rb +4 -0
- data/app/views/staypuft/deployments/_assigned_hosts.html.erb +23 -4
- data/app/views/staypuft/deployments/_deployment_access_all_details_dialogue.html.erb +5 -5
- data/app/views/staypuft/deployments/_deployment_hosts.html.erb +1 -1
- data/app/views/staypuft/deployments/_free_hosts.html.erb +4 -4
- data/app/views/staypuft/interface_assignments/index.html.erb +36 -31
- data/app/views/staypuft/interfaces/_drop_zone.html.erb +22 -22
- data/app/views/staypuft/steps/_cinder.html.erb +48 -26
- data/app/views/staypuft/steps/_cinder_equallogic_form.html.erb +13 -0
- data/app/views/staypuft/steps/_neutron.html.erb +0 -28
- data/app/views/staypuft/steps/_nova.html.erb +0 -11
- data/app/views/staypuft/steps/network_configuration.html.erb +27 -19
- data/app/views/staypuft/steps/services_configuration.html.erb +1 -1
- data/app/views/staypuft/subnet_typings/destroy.js.erb +1 -1
- data/app/views/staypuft/subnets/_drop_zone.html.erb +5 -5
- data/app/views/staypuft/subnets/_subnet_pull.html.erb +3 -4
- data/lib/staypuft/engine.rb +2 -0
- data/lib/staypuft/version.rb +1 -1
- metadata +6 -4
- data/app/models/staypuft/deployment/ips.rb +0 -25
- data/app/models/staypuft/deployment/vips.rb +0 -40
@@ -2,37 +2,42 @@
|
|
2
2
|
|
3
3
|
<% title _("Configure Interfaces (%s hosts)") % @hosts.size %>
|
4
4
|
|
5
|
-
<div
|
6
|
-
<
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
5
|
+
<div class="row">
|
6
|
+
<div class="col-md-12">
|
7
|
+
<h3><%= _("Configured Networks") %></h3>
|
8
|
+
<div id="subnets" class="panel panel-default">
|
9
|
+
<div class="panel-body">
|
10
|
+
<% @subnets.each do |subnet| %>
|
11
|
+
<% next if is_pxe?(@deployment, subnet) # we skip PXE network which is always on primary interface %>
|
12
|
+
<% next if @host.interfaces.vip.where(:subnet_id => subnet.id).present? # we skip assigned subnets %>
|
13
|
+
<%= render 'staypuft/subnets/subnet_pull',
|
14
|
+
:subnet => subnet,
|
15
|
+
:deployment => @deployment,
|
16
|
+
:active => true,
|
17
|
+
:existing => false %>
|
18
|
+
<% end %>
|
19
|
+
</div>
|
20
|
+
</div>
|
21
|
+
</div>
|
16
22
|
</div>
|
17
23
|
|
18
|
-
<div class="
|
19
|
-
<
|
20
|
-
<
|
24
|
+
<div class="row">
|
25
|
+
<div class="col-md-12">
|
26
|
+
<h3><%= _("Network Interfaces") %></h3>
|
27
|
+
<% if (subnet = @host.subnet) %>
|
28
|
+
<%= render 'staypuft/interfaces/drop_zone',
|
29
|
+
:identifier => @host.primary_interface,
|
30
|
+
:subnet => subnet,
|
31
|
+
:deployment => @deployment,
|
32
|
+
:host => @host %>
|
33
|
+
<% end %>
|
21
34
|
|
22
|
-
<%
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
<% end %>
|
29
|
-
|
30
|
-
|
31
|
-
<%= render 'staypuft/interfaces/drop_zone',
|
32
|
-
:identifier => interface.identifier,
|
33
|
-
:subnet => interface.subnet,
|
34
|
-
:deployment => @deployment,
|
35
|
-
:host => @host %>
|
36
|
-
<% end %>
|
37
|
-
|
38
|
-
<%= link_to _('Back to deployment'), deployment_path(@deployment) %>
|
35
|
+
<% @interfaces.each do |interface| %>
|
36
|
+
<%= render 'staypuft/interfaces/drop_zone',
|
37
|
+
:identifier => interface.identifier,
|
38
|
+
:subnet => interface.subnet,
|
39
|
+
:deployment => @deployment,
|
40
|
+
:host => @host %>
|
41
|
+
<% end %>
|
42
|
+
</div>
|
43
|
+
</div>
|
@@ -1,30 +1,30 @@
|
|
1
|
-
<div class="interface" id="<%= identifier %>-interface" data-interface="<%= identifier %>">
|
2
|
-
<div class="
|
3
|
-
|
1
|
+
<div class="panel panel-default interface" id="<%= identifier %>-interface" data-interface="<%= identifier %>">
|
2
|
+
<div class="panel-heading">
|
3
|
+
<h3 class="panel-title"><%= identifier %></h3>
|
4
4
|
</div>
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
<%= render 'staypuft/subnets/subnet_pull',
|
9
|
-
:subnet => subnet,
|
10
|
-
:deployment => deployment,
|
11
|
-
:active => !is_pxe?(deployment, subnet),
|
12
|
-
:existing => true if subnet %>
|
13
|
-
</div>
|
14
|
-
|
15
|
-
<!-- all virtual devices attached to this physical interface assignments -->
|
16
|
-
<div id="<%= identifier %>-virtuals">
|
17
|
-
<% host.interfaces.where(:physical_device => identifier).where("subnet_id IS NOT NULL").each do |virtual| %>
|
5
|
+
<div class="panel-body">
|
6
|
+
<!-- physical interface assignment (can be only one at most) -->
|
7
|
+
<span id="<%= identifier %>-physicals">
|
18
8
|
<%= render 'staypuft/subnets/subnet_pull',
|
19
|
-
:subnet =>
|
9
|
+
:subnet => subnet,
|
20
10
|
:deployment => deployment,
|
21
|
-
:active =>
|
22
|
-
:existing => true if
|
23
|
-
|
24
|
-
|
11
|
+
:active => !is_pxe?(deployment, subnet),
|
12
|
+
:existing => true if subnet %>
|
13
|
+
</span>
|
14
|
+
|
15
|
+
<!-- all virtual devices attached to this physical interface assignments -->
|
16
|
+
<span id="<%= identifier %>-virtuals">
|
17
|
+
<% host.interfaces.where(:physical_device => identifier).where("subnet_id IS NOT NULL").each do |virtual| %>
|
18
|
+
<%= render 'staypuft/subnets/subnet_pull',
|
19
|
+
:subnet => virtual.subnet,
|
20
|
+
:deployment => deployment,
|
21
|
+
:active => true,
|
22
|
+
:existing => true if virtual.subnet %>
|
23
|
+
<% end %>
|
24
|
+
</span>
|
25
25
|
|
26
|
-
<div class="subnet-drop-zones">
|
27
26
|
<div class="empty-zone">
|
27
|
+
|
28
28
|
</div>
|
29
29
|
</div>
|
30
30
|
</div>
|
@@ -1,30 +1,52 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
:checked => @deployment.cinder.driver_backend == value,
|
6
|
-
:value => value,
|
7
|
-
:text => label)
|
8
|
-
end.join
|
9
|
-
end %>
|
1
|
+
<div class="cinder">
|
2
|
+
<h5><%= _(Staypuft::Deployment::CinderService::DriverBackend::HUMAN) %></h5>
|
3
|
+
<div class="col-md-12 clearfix cinderPicker" id="cinderPicker">
|
4
|
+
<%= f.fields_for :cinder, @deployment.cinder do |p| %>
|
10
5
|
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
6
|
+
<%= check_box_f_non_inline(p, :backend_nfs,
|
7
|
+
:checked_value => 'true',
|
8
|
+
:unchecked_value => 'false',
|
9
|
+
:text => "NFS")
|
10
|
+
%>
|
11
|
+
<div class="cinder_nfs_uri col-md-offset-1 hide">
|
15
12
|
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
label: _(Staypuft::Deployment::CinderService::EqlxGroupName::HUMAN) %>
|
13
|
+
<%= text_f p, :nfs_uri, class: "cinder_nfs_uri",
|
14
|
+
label: _(Staypuft::Deployment::CinderService::NfsUri::HUMAN),
|
15
|
+
help_inline: _(Staypuft::Deployment::CinderService::NfsUri::HUMAN_AFTER) %>
|
16
|
+
|
17
|
+
</div>
|
18
|
+
|
19
|
+
<%= check_box_f_non_inline(p, :backend_lvm,
|
20
|
+
:checked_value => 'true',
|
21
|
+
:unchecked_value => 'false',
|
22
|
+
:text => "LVM")
|
23
|
+
%>
|
28
24
|
|
25
|
+
<%= check_box_f_non_inline(p, :backend_ceph,
|
26
|
+
:checked_value => 'true',
|
27
|
+
:unchecked_value => 'false',
|
28
|
+
:text => "Ceph")
|
29
|
+
%>
|
30
|
+
|
31
|
+
<%= check_box_f_non_inline(p, :backend_eqlx,
|
32
|
+
:checked_value => 'true',
|
33
|
+
:unchecked_value => 'false',
|
34
|
+
:text => "EqualLogic")
|
35
|
+
%>
|
36
|
+
<div class="cinder_equallogic col-md-offset-1 hide">
|
37
|
+
<div id="eqlxs" class="cinder_equallogic_picker">
|
38
|
+
<% @deployment.cinder.eqlxs.each_with_index do |eqlx, index| %>
|
39
|
+
<%= p.fields_for "eqlxs[]", eqlx, index: index do |e| %>
|
40
|
+
<% render partial: 'cinder_equallogic_form', locals: {e: e} %>
|
41
|
+
<% end %>
|
42
|
+
<% end %>
|
43
|
+
</div>
|
44
|
+
<script type='html/template' id='eqlx_form_template'>
|
45
|
+
<%= p.fields_for 'eqlxs[]', Staypuft::Deployment::CinderService::Equallogic.new, index: 'NEW_RECORD' do |e| render(partial: 'cinder_equallogic_form', locals: {e: e}); end %>
|
46
|
+
</script>
|
47
|
+
<button type="button" class= "btn btn-primary btn-sm add_another_server"><%= _("Add Another Server") %></button>
|
48
|
+
</div>
|
49
|
+
<%end%>
|
29
50
|
</div>
|
30
|
-
|
51
|
+
</div>
|
52
|
+
|
@@ -0,0 +1,13 @@
|
|
1
|
+
<div class="eqlx well">
|
2
|
+
<h5 class="muted"><a href="#" class="remove"><i class="glyphicon glyphicon-remove-sign "> </i></a> Server #<span class="server_number">1</span></h5>
|
3
|
+
<%= text_f e, :san_ip, class: "cinder_equallogic",
|
4
|
+
label: _(Staypuft::Deployment::CinderService::SanIp::HUMAN) %>
|
5
|
+
<%= text_f e, :san_login, class: "cinder_equallogic",
|
6
|
+
label: _(Staypuft::Deployment::CinderService::SanLogin::HUMAN) %>
|
7
|
+
<%= text_f e, :san_password, class: "cinder_equallogic",
|
8
|
+
label: _(Staypuft::Deployment::CinderService::SanPassword::HUMAN) %>
|
9
|
+
<%= text_f e, :pool, class: "cinder_equallogic",
|
10
|
+
label: _(Staypuft::Deployment::CinderService::EqlxPool::HUMAN) %>
|
11
|
+
<%= text_f e, :group_name, class: "cinder_equallogic",
|
12
|
+
label: _(Staypuft::Deployment::CinderService::EqlxGroupName::HUMAN) %>
|
13
|
+
</div>
|
@@ -14,32 +14,4 @@
|
|
14
14
|
help_inline: _(Staypuft::Deployment::NeutronService::TenantVlanRanges::HUMAN_AFTER)) %>
|
15
15
|
</div>
|
16
16
|
|
17
|
-
<h4><%= _('Network Nodes') %> </h4>
|
18
|
-
|
19
|
-
<%= change_label_width 4, text_f(p, :networker_tenant_interface,
|
20
|
-
label: _(Staypuft::Deployment::NeutronService::NetworkerTenantInterface::HUMAN),
|
21
|
-
help_inline: _(Staypuft::Deployment::NeutronService::NetworkerTenantInterface::HUMAN_AFTER)) %>
|
22
|
-
|
23
|
-
<%= check_box_f_non_inline(p, :use_external_interface,
|
24
|
-
:checked_value => 'true',
|
25
|
-
:unchecked_value => 'false',
|
26
|
-
:text => Staypuft::Deployment::NeutronService::UseExternalInterface::HUMAN)
|
27
|
-
%>
|
28
|
-
|
29
|
-
<div class="neutron_external_interface col-md-offset-0 hide">
|
30
|
-
<%= change_label_width 4, text_f(p, :external_interface_name,
|
31
|
-
label: _(Staypuft::Deployment::NeutronService::ExternalInterfaceName::HUMAN),
|
32
|
-
help_inline: _(Staypuft::Deployment::NeutronService::ExternalInterfaceName::HUMAN_AFTER)) %>
|
33
|
-
|
34
|
-
</div>
|
35
|
-
|
36
|
-
|
37
|
-
<h4><%= _('Compute Nodes') %> </h4>
|
38
|
-
|
39
|
-
<%= change_label_width 4, text_f(p, :compute_tenant_interface,
|
40
|
-
label: _(Staypuft::Deployment::NeutronService::ComputeTenantInterface::HUMAN),
|
41
|
-
help_inline: _(Staypuft::Deployment::NeutronService::ComputeTenantInterface::HUMAN_AFTER)) %>
|
42
|
-
|
43
|
-
<%= _('NOTE: Best practice is to use a different interface than the interface used for pxe/provisioning the node. This practice is mandatory if VLAN is chosen as the tenant network type.') %>
|
44
|
-
|
45
17
|
<% end %>
|
@@ -20,15 +20,4 @@
|
|
20
20
|
<%= change_label_width 4, text_f(p, :private_fixed_range,
|
21
21
|
label: _(Staypuft::Deployment::NovaService::PrivateFixedRange::HUMAN),
|
22
22
|
help_inline: _(Staypuft::Deployment::NovaService::PrivateFixedRange::HUMAN_AFTER)) %>
|
23
|
-
|
24
|
-
<h4><%= _('Compute Nodes') %> </h4>
|
25
|
-
|
26
|
-
<%= change_label_width 4, text_f(p, :external_interface_name, label: _(Staypuft::Deployment::NovaService::ExternalInterfaceName::HUMAN),
|
27
|
-
help_inline: _(Staypuft::Deployment::NovaService::ExternalInterfaceName::HUMAN_AFTER)) %>
|
28
|
-
|
29
|
-
<%= change_label_width 4, text_f(p, :compute_tenant_interface, label: _(Staypuft::Deployment::NovaService::ComputeTenantInterface::HUMAN),
|
30
|
-
help_inline: _(Staypuft::Deployment::NovaService::ComputeTenantInterface::HUMAN_AFTER)) %>
|
31
|
-
|
32
|
-
<%= _('NOTE: Best practice is to use a different interface than the interface used for pxe/provisioning the node. This practice is mandatory if VLAN is chosen as the tenant network type.') %>
|
33
|
-
|
34
23
|
<% end %>
|
@@ -9,12 +9,16 @@
|
|
9
9
|
</div>
|
10
10
|
|
11
11
|
<div class="row">
|
12
|
-
<div
|
12
|
+
<div class="col-md-12">
|
13
13
|
<%= base_errors_for @deployment %>
|
14
|
-
<h4><%= _("Available
|
15
|
-
|
16
|
-
|
17
|
-
|
14
|
+
<h4><%= _("Available Network Traffic Types") %></h4>
|
15
|
+
<div id="subnet_types" class="panel panel-default">
|
16
|
+
<div class="panel-body">
|
17
|
+
<% @deployment.unassigned_subnet_types.each do |subnet_type| %>
|
18
|
+
<%= render 'staypuft/subnet_types/subnet_type_pull', :subnet_type => subnet_type, :deployment => @deployment %>
|
19
|
+
<% end %>
|
20
|
+
</div>
|
21
|
+
</div>
|
18
22
|
</div>
|
19
23
|
</div>
|
20
24
|
|
@@ -24,29 +28,33 @@
|
|
24
28
|
<%= display_link_if_authorized(_("New Subnet"), hash_for_new_subnet_path(:redirect => request.url + '#new')) %>
|
25
29
|
</div>
|
26
30
|
</div>
|
31
|
+
</div>
|
27
32
|
|
33
|
+
<div class="row">
|
28
34
|
<div id="subnets" class="col-md-12">
|
29
|
-
<h4><%= _("
|
35
|
+
<h4><%= _("Subnets") %></h4>
|
30
36
|
<% @subnets.each do |subnet| %>
|
31
37
|
<%= render 'staypuft/subnets/drop_zone', :subnet => subnet, :deployment => @deployment %>
|
32
38
|
<% end %>
|
33
39
|
</div>
|
34
40
|
</div>
|
35
41
|
|
36
|
-
<
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
42
|
+
<div class="row">
|
43
|
+
<div class="col-sm-12">
|
44
|
+
<%= form_for(@deployment, :url => wizard_path, :method => 'PUT', :html => {:class => ''}) do |f| %>
|
45
|
+
<div class="form_actions">
|
46
|
+
<a class="btn btn-default" href="<%= previous_wizard_path %>">
|
47
|
+
<span class="glyphicon glyphicon-chevron-left"></span>
|
48
|
+
<%= _("Back") %>
|
49
|
+
</a>
|
50
|
+
<%= link_to _("Cancel"), deployment_path(@deployment),
|
51
|
+
:class => "btn btn-danger" %>
|
52
|
+
<%= button_tag(:type => 'submit', :class => "btn btn-primary pull-right") do %>
|
53
|
+
<%= _("Next") %>
|
54
|
+
<% end %>
|
55
|
+
</div>
|
48
56
|
<% end %>
|
49
57
|
</div>
|
50
|
-
|
58
|
+
</div>
|
51
59
|
</div>
|
52
60
|
<% end %>
|
@@ -1,6 +1,6 @@
|
|
1
1
|
<% if @destroyed %>
|
2
2
|
$('#<%= dom_id(@subnet_type) %>').remove();
|
3
|
-
$("#subnet_types").append('<%=j render :partial => 'staypuft/subnet_types/subnet_type_pull',
|
3
|
+
$("#subnet_types .panel-body").append('<%=j render :partial => 'staypuft/subnet_types/subnet_type_pull',
|
4
4
|
:object => @subnet_type,
|
5
5
|
:locals => { :deployment => @deployment },
|
6
6
|
:as => 'subnet_type' %>');
|
@@ -1,9 +1,9 @@
|
|
1
|
-
<div class="subnet-drop-zone" id="<%= dom_id(subnet) %>_drop_zone" data-subnet-id="<%= subnet.id %>">
|
2
|
-
<div class="
|
3
|
-
|
1
|
+
<div class="subnet-drop-zone panel panel-default" id="<%= dom_id(subnet) %>_drop_zone" data-subnet-id="<%= subnet.id %>">
|
2
|
+
<div class="panel-heading">
|
3
|
+
<h3 class="panel-title"><%= subnet.name %> <small>- <%= subnet.network_address %></small></h3>
|
4
4
|
</div>
|
5
5
|
|
6
|
-
<div class="subnet-types">
|
6
|
+
<div class="panel-body subnet-types">
|
7
7
|
<% deployment.subnet_typings.where(["#{Staypuft::SubnetTyping.table_name}.subnet_id = ?", subnet.id]).each do |typing| %>
|
8
8
|
<%= render :partial => 'staypuft/subnet_types/subnet_type_pull',
|
9
9
|
:object => typing.subnet_type,
|
@@ -11,6 +11,6 @@
|
|
11
11
|
:as => :subnet_type %>
|
12
12
|
<% end %>
|
13
13
|
|
14
|
-
<div class="empty-zone"
|
14
|
+
<div class="empty-zone"> </div>
|
15
15
|
</div>
|
16
16
|
</div>
|
@@ -2,8 +2,7 @@
|
|
2
2
|
id="<%= dom_id(subnet) %>"
|
3
3
|
data-create-url="<%= deployment_interface_assignments_path(deployment, :host_ids => params[:host_ids], :subnet_id => subnet) %>"
|
4
4
|
data-delete-url="<%= deployment_interface_assignment_path(deployment, 0, :host_ids => params[:host_ids], :subnet_id => subnet) %>">
|
5
|
-
<
|
6
|
-
|
7
|
-
|
8
|
-
</div>
|
5
|
+
<strong><%= subnet.name %> <%= '(vlan: ' + subnet.vlanid + ')' if subnet.vlanid.present? %></strong>
|
6
|
+
<br/>
|
7
|
+
<small class="text-muted"><%= subnet_types(deployment, subnet) %></small>
|
9
8
|
</div>
|
data/lib/staypuft/engine.rb
CHANGED
@@ -33,6 +33,8 @@ module Staypuft
|
|
33
33
|
::Host::Managed.send :include, Staypuft::Concerns::HostDetailsHelper
|
34
34
|
::Host::Discovered.send :include, Staypuft::Concerns::HostOpenStackAffiliation
|
35
35
|
::Puppetclass.send :include, Staypuft::Concerns::PuppetclassExtensions
|
36
|
+
::Nic::Base.send :include, Staypuft::Concerns::SubnetIpManagement
|
37
|
+
::Nic::Base.send :include, Staypuft::Concerns::VipNicScopes
|
36
38
|
::Hostgroup.send :include, Staypuft::Concerns::HostgroupExtensions
|
37
39
|
::Environment.send :include, Staypuft::Concerns::EnvironmentExtensions
|
38
40
|
::LookupKey.send :include, Staypuft::Concerns::LookupKeyExtensions
|
data/lib/staypuft/version.rb
CHANGED
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.3.
|
4
|
+
version: 0.3.2
|
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-09-
|
11
|
+
date: 2014-09-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: foreman-tasks
|
@@ -105,19 +105,20 @@ files:
|
|
105
105
|
- app/models/staypuft/deployment/vlan_range_values_validator.rb
|
106
106
|
- app/models/staypuft/deployment/nova_service.rb
|
107
107
|
- app/models/staypuft/deployment/cinder_service.rb
|
108
|
-
- app/models/staypuft/deployment/ips.rb
|
109
108
|
- app/models/staypuft/deployment/abstract_param_scope.rb
|
109
|
+
- app/models/staypuft/deployment/cinder_service/equallogic.rb
|
110
110
|
- app/models/staypuft/deployment/neutron_service.rb
|
111
111
|
- app/models/staypuft/deployment/glance_service.rb
|
112
112
|
- app/models/staypuft/deployment/attribute_param_storage.rb
|
113
|
-
- app/models/staypuft/deployment/vips.rb
|
114
113
|
- app/models/staypuft/deployment/passwords.rb
|
115
114
|
- app/models/staypuft/service_class.rb
|
116
115
|
- app/models/staypuft/subnet_type.rb
|
117
116
|
- app/models/staypuft/layout.rb
|
117
|
+
- app/models/staypuft/concerns/vip_nic_scopes.rb
|
118
118
|
- app/models/staypuft/concerns/hostgroup_extensions.rb
|
119
119
|
- app/models/staypuft/concerns/puppetclass_extensions.rb
|
120
120
|
- app/models/staypuft/concerns/host_details_helper.rb
|
121
|
+
- app/models/staypuft/concerns/subnet_ip_management.rb
|
121
122
|
- app/models/staypuft/concerns/environment_extensions.rb
|
122
123
|
- app/models/staypuft/concerns/host_interface_management.rb
|
123
124
|
- app/models/staypuft/concerns/host_orchestration_build_hook.rb
|
@@ -153,6 +154,7 @@ files:
|
|
153
154
|
- app/views/staypuft/steps/_neutron_non_ha.html.erb
|
154
155
|
- app/views/staypuft/steps/services_overview.html.erb
|
155
156
|
- app/views/staypuft/steps/network_configuration.html.erb
|
157
|
+
- app/views/staypuft/steps/_cinder_equallogic_form.html.erb
|
156
158
|
- app/views/staypuft/steps/_nova_non_ha.html.erb
|
157
159
|
- app/views/staypuft/steps/_title.html.erb
|
158
160
|
- app/views/staypuft/steps/services_configuration.html.erb
|
@@ -1,25 +0,0 @@
|
|
1
|
-
module Staypuft
|
2
|
-
class Deployment::IPS < Deployment::AbstractParamScope
|
3
|
-
|
4
|
-
class Jail < Safemode::Jail
|
5
|
-
allow :controller_ip, :controller_ips, :controller_fqdns
|
6
|
-
end
|
7
|
-
|
8
|
-
def controllers
|
9
|
-
@controllers ||= deployment.controller_hostgroup.hosts.order(:id)
|
10
|
-
end
|
11
|
-
|
12
|
-
def controller_ips
|
13
|
-
controllers.map &:ip
|
14
|
-
end
|
15
|
-
|
16
|
-
def controller_fqdns
|
17
|
-
controllers.map &:fqdn
|
18
|
-
end
|
19
|
-
|
20
|
-
def controller_ip
|
21
|
-
controllers.tap { |v| v.size == 1 or raise }.first.ip
|
22
|
-
end
|
23
|
-
|
24
|
-
end
|
25
|
-
end
|
@@ -1,40 +0,0 @@
|
|
1
|
-
module Staypuft
|
2
|
-
class Deployment::VIPS < Deployment::AbstractParamScope
|
3
|
-
|
4
|
-
VIP_NAMES = [:ceilometer, :cinder, :db, :glance, :heat, :heat_cfn, :horizon, :keystone, :loadbalancer,
|
5
|
-
:nova, :neutron, :amqp, :swift]
|
6
|
-
COUNT = VIP_NAMES.size
|
7
|
-
|
8
|
-
def self.param_scope
|
9
|
-
'vips'
|
10
|
-
end
|
11
|
-
|
12
|
-
param_attr :user_range
|
13
|
-
|
14
|
-
HUMAN = N_('Virtual IP addresses range')
|
15
|
-
|
16
|
-
class Jail < Safemode::Jail
|
17
|
-
allow :get
|
18
|
-
end
|
19
|
-
|
20
|
-
def range
|
21
|
-
(user_range || default_range)
|
22
|
-
# TODO reserve the IP addresses
|
23
|
-
end
|
24
|
-
|
25
|
-
# TODO validate range that it is array with size 11 and that it contains only IPS
|
26
|
-
|
27
|
-
def default_range
|
28
|
-
@default_range ||= begin
|
29
|
-
top_ip = hostgroup.subnet.to.split('.').map &:to_i
|
30
|
-
((top_ip[-1]-(COUNT-1))..top_ip[-1]).
|
31
|
-
map { |last| [*top_ip[0..2], last] }.
|
32
|
-
map { |ip| ip.join '.' }
|
33
|
-
end
|
34
|
-
end
|
35
|
-
|
36
|
-
def get(name)
|
37
|
-
range[VIP_NAMES.index(name) || raise(ArgumentError, "unknown #{name}")]
|
38
|
-
end
|
39
|
-
end
|
40
|
-
end
|