foreman_datacenter 0.1.7 → 0.1.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: df3c278d9ecfa81fbb1142a10aaf00ecf23edee6
|
4
|
+
data.tar.gz: ff8b623eceefbdb49ff3ab107dbcd05bd5d54a1f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d14004f3e7e39d7b05ef4c83d6b2d08671a793d3123459fed3c9afa777eb897c8df3bb633baa6b4d05de812eb7930a5f520537b9cc2bb7cda66b48bab1377760
|
7
|
+
data.tar.gz: 64a9f1c54c0650159ce15f5b3195cc1621b4feed90bfe371c093fb61f8c1c1dd65caea55b3301a4a67dd77e8cc29b2f7d723985a275e4591b8d726dfbabaf566
|
@@ -1,8 +1,13 @@
|
|
1
|
+
require 'rqrcode'
|
2
|
+
require 'prawn'
|
3
|
+
require 'prawn/measurement_extensions'
|
4
|
+
|
1
5
|
module ForemanDatacenter
|
2
6
|
class DevicesController < ApplicationController
|
3
7
|
include Foreman::Controller::AutoCompleteSearch
|
4
8
|
|
5
|
-
before_action :set_device, only: [:update, :destroy, :inventory,
|
9
|
+
before_action :set_device, only: [:update, :destroy, :inventory,
|
10
|
+
:destroy_interfaces, :qr_code]
|
6
11
|
|
7
12
|
def index
|
8
13
|
begin
|
@@ -86,6 +91,12 @@ module ForemanDatacenter
|
|
86
91
|
redirect_to device_url(@device)
|
87
92
|
end
|
88
93
|
|
94
|
+
def qr_code
|
95
|
+
send_data(generate_qr_code(@device),
|
96
|
+
filename: "#{@device.name_without_fqdn}.qr.pdf",
|
97
|
+
type: 'application/pdf')
|
98
|
+
end
|
99
|
+
|
89
100
|
private
|
90
101
|
|
91
102
|
def set_device
|
@@ -105,5 +116,20 @@ module ForemanDatacenter
|
|
105
116
|
@device.populate_from_host(host)
|
106
117
|
end
|
107
118
|
end
|
119
|
+
|
120
|
+
def generate_qr_code(device)
|
121
|
+
name = device.name_without_fqdn
|
122
|
+
width = name.size * 5 + 40
|
123
|
+
qr_code = RQRCode::QRCode.new(device_url(device))
|
124
|
+
png = qr_code.as_png(border_modules: 1, size: 240).to_s
|
125
|
+
document = Prawn::Document.new(page_size: [36, width * 2], page_layout: :landscape, margin: 0) do
|
126
|
+
font_size(10)
|
127
|
+
image(StringIO.new(png), width: 36, scale: 1)
|
128
|
+
text_box(name, at: [38, 22])
|
129
|
+
image(StringIO.new(png), width: 36, scale: 1, at: [width, 36])
|
130
|
+
text_box(name, at: [width + 38, 22])
|
131
|
+
end
|
132
|
+
document.render
|
133
|
+
end
|
108
134
|
end
|
109
135
|
end
|
@@ -58,6 +58,7 @@ module ForemanDatacenter
|
|
58
58
|
delegate :manufacturer_id, :is_console_server, :is_pdu, :is_network_device,
|
59
59
|
to: :device_type, allow_nil: true
|
60
60
|
delegate :console_url, :login, :password, to: :management_device
|
61
|
+
delegate :hostname, to: :host, allow_nil: true
|
61
62
|
|
62
63
|
def mac_address
|
63
64
|
ipmi_interface.try(:mac_address) || mgmt_interface.try(:mac_address)
|
@@ -107,6 +108,11 @@ module ForemanDatacenter
|
|
107
108
|
self.serial = serial.value if serial
|
108
109
|
end
|
109
110
|
|
111
|
+
def name_without_fqdn
|
112
|
+
match = name.match(/^([^.]*)/)
|
113
|
+
match[1] if match
|
114
|
+
end
|
115
|
+
|
110
116
|
private
|
111
117
|
|
112
118
|
def create_interfaces
|
@@ -1,27 +1,34 @@
|
|
1
1
|
<% javascript 'foreman_datacenter/ajax' %>
|
2
2
|
<% javascript 'foreman_datacenter/management_devices' %>
|
3
3
|
|
4
|
-
|
4
|
+
<div class="row">
|
5
|
+
<div class="col-md-8">
|
6
|
+
<h1>
|
7
|
+
<% if @device.host %>
|
8
|
+
<%= link_to @device.name, host_path(@device.host) %>
|
9
|
+
<% else %>
|
10
|
+
<%= @device.name %>
|
11
|
+
<% end %></h1>
|
12
|
+
</div>
|
13
|
+
</div>
|
5
14
|
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
),
|
24
|
-
help_path %>
|
15
|
+
<div class="row">
|
16
|
+
<div class="col-md-offset-4 col-md-8 title_action">
|
17
|
+
<div class="btn-toolbar pull-right">
|
18
|
+
<%= link_to 'Edit', edit_device_path(@device), class: 'btn btn-warning' %>
|
19
|
+
<%= link_to 'Delete', device_path(@device), class: 'btn btn-danger',
|
20
|
+
action: :destroy, data: { confirm: 'Are you sure?' } %>
|
21
|
+
<%= link_to 'Import from hosts',
|
22
|
+
@device.host ?
|
23
|
+
edit_device_path(@device, host_id: @device.host.id) :
|
24
|
+
import_to_device_path(target_device_id: @device.id),
|
25
|
+
class: 'btn btn-success' %>
|
26
|
+
<%= link_to 'Download QR PDF file',
|
27
|
+
qr_code_device_path(@device),
|
28
|
+
class: 'btn btn-default' %>
|
29
|
+
</div>
|
30
|
+
</div>
|
31
|
+
</div>
|
25
32
|
|
26
33
|
<ul class="nav nav-tabs">
|
27
34
|
<li class="active"><%= link_to 'Info', device_path(@device) %></li>
|
data/config/routes.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: foreman_datacenter
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Pavel Ivanov
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-10-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: deface
|
@@ -24,6 +24,34 @@ dependencies:
|
|
24
24
|
- - '>='
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: prawn
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ~>
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '2.1'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ~>
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '2.1'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rqrcode
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ~>
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: 0.10.1
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ~>
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: 0.10.1
|
27
55
|
- !ruby/object:Gem::Dependency
|
28
56
|
name: rubocop
|
29
57
|
requirement: !ruby/object:Gem::Requirement
|