foreman_datacenter 1.20.4 → 1.20.6

Sign up to get free protection for your applications and to get access to all the features.
Files changed (31) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/foreman_datacenter/modal.js +15 -8
  3. data/app/assets/stylesheets/foreman_datacenter/horizontal-scroll.css +9 -0
  4. data/app/controllers/api/v2/foreman_datacenter/device_interface_connections_controller.rb +1 -1
  5. data/app/controllers/api/v2/foreman_datacenter/management_devices_controller.rb +1 -1
  6. data/app/controllers/api/v2/foreman_datacenter/power_outlets_controller.rb +35 -35
  7. data/app/controllers/foreman_datacenter/console_ports_controller.rb +2 -4
  8. data/app/controllers/foreman_datacenter/console_server_ports_controller.rb +5 -10
  9. data/app/controllers/foreman_datacenter/device_bays_controller.rb +5 -10
  10. data/app/controllers/foreman_datacenter/device_interface_connections_controller.rb +7 -4
  11. data/app/controllers/foreman_datacenter/device_interfaces_controller.rb +3 -6
  12. data/app/controllers/foreman_datacenter/device_modules_controller.rb +3 -7
  13. data/app/controllers/foreman_datacenter/device_types_controller.rb +1 -2
  14. data/app/controllers/foreman_datacenter/devices_controller.rb +8 -25
  15. data/app/controllers/foreman_datacenter/management_devices_controller.rb +3 -6
  16. data/app/controllers/foreman_datacenter/power_outlets_controller.rb +5 -10
  17. data/app/controllers/foreman_datacenter/power_ports_controller.rb +5 -10
  18. data/app/controllers/foreman_datacenter/rack_groups_controller.rb +1 -1
  19. data/app/controllers/foreman_datacenter/sites_controller.rb +3 -2
  20. data/app/models/foreman_datacenter/device_interface_connection.rb +2 -2
  21. data/app/views/foreman_datacenter/console_ports/index.html.erb +27 -5
  22. data/app/views/foreman_datacenter/device_interface_connections/index.html.erb +23 -3
  23. data/app/views/foreman_datacenter/devices/_interface.html.erb +17 -3
  24. data/app/views/foreman_datacenter/devices/show.html.erb +1 -1
  25. data/app/views/foreman_datacenter/platforms/show.html.erb +8 -8
  26. data/app/views/foreman_datacenter/rack_groups/racks.html.erb +9 -10
  27. data/app/views/foreman_datacenter/racks/_device_position.html.erb +1 -1
  28. data/app/views/foreman_datacenter/sites/racks.html.erb +23 -4
  29. data/db/migrate/20180725201545_add_location_id_and_organization_id_columns_to_devices.rb +1 -1
  30. data/lib/foreman_datacenter/version.rb +1 -1
  31. metadata +4 -3
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 31dbb1be5a3d3b9952130a981dd0504936e95b351c1123ca6e8b51722e7fcfd7
4
- data.tar.gz: bd5ec041069a976115bac55df645b02334a37e0b250ffcf41fc994ec0458d59d
3
+ metadata.gz: 20a7f019dba7bbd3c87601170d1b877cb427ebce27908572f7b69460c16ee943
4
+ data.tar.gz: 6850811eb83a4aef513f74e48fa46d3ab68daa6e632ac410b4141515ae901850
5
5
  SHA512:
