foreman_datacenter 1.20.4 → 1.20.6

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.
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