foreman_one 0.2 → 0.4

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,15 +1,7 @@
1
1
  ---
2
- !binary "U0hBMQ==":
3
- metadata.gz: !binary |-
4
- M2JkOWJjM2ViYjIxZGE3YjZjOTFjNTA4NjkxZmVkZTU2MDJjMjU5Nw==
5
- data.tar.gz: !binary |-
6
- MjMyOGUzZWE2YTI1MDdhMDIwOTIwZmQwNmM1MWZjYWRkMjZmMGUwOA==
2
+ SHA1:
3
+ metadata.gz: df5b26c25658b73795a6879ca77d068b7a8a8086
4
+ data.tar.gz: 092656a76deeb1b126120ca5428c8ad6913acf87
7
5
  SHA512:
8
- metadata.gz: !binary |-
9
- ZDBhZjZkNmM3ZTQ3MTJiMjc3ZTQxNGM2NWMyOTAxZTY3MTUyOTc3MmM4NDBh
10
- ZWZjYWFiMDRlN2Q5MWFlZDA3ZDc1NWFiZTc0OWFmNzQ3ZDExNTdlNGY1NjE5
11
- NzgxZTQyMTY5YjIzMWU2ZmE4NjFjNjk3ZmZkYzE4Y2FiMDA5MWI=
12
- data.tar.gz: !binary |-
13
- MDQ2ZjllMWU0MDMxOWNlNmZlYWQ4ZjlmZWVjY2RiZWQwOTExYzFkNTMxMDBk
14
- OWQ5MWM1YzJjMTk4Mzc1YmE1MTg3YWJkYzliYjU2NDQ2MjY4NmY4YmQ2ZDQ5
15
- YWQwZGEzOGU2MTI2NjlkZTA3MzhhZDc4YWNkOWZhZjYxODdlNGU=
6
+ metadata.gz: cbeb50ae5d2575a571c8f6c106ae08951753ad924f496fea84c7e91532960e2f31634f84f7375239fbbc066672f133040e7cec3852dbf96715b8f2a210498368
7
+ data.tar.gz: 2973dd8006cd5b28012921f8760177f7b514c87365be61064c0c73f7b31ceed95c55f8c5c0d9830c081401e60c1552fb44c859c9cab81159db49d1def2a929c1
data/README.md CHANGED
@@ -15,12 +15,15 @@ The gem name is "foreman_one".
15
15
  | Foreman Version | Plugin Version |
16
16
  | ---------------:| --------------:|
17
17
  | >= 1.5 | 0.1 |
18
+ | >= 1.8 | 0.3 |
18
19
 
19
- ## Latest code
20
+ ## Latest code (recommended)
20
21
 
21
- You can get the develop branch of the plugin by specifying your Gemfile in this way:
22
+ To use foreman-one with newer Versions of TheForeman >=1.8 you should add the
23
+ following lines to your Gemfile.
22
24
 
23
- gem 'foreman_one', :git => "https://github.com/netways/foreman-one.git"
25
+ gem 'foreman_one', :git => "https://github.com/theforeman/foreman-one.git"
26
+ gem "fog", :git => "https://github.com/netways/fog.git", :branch => "net-v1.33.0"
24
27
 
25
28
  # Copyright
26
29
 
@@ -0,0 +1,29 @@
1
+ module FogExtensions
2
+ module OpenNebula
3
+ module Server
4
+ extend ActiveSupport::Concern
5
+
6
+ include ActionView::Helpers::NumberHelper
7
+
8
+ def vminterfaces
9
+ interfaces
10
+ end
11
+
12
+ def select_nic(fog_nics, nic)
13
+ fog_nics.detect {|fn| fn.vnet == nic.compute_attributes['vnetid']} # grab any nic on the same network
14
+ end
15
+
16
+ def vminterfaces_attributes=(attributes)
17
+ true
18
+ end
19
+
20
+ def template_id
21
+ ""
22
+ end
23
+
24
+ def vm_description
25
+ _("%{cpus} CPUs and %{memory} memory") % {:cpus => cpu, :memory => number_to_human_size(memory.to_i)}
26
+ end
27
+ end
28
+ end
29
+ end
@@ -5,12 +5,12 @@ module ForemanOne
5
5
  validates :user, :password, :presence => true