6
- metadata.gz: 71b2ec635d67fc988d2dcfdaae9d4b9639060d91397847d477328341ff21fc6c12f2b3d28a010eaf26ce557351cf524c6a040972fe393f5aa62f50b5e7157b7c
7
- data.tar.gz: 9509cc3926f5fe17020ae65dffa2995b671a9dbb8c1ba6c7aa0de76323f52a5b820a8316845217cea3967db51f424c6c439e60966db26969f96be8c6a7d5d851
6
+ metadata.gz: a019cd9673e4896a04c590ca481982cb959c5f50ac44363bbf3fb0813c796fee9f9c5b7912c1a6e9033534d064f27765d13d0fcf40974e627611d95f0506db1e
7
+ data.tar.gz: 9f2764dda03e07a2653b420d43f247d0db2847870353d522deb3b06b7f4f89c6dfd4ba24d09386ccd52d5d3c71bac4b6129a2fd26338420e3e38f03c4dcdafb3
@@ -10,7 +10,8 @@ $(window).click(function(event) {
10
10
  var patt = new RegExp(str);
11
11
  var token = $('meta[name="csrf-token"]').attr('content');
12
12
  if (object_type == 'device') {
13
- var checkbox_label = 'Delete associated host ONLY and keep current device as UNASSIGNED!'
13
+ // var checkbox_label = 'Delete associated host ONLY and keep current device as UNASSIGNED!'
14
+ var checkbox_label = ''
14
15
  } else {
15
16
  var checkbox_label = 'Delete ' + object_type + ' ONLY'
16
17
  }
@@ -18,11 +19,18 @@ $(window).click(function(event) {
18
19
  if (!(patt.test(pathname))) {
19
20
  pathname = pathname + str
20
21
  }
21
-
22
22
  var move = "<p></p>"
23
- if (object_type == "device" || object_type == "site" || object_type == "rack" || object_type == "rack_group") {
23
+ var checkbox = ""
24
+ var text = "You will permanently delete the"
25
+ text_ao = ""
26
+ if (object_type == "site" || object_type == "rack" || object_type == "rack_group") {
24
27
  move = '<p>You also can move associated object to another <strong>' + object_type + '</strong> before you destroy it.</p> \
25
28
  <a class="btn btn-block btn-primary modal-btn modal-btn-primary marginbottomsixteen" href="/datacenter/' + object_type + 's/' + object_id + '/move">Move associated objects</a>'
29
+ checkbox = '<input type="checkbox" name="object_only" id="object_only" value="true" checked="checked">'
30
+ text = "By unselecting checkbox you will permanently delete the"
31
+ text_ao = 'with \
32
+ <strong>ALL</strong> \
33
+ associated objects' + ao
26
34
  }
27
35
 
28
36
  var form = '<div id="myModal" class="modal"> \
@@ -37,16 +45,15 @@ $(window).click(function(event) {
37
45
  <div class="modal-body"> \
38
46
  <p>This action \
39
47
  <strong>cannot</strong> \
40
- be undone. By unselecting checkbox you will permanently delete the \
48
+ be undone. \
49
+ ' + text + ' \
41
50
  <strong>' + object_name + '</strong> \
42
- with \
43
- <strong>ALL</strong> \
44
- associated objects' + ao + ' \
51
+ ' + text_ao + ' \
45
52
  </p> \
46
53
  <form class="modal-form nonpaddingbottom" action=' + pathname + ' accept-charset="UTF-8" method="post"> \
47
54
  <input type="hidden" name="_method" value="delete"> \
48
55
  <input type="hidden" name="authenticity_token" value=' + token + '> \
49
- <input type="checkbox" name="object_only" id="object_only" value="true" checked="checked"> \
56
+ ' + checkbox + ' \
50
57
  <label>' + checkbox_label + '</label> \
51
58
  <input type="submit" name="commit" value="I understand the consequences, delete this ' + object_type + '" class="btn btn-block btn-danger modal-btn modal-btn-danger"> \
52
59
  </form> \
@@ -0,0 +1,9 @@
1
+ .horizontal-scroll {
2
+ overflow: auto;
3
+ white-space: nowrap;
4
+ }
5
+
6
+ .horizontal-scroll > div.col-md-4 {
7
+ display: inline-block;
8
+ float: none;
9
+ }
@@ -34,7 +34,7 @@ module Api
34
34
  def create
35
35
  @device_interface_connection = ::ForemanDatacenter::DeviceInterfaceConnection.new(device_interface_connection_params.merge(interface_a: params[:device_interface_id]))
36
36
  @device_interface_connection.first_interface = get_device_interface
37
- @device_interface_connection.save
37
+ process_response @device_interface_connection.save
38
38
  end
39
39
 
40
40
  api :DELETE, "/foreman_datacenter/device_interface_connections/:id/", N_("Delete a DeviceInterfaceConnection")
@@ -34,7 +34,7 @@ module Api
34
34
 
35
35
  def create
36
36
  @management_device = ::ForemanDatacenter::ManagementDevice.new(management_device_params)#.merge(device_id: params[]))
37
- @management_device.save
37
+ process_response @management_device.save
38
38
  end
39
39
 
40
40
  api :PUT, "/foreman_datacenter/management_devices/:id/", N_("Update a management_device")
@@ -2,14 +2,14 @@ module Api
2
2
  module V2
3
3
  module ForemanDatacenter
4
4
  class PowerOutletsController < ForemanDatacenter::BaseController
5
- include ::ForemanDatacenter::Controller::Parameters::PowerOutlet
5
+ include ::ForemanDatacenter::Controller::Parameters::PowerOutlet
6
6
 
7
7
  before_action :find_resource, :only => %w{show update destroy connect disconnect}
8
8
  add_scoped_search_description_for(::ForemanDatacenter::PowerOutletTemplate)
9
9
  param_group :search_and_pagination, ::Api::V2::BaseController
10
10
 
11
11
  api :GET, "/foreman_datacenter/power_outlets/", N_("List all PowerOutlets")
12
-
12
+
13
13
  def index
14
14
  @power_outlets = resource_scope_for_index
15
15
  end
@@ -20,57 +20,57 @@ module Api
20
20
  def show
21
21
  end
22
22
 
23
- def_param_group :power_outlet do
24
- param :power_outlet, Hash, :required => true, :action_aware => true do
25
- param :name, String, :required => true
26
- param :device_id, :number, :desc => N_("Device ID")
27
- end
28
- end
23
+ def_param_group :power_outlet do
24
+ param :power_outlet, Hash, :required => true, :action_aware => true do
25
+ param :name, String, :required => true
26
+ param :device_id, :number, :desc => N_("Device ID")
27
+ end
28
+ end
29
29
 
30
- api :POST, "/foreman_datacenter/power_outlets", N_("Create a PowerOutlet")
31
- param_group :power_outlet, :as => :create
30
+ api :POST, "/foreman_datacenter/power_outlets", N_("Create a PowerOutlet")
31
+ param_group :power_outlet, :as => :create
32
32
 
33
- def create
34
- @power_outlet = ::ForemanDatacenter::PowerOutlet.new(power_outlet_params)
35
- @power_outlet.save
36
- end
33
+ def create
34
+ @power_outlet = ::ForemanDatacenter::PowerOutlet.new(power_outlet_params)
35
+ process_response @power_outlet.save
36
+ end
37
37
 
38
- api :PUT, "/foreman_datacenter/power_outlets/:id/", N_("Update a PowerOutlet")
39
- param :id, :identifier, :required => true
40
- param_group :power_outlet
38
+ api :PUT, "/foreman_datacenter/power_outlets/:id/", N_("Update a PowerOutlet")
39
+ param :id, :identifier, :required => true
40
+ param_group :power_outlet
41
41
 
42
- def update
43
- process_response @power_outlet.update(power_outlet_params)
44
- end
42
+ def update
43
+ process_response @power_outlet.update(power_outlet_params)
44
+ end
45
45
 
46
- api :DELETE, "/foreman_datacenter/power_outlets/:id/", N_("Delete a PowerOutlet")
47
- param :id, :identifier, :required => true
46
+ api :DELETE, "/foreman_datacenter/power_outlets/:id/", N_("Delete a PowerOutlet")
47
+ param :id, :identifier, :required => true
48
48
 
49
- def destroy
50
- process_response @power_outlet.destroy
51
- end
49
+ def destroy
50
+ process_response @power_outlet.destroy
51
+ end
52
52
 
53
- api :PATCH, "/foreman_datacenter/power_outlets/:id/connect", N_("Connect")
54
- param :id, :identifier, :required => true
55
- param_group :power_outlet
53
+ api :PATCH, "/foreman_datacenter/power_outlets/:id/connect", N_("Connect")
54
+ param :id, :identifier, :required => true
55
+ param_group :power_outlet
56
56
  param :console_server_port_id, :number, :desc => N_("ConsoleServerPort ID"), :required => true
57
57
  param :connection_status, :number, :desc => N_("Connections status"), :required => true
58
58
 
59
- def connect
59
+ def connect
60
60
  power_port = ::ForemanDatacenter::PowerPort.find(params[:power_port_id])
61
61
  power_port.connect(
62
62
  @power_outlet,
63
63
  params[:connection_status]
64
64
  )
65
- end
65
+ end
66
66
 
67
- api :PATCH, "/foreman_datacenter/power_outlets/:id/disconnect", N_("Disconnect")
68
- param :id, :identifier, :required => true
69
- param_group :power_outlet
67
+ api :PATCH, "/foreman_datacenter/power_outlets/:id/disconnect", N_("Disconnect")
68
+ param :id, :identifier, :required => true
69
+ param_group :power_outlet
70
70
 
71
- def disconnect
71
+ def disconnect
72
72
  process_response @power_outlet.power_port.disconnect
73
- end
73
+ end
74
74
  end
75
75
  end
76
76
  end
@@ -72,14 +72,12 @@ module ForemanDatacenter
72
72
  console_server_port,
73
73
  params[:console_port][:connection_status]
74
74
  )
75
- redirect_to device_url(id: @console_port.device_id),
76
- notice: 'Console port was successfully connected.'
75
+ process_success(success_msg: "Console port was successfully connected.", success_redirect: device_url(id: @console_port.device_id))
77
76
  end
78
77
 
79
78
  def disconnect
80
79
  @console_port.disconnect
81
- redirect_to device_url(id: @console_port.device_id),
82
- notice: 'Console port was successfully disconnected.'
80
+ process_success(success_msg: "Console port was successfully disconnected.", success_redirect: device_url(id: @console_port.device_id))
83
81
  end
84
82
  end
85
83
  end
@@ -18,8 +18,7 @@ module ForemanDatacenter
18
18
  @console_server_port = ForemanDatacenter::ConsoleServerPort.new(console_server_port_params.merge(device_id: params[:device_id]))
19
19
 
20
20
  if @console_server_port.save
21
- redirect_to device_url(id: @console_server_port.device_id),
22
- notice: 'Console server port was successfully created.'
21
+ process_success(success_msg: "Console server port was successfully created.", success_redirect: device_url(id: @console_server_port.device_id))
23
22
  else
24
23
  process_error object: @console_server_port
25
24
  end
@@ -27,8 +26,7 @@ module ForemanDatacenter
27
26
 
28
27
  def update
29
28
  if @console_server_port.update(console_server_port_params)
30
- redirect_to device_url(id: @console_server_port.device_id),
31
- notice: 'Console server port was successfully updated.'
29
+ process_success(success_msg: "Console server port was successfully updated.", success_redirect: device_url(id: @console_server_port.device_id))
32
30
  else
33
31
  process_error object: @console_server_port
34
32
  end
@@ -36,8 +34,7 @@ module ForemanDatacenter
36
34
 
37
35
  def destroy
38
36
  if @console_server_port.destroy
39
- redirect_to device_url(id: @console_server_port.device_id),
40
- notice: 'Console server port was successfully destroyed.'
37
+ process_success(success_msg: "Console server port was successfully destroyed.", success_redirect: device_url(id: @console_server_port.device_id))
41
38
  else
42
39
  process_error object: @console_server_port
43
40
  end
@@ -52,14 +49,12 @@ module ForemanDatacenter
52
49
  @console_server_port,
53
50
  params[:console_port][:connection_status]
54
51
  )
55
- redirect_to device_url(id: @console_server_port.device_id),
56
- notice: 'Console server port was successfully connected.'
52
+ process_success(success_msg: "Console server port was successfully connected.", success_redirect: device_url(id: @console_server_port.device_id))
57
53
  end
58
54
 
59
55
  def disconnect
60
56
  @console_server_port.console_port.disconnect
61
- redirect_to device_url(id: @console_server_port.device_id),
62
- notice: 'Console server port was successfully disconnected.'
57
+ process_success(success_msg: "Console server port was successfully disconnected.", success_redirect: device_url(id: @console_server_port.device_id))
63
58
  end
64
59
 
65
60
  def for_device
@@ -17,8 +17,7 @@ module ForemanDatacenter
17
17
  @device_bay = ForemanDatacenter::DeviceBay.new(device_bay_params.merge(device_id: params[:device_id]))
18
18
 
19
19
  if @device_bay.save
20
- redirect_to device_url(@device_bay.device),
21
- notice: 'New device bay was successfully created'
20
+ process_success(success_msg: "New device bay was successfully created.", success_redirect: device_url(id: @device_bay.device))
22
21
  else
23
22
  process_error object: @device_bay
24
23
  end
@@ -26,8 +25,7 @@ module ForemanDatacenter
26
25
 
27
26
  def update
28
27
  if @device_bay.update(device_bay_params)
29
- redirect_to device_url(@device_bay.device),
30
- notice: 'Device bay was successfully updated'
28
+ process_success(success_msg: "Device bay was successfully updated.", success_redirect: device_url(id: @device_bay.device))
31
29
  else
32
30
  process_error object: @device_bay
33
31
  end
@@ -35,8 +33,7 @@ module ForemanDatacenter
35
33
 
36
34
  def destroy
37
35
  if @device_bay.destroy
38
- redirect_to device_url(@device_bay.device),
39
- notice: 'Device bay was successfully destroyed'
36
+ process_success(success_msg: "Device bay was successfully destroyed.", success_redirect: device_url(id: @device_bay.device))
40
37
  else
41
38
  process_error object: @device_bay
42
39
  end
@@ -48,8 +45,7 @@ module ForemanDatacenter
48
45
  def populate
49
46
  device_id = params[:device_bay][:installed_device_id]
50
47
  if @device_bay.update(installed_device_id: device_id)
51
- redirect_to device_url(@device_bay.device),
52
- notice: 'Device bay was successfully populated'
48
+ process_success(success_msg: "Device bay was successfully populated.", success_redirect: device_url(id: @device_bay.device))
53
49
  else
54
50
  process_error object: @device_bay
55
51
  end
@@ -57,8 +53,7 @@ module ForemanDatacenter
57
53
 
58
54
  def depopulate
59
55
  if @device_bay.update(installed_device_id: nil)
60
- redirect_to device_url(@device_bay.device),
61
- notice: 'Device bay was successfully depopulated'
56
+ process_success(success_msg: "Device bay was successfully depopulated.", success_redirect: device_url(id: @device_bay.device))
62
57
  else
63
58
  process_error object: @device_bay
64
59
  end
@@ -3,10 +3,10 @@ module ForemanDatacenter
3
3
  include Foreman::Controller::AutoCompleteSearch
4
4
  include ForemanDatacenter::Controller::Parameters::DeviceInterfaceConnection
5
5
 
6
- before_action :find_resource, only: [:destroy, :planned, :connected]
6
+ before_action :find_resource, only: [:destroy, :planned, :connected, :edit]
7
7
 
8
8
  def index
9
- @device_interface_connections = resource_base_search_and_page.includes(:second_interface, first_interface: [:device])
9
+ @device_interface_connections = resource_base_search_and_page.includes(second_interface: [:device], first_interface: [:device])
10
10
  end
11
11
 
12
12
  def new
@@ -15,13 +15,16 @@ module ForemanDatacenter
15
15
  )
16
16
  end
17
17
 
18
+ def edit
19
+ @device = @device_interface_connection.first_device
20
+ end
21
+
18
22
  def create
19
23
  @device_interface_connection = ForemanDatacenter::DeviceInterfaceConnection.new(device_interface_connection_params.merge(interface_a: params[:device_interface_id]))
20
24
  @device_interface_connection.first_interface = get_device_interface
21
25
 
22
26
  if @device_interface_connection.save
23
- redirect_to device_url(@device_interface_connection.first_interface.device),
24
- notice: 'Connection was successfully created.'
27
+ process_success(success_msg: "Connection was successfully created.", success_redirect: device_url(id: @device_interface_connection.first_interface.device))
25
28
  else
26
29
  process_error object: @device_interface_connection
27
30
  end
@@ -28,8 +28,7 @@ module ForemanDatacenter
28
28
  @device_interface = ForemanDatacenter::DeviceInterface.new(device_interface_params.merge(device_id: params[:device_id]))
29
29
 
30
30
  if @device_interface.save
31
- redirect_to device_url(id: @device_interface.device_id),
32
- notice: 'Device interface was successfully created.'
31
+ process_success(success_msg: "Device interface was successfully created.", success_redirect: device_url(id: @device_interface.device.id))
33
32
  else
34
33
  process_error object: @device_interface
35
34
  end
@@ -37,8 +36,7 @@ module ForemanDatacenter
37
36
 
38
37
  def update
39
38
  if @device_interface.update(device_interface_params)
40
- redirect_to device_url(id: @device_interface.device_id),
41
- notice: 'Device interface was successfully updated.'
39
+ process_success(success_msg: "Device interface was successfully updated.", success_redirect: device_url(id: @device_interface.device.id))
42
40
  else
43
41
  process_error object: @device_interface
44
42
  end
@@ -46,8 +44,7 @@ module ForemanDatacenter
46
44
 
47
45
  def destroy
48
46
  if @device_interface.destroy
49
- redirect_to device_url(id: @device_interface.device_id),
50
- notice: 'Device interface was successfully destroyed.'
47
+ process_success(success_msg: "Device interface was successfully destroyed.", success_redirect: device_url(id: @device_interface.device.id))
51
48
  else
52
49
  process_error object: @device_interface
53
50
  end
@@ -15,10 +15,8 @@ module ForemanDatacenter
15
15
 
16
16
  def create
17
17
  @device_module = ForemanDatacenter::DeviceModule.new(device_module_params.merge(device_id: params[:device_id]))
18
-
19
18
  if @device_module.save
20
- redirect_to inventory_device_url(id: @device_module.device_id),
21
- notice: 'Device module was successfully created.'
19
+ process_success(success_msg: "Device module was successfully created.", success_redirect: inventory_device_url(id: @device_module.device_id))
22
20
  else
23
21
  process_error object: @device_module
24
22
  end
@@ -26,8 +24,7 @@ module ForemanDatacenter
26
24
 
27
25
  def update
28
26
  if @device_module.update(device_module_params)
29
- redirect_to inventory_device_url(id: @device_module.device_id),
30
- notice: 'Device module was successfully updated.'
27
+ process_success(success_msg: "Device module was successfully updated.", success_redirect: inventory_device_url(id: @device_module.device_id))
31
28
  else
32
29
  process_error object: @device_module
33
30
  end
@@ -35,8 +32,7 @@ module ForemanDatacenter
35
32
 
36
33
  def destroy
37
34
  if @device_module.destroy
38
- redirect_to inventory_device_url(id: @device_module.device_id),
39
- notice: 'Device module was successfully destroyed.'
35
+ process_success(success_msg: "Device module was successfully destroyed.", success_redirect: inventory_device_url(id: @device_module.device_id))
40
36
  else
41
37
  process_error object: @device_module
42
38
  end
@@ -33,8 +33,7 @@ module ForemanDatacenter
33
33
 
34
34
  def update
35
35
  if @device_type.update(device_type_params)
36
- redirect_to device_type_url(@device_type),
37
- notice: 'Device type was successfully updated'
36
+ process_success object: @device_type
38
37
  else
39
38
  process_error object: @device_type
40
39
  end
@@ -17,11 +17,8 @@ module ForemanDatacenter
17
17
 
18
18
  def show
19
19
  @device = ForemanDatacenter::Device.includes(
20
- power_ports: [:power_outlet, :device],
21
- power_outlets: [:device, :power_port],
22
- console_ports: [:console_server_port, :device],
23
- console_server_ports: [:console_port, :device],
24
- device_bays: [:installed_device],
20
+ power_ports: [:power_outlet],
21
+ console_ports: [:console_server_port],
25
22
  comments: [:user]
26
23
  ).find(params[:id])
27
24
  @comments = @device.comments
@@ -63,21 +60,10 @@ module ForemanDatacenter
63
60
  end
64
61
 
65
62
  def destroy
66
- unless params['object_only']
67
- if @device.destroy
68
- process_success success_redirect: "/datacenter/devices"
69
- else
70
- process_error object: @device
71
- end
63
+ if @device.destroy
64
+ process_success success_redirect: "/datacenter/devices"
72
65
  else
73
- if @device.host
74
- @device.host.destroy
75
- new_device_name = "Unassigned device (former: #{@device.name})"
76
- @device.update(name: new_device_name)
77
- process_success success_redirect: '/datacenter/devices', success_msg: 'Associated host deleted'
78
- else
79
- process_error success_redirect: '/datacenter/devices', error_msg: 'Associated host not found'
80
- end
66
+ process_error object: @device
81
67
  end
82
68
  end
83
69
 
@@ -110,7 +96,7 @@ module ForemanDatacenter
110
96
  @device.non_management_interfaces.
111
97
  where(id: params[:interfaces]).
112
98
  destroy_all
113
- redirect_to device_url(@device)
99
+ process_success(success_msg: "Selected interfaces were successfully destroyed.", success_redirect: device_url(id: @device))
114
100
  end
115
101
 
116
102
  def qr_code
@@ -121,11 +107,9 @@ module ForemanDatacenter
121
107
 
122
108
  def sync_interfaces_with_host
123
109
  if @device.sync_interfaces_with_host
124
- notice("Device successfully synchronized.")
125
- redirect_to device_url(@device)
110
+ process_success(success_msg: "Device successfully synchronized.", success_redirect: device_url(id: @device))
126
111
  else
127
- error("Unsuccessful synchronization.")
128
- redirect_to device_url(@device)
112
+ process_error(error_msg: "Unsuccessfully synchronization.", redirect: device_url(@device))
129
113
  end
130
114
  end
131
115
 
@@ -154,4 +138,3 @@ module ForemanDatacenter
154
138
  end
155
139
  end
156
140
  end
157
-
@@ -16,8 +16,7 @@ module ForemanDatacenter
16
16
  @management_device = ManagementDevice.new(management_device_params.merge(device_id: params[:device_id]))
17
17
 
18
18
  if @management_device.save
19
- redirect_to device_url(@management_device.device),
20
- notice: 'New management device was successfully created'
19
+ process_success(success_redirect: device_url(id: @management_device.device))
21
20
  else
22
21
  process_error object: @management_device
23
22
  end
@@ -25,8 +24,7 @@ module ForemanDatacenter
25
24
 
26
25
  def update
27
26
  if @management_device.update(management_device_params)
28
- redirect_to device_url(@management_device.device),
29
- notice: 'Management device was successfully updated'
27
+ process_success(success_redirect: device_url(id: @management_device.device))
30
28
  else
31
29
  process_error object: @management_device
32
30
  end
@@ -34,8 +32,7 @@ module ForemanDatacenter
34
32
 
35
33
  def destroy
36
34
  if @management_device.destroy
37
- redirect_to device_url(@management_device.device),
38
- notice: 'Management device was successfully destroyed'
35
+ process_success(success_redirect: device_url(id: @management_device.device))
39
36
  else
40
37
  process_error object: @management_device
41
38
  end
@@ -18,8 +18,7 @@ module ForemanDatacenter
18
18
  @power_outlet = PowerOutlet.new(power_outlet_params.merge(device_id: params[:device_id]))
19
19
 
20
20
  if @power_outlet.save
21
- redirect_to device_url(id: @power_outlet.device_id),
22
- notice: 'Power outlet was successfully created.'
21
+ process_success(success_redirect: device_url(id: @power_outlet.device_id))
23
22
  else
24
23
  process_error object: @power_outlet
25
24
  end
@@ -27,8 +26,7 @@ module ForemanDatacenter
27
26
 
28
27
  def update
29
28
  if @power_outlet.update(power_outlet_params)
30
- redirect_to device_url(id: @power_outlet.device_id),
31
- notice: 'Power outlet was successfully updated.'
29
+ process_success(success_redirect: device_url(id: @power_outlet.device_id))
32
30
  else
33
31
  process_error object: @power_outlet
34
32
  end
@@ -36,8 +34,7 @@ module ForemanDatacenter
36
34
 
37
35
  def destroy
38
36
  if @power_outlet.destroy
39
- redirect_to device_url(id: @power_outlet.device_id),
40
- notice: 'Power outlet was successfully destroyed.'
37
+ process_success(success_redirect: device_url(id: @power_outlet.device_id))
41
38
  else
42
39
  process_error object: @power_outlet
43
40
  end
@@ -52,14 +49,12 @@ module ForemanDatacenter
52
49
  @power_outlet,
53
50
  params[:power_port][:connection_status]
54
51
  )
55
- redirect_to device_url(id: @power_outlet.device_id),
56
- notice: 'Power outlet was successfully connected.'
52
+ process_success(success_msg: "Power outlet was successfully connected.", success_redirect: device_url(id: @power_outlet.device_id))
57
53
  end
58
54
 
59
55
  def disconnect
60
56
  @power_outlet.power_port.disconnect
61
- redirect_to device_url(id: @power_outlet.device_id),
62
- notice: 'Power outlet was successfully disconnected.'
57
+ process_success(success_msg: "Power outlet was successfully disconnected.", success_redirect: device_url(id: @power_outlet.device_id))
63
58
  end
64
59
 
65
60
  def for_device
@@ -24,8 +24,7 @@ module ForemanDatacenter
24
24
  @power_port = ForemanDatacenter::PowerPort.new(power_port_params.merge(device_id: params[:device_id]))
25
25
 
26
26
  if @power_port.save
27
- redirect_to device_url(id: @power_port.device_id),
28
- notice: 'Power port was successfully created.'
27
+ process_success(success_redirect: device_url(id: @power_port.device_id))
29
28
  else
30
29
  process_error object: @power_port
31
30
  end
@@ -33,8 +32,7 @@ module ForemanDatacenter
33
32
 
34
33
  def update
35
34
  if @power_port.update(power_port_params)
36
- redirect_to device_url(id: @power_port.device_id),
37
- notice: 'Power port was successfully updated.'
35
+ process_success(success_redirect: device_url(id: @power_port.device_id))
38
36
  else
39
37
  process_error object: @power_port
40
38
  end
@@ -42,8 +40,7 @@ module ForemanDatacenter
42
40
 
43
41
  def destroy
44
42
  if @power_port.destroy
45
- redirect_to device_url(id: @power_port.device_id),
46
- notice: 'Power port was successfully destroyed.'
43
+ process_success(success_redirect: device_url(id: @power_port.device_id))
47
44
  else
48
45
  process_error object: @power_port
49
46
  end
@@ -73,14 +70,12 @@ module ForemanDatacenter
73
70
  power_outlet,
74
71
  params[:power_port][:connection_status]
75
72
  )
