staypuft 0.1.5 → 0.1.6
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +8 -8
- data/app/assets/javascripts/staypuft/staypuft.js +99 -1
- data/app/assets/stylesheets/staypuft/bootstrap_and_overrides.css.scss +48 -4
- data/app/assets/stylesheets/staypuft/staypuft.css.scss +7 -11
- data/app/controllers/staypuft/deployments_controller.rb +23 -20
- data/app/controllers/staypuft/steps_controller.rb +18 -24
- data/app/helpers/staypuft/application_helper.rb +16 -1
- data/app/helpers/staypuft/deployments_helper.rb +1 -1
- data/app/lib/actions/staypuft/host/wait_until_host_ready.rb +2 -8
- data/app/lib/staypuft/seeder.rb +702 -0
- data/app/models/staypuft/concerns/host_open_stack_affiliation.rb +29 -2
- data/app/models/staypuft/concerns/hostgroup_extensions.rb +28 -3
- data/app/models/staypuft/concerns/lookup_key_extensions.rb +72 -0
- data/app/models/staypuft/deployment/abstract_param_scope.rb +31 -0
- data/app/models/staypuft/deployment/attribute_param_storage.rb +41 -0
- data/app/models/staypuft/deployment/cinder_service.rb +87 -0
- data/app/models/staypuft/deployment/glance_service.rb +85 -0
- data/app/models/staypuft/deployment/ips.rb +26 -0
- data/app/models/staypuft/deployment/neutron_service.rb +165 -0
- data/app/models/staypuft/deployment/nova_service.rb +84 -0
- data/app/models/staypuft/deployment/passwords.rb +66 -0
- data/app/models/staypuft/deployment/vips.rb +36 -0
- data/app/models/staypuft/deployment.rb +179 -72
- data/app/models/staypuft/deployment_role_hostgroup.rb +1 -1
- data/app/models/staypuft/role.rb +8 -1
- data/app/models/staypuft/service/ui_params.rb +12 -1
- data/app/views/staypuft/deployments/_assigned_hosts_table.html.erb +60 -0
- data/app/views/staypuft/deployments/_deployed_hosts_table.html.erb +51 -0
- data/app/views/staypuft/deployments/_free_hosts_table.html.erb +47 -0
- data/app/views/staypuft/deployments/edit.html.erb +50 -0
- data/app/views/staypuft/deployments/show.html.erb +41 -79
- data/app/views/staypuft/deployments/summary.html.erb +4 -1
- data/app/views/staypuft/steps/_cinder.html.erb +17 -0
- data/app/views/staypuft/steps/_glance.html.erb +16 -0
- data/app/views/staypuft/steps/_neutron.html.erb +57 -0
- data/app/views/staypuft/steps/_nova.html.erb +34 -0
- data/app/views/staypuft/steps/deployment_settings.html.erb +41 -17
- data/app/views/staypuft/steps/services_configuration.html.erb +19 -32
- data/app/views/staypuft/steps/{services_selection.html.erb → services_overview.html.erb} +7 -3
- data/config/routes.rb +2 -0
- data/db/migrate/20140623142500_remove_amqp_provider_from_staypuft_deployment.rb +6 -0
- data/db/seeds.rb +1 -314
- data/lib/staypuft/engine.rb +1 -0
- data/lib/staypuft/version.rb +1 -1
- metadata +23 -3
@@ -0,0 +1,50 @@
|
|
1
|
+
<% title _("%s Deployment - Advanced Configuration") % @deployment.name %>
|
2
|
+
<% content_for(:title_actions) do %>
|
3
|
+
<%= link_to _("Back to Summary"), summary_deployment_path(@deployment.id)%>
|
4
|
+
<% end %>
|
5
|
+
|
6
|
+
|
7
|
+
<div class="col-md-12">
|
8
|
+
<div class="form-group tabbed_side_nav_form row">
|
9
|
+
<ul class="nav nav-pills nav-stacked col-md-3" data-tabs="pills">
|
10
|
+
<h3><%= _("Services") %></h3>
|
11
|
+
<% @service_hostgroup_map.each_with_index do |(service, hostgroup), i| %>
|
12
|
+
<li class="<%= 'active' if i == 0 %>">
|
13
|
+
<a href="#<%= service.name.parameterize.underscore %>" data-toggle="tab">
|
14
|
+
<%= service.name %>
|
15
|
+
</a>
|
16
|
+
</li>
|
17
|
+
<% end %>
|
18
|
+
</ul>
|
19
|
+
|
20
|
+
<div class="tab-content col-md-9">
|
21
|
+
<% @service_hostgroup_map.each_with_index do |(service, hostgroup), i| %>
|
22
|
+
<div class="tab-pane <%= 'active' if i == 0 %>" id="<%= service.name.parameterize.underscore %>">
|
23
|
+
<h3><%= "#{service.name} " + _("Service Configuration") %></h3>
|
24
|
+
<% if (params_hash = service.ui_params_for_form(hostgroup)).size > 0 %>
|
25
|
+
<% params_hash.each do |param_hash| %>
|
26
|
+
<div class="row">
|
27
|
+
<div class="col-md-4 control-label">
|
28
|
+
<%= label_tag param_hash[:param_key].key %>
|
29
|
+
</div>
|
30
|
+
<div class="col-md-5">
|
31
|
+
<%= text_field_tag format("staypuft_deployment[hostgroup_params][%s][puppetclass_params][%s][%s]",
|
32
|
+
param_hash[:hostgroup].id,
|
33
|
+
param_hash[:puppetclass].id,
|
34
|
+
param_hash[:param_key].key),
|
35
|
+
param_hash[:hostgroup].current_param_value_str(param_hash[:param_key]),
|
36
|
+
:class => "form-control",
|
37
|
+
:size => "45" %>
|
38
|
+
</div>
|
39
|
+
</div>
|
40
|
+
<br/>
|
41
|
+
<% end %>
|
42
|
+
<% else %>
|
43
|
+
<p><%= _("No configuration needed for this service.") %></p>
|
44
|
+
<% end %>
|
45
|
+
<% # render "puppetclasses/classes_parameters", { :obj => service.hostgroups.first } %>
|
46
|
+
</div>
|
47
|
+
<% end %>
|
48
|
+
</div>
|
49
|
+
</div>
|
50
|
+
</div>
|
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
<% content_for(:title_actions) do %>
|
4
4
|
|
5
|
-
<%= link_to(_("
|
5
|
+
<%= link_to(_("Revisit Setup Wizard"), if @deployment.deployed?
|
6
6
|
deployment_step_path(deployment_id: @deployment, id: 'services_configuration')
|
7
7
|
else
|
8
8
|
deployment_steps_path(deployment_id: @deployment)
|
@@ -15,6 +15,7 @@
|
|
15
15
|
</button>
|
16
16
|
<ul class="dropdown-menu dropdown keep-open" role="menu">
|
17
17
|
<li><%= link_to(_("Summary"), summary_deployment_path(@deployment.id), :class => '') %></li>
|
18
|
+
<li><%= link_to _("Advanced Configuration"), edit_deployment_path(@deployment.id)%></li>
|
18
19
|
<li>
|
19
20
|
<%= link_to(icon_text("cloud-upload", _("Import")),
|
20
21
|
{},
|
@@ -51,7 +52,7 @@
|
|
51
52
|
</div>
|
52
53
|
<% end %>
|
53
54
|
|
54
|
-
<% if
|
55
|
+
<% if @deployment.in_progress? %>
|
55
56
|
<%= display_link_if_authorized(
|
56
57
|
_('Deploy in progress'),
|
57
58
|
hash_for_foreman_tasks_task_path(id: ForemanTasks::Lock.colliding_locks(@deployment, nil).first.task.id),
|
@@ -59,7 +60,7 @@
|
|
59
60
|
<% else %>
|
60
61
|
<%= link_to(_("Deploy"),
|
61
62
|
"",
|
62
|
-
:class => %w(btn btn-
|
63
|
+
:class => %w(btn btn-primary),
|
63
64
|
:'data-toggle' => "modal",
|
64
65
|
:'data-target' => "#deploy_modal") %>
|
65
66
|
<% end %>
|
@@ -70,90 +71,51 @@
|
|
70
71
|
|
71
72
|
<div class="row tabbed_side_nav_table">
|
72
73
|
<ul class="nav nav-pills nav-stacked col-md-4" data-tabs="pills">
|
73
|
-
<h3><%= _("
|
74
|
+
<h3><%= _("Deployment Roles") %></h3>
|
74
75
|
<% @deployment.child_hostgroups.deploy_order.each_with_index do |child_hostgroup, i| %>
|
75
|
-
<li
|
76
|
-
<
|
77
|
-
|
78
|
-
<
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
<
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
76
|
+
<li>
|
77
|
+
<div class="col-xs-2">
|
78
|
+
<% if child_hostgroup.hosts.select { |h| !ForemanTasks::Lock.locked?(@deployment, nil) && h.open_stack_deployed? }.count > 0 %>
|
79
|
+
<a href="#<%= child_hostgroup.name.parameterize.underscore %>_deployed_hosts" data-toggle="tab" class="roles_list">
|
80
|
+
<span><%= child_hostgroup.hosts.select { |h| !ForemanTasks::Lock.locked?(@deployment, nil) && h.open_stack_deployed? }.count %></span>
|
81
|
+
</a>
|
82
|
+
<% else %>
|
83
|
+
<span><%= child_hostgroup.hosts.select { |h| !ForemanTasks::Lock.locked?(@deployment, nil) && h.open_stack_deployed? }.count %></span>
|
84
|
+
<% end %>
|
85
|
+
</div>
|
86
|
+
<div class="col-xs-6">
|
87
|
+
<div class="group_name">
|
88
|
+
<%= child_hostgroup.name %>
|
88
89
|
</div>
|
89
|
-
|
90
|
-
|
91
|
-
|
90
|
+
</div>
|
91
|
+
<div class="col-xs-2">
|
92
|
+
<% if child_hostgroup.hosts.select { |h| !(!ForemanTasks::Lock.locked?(@deployment, nil) && h.open_stack_deployed?) }.count > 0 %>
|
93
|
+
<a href="#<%= child_hostgroup.name.parameterize.underscore %>_assigned_hosts" data-toggle="tab" class="roles_list">
|
94
|
+
<i class="glyphicon glyphicon-time"></i>
|
95
|
+
<span><%= child_hostgroup.hosts.select { |h| !(!ForemanTasks::Lock.locked?(@deployment, nil) && h.open_stack_deployed?) }.count %></span>
|
96
|
+
</a>
|
97
|
+
<% end %>
|
98
|
+
</div>
|
99
|
+
<div class="col-xs-2">
|
100
|
+
<a href="#<%= child_hostgroup.name.parameterize.underscore %>_free_hosts" data-toggle="tab" class="roles_list">
|
101
|
+
<i class="glyphicon glyphicon-plus"></i>
|
102
|
+
</a>
|
103
|
+
</div>
|
92
104
|
</li>
|
93
105
|
<% end %>
|
94
106
|
</ul>
|
95
107
|
|
96
108
|
<div class="tab-content col-md-8">
|
97
109
|
<% @deployment.child_hostgroups.deploy_order.each_with_index do |child_hostgroup, i| %>
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
<thead>
|
108
|
-
<tr>
|
109
|
-
<th class="ca">
|
110
|
-
<%= check_box_tag :check_all %>
|
111
|
-
</th>
|
112
|
-
<th><%= sort :name, :as => _('Name') %></th>
|
113
|
-
<th class="hidden-s hidden-xs"><%= _('Deployed?') %></th>
|
114
|
-
<th class="hidden-s hidden-xs"><%= sort :ip, :as => _('IP Address') %></th>
|
115
|
-
</tr>
|
116
|
-
</thead>
|
117
|
-
<tbody>
|
118
|
-
<% child_hostgroup.own_and_free_hosts.each do |host| %>
|
119
|
-
<tr class="<%= ['checkbox_highlight',
|
120
|
-
('success' if child_hostgroup.host_ids.include?(host.id)),
|
121
|
-
('deployed' if host.open_stack_deployed?)
|
122
|
-
].compact.join(' ') %>">
|
123
|
-
<td class="ca">
|
124
|
-
<% disabled = ForemanTasks::Lock.locked?(@deployment, nil) && host.open_stack_deployed? %>
|
125
|
-
<%= check_box_tag 'host_ids[]',
|
126
|
-
host.id,
|
127
|
-
child_hostgroup.host_ids.include?(host.id),
|
128
|
-
id: "host_ids_#{host.id}",
|
129
|
-
disabled: disabled %>
|
130
|
-
<%= hidden_field_tag 'host_ids[]', host.id if disabled %>
|
131
|
-
</td>
|
132
|
-
<td class="ellipsis">
|
133
|
-
<%= host_label(host) %>
|
134
|
-
</td>
|
135
|
-
<td class="hidden-s hidden-xs">
|
136
|
-
<% if host.open_stack_deployed? %>
|
137
|
-
<span class="glyphicon glyphicon-cloud"></span>
|
138
|
-
<% else %>
|
139
|
-
<span class="glyphicon glyphicon-minus"></span>
|
140
|
-
<% end %>
|
141
|
-
</td>
|
142
|
-
<td class="hidden-s hidden-xs"><%= host.ip %></td>
|
143
|
-
</tr>
|
144
|
-
<% end %>
|
145
|
-
</tbody>
|
146
|
-
</table>
|
147
|
-
<% end %>
|
148
|
-
<% else %>
|
149
|
-
<div class="well association">
|
150
|
-
<div class="alert alert-warning">
|
151
|
-
<span class="glyphicon glyphicon-warning-sign"> </span>
|
152
|
-
<%= _("All available hosts have been already assigned.") %>
|
153
|
-
</div>
|
154
|
-
</div>
|
155
|
-
<% end %>
|
156
|
-
</div>
|
110
|
+
<%= render :partial => "free_hosts_table", :locals => { :deployment => @deployment,
|
111
|
+
:hostgroup => @hostgroup,
|
112
|
+
:child_hostgroup => child_hostgroup } %>
|
113
|
+
<%= render :partial => "assigned_hosts_table", :locals => { :deployment => @deployment,
|
114
|
+
:hostgroup => @hostgroup,
|
115
|
+
:child_hostgroup => child_hostgroup } %>
|
116
|
+
<%= render :partial => "deployed_hosts_table", :locals => { :deployment => @deployment,
|
117
|
+
:hostgroup => @hostgroup,
|
118
|
+
:child_hostgroup => child_hostgroup } %>
|
157
119
|
<% end %>
|
158
120
|
</div>
|
159
121
|
</div>
|
@@ -1,5 +1,8 @@
|
|
1
|
-
<% title_actions link_to _("Back to Deployment"), deployment_path(@deployment.id)%>
|
2
1
|
<% title _("%s Summary") % @deployment.name %>
|
2
|
+
<% content_for(:title_actions) do %>
|
3
|
+
<%= link_to _("Advanced Configuration"), edit_deployment_path(@deployment.id)%>
|
4
|
+
<%= link_to _("Back to Deployment"), deployment_path(@deployment.id)%>
|
5
|
+
<% end %>
|
3
6
|
|
4
7
|
<div class="col-md-12">
|
5
8
|
<% @service_hostgroup_map.each_with_index do |(service, hostgroup), i| %>
|
@@ -0,0 +1,17 @@
|
|
1
|
+
<%= f.fields_for :cinder, @deployment.cinder do |p| %>
|
2
|
+
<%= field(p, :driver_backend, :label => _(Staypuft::Deployment::CinderService::DriverBackend::HUMAN)) do
|
3
|
+
@deployment.cinder.backend_labels_for_layout.map do |value, label|
|
4
|
+
radio_button_f_non_inline(p, :driver_backend,
|
5
|
+
:checked => @deployment.cinder.driver_backend == value,
|
6
|
+
:value => value,
|
7
|
+
:text => label)
|
8
|
+
end.join
|
9
|
+
end %>
|
10
|
+
|
11
|
+
<div class="cinder_nfs_uri col-md-offset-0 hide">
|
12
|
+
<%= text_f p, :nfs_uri, class: "cinder_nfs_uri",
|
13
|
+
label: _(Staypuft::Deployment::CinderService::NfsUri::HUMAN),
|
14
|
+
help_inline: _(Staypuft::Deployment::CinderService::NfsUri::HUMAN_AFTER) %>
|
15
|
+
|
16
|
+
</div>
|
17
|
+
<% end %>
|
@@ -0,0 +1,16 @@
|
|
1
|
+
<%= f.fields_for :glance, @deployment.glance do |p| %>
|
2
|
+
<%= field(p, :driver_backend, :label => _(Staypuft::Deployment::GlanceService::DriverBackend::HUMAN)) do
|
3
|
+
@deployment.glance.backend_labels_for_layout.map do |value, label|
|
4
|
+
radio_button_f_non_inline(p, :driver_backend,
|
5
|
+
:checked => @deployment.glance.driver_backend == value,
|
6
|
+
:value => value,
|
7
|
+
:text => label)
|
8
|
+
end.join
|
9
|
+
end %>
|
10
|
+
|
11
|
+
<div class="glance_nfs_network_path col-md-offset-0 hide">
|
12
|
+
<%= text_f p, :nfs_network_path, class: "glance_nfs_network_path",
|
13
|
+
label: _(Staypuft::Deployment::GlanceService::NfsNetworkPath::HUMAN),
|
14
|
+
help_inline: _(Staypuft::Deployment::GlanceService::NfsNetworkPath::HUMAN_AFTER) %>
|
15
|
+
</div>
|
16
|
+
<% end %>
|
@@ -0,0 +1,57 @@
|
|
1
|
+
<%= f.fields_for :neutron, @deployment.neutron do |p| %>
|
2
|
+
<%= change_label_width(4, field(p, :network_segmentation, :label => _(Staypuft::Deployment::NeutronService::NetworkSegmentation::HUMAN)) do
|
3
|
+
Staypuft::Deployment::NeutronService::NetworkSegmentation::LABELS.map do |value, label|
|
4
|
+
radio_button_f_non_inline(p, :network_segmentation,
|
5
|
+
:checked => @deployment.neutron.network_segmentation == value,
|
6
|
+
:value => value,
|
7
|
+
:text => label)
|
8
|
+
end.join
|
9
|
+
end) %>
|
10
|
+
|
11
|
+
<div class="neutron_tenant_vlan_ranges col-md-offset-0 hide">
|
12
|
+
<%= change_label_width 4, text_f(p, :tenant_vlan_ranges, class: "neutron_tenant_vlan_ranges",
|
13
|
+
label: _(Staypuft::Deployment::NeutronService::TenantVlanRanges::HUMAN),
|
14
|
+
help_inline: _(Staypuft::Deployment::NeutronService::TenantVlanRanges::HUMAN_AFTER)) %>
|
15
|
+
</div>
|
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
|
+
<%= check_box_f_non_inline(p, :use_vlan_for_external_network,
|
35
|
+
:checked_value => 'true',
|
36
|
+
:unchecked_value => 'false',
|
37
|
+
:text => Staypuft::Deployment::NeutronService::UseVlanForExternalNetwork::HUMAN)
|
38
|
+
%>
|
39
|
+
|
40
|
+
<div class="neutron_external_vlan col-md-offset-0 hide">
|
41
|
+
<%= change_label_width 4, text_f(p, :vlan_ranges_for_external_network,
|
42
|
+
label: _(Staypuft::Deployment::NeutronService::VlanRangesForExternalNetwork::HUMAN),
|
43
|
+
help_inline: _(Staypuft::Deployment::NeutronService::VlanRangesForExternalNetwork::HUMAN_AFTER)) %>
|
44
|
+
</div>
|
45
|
+
|
46
|
+
</div>
|
47
|
+
|
48
|
+
|
49
|
+
<h4><%= _('Compute Nodes') %> </h4>
|
50
|
+
|
51
|
+
<%= change_label_width 4, text_f(p, :compute_tenant_interface,
|
52
|
+
label: _(Staypuft::Deployment::NeutronService::ComputeTenantInterface::HUMAN),
|
53
|
+
help_inline: _(Staypuft::Deployment::NeutronService::ComputeTenantInterface::HUMAN_AFTER)) %>
|
54
|
+
|
55
|
+
<%= _('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.') %>
|
56
|
+
|
57
|
+
<% end %>
|
@@ -0,0 +1,34 @@
|
|
1
|
+
<%= f.fields_for :nova, @deployment.nova do |p| %>
|
2
|
+
<%= change_label_width(4, field(p, :network_manager, :label => _(Staypuft::Deployment::NovaService::NetworkManager::HUMAN)) do
|
3
|
+
Staypuft::Deployment::NovaService::NetworkManager::LABELS.map do |value, label|
|
4
|
+
radio_button_f_non_inline(p, :network_manager,
|
5
|
+
:checked => @deployment.nova.network_manager == value,
|
6
|
+
:value => value,
|
7
|
+
:text => label)
|
8
|
+
end.join
|
9
|
+
end) %>
|
10
|
+
|
11
|
+
<div class="nova_vlan_range col-md-offset-0 hide">
|
12
|
+
<%= change_label_width 4, text_f(p, :vlan_range, class: "nova_vlan_range", label: _(Staypuft::Deployment::NovaService::VlanRange::HUMAN),
|
13
|
+
help_inline: _(Staypuft::Deployment::NovaService::VlanRange::HUMAN_AFTER)) %>
|
14
|
+
</div>
|
15
|
+
|
16
|
+
<%= change_label_width 4, text_f(p, :public_floating_range,
|
17
|
+
label: _(Staypuft::Deployment::NovaService::PublicFloatingRange::HUMAN),
|
18
|
+
help_inline: _(Staypuft::Deployment::NovaService::PublicFloatingRange::HUMAN_AFTER)) %>
|
19
|
+
|
20
|
+
<%= change_label_width 4, text_f(p, :private_fixed_range,
|
21
|
+
label: _(Staypuft::Deployment::NovaService::PrivateFixedRange::HUMAN),
|
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
|
+
<% end %>
|
@@ -11,23 +11,47 @@
|
|
11
11
|
<%= text_f f, :name %>
|
12
12
|
<%= textarea_f f, :description, :rows => 3 %>
|
13
13
|
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
14
|
+
<% { layout_name: Staypuft::Deployment::LayoutName,
|
15
|
+
networking: Staypuft::Deployment::Networking,
|
16
|
+
# amqp_provider: Staypuft::Deployment::AmqpProvider,
|
17
|
+
# platform: Staypuft::Deployment::Platform
|
18
|
+
}.
|
19
|
+
each do |attr, constants| %>
|
20
|
+
|
21
|
+
<%= field(f, attr, :label => _(constants::HUMAN)) do
|
22
|
+
constants::LABELS.map do |value, label|
|
23
|
+
radio_button_f_non_inline(f, attr,
|
24
|
+
:checked => value == @deployment.send(attr),
|
25
|
+
:value => value,
|
26
|
+
:text => _(label))
|
27
|
+
end.join
|
28
|
+
end %>
|
29
|
+
<% end %>
|
30
|
+
|
31
|
+
<%= f.fields_for :passwords, @deployment.passwords do |p| %>
|
32
|
+
<%= field(p, :mode, :label => _(Staypuft::Deployment::Passwords::Mode::HUMAN)) do
|
33
|
+
Staypuft::Deployment::Passwords::Mode::LABELS.map do |value, label|
|
34
|
+
radio_button_f_non_inline(p, :mode,
|
35
|
+
:checked => @deployment.passwords.mode == value,
|
36
|
+
:value => value,
|
37
|
+
:text => label)
|
38
|
+
end.join
|
39
|
+
end %>
|
40
|
+
|
41
|
+
<div class="single_password col-md-offset-0 hide">
|
42
|
+
<%= password_f p, :single_password,
|
43
|
+
:label => _("Password"),
|
44
|
+
:class => "single_password",
|
45
|
+
:help_inline => _("Password should be 6 characters or more"),
|
46
|
+
:placeholder => '' %>
|
47
|
+
<%= password_f p, :single_password_confirmation,
|
48
|
+
:label => _("Confirm"),
|
49
|
+
:class => "single_password",
|
50
|
+
:placeholder => '' %>
|
51
|
+
</div>
|
52
|
+
<% end %>
|
53
|
+
|
54
|
+
|
31
55
|
|
32
56
|
<div class="form_actions">
|
33
57
|
<% if !is_new %>
|
@@ -6,44 +6,31 @@
|
|
6
6
|
|
7
7
|
<%= deployment_wizard 3 %>
|
8
8
|
<div class="form-group tabbed_side_nav_form row">
|
9
|
-
<ul class="nav nav-pills nav-stacked col-md-3" data-tabs="pills">
|
9
|
+
<ul class="nav nav-pills nav-stacked col-md-3 configuration" data-tabs="pills">
|
10
10
|
<h3><%= _("Services") %></h3>
|
11
|
-
<% @
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
11
|
+
<% @services_map.each_with_index do |service_name, i| %>
|
12
|
+
<% service = @deployment.send(service_name)
|
13
|
+
if service.active?
|
14
|
+
%>
|
15
|
+
<li class="">
|
16
|
+
<a href="#<%= service_name %>" data-toggle="tab">
|
17
|
+
<%= service_name.capitalize %>
|
18
|
+
</a>
|
19
|
+
</li>
|
20
|
+
<% end %>
|
17
21
|
<% end %>
|
18
22
|
</ul>
|
19
23
|
|
20
24
|
<div class="tab-content col-md-9">
|
21
|
-
<% @
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
</div>
|
30
|
-
<div class="col-md-5">
|
31
|
-
<%= text_field_tag format("staypuft_deployment[hostgroup_params][%s][puppetclass_params][%s][%s]",
|
32
|
-
param_hash[:hostgroup].id,
|
33
|
-
param_hash[:puppetclass].id,
|
34
|
-
param_hash[:param_key].key),
|
35
|
-
param_hash[:hostgroup].current_param_value_str(param_hash[:param_key]),
|
36
|
-
:class => "form-control",
|
37
|
-
:size => "45" %>
|
38
|
-
</div>
|
39
|
-
</div>
|
40
|
-
<br/>
|
41
|
-
<% end %>
|
42
|
-
<% else %>
|
43
|
-
<p><%= _("No configuration needed for this service.") %></p>
|
25
|
+
<% @services_map.each_with_index do |service_name, i| %>
|
26
|
+
<% service = @deployment.send(service_name)
|
27
|
+
if service.active?
|
28
|
+
%>
|
29
|
+
<div class="tab-pane" id="<%= service_name %>">
|
30
|
+
<h3><%= _("%s Service Configuration") % service_name.to_s.capitalize %></h3>
|
31
|
+
<%= render partial: service_name.to_s, locals: {f: f}%>
|
32
|
+
</div>
|
44
33
|
<% end %>
|
45
|
-
<% # render "puppetclasses/classes_parameters", { :obj => service.hostgroups.first } %>
|
46
|
-
</div>
|
47
34
|
<% end %>
|
48
35
|
</div>
|
49
36
|
</div>
|
@@ -5,7 +5,7 @@
|
|
5
5
|
<%= base_errors_for @deployment %>
|
6
6
|
|
7
7
|
<%= deployment_wizard 2 %>
|
8
|
-
<h3><%= _("
|
8
|
+
<h3><%= _("Deployment Roles & Available Services") %></h3>
|
9
9
|
<h4><%= "#{@deployment.layout.name} - #{@deployment.layout.networking.capitalize} " + _("Networking") %></h4>
|
10
10
|
|
11
11
|
<div class="clearfix">
|
@@ -13,12 +13,16 @@
|
|
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">
|
16
|
+
<ul>
|
16
17
|
<% role.services.each do |service| %>
|
17
|
-
|
18
|
-
|
18
|
+
<li>
|
19
|
+
<%= f.label service.name.parameterize.underscore.to_sym, service.name, :class=> "inline" do %>
|
20
|
+
<%= f.check_box(service.name.parameterize.underscore.to_sym, :checked => true, :disabled => "disabled", :hidden=> true) %>
|
19
21
|
<%= service.name %>
|
20
22
|
<% end %>
|
23
|
+
</li>
|
21
24
|
<% end %>
|
25
|
+
</ul>
|
22
26
|
</div>
|
23
27
|
</div>
|
24
28
|
<% end %>
|
data/config/routes.rb
CHANGED