6
6
  validates :url, :format => { :with => URI.regexp }
7
7
 
8
- def provider_friendly_name
8
+ def self.provider_friendly_name
9
9
  "OpenNebula"
10
10
  end
11
11
 
12
12
  def provided_attributes
13
- super.merge({ :mac => :vm_mac_address })
13
+ super.merge({ :mac => :mac })
14
14
  end
15
15
 
16
16
  def self.model_name
@@ -30,18 +30,17 @@ module ForemanOne
30
30
  end
31
31
 
32
32
  def interfaces
33
- #client.interfaces rescue []
34
- []
33
+ vm.interfaces
35
34
  end
35
+
36
36
  def vminterfaces
37
- #client.interfaces rescue []
38
- []
37
+ interfaces
39
38
  end
40
39
 
41
40
  def networks
42
41
  client.networks rescue []
43
42
  end
44
-
43
+
45
44
 
46
45
  def flavors
47
46
  client.flavors
@@ -66,8 +65,8 @@ module ForemanOne
66
65
  vm.flavor.nic = [] unless vm.flavor.nic.is_a? Array
67
66
 
68
67
  #INTERFACES {"new_interfaces"=>{"vnetid"=>"0", "_delete"=>"", "model"=>"virtio"}, "new_1398239695352"=>{"vnetid"=>"2", "_delete"=>"", "model"=>"virtio"}, "new_1398239700415"=>{"vnetid"=>"2", "_delete"=>"", "model"=>"virtio"}, "new_1398239705632"=>{"vnetid"=>"0", "_delete"=>"", "model"=>"e1000"}}
69
- logger.info "INTERFACES #{args[:vminterfaces_attributes].inspect}"
70
- nics = args[:vminterfaces_attributes].values
68
+ logger.debug "NEW #{args[:interfaces_attributes].inspect}"
69
+ nics = args[:interfaces_attributes].values
71
70
  if nics.is_a? Array then
72
71
  nics.each do |nic|
73
72
  unless (nic["vnetid"].empty? || nic["model"].empty?)
@@ -76,10 +75,11 @@ module ForemanOne
76
75
  end
77
76
  end
78
77
 
79
- logger.info "VM: #{vm.inspect}"
80
- logger.info "FLAVOR: #{vm.flavor.inspect}"
81
- logger.info "NIC: #{vm.flavor.nic.inspect}"
82
- logger.info "FLAVORtos: #{vm.flavor.to_s}"
78
+ logger.debug "VM: #{vm.inspect}"
79
+ logger.debug "FLAVOR: #{vm.flavor.inspect}"
80
+ logger.debug "NIC: #{vm.flavor.nic.inspect}"
81
+ logger.debug "FLAVORto_s: #{vm.flavor.to_s}"
82
+
83
83
  vm.save
84
84
  rescue ::OpenNebula::Error => e
85
85
  logger.debug "OpenNebula error: #{e.message}\n " + e.backtrace.join("\n ")
@@ -115,13 +115,8 @@ module ForemanOne
115
115
  false
116
116
  end
117
117
 
118
- # def associated_host(vm)
119
- # Host.my_hosts.where(:ip => [vm.public_ip_address, vm.private_ip_address]).first
120
- # end
121
-
122
118
  def associated_host(vm)
123
- #Host.my_hosts.where(:mac => [vm.vm_mac_address]).first
124
- Host.authorized(:view_hosts, Host).where(:mac => vm.vm_mac_address).first
119
+ associate_by("mac", vm.vm_mac_address)
125
120
  end
126
121
 
127
122
  def new_vminterface attr={}
@@ -135,13 +130,8 @@ module ForemanOne
135
130
  @client ||= ::Fog::Compute.new({:provider => 'OpenNebula', :opennebula_username => user, :opennebula_password => password, :opennebula_endpoint => url})
136
131
  end
137
132
 
138
-
139
133
  def vm_instance_defaults
140
- super.merge(
141
- :b0e => "foob0e",
142
- :foob0e => "b0e"
143
- )
134
+ super
144
135
  end