76
- redirect_to device_url(id: @power_port.device_id),
77
- notice: 'Power port was successfully connected.'
73
+ process_success(success_msg: "Power port was successfully connected.", success_redirect: device_url(id: @power_port.device_id))
78
74
  end
79
75
 
80
76
  def disconnect
81
77
  @power_port.disconnect
82
- redirect_to device_url(id: @power_port.device_id),
83
- notice: 'Power port was successfully disconnected.'
78
+ process_success(success_msg: "Power port was successfully disconnected.", success_redirect: device_url(id: @power_port.device_id))
84
79
  end
85
80
  end
86
81
  end
@@ -59,7 +59,7 @@ module ForemanDatacenter
59
59
  end
60
60
 
61
61
  def racks
62
- @racks = @rack_group.racks.includes(:devices)
62
+ @racks = @rack_group.racks.includes(devices: [:device_role])
63
63
  process_error redirect: rack_groups_path(@rack_group), error_msg: 'Current Rack Group haven\'t any Racks.' if @racks.empty?
64
64
  end
65
65
 
@@ -51,8 +51,9 @@ module ForemanDatacenter
51
51
  end
52
52
 
53
53
  def racks
54
- @racks = @site.racks.includes(:devices)
55
- process_error redirect: site_path(@site), error_msg: 'Current site haven\'t any Racks.' if @racks.empty?
54
+ @rack_groups = @site.rack_groups.includes(racks: [devices: [:device_role]])
55
+ @ungrouped_racks = @site.racks.where(rack_group_id: nil)#.includes(:device_role)
56
+ process_error redirect: site_path(@site), error_msg: 'Current site haven\'t any Racks.' if (@rack_groups.empty? && @ungrouped_racks.empty?)
56
57
  end
