foreman_digitalocean 1.2.0 → 1.3.0
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 +4 -4
- data/app/helpers/digitalocean_images_helper.rb +4 -4
- data/app/models/concerns/fog_extensions/digitalocean/image.rb +6 -6
- data/app/models/concerns/fog_extensions/digitalocean/server.rb +1 -1
- data/app/models/foreman_digitalocean/digitalocean.rb +9 -10
- data/lib/foreman_digitalocean/engine.rb +10 -16
- data/lib/foreman_digitalocean/tasks/test.rake +6 -6
- data/lib/foreman_digitalocean/version.rb +1 -1
- data/test/factories/compute_resources.rb +1 -1
- data/test/test_plugin_helper.rb +3 -3
- data/test/unit/foreman_digitalocean/digitalocean_test.rb +1 -1
- metadata +22 -9
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9379a1ca3a8c5ad06c176ddbea6e97eb53eba36b
|
4
|
+
data.tar.gz: ffea1f5f5baa311ef1da930272ca4b1444988208
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ebc9b5745ba635c92314d0b01f1b3cefa35dd6e045631f645d20fa45a1f39f6f70d623da3e436a0194f334895fb1e2a54846c4dd26bbedded65631a739362834
|
7
|
+
data.tar.gz: 4439ce81bf5365f1f5b117e6360e77423311d16d64e8a720052692093a805c00cd31eaaa127b661e36b57f2c85239d115d234694f3b84bf6b636b3fb063bcfd9
|
@@ -3,7 +3,7 @@ module DigitaloceanImagesHelper
|
|
3
3
|
images = @compute_resource.available_images
|
4
4
|
images.each { |image| image.name = image.id if image.name.nil? }
|
5
5
|
select_f f, :uuid, images.to_a.sort_by(&:full_name),
|
6
|
-
|
6
|
+
:id, :full_name, {}, :label => _('Image')
|
7
7
|
end
|
8
8
|
|
9
9
|
def select_image(f, compute_resource)
|
@@ -14,8 +14,8 @@ module DigitaloceanImagesHelper
|
|
14
14
|
images,
|
15
15
|
:id,
|
16
16
|
:slug,
|
17
|
-
{ :include_blank =>
|
18
|
-
{ :label =>
|
17
|
+
{ :include_blank => images.empty? || images.size == 1 ? false : _('Please select an image') },
|
18
|
+
{ :label => 'Image', :disabled => images.empty? })
|
19
19
|
end
|
20
20
|
|
21
21
|
def select_region(f, compute_resource)
|
@@ -27,7 +27,7 @@ module DigitaloceanImagesHelper
|
|
27
27
|
:slug,
|
28
28
|
:slug,
|
29
29
|
{},
|
30
|
-
:label =>
|
30
|
+
:label => 'Region',
|
31
31
|
:disabled => compute_resource.images.empty?)
|
32
32
|
end
|
33
33
|
end
|
@@ -1,5 +1,5 @@
|
|
1
1
|
module FogExtensions
|
2
|
-
module
|
2
|
+
module Digitalocean
|
3
3
|
module Image
|
4
4
|
extend ActiveSupport::Concern
|
5
5
|
|
@@ -11,7 +11,7 @@ module FogExtensions
|
|
11
11
|
define_method :name=, instance_method(:full_name=)
|
12
12
|
end
|
13
13
|
|
14
|
-
def full_name=
|
14
|
+
def full_name=(value)
|
15
15
|
self.os_version = value
|
16
16
|
end
|
17
17
|
|
@@ -23,10 +23,10 @@ module FogExtensions
|
|
23
23
|
# Attempt guessing arch based on the name from digital ocean
|
24
24
|
def arch
|
25
25
|
requires :os_version
|
26
|
-
if os_version.end_with?(
|
27
|
-
|
28
|
-
elsif os_version.end_with?(
|
29
|
-
|
26
|
+
if os_version.end_with?('x64')
|
27
|
+
'x86_64'
|
28
|
+
elsif os_version.end_with?('x32')
|
29
|
+
'i386'
|
30
30
|
end
|
31
31
|
end
|
32
32
|
end
|
@@ -20,7 +20,7 @@ module ForemanDigitalocean
|
|
20
20
|
super.merge(
|
21
21
|
:uuid => :identity_to_s,
|
22
22
|
:ip => :ipv4_address,
|
23
|
-
:ip6 => :ipv6_address
|
23
|
+
:ip6 => :ipv6_address
|
24
24
|
)
|
25
25
|
end
|
26
26
|
|
@@ -39,7 +39,7 @@ module ForemanDigitalocean
|
|
39
39
|
end
|
40
40
|
|
41
41
|
def create_vm(args = {})
|
42
|
-
args[
|
42
|
+
args['ssh_keys'] = [ssh_key] if ssh_key
|
43
43
|
args['image'] = args['image_id']
|
44
44
|
super(args)
|
45
45
|
rescue Fog::Errors::Error => e
|
@@ -82,11 +82,11 @@ module ForemanDigitalocean
|
|
82
82
|
end
|
83
83
|
|
84
84
|
def self.provider_friendly_name
|
85
|
-
|
85
|
+
'DigitalOcean'
|
86
86
|
end
|
87
87
|
|
88
88
|
def associated_host(vm)
|
89
|
-
associate_by(
|
89
|
+
associate_by('ip', [vm.public_ip_address])
|
90
90
|
end
|
91
91
|
|
92
92
|
def user_data_supported?
|
@@ -103,8 +103,7 @@ module ForemanDigitalocean
|
|
103
103
|
|
104
104
|
def client
|
105
105
|
@client ||= Fog::Compute.new(
|
106
|
-
:provider =>
|
107
|
-
:version => 'V2',
|
106
|
+
:provider => 'DigitalOcean',
|
108
107
|
:digitalocean_token => api_key
|
109
108
|
)
|
110
109
|
end
|
@@ -122,8 +121,8 @@ module ForemanDigitalocean
|
|
122
121
|
key_name = "foreman-#{id}#{Foreman.uuid}"
|
123
122
|
client.create_ssh_key key_name, public_key
|
124
123
|
KeyPair.create! :name => key_name, :compute_resource_id => id, :secret => private_key
|
125
|
-
rescue => e
|
126
|
-
logger.warn
|
124
|
+
rescue StandardError => e
|
125
|
+
logger.warn 'failed to generate key pair'
|
127
126
|
logger.error e.message
|
128
127
|
logger.error e.backtrace.join("\n")
|
129
128
|
destroy_key_pair
|
@@ -136,13 +135,13 @@ module ForemanDigitalocean
|
|
136
135
|
client.destroy_ssh_key(ssh_key.id) if ssh_key
|
137
136
|
key_pair.destroy
|
138
137
|
true
|
139
|
-
rescue => e
|
138
|
+
rescue StandardError => e
|
140
139
|
logger.warn "failed to delete key pair from DigitalOcean, you might need to cleanup manually : #{e}"
|
141
140
|
end
|
142
141
|
|
143
142
|
def ssh_key
|
144
143
|
@ssh_key ||= begin
|
145
|
-
key = client.list_ssh_keys.data[:body][
|
144
|
+
key = client.list_ssh_keys.data[:body]['ssh_keys'].find { |i| i['name'] == key_pair.name }
|
146
145
|
key['id'] if key.present?
|
147
146
|
end
|
148
147
|
end
|
@@ -16,7 +16,7 @@ module ForemanDigitalocean
|
|
16
16
|
|
17
17
|
initializer 'foreman_digitalocean.register_plugin', :before => :finisher_hook do
|
18
18
|
Foreman::Plugin.register :foreman_digitalocean do
|
19
|
-
requires_foreman '>= 1.
|
19
|
+
requires_foreman '>= 1.16'
|
20
20
|
compute_resource ForemanDigitalocean::Digitalocean
|
21
21
|
parameter_filter ComputeResource, :region, :api_key
|
22
22
|
end
|
@@ -28,22 +28,16 @@ module ForemanDigitalocean
|
|
28
28
|
|
29
29
|
config.to_prepare do
|
30
30
|
require 'fog/digitalocean'
|
31
|
-
require 'fog/digitalocean/
|
32
|
-
require 'fog/digitalocean/models/
|
33
|
-
require 'fog/digitalocean/models/
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
__FILE__)
|
40
|
-
|
41
|
-
Fog::Compute::DigitalOceanV2::Image.send :include,
|
42
|
-
FogExtensions::DigitalOcean::Image
|
43
|
-
Fog::Compute::DigitalOceanV2::Server.send :include,
|
44
|
-
FogExtensions::DigitalOcean::Server
|
31
|
+
require 'fog/digitalocean/compute'
|
32
|
+
require 'fog/digitalocean/models/compute/image'
|
33
|
+
require 'fog/digitalocean/models/compute/server'
|
34
|
+
|
35
|
+
Fog::Compute::DigitalOcean::Image.send :include,
|
36
|
+
FogExtensions::Digitalocean::Image
|
37
|
+
Fog::Compute::DigitalOcean::Server.send :include,
|
38
|
+
FogExtensions::Digitalocean::Server
|
45
39
|
::Host::Managed.send :include,
|
46
|
-
|
40
|
+
ForemanDigitalocean::Concerns::HostManagedExtensions
|
47
41
|
end
|
48
42
|
end
|
49
43
|
end
|
@@ -1,9 +1,9 @@
|
|
1
|
-
require File.expand_path(
|
1
|
+
require File.expand_path('../engine', File.dirname(__FILE__))
|
2
2
|
namespace :test do
|
3
|
-
desc
|
3
|
+
desc 'Run the plugin unit test suite.'
|
4
4
|
task :digitalocean => ['db:test:prepare'] do
|
5
5
|
test_task = Rake::TestTask.new('digitalocean_test_task') do |t|
|
6
|
-
t.libs << [
|
6
|
+
t.libs << ['test', "#{ForemanDigitalocean::Engine.root}/test"]
|
7
7
|
t.test_files = [
|
8
8
|
"#{ForemanDigitalocean::Engine.root}/test/**/*_test.rb"
|
9
9
|
]
|
@@ -24,8 +24,8 @@ namespace :digitalocean do
|
|
24
24
|
"#{ForemanDigitalocean::Engine.root}/lib/**/*.rb",
|
25
25
|
"#{ForemanDigitalocean::Engine.root}/test/**/*.rb"]
|
26
26
|
end
|
27
|
-
rescue
|
28
|
-
puts
|
27
|
+
rescue StandardError
|
28
|
+
puts 'Rubocop not loaded.'
|
29
29
|
end
|
30
30
|
|
31
31
|
Rake::Task['rubocop_digitalocean'].invoke
|
@@ -38,7 +38,7 @@ end
|
|
38
38
|
|
39
39
|
load 'tasks/jenkins.rake'
|
40
40
|
if Rake::Task.task_defined?(:'jenkins:unit')
|
41
|
-
Rake::Task[
|
41
|
+
Rake::Task['jenkins:unit'].enhance do
|
42
42
|
Rake::Task['test:digitalocean'].invoke
|
43
43
|
Rake::Task['digitalocean:rubocop'].invoke
|
44
44
|
end
|
data/test/test_plugin_helper.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# This calls the main test_helper in Foreman core
|
2
2
|
require 'test_helper'
|
3
3
|
|
4
|
-
# Add plugin to
|
5
|
-
|
6
|
-
|
4
|
+
# Add plugin to FactoryBot's paths
|
5
|
+
FactoryBot.definition_file_paths << File.join(File.dirname(__FILE__), 'factories')
|
6
|
+
FactoryBot.reload
|
@@ -9,7 +9,7 @@ module ForemanDigitalocean
|
|
9
9
|
teardown { Fog.unmock! }
|
10
10
|
|
11
11
|
test 'ssh key pair gets created after its saved' do
|
12
|
-
digitalocean =
|
12
|
+
digitalocean = FactoryBot.build(:digitalocean_cr)
|
13
13
|
digitalocean.expects(:setup_key_pair)
|
14
14
|
digitalocean.save
|
15
15
|
end
|
metadata
CHANGED
@@ -1,29 +1,43 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: foreman_digitalocean
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tommy McNeely, Daniel Lobato
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2018-02-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
-
name:
|
14
|
+
name: fog-digitalocean
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '0.
|
20
|
-
type: :
|
19
|
+
version: '0.3'
|
20
|
+
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '0.
|
26
|
+
version: '0.3'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rubocop
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - '='
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 0.51.0
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - '='
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: 0.51.0
|
27
41
|
description: Provision and manage DigitalOcean droplets from Foreman.
|
28
42
|
email:
|
29
43
|
- elobatocs@gmail.com
|
@@ -74,12 +88,11 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
74
88
|
version: '0'
|
75
89
|
requirements: []
|
76
90
|
rubyforge_project:
|
77
|
-
rubygems_version: 2.
|
91
|
+
rubygems_version: 2.6.12
|
78
92
|
signing_key:
|
79
93
|
specification_version: 4
|
80
94
|
summary: Provision and manage DigitalOcean droplets from Foreman
|
81
95
|
test_files:
|
82
96
|
- test/factories/compute_resources.rb
|
83
|
-
- test/test_plugin_helper.rb
|
84
97
|
- test/unit/foreman_digitalocean/digitalocean_test.rb
|
85
|
-
|
98
|
+
- test/test_plugin_helper.rb
|