145
-
146
136
  end
147
137
  end
@@ -1,20 +1,4 @@
1
1
  <%= select_f f, :template_id, compute_resource.flavors, :id, :to_label, {}, :label => _('Templates') %>
2
- <%= selectable_f f, :vcpu, 1..8, { :include_blank => _("Template default")}, :label => _('VCPUs') %>
3
- <%= selectable_f f, :memory,[512, 1024, 2048, 4096] , { :include_blank => _("Template default")}, :class => "col-md-2", :label => _('Memory') %>
2
+ <%= selectable_f f, :vcpu, 1..32, { :include_blank => _("Template default")}, :label => _('VCPUs') %>
3
+ <%= selectable_f f, :memory,[512, 1024, 2048, 4096, 8192, 16384, 32768, 65536] , { :include_blank => _("Template default")}, :class => "col-md-2", :label => _('Memory') %>
4
4
  <%= select_f f, :gid, compute_resource.groups, :id, :to_label, { :include_blank => _("User default")}, :label => _('One Group') %>
5
-
6
- <!--NICS -->
7
- <div class="children_fields">
8
- <%= new_child_fields_template(f, :vminterfaces, {
9
- :object => compute_resource.new_vminterface,
10
- :partial => 'compute_resources_vms/form/one/network', :form_builder_attrs => { :compute_resource => compute_resource } }) %>
11
- <%= field_set_tag "Virtual Network", :id => "network_vminterfaces", :title => _('Networks') do %>
12
- <%= f.fields_for :vminterfaces do |i| %>
13
- <%= render 'compute_resources_vms/form/one/network', :f => i, :compute_resource => compute_resource %>
14
- <% end %>
15
- <%= add_child_link '+ ' + _("Add Interface"), :vminterfaces, { :class => "info disable-unsupported", :title => _('add new network interface') } %>
16
- <% end %>
17
- </div>
18
-
19
-
20
-
@@ -0,0 +1,5 @@
1
+ <%= select_f f, :template_id, compute_resource.flavors, :id, :to_label, {}, :label => _('Templates') %>
2
+ <%= selectable_f f, :vcpu, 1..8, { :include_blank => _("Template default")}, :label => _('VCPUs') %>
3
+ <%= selectable_f f, :memory,[512, 1024, 2048, 4096] , { :include_blank => _("Template default")}, :class => "col-md-2", :label => _('Memory') %>
4
+ <%= select_f f, :gid, compute_resource.groups, :id, :to_label, { :include_blank => _("User default")}, :label => _('One Group') %>
5
+
@@ -1,6 +1,6 @@
1
1
  require 'fast_gettext'
2
2
  require 'gettext_i18n_rails'
3
- require 'fog'
3
+ require 'fog/opennebula'
4
4
 
5
5
  module ForemanOne
6
6
  #Inherit from the Rails module of the parent app (Foreman), not the plugin.
@@ -16,11 +16,24 @@ module ForemanOne
16
16
 
17
17
  initializer 'foreman_one.register_plugin', :after=> :finisher_hook do |app|
18
18
  Foreman::Plugin.register :foreman_one do
19
- requires_foreman '> 1.4'
19
+ requires_foreman '>= 1.8'
20
20
  # Register OpenNebula compute resource in foreman
21
21
  compute_resource ForemanOne::One
22
22
  end
23
23
  end
24
24
 
25
+ config.to_prepare do
26
+ begin
27
+ # extend fog opennebula server/
28
+ require 'fog/opennebula/models/compute/server'
29
+ require File.expand_path('../../../app/models/concerns/fog_extensions/opennebula/server', __FILE__)
30
+
31
+ Fog::Compute::OpenNebula::Server.send(:include, ::FogExtensions::OpenNebula::Server)
32
+ ::HostsHelper.send(:include, ForemanOne::HostHelperExtensions)
33
+ rescue => e
34
+ puts "Foreman-One: skipping engine hook (#{e.to_s})"
35
+ end
36
+ end
37
+
25
38
  end
26
39
  end
@@ -1,3 +1,3 @@
1
1
  module ForemanOne
