foreman_datacenter 0.1.16 → 0.1.17

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: 2a8029e4df7adafcda4d1ade53cb167ce038883c
4
- data.tar.gz: 90dc1540ae5df4f76c33236149316d5d3da4224b
3
+ metadata.gz: 4bfcfe691d56b5274d821b993d211882e4204c03
4
+ data.tar.gz: 441cbf172257fca2c0570fa6c611f84d48dcf5fe
5
5
  SHA512:
6
- metadata.gz: fa814dc20d737cf509ffe3b60ddbb2975097338eb1c1e634e4d6161da0c4aab8d77131fe786cbd5abba5687f5baa3470ef49bc83b8d4e6da4d3620387dc0de84
7
- data.tar.gz: 5d530d669dde1797c3c65c4420be55f0436abbfcb9ae66c6c4d17797d21e45779f975d9b224600c4bfd550915663a7fade4016364c7f1ca28b1669b0c05605a2
6
+ metadata.gz: 232ebc810f7c3dda06f939eea57f8b6989ccdf4b53437eb7c175491451a6539511bfb9614a9010b8f9d0e1ce44b87d63c93180f0ebc61d842bdf77d917430b09
7
+ data.tar.gz: 37ffaa904453442a790f5cf17d9ee6d112eab189c292c4f228719d818f27f573c6fe0489a0a7d3bc87c107a720bbababf5c3d4921b9c6dc65c6c0cccbc8517fb
data/README.md CHANGED
@@ -1,19 +1,34 @@
1
- # ForemanDatacenter
1
+ # Foreman Datacenter Plugin
2
2
 
3
- *Introdction here*
3
+ This plugin lets you document your physical servers across multiple datacenters. It documents racks, devices, interfaces, connections between machines (servers or switches).
4
+
5
+ Foreman Datacenter plugin documents following:
6
+
7
+ * **Sites** - contains all physical locations (datacenters) where servers are stored
8
+ * **Racks** - contains all racks across all datacenters
9
+ * **Rack groups** - group of racks, e.g. one room where this group of racks is stored
10
+ * **Devices** - contains all devices (switches, servers, etc.)
11
+ * **Device types** - contains all device types (e.g. HP ProLiant DL180 G6)
12
+ * **Device roles** - e.g. server, switch, etc.
13
+ * **Manufactures** - contains all manufacturers (HP, Dell, etc.)
14
+ * **Platforms** - e.g. ipmi, mgmt interface, etc.
15
+ * **Console connections** - lists all e.g. RS232 connections
16
+ * **Power connections** - lists all connections of power cables
17
+ * **Interface connections** - lists all connections between interfaces
4
18
 
5
19
  ## Installation
6
20
 