57
58
 
58
59
  def move
@@ -23,7 +23,7 @@ module ForemanDatacenter
23
23
  scoped_search in: :second_interface, on: :name, complete_value: true, rename: :interface_b
24
24
 
25
25
  def first_device
26
- first_interface.device
26
+ self.try(:first_interface).try(:device)
27
27
  end
28
28
 
29
29
  def first_rack
@@ -35,7 +35,7 @@ module ForemanDatacenter
35
35
  end
36
36
 
37
37
  def second_device
38
- first_interface.device
38
+ self.try(:second_interface).try(:device)
39
39
  end
40
40
 
41
41
  def second_rack
@@ -14,12 +14,34 @@
14
14
  <% for port in @console_ports %>
15
15
  <tr>
16
16
  <td>
17
- <%= link_to port.console_server_port.device.name,
18
- device_path(port.console_server_port.device) %>
17
+ <% if port.console_server_port %>
18
+ <%= link_to port.console_server_port.device.name,
19
+ device_path(port.console_server_port.device) %>
20
+ <% else %>
21
+ <%= muted_text("Device not found", "span") %>
22
+ <% end %>
23
+ </td>
24
+ <td>
25
+ <% if port.console_server_port %>
26
+ <%= h port.console_server_port.name %>
27
+ <% else %>
28
+ <%= muted_text("Port not found", "span") %>
29
+ <% end %>
30
+ </td>
31
+ <td>
32
+ <% if port.device %>
33
+ <%= link_to port.device.name, device_path(port.device) %>
34
+ <% else %>
35
+ <%= muted_text("Device not found", "span") %>
36
+ <% end %>
37
+ </td>
38
+ <td>
39
+ <% if port %>
40
+ <%= h port.name %>
41
+ <% else %>
42
+ <%= muted_text("Port not found", "span") %>
43
+ <% end %>
19
44
  </td>