2
- VERSION = "0.2"
2
+ VERSION = "0.4"
3
3
  end
metadata CHANGED
@@ -1,55 +1,41 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: foreman_one
3
3
  version: !ruby/object:Gem::Version
4
- version: '0.2'
4
+ version: '0.4'
5
5
  platform: ruby
6
6
  authors:
7
7
  - NETWAYS Managed Services GmbH
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-08-12 00:00:00.000000000 Z
11
+ date: 2015-12-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ! '>='
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
19
  version: '0'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ! '>='
24
+ - - ">="
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
- - !ruby/object:Gem::Dependency
28
- name: fog
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - ! '>='
32
- - !ruby/object:Gem::Version
33
- version: 1.23.0
34
- type: :runtime
35
- prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - ! '>='
39
- - !ruby/object:Gem::Version
40
- version: 1.23.0
41
27
  - !ruby/object:Gem::Dependency
42
28
  name: opennebula
43
29
  requirement: !ruby/object:Gem::Requirement
44
30
  requirements:
45
- - - ! '>='
31
+ - - ">="
46
32
  - !ruby/object:Gem::Version
47
33
  version: 4.4.0
48
34
  type: :runtime
49
35
  prerelease: false
50
36
  version_requirements: !ruby/object:Gem::Requirement
51
37
  requirements:
52
- - - ! '>='
38
+ - - ">="
53
39
  - !ruby/object:Gem::Version
54
40
  version: 4.4.0
55
41
  description: Provision and manage OpenNebula VMs from Foreman
@@ -62,12 +48,13 @@ files:
62
48
  - LICENSE
63
49
  - README.md
64
50
  - Rakefile
51
+ - app/models/concerns/fog_extensions/opennebula/server.rb
65
52
  - app/models/foreman_one/one.rb
66
53
  - app/views/compute_resources/form/_one.html.erb
67
54
  - app/views/compute_resources/show/_one.html.erb
68
55
  - app/views/compute_resources_vms/form/_one.html.erb
56
+ - app/views/compute_resources_vms/form/one/_base.html.erb
69
57
  - app/views/compute_resources_vms/form/one/_network.html.erb
70
- - app/views/compute_resources_vms/form/one/_volume.html.erb
71
58
  - app/views/compute_resources_vms/index/_one.html.erb
72
59
  - app/views/compute_resources_vms/show/_one.html.erb
73
60
  - lib/foreman_one.rb
@@ -87,21 +74,20 @@ require_paths:
87
74
  - lib
88
75
  required_ruby_version: !ruby/object:Gem::Requirement
89
76
  requirements:
90
- - - ! '>='
77
+ - - ">="
91
78
  - !ruby/object:Gem::Version
92
79
  version: '0'
93
80
  required_rubygems_version: !ruby/object:Gem::Requirement
94
81
  requirements:
95
- - - ! '>='
82
+ - - ">="
96
83
  - !ruby/object:Gem::Version
97
84
  version: '0'
98
85
  requirements: []
99
86
  rubyforge_project:
100
- rubygems_version: 2.2.2
87
+ rubygems_version: 2.4.5.1
101
88
  signing_key:
102
89
  specification_version: 4
103
90
  summary: Provision and manage OpenNebula VMs from Foreman
104
91
  test_files:
105
92
  - test/test_helper.rb
106
93
  - test/foreman_one_test.rb
107
- has_rdoc:
@@ -1,9 +0,0 @@
1
- <div class="fields">
2
- <div class="form-group">
3
- <%= selectable_f f, :pool_name, compute_resource.storage_pools.map(&:name), { }, :class => "col-md-2", :label => _("Storage pool") %>
4
- <%= text_f f, :capacity, :class => "col-md-2", :label => _("Size (GB)"), :onchange => 'capacity_edit(this)' %>
5
- <%= allocation_text_f f %>
6
- <%= select_f f, :format_type, %w[RAW QCOW2],:downcase, :to_s, { }, :class => "col-md-2", :label => _("Type"),
7
- :help_inline => remove_child_link("X", f, { :method => :'_delete', :title => _('remove volume'), :class => 'label label-danger disable-unsupported' }) %>
8
- </div>
9
- </div>