7
- See [How_to_Install_a_Plugin](http://projects.theforeman.org/projects/foreman/wiki/How_to_Install_a_Plugin)
8
- for how to install Foreman plugins
21
+ See [Plugins Installation](https://theforeman.org/plugins/#2.Installation) for how to install Foreman plugins.
9
22
 
10
23
  ## Usage
11
24
 
12
- *Usage here*
25
+ ### Create a device type
26
+
27
+ Here you can create a particular device type, for example a model of switch and then create all interfaces only here, so when you create a particular switch, it will have all the desired interfaces. Just click on **Device types** -> **New device type**, fill in information and save. Then click on the desired device type and you can add all the interfaces here.
13
28
 
14
- ## TODO
29
+ ### Create a device
15
30
 
16
- *Todo list here*
31
+ You can either just create a device - then you have to create first Manufacturer, Device Type, Device Role, Platform; or you can import device from Puppet facts (this feature is still in development phase) - you just click **Devices** -> **Import from host** and then will search your host and click **Import to device**. Then you will get a page with additional information about the machine to be filled like location, position in rack, etc. Once device is created, you can list it in **Devices** section and when you click on this device, you can fill in additional information, e.g. connect its interfaces to a switch, etc.
17
32
 
18
33
  ## Contributing
19
34
 
@@ -21,18 +36,12 @@ Fork and send a Pull Request. Thanks!
21
36
 
22
37
  ## Copyright
23
38
 
24
- Copyright (c) *year* *your name*
39
+ Copyright (c) *cloudevelops, Inc.*
25
40
 
26
- This program is free software: you can redistribute it and/or modify
27
- it under the terms of the GNU General Public License as published by
28
- the Free Software Foundation, either version 3 of the License, or
29
- (at your option) any later version.
41
+ Authors: *Pavel Ivanov* and *Eugene Loginov*
30
42
 
31
- This program is distributed in the hope that it will be useful,
32
- but WITHOUT ANY WARRANTY; without even the implied warranty of
33
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
34
- GNU General Public License for more details.
43
+ This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
35
44
 
36
- You should have received a copy of the GNU General Public License
37
- along with this program. If not, see <http://www.gnu.org/licenses/>.
45
+ This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
38
46
 
47
+ You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.
@@ -107,7 +107,7 @@ module ForemanDatacenter
107
107
  params[:device].permit(:device_type_id, :device_role_id, :platform_id,
108
108
  :name, :serial, :rack_id, :position, :side,
109
109
  :face, :status, :primary_ip4, :primary_ip6, :comments,
110
- :host_id)
110
+ :host_id, :size)
111
111
  end
112
112
 
113
113
  def populate_from_host
@@ -114,6 +114,16 @@ module ForemanDatacenter
114
114
  match[1] if match
115
115
  end
116
116
 
117
+ def rack_positions
118
+ result = []
119
+ if size.nil?
120
+ result << position
121
+ else
122
+ size.times{ |p| result << (position + p) }
123
+ end
124
+ return result
125
+ end
126
+
117
127
  private
118
128
 
119
129
  def create_interfaces
@@ -172,10 +182,5 @@ module ForemanDatacenter
172
182
  end
173
183
  end
174
184
 
175
- # def positions
176
- # result = []
177
- # size.times{ |p| result << (position + p) }
178
- # return result
179
- # end
180
185
  end
181
186
  end
@@ -14,8 +14,20 @@ module ForemanDatacenter
14
14
  devices.where(position: position).to_a
15
15
  end
16
16
 
17
+ # def positioned_devices
18
+ # height.downto(1).map { |position| [position, device_at(position)] }
19
+ # end
20
+
17
21
  def positioned_devices
18
- height.downto(1).map { |position| [position, device_at(position)] }
22
+ devs = devices.map{ |d| [d.positions, [d]] }
23
+ result = []
24
+ i = 1
25
+ loop do
26
+ current_device = devs.select{ |d| d[0].include?(i) }
27
+ current_device == [] ? (result << [[i],[]]; i +=1 ) : (result << current_device[0]; i = current_device[0][0].last + 1)
28
+ break if i > height
29
+ end
30
+ return result
19
31
  end
20
32
  end
21
33
  end
@@ -3,9 +3,9 @@
3
3
  <div class="panel-heading"><strong>Devices</strong></div>
4
4
  <table class="table table-hover panel-body">
5
5
  <tbody>
6
- <% @rack.positioned_devices.each do |position, devices| %>
6
+ <% @rack.positioned_devices.each do |positions, devices| %>
7
7
  <tr>
8
- <td class="col-md-1"><%= position %>U</td>
8
+ <td class="col-md-1"><%= raw(positions.map{|p| "#{p}U"}.join("<br />")) %></td>
9
9
  <td class="col-md-4">
10
10
  <% unless devices.empty? %>
11
11
  <% devices.each do |d| %>
@@ -0,0 +1,28 @@
1
+ <div class="col-md-5">
2
+ <div class="panel panel-default">
3
+ <div class="panel-heading"><strong>Devices</strong></div>
4
+ <table class="table table-hover panel-body">
5
+ <tbody>
6
+ <% @rack.positioned_devices.each do |position, devices| %>
7
+ <tr>
8
+ <td class="col-md-1"><%= position %>U</td>
9
+ <td class="col-md-4">
10
+ <% unless devices.empty? %>
11
+ <% devices.each do |d| %>
12
+ <div class="<%= "text-" + ((d.side == "full" or d.side.nil?) ? "center" : "right") + " pull-" + ((d.side == "full" or d.side.nil?) ? "center" : d.side) %>">
13
+ <%= link_to d.name, device_path(d) %>
14
+ <% if d.side.nil? %>
15
+ *
16
+ <% end %>
17
+ </div>
18
+ <% end %>
19
+ <% end %>
20
+ </td>
21
+ </tr>
22
+ <% end %>
23
+ </tbody>
24
+ </table>
25
+ </div>
26
+ <div><h6 class="text-right">* side is not defined</h6></div>
27
+ </div>
28
+
@@ -1,3 +1,3 @@
1
1
  module ForemanDatacenter
2
- VERSION = '0.1.16'.freeze
2
+ VERSION = '0.1.17'.freeze
3
3
  end
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.16
4
+ version: 0.1.17
5
5
  platform: ruby
6
6
  authors:
7
7
  - Pavel Ivanov
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-09-19 00:00:00.000000000 Z
11
+ date: 2017-09-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: deface
@@ -272,6 +272,7 @@ files:
272
272
  - app/views/foreman_datacenter/rack_groups/new.html.erb
273
273
  - app/views/foreman_datacenter/rack_groups/show.html.erb
274
274
  - app/views/foreman_datacenter/racks/_device_position.html.erb
275
+ - app/views/foreman_datacenter/racks/_device_position.html.erb.back
275
276
  - app/views/foreman_datacenter/racks/_form.html.erb
276
277
  - app/views/foreman_datacenter/racks/_rack_groups.html.erb
277
278
  - app/views/foreman_datacenter/racks/edit.html.erb