foreman_one 0.2 → 0.4

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