20
- <td><%= h port.console_server_port.name %></td>
21
- <td><%= link_to port.device.name, device_path(port.device) %></td>
22
- <td><%= h port.name %></td>
23
45
  </tr>
24
46
  <% end %>
25
47
  </tbody>
@@ -15,15 +15,35 @@
15
15
  <% for connection in @device_interface_connections %>
16
16
  <tr>
17
17
  <td>
18
- <%= link_to connection.first_device.name,
18
+ <% if connection.first_device %>
19
+ <%= link_to connection.first_device.name,
19
20
  device_path(connection.first_device) %>
21
+ <% else %>
22
+ <%= muted_text("Device not found", "span") %>
23
+ <% end %>
20
24
  </td>
21
- <td><%= h connection.first_interface.name %></td>
22
25
  <td>
26
+ <% if connection.first_device %>
27
+ <%= h connection.first_interface.name %>
28
+ <% else %>
29
+ <%= muted_text("Interface not found", "span") %>
30
+ <% end %>
31
+ </td>
32
+ <td>
33
+ <% if connection.second_device %>
23
34
  <%= link_to connection.second_device.name,
24
35
  device_path(connection.second_device) %>
36
+ <% else %>
37
+ <%= muted_text("Device not found", "span") %>
38
+ <% end %>
39
+ </td>
40
+ <td>
41
+ <% if connection.second_device %>
42
+ <%= h connection.second_interface.name %>
43
+ <% else %>
44
+ <%= muted_text("Interface not found", "span") %>
45
+ <% end %>
25
46
  </td>
