foreman_datacenter 0.1.7 → 0.1.8
Sign up to get free protection for your applications and to get access to all the features.
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
|