26
- <td><%= h connection.second_interface.name %></td>
27
47
  </tr>
28
48
  <% end %>
29
49
  </tbody>
@@ -8,11 +8,24 @@
8
8
  <td><%= h interface.mac_address %></td>
9
9
  <td><%= h interface.ip_address %></td>
10
10
  <td>
11
- <%= link_to interface.connected_interface.device.name,
12
- device_path(interface.connected_interface.device) %>
11
+ <% if interface.connected_interface %>
12
+ <%= link_to interface.connected_interface.device.name,
13
+ device_path(interface.connected_interface.device) %>
14
+ <% else %>
15
+ <%= muted_text("Device not found", "span") %>
16
+ <% end %>
13
17
  </td>
14
18
  <td>
15
- <%= h interface.connected_interface.name %>
19
+ <% if interface.connected_interface %>
20
+ <%= h interface.connected_interface.name %>
21
+ <% else %>
22
+ <%= muted_text("Interface not found", "span") %>
23
+ <% end %>
24
+ </td>
25
+ <td>
26
+ <%= h interface.connection.id %>
27
+ -
28
+ <%= h interface.form_factor %>
16
29
  </td>
17
30
  <td></td>
18
31
  <td class="text-right">
@@ -56,6 +69,7 @@
56
69
  <td></td>
57
70
  <td class="text-muted">Not connected</td>
58
71
  <td></td>
72
+ <td></td>
59
73
  <td class="text-right">
60
74
  <%= link_to new_device_interface_device_interface_connection_path(interface),
61
75
  class: 'btn btn-success btn-xs', title: 'Connect' do %>
@@ -257,7 +257,7 @@
257
257
  <tr>
258
258
  <td><%= _("Console URL") %></td>
259
259
  <td>
260
- <%= link_to @device.console_url, "http://#{@device.console_url}", target: "_blank" %>
260
+ <%= link_to @device.console_url, "#{@device.console_url}", target: "_blank" %>
261
261
  </td>
262
262
 
263
263
  </tr>
@@ -12,14 +12,14 @@
12
12
  :class => 'btn btn-warning'
13
13
  ),
14
14
  display_fake_delete_if_authorized(
15
- hash_for_platform_path(id: @platform),
16
- class: 'btn btn-danger',
17
- id: 'init-modal',
18
- href: '#',
19
- data: { objecttype: 'platform',
20
- objectid: @platform.id,
21
- objectname: @platform.to_label,
22
- associatedobjects: associated_objects('platform') }
15
+ hash_for_platform_path(:id => @platform).merge(:auth_object => @platform, :authorizer => authorizer),
16
+ class: 'btn btn-danger',
17
+ id: 'init-modal',
18
+ href: '#',
19
+ data: { objecttype: 'platform',
20
+ objectid: @platform.id,
21
+ objectname: @platform.to_label,
22
+ associatedobjects: associated_objects('platform') }
23
23
  )
24
24
  help_path %>
25
25
 
@@ -1,19 +1,18 @@
1
1
  <% stylesheet 'foreman_datacenter/datacenter' %>
2
2
  <% stylesheet 'foreman_datacenter/device_roles' %>
3
+ <% stylesheet 'foreman_datacenter/horizontal-scroll' %>
3
4
 
4
5
  <% title h(@rack_group.name) %>
5
6
 
6
7
  <%= breadcrumbs(items: [{caption: _('Rack Group %s') % @rack_group.name, url: rack_group_path(@rack_group)}, {caption: _('Racks Overview')}]) %>
7
8
 
8
- <% @racks.in_groups_of(3).each do |g| %>
9
- <div class="row">
10
- <% g.compact.each do |rack| %>
11
- <div class="col-md-4">
12
- <!-- Devices -->
13
- <%= render "foreman_datacenter/racks/device_position", rack: rack %>
14
- </div>
15
- <% end %>
16
- </div>
17
- <% end %>
9
+ <div class="row horizontal-scroll">
10
+ <% @racks.each do |rack| %>
11
+ <div class="col-md-4">
12
+ <%= render "foreman_datacenter/racks/device_position", rack: rack %>
13
+ </div>
14
+ <% end %>
15
+ </div>
16
+
18
17
  <div><h6 class="text-right"><%= _("* side is not defined") %></h6></div>
19
18
  <div><h6 class="text-right"><%= _("** size is not defined") %></h6></div>
@@ -25,7 +25,7 @@
25
25
  <% end %>
26
26
  <% unless rack.unpositioned_devices.empty? %>
27
27
  <tr>
28
- <td class="col-md-1">Unpositioned Devices</td>
28
+ <td class="col-md-1">Unpositioned</br>Devices</td>
29
29
  <td class="col-md-4" style="text-align:center">
30
30
  <% rack.unpositioned_devices.each do |d| %>
31
31
  <div class="<%= "label " + d.device_role.color.downcase.gsub(" ","") %>" style="border-radius:40px;border:0px;">&nbsp;&nbsp;</div>
@@ -1,17 +1,36 @@
1
1
  <% stylesheet 'foreman_datacenter/datacenter' %>
2
2
  <% stylesheet 'foreman_datacenter/device_roles' %>
3
+ <% stylesheet 'foreman_datacenter/horizontal-scroll' %>
3
4
 
4
5
  <% title h(@site.name) %>
5
6
 
6
- <% @racks.in_groups_of(3).each do |g| %>
7
- <div class="row">
8
- <% g.compact.each do |rack| %>
7
+ <%= breadcrumbs(items: [{caption: _('Site %s') % @site.name, url: site_path(@site)}, {caption: _('Racks Overview')}]) %>
8
+
9
+ <% unless @rack_groups.empty? %>
10
+ <% @rack_groups.each do |rg| %>
11
+ <h2>
12
+ <%= rg.name %>
13
+ </h2>
14
+ <div class="row horizontal-scroll">
15
+ <% rg.racks.each do |rack| %>
16
+ <div class="col-md-4">
17
+ <%= render "foreman_datacenter/racks/device_position", rack: rack %>
18
+ </div>
19
+ <% end %>
20
+ </div>
21
+ <% end %>
22
+ <% end %>
23
+
24
+ <% unless @ungrouped_racks.empty? %>
25
+ <h2>Ungrouped Racks</h2>
26
+ <div class="row horizontal-scroll">
27
+ <% @ungrouped_racks.each do |rack| %>
9
28
  <div class="col-md-4">
10
- <!-- Devices -->
11
29
  <%= render "foreman_datacenter/racks/device_position", rack: rack %>
12
30
  </div>
13
31
  <% end %>
14
32
  </div>
15
33
  <% end %>
34
+
16
35
  <div><h6 class="text-right"><%= _("* side is not defined") %></h6></div>
17
36
  <div><h6 class="text-right"><%= _("** size is not defined") %></h6></div>
@@ -1,4 +1,4 @@
1
- class AddLocationIdAndOrganizationIdColumnsToDevices < ActiveRecord::Migration
1
+ class AddLocationIdAndOrganizationIdColumnsToDevices < ActiveRecord::Migration[4.2]
2
2
  def change
3
3
  add_column :devices, :organization_id, :integer
4
4
  add_column :devices, :location_id, :integer
@@ -1,3 +1,3 @@
1
1
  module ForemanDatacenter
2
- VERSION = '1.20.4'.freeze
2
+ VERSION = '1.20.6'.freeze
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: foreman_datacenter
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.20.4
4
+ version: 1.20.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Pavel Ivanov
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2019-06-25 00:00:00.000000000 Z
12
+ date: 2019-08-15 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: prawn
@@ -90,6 +90,7 @@ files:
90
90
  - app/assets/stylesheets/foreman_datacenter/device_interface_connections.css
91
91
  - app/assets/stylesheets/foreman_datacenter/device_roles.css
92
92
  - app/assets/stylesheets/foreman_datacenter/devices.css
93
+ - app/assets/stylesheets/foreman_datacenter/horizontal-scroll.css
93
94
  - app/assets/stylesheets/foreman_datacenter/modal.css
94
95
  - app/assets/stylesheets/foreman_datacenter/title_filter.css
95
96
  - app/controllers/api/v2/foreman_datacenter/base_controller.rb
@@ -593,7 +594,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
593
594
  - !ruby/object:Gem::Version
594
595
  version: '0'
595
596
  requirements: []
596
- rubygems_version: 3.0.2
597
+ rubygems_version: 3.0.3
597
598
  signing_key:
598
599
  specification_version: 4
599
600
  summary: A plugin that lets you document your servers in a datacenter