gogetit 0.1.18 → 0.1.19
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/.gitignore +1 -1
- data/README.md +14 -2
- data/gogetit.gemspec +1 -1
- data/lib/executionhooks.rb +1 -1
- data/lib/gogetit.rb +5 -77
- data/lib/gogetit/cli.rb +5 -3
- data/lib/gogetit/config.rb +83 -0
- data/lib/{maas.rb → gogetit/maas.rb} +0 -0
- data/lib/{multilogger.rb → gogetit/multilogger.rb} +0 -0
- data/lib/{util.rb → gogetit/util.rb} +2 -0
- data/lib/gogetit/version.rb +1 -1
- data/lib/providers/libvirt.rb +2 -2
- data/lib/providers/lxd.rb +2 -2
- metadata +8 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 69a041470a02b35929805777c4c591c2b748fbf8
|
4
|
+
data.tar.gz: 3a1be3d51b36f9be2ebc96eac14a67529f2e92d2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1dec3d7518f34f4b973cf7eba4542b9a9f37ece0d94013318a511c1da3916a4d83c9463b4486c2e954c0f7427eaece90cd1b5f611c977b661ef1d65e411f52bd
|
7
|
+
data.tar.gz: 92907d8e36b55819124bd4c1733c7d995c1e4543421c946c3f1117a4553d9dd0952e9f28f6c4fd114ce3cd2f04a6949835249cb421e19e1905e858dc58399d81
|
data/.gitignore
CHANGED
data/README.md
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
# Gogetit
|
2
2
|
|
3
|
-
Libraries with a CLI tool for dealing with things
|
3
|
+
Libraries with a CLI tool for dealing with things which I am working on such as MAAS, LXD, Libvirt and Chef.
|
4
|
+
Using this, you will get to use them all together in automated and efficient way.
|
4
5
|
|
5
6
|
## Installation
|
6
7
|
|
@@ -12,6 +13,8 @@ sudo apt install -y build-essential lxd-client libvirt-dev libvirt-bin
|
|
12
13
|
# to remove default network(virbr0)
|
13
14
|
virsh net-destroy default
|
14
15
|
virsh net-undefine default
|
16
|
+
|
17
|
+
# chefdk environment
|
15
18
|
```
|
16
19
|
|
17
20
|
### install
|
@@ -24,7 +27,15 @@ $ gem install gogetit --no-ri --no-rdoc
|
|
24
27
|
gogetit list
|
25
28
|
gogetit create lxd lxd01
|
26
29
|
gogetit create libvirt kvm01
|
30
|
+
|
27
31
|
gogetit destroy lxd01
|
32
|
+
gogetit rebuild kvm01
|
33
|
+
|
34
|
+
# to create a container bootstrapping as a chef node
|
35
|
+
gogetit create --chef chef01
|
36
|
+
|
37
|
+
# to destroy a container deleting corresponding chef node and client
|
38
|
+
gogetit destroy --chef chef01
|
28
39
|
```
|
29
40
|
|
30
41
|
```ruby
|
@@ -32,7 +43,8 @@ require 'gogetit'
|
|
32
43
|
```
|
33
44
|
|
34
45
|
## TODO
|
35
|
-
-
|
46
|
+
- Network subnets and space aware via MAAS
|
47
|
+
- Static IP allocation
|
36
48
|
|
37
49
|
## Development and Contributing
|
38
50
|
Clone and then execute followings:
|
data/gogetit.gemspec
CHANGED
@@ -35,7 +35,7 @@ Gem::Specification.new do |spec|
|
|
35
35
|
#spec.add_runtime_dependency 'etcd-rb', '~> 1.1.0'
|
36
36
|
spec.add_runtime_dependency 'json', '~> 2.1.0'
|
37
37
|
spec.add_runtime_dependency 'hyperkit', '~> 1.1.0'
|
38
|
-
spec.add_runtime_dependency 'maas-client', '~> 0.1.
|
38
|
+
spec.add_runtime_dependency 'maas-client', '~> 0.1.24'
|
39
39
|
spec.add_runtime_dependency 'ruby-libvirt', '~> 0.7.0'
|
40
40
|
spec.add_runtime_dependency 'oga', '~> 2.10'
|
41
41
|
spec.add_runtime_dependency 'net-ssh', '~> 4.1.0'
|
data/lib/executionhooks.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# https://gist.github.com/ryanlecompte/1283413
|
2
2
|
module Gogetit
|
3
|
-
module
|
3
|
+
module ExecutionHooks
|
4
4
|
# this method is invoked whenever a new instance method is added to a class
|
5
5
|
def method_added(method_name)
|
6
6
|
# do nothing if the method that was added was an actual hook method, or
|
data/lib/gogetit.rb
CHANGED
@@ -1,89 +1,17 @@
|
|
1
|
-
require 'executionhooks'
|
2
1
|
require 'gogetit/version'
|
3
|
-
require '
|
4
|
-
require '
|
2
|
+
require 'gogetit/config'
|
3
|
+
require 'gogetit/maas'
|
5
4
|
require 'providers/lxd'
|
6
5
|
require 'providers/libvirt'
|
7
|
-
require 'yaml'
|
8
|
-
require 'logger'
|
9
|
-
require 'util'
|
10
6
|
|
11
7
|
module Gogetit
|
12
|
-
extend Gogetit::Util
|
13
8
|
|
14
9
|
class << self
|
15
|
-
attr_reader :config, :maas, :lxd, :libvirt
|
16
|
-
end
|
17
|
-
|
18
|
-
# TODO: It might be needed to disable one of logging devices according to satiation.
|
19
|
-
STDOUT.sync = true
|
20
|
-
log_to_stdout = Logger.new(STDOUT)
|
21
|
-
@logger = Gogetit::MultiLogger.new(:loggers => log_to_stdout)
|
22
|
-
logger.debug('Instantiate main objects..')
|
23
|
-
|
24
|
-
@config = {}
|
25
|
-
|
26
|
-
logger.debug('Defining home directory..')
|
27
|
-
user_gogetit_home = Dir.home + '/.gogetit'
|
28
|
-
config[:user_gogetit_home] = user_gogetit_home
|
29
|
-
if not File.directory?(user_gogetit_home)
|
30
|
-
logger.debug('Creating home directory..')
|
31
|
-
FileUtils.mkdir(user_gogetit_home)
|
32
|
-
end
|
33
|
-
|
34
|
-
# TODO: It can be used to provide different behavior according to consumer.
|
35
|
-
logger.debug('Defining default consumer..')
|
36
|
-
config[:consumer] = 'gogetit_cli'
|
37
|
-
|
38
|
-
logger.debug('Defining log directory..')
|
39
|
-
log_dir = user_gogetit_home + '/log'
|
40
|
-
config[:log_dir] = log_dir
|
41
|
-
if not File.directory?(log_dir)
|
42
|
-
logger.debug('Creating log directory..')
|
43
|
-
FileUtils.mkdir(log_dir)
|
44
|
-
end
|
45
|
-
|
46
|
-
logger.debug('Define file log devices..')
|
47
|
-
log_file = File.open(log_dir + '/debug.log', 'a')
|
48
|
-
log_file.sync = true
|
49
|
-
log_to_file = Logger.new(log_file)
|
50
|
-
logger.add_logger(log_to_file)
|
51
|
-
|
52
|
-
logger.debug('Defining logger..')
|
53
|
-
# logger.datetime_format = "%Y-%m-%d %H:%M:%S"
|
54
|
-
logger.progname = 'GoGetIt'
|
55
|
-
|
56
|
-
lib_dir = File.dirname(__FILE__)
|
57
|
-
|
58
|
-
config[:lib_dir] = lib_dir
|
59
|
-
logger.debug('Loading GoGetIt default configuration..')
|
60
|
-
conf_file = user_gogetit_home + '/gogetit.yml'
|
61
|
-
if not File.exists?(conf_file)
|
62
|
-
src = File.new(lib_dir + '/sample_conf/gogetit.yml')
|
63
|
-
dst = Dir.new(user_gogetit_home)
|
64
|
-
logger.debug('Copying GoGetIt default configuration..')
|
65
|
-
FileUtils.cp(src, dst)
|
66
|
-
abort('Please define default configuration for GoGetIt at ~/.gogetit/gogetit.yml.')
|
67
|
-
end
|
68
|
-
config.merge!(symbolize_keys(YAML.load_file(conf_file)))
|
69
|
-
|
70
|
-
logger.debug('Define provider configuration directory..')
|
71
|
-
provider_conf_dir = user_gogetit_home + '/conf'
|
72
|
-
config[:provider_conf_dir] = provider_conf_dir
|
73
|
-
default_provider_conf_file = provider_conf_dir + '/default.yml'
|
74
|
-
config[:default_provider_conf_file] = default_provider_conf_file
|
75
|
-
if not File.exists?(default_provider_conf_file)
|
76
|
-
if not File.directory?(provider_conf_dir)
|
77
|
-
logger.debug('Creating provider configuration directory..')
|
78
|
-
FileUtils.mkdir(provider_conf_dir)
|
79
|
-
end
|
80
|
-
src = File.new(lib_dir + '/sample_conf/default.yml')
|
81
|
-
dst = Dir.new(provider_conf_dir)
|
82
|
-
logger.debug('Copying provider configuration file..')
|
83
|
-
FileUtils.cp(src, dst)
|
84
|
-
abort('Please define default configuration for providers at ~/.gogetit/conf/default.yml.')
|
10
|
+
attr_reader :config, :logger, :maas, :lxd, :libvirt
|
85
11
|
end
|
86
12
|
|
13
|
+
@config = Gogetit::Config.config
|
14
|
+
@logger = Gogetit::Config.logger
|
87
15
|
@maas = Gogetit::GogetMAAS.new(config, logger)
|
88
16
|
@lxd = Gogetit::GogetLXD.new(config, maas, logger)
|
89
17
|
@libvirt = Gogetit::GogetLibvirt.new(config, maas, logger)
|
data/lib/gogetit/cli.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
require 'thor'
|
2
2
|
require 'gogetit'
|
3
|
-
require 'util'
|
3
|
+
require 'gogetit/util'
|
4
4
|
|
5
5
|
module Gogetit
|
6
6
|
class CLI < Thor
|
@@ -17,6 +17,7 @@ module Gogetit
|
|
17
17
|
end
|
18
18
|
|
19
19
|
desc 'create (TYPE) NAME', 'Create either a container or KVM domain.'
|
20
|
+
method_option :chef, :type => :boolean, :desc => "Enable chef awareness."
|
20
21
|
def create(type='lxd', name)
|
21
22
|
case type
|
22
23
|
when 'lxd'
|
@@ -27,12 +28,13 @@ module Gogetit
|
|
27
28
|
abort('Invalid argument entered.')
|
28
29
|
end
|
29
30
|
# post-tasks
|
30
|
-
knife_bootstrap(name, type, Gogetit.config)
|
31
|
+
knife_bootstrap(name, type, Gogetit.config) if options[:chef]
|
31
32
|
Gogetit.config[:default][:user] ||= ENV['USER']
|
32
33
|
puts "ssh #{Gogetit.config[:default][:user]}@#{name}"
|
33
34
|
end
|
34
35
|
|
35
36
|
desc 'destroy NAME', 'Destroy either a container or KVM domain.'
|
37
|
+
method_option :chef, :type => :boolean, :desc => "Enable chef awareness."
|
36
38
|
def destroy(name)
|
37
39
|
type = Gogetit.get_provider_of(name)
|
38
40
|
if type
|
@@ -46,7 +48,7 @@ module Gogetit
|
|
46
48
|
end
|
47
49
|
end
|
48
50
|
# post-tasks
|
49
|
-
knife_remove(name)
|
51
|
+
knife_remove(name) if options[:chef]
|
50
52
|
end
|
51
53
|
|
52
54
|
desc 'rebuild NAME', 'Destroy and create either a container or KVM domain again.'
|
@@ -0,0 +1,83 @@
|
|
1
|
+
require 'yaml'
|
2
|
+
require 'logger'
|
3
|
+
require 'gogetit/util'
|
4
|
+
require 'gogetit/multilogger'
|
5
|
+
|
6
|
+
module Gogetit
|
7
|
+
module Config
|
8
|
+
extend Gogetit::Util
|
9
|
+
class << self
|
10
|
+
attr_reader :config, :logger
|
11
|
+
end
|
12
|
+
|
13
|
+
# TODO: It might be needed to disable one of logging devices according to satiation.
|
14
|
+
STDOUT.sync = true
|
15
|
+
log_to_stdout = Logger.new(STDOUT)
|
16
|
+
@logger = Gogetit::MultiLogger.new(:loggers => log_to_stdout)
|
17
|
+
logger.debug('Instantiate main objects..')
|
18
|
+
|
19
|
+
@config = {}
|
20
|
+
|
21
|
+
logger.debug('Defining home directory..')
|
22
|
+
user_gogetit_home = Dir.home + '/.gogetit'
|
23
|
+
config[:user_gogetit_home] = user_gogetit_home
|
24
|
+
if not File.directory?(user_gogetit_home)
|
25
|
+
logger.debug('Creating home directory..')
|
26
|
+
FileUtils.mkdir(user_gogetit_home)
|
27
|
+
end
|
28
|
+
|
29
|
+
# TODO: It can be used to provide different behavior according to consumer.
|
30
|
+
logger.debug('Defining default consumer..')
|
31
|
+
config[:consumer] = 'gogetit_cli'
|
32
|
+
|
33
|
+
logger.debug('Defining log directory..')
|
34
|
+
log_dir = user_gogetit_home + '/log'
|
35
|
+
config[:log_dir] = log_dir
|
36
|
+
if not File.directory?(log_dir)
|
37
|
+
logger.debug('Creating log directory..')
|
38
|
+
FileUtils.mkdir(log_dir)
|
39
|
+
end
|
40
|
+
|
41
|
+
logger.debug('Define file log devices..')
|
42
|
+
log_file = File.open(log_dir + '/debug.log', 'a')
|
43
|
+
log_file.sync = true
|
44
|
+
log_to_file = Logger.new(log_file)
|
45
|
+
logger.add_logger(log_to_file)
|
46
|
+
|
47
|
+
logger.debug('Defining logger..')
|
48
|
+
# logger.datetime_format = "%Y-%m-%d %H:%M:%S"
|
49
|
+
logger.progname = 'GoGetIt'
|
50
|
+
|
51
|
+
lib_dir = Gem::Specification.find_by_name('gogetit').gem_dir + '/lib'
|
52
|
+
|
53
|
+
config[:lib_dir] = lib_dir
|
54
|
+
logger.debug('Loading GoGetIt default configuration..')
|
55
|
+
conf_file = user_gogetit_home + '/gogetit.yml'
|
56
|
+
if not File.exists?(conf_file)
|
57
|
+
src = File.new(lib_dir + '/sample_conf/gogetit.yml')
|
58
|
+
dst = Dir.new(user_gogetit_home)
|
59
|
+
logger.debug('Copying GoGetIt default configuration..')
|
60
|
+
FileUtils.cp(src, dst)
|
61
|
+
abort('Please define default configuration for GoGetIt at ~/.gogetit/gogetit.yml.')
|
62
|
+
end
|
63
|
+
config.merge!(symbolize_keys(YAML.load_file(conf_file)))
|
64
|
+
|
65
|
+
logger.debug('Define provider configuration directory..')
|
66
|
+
provider_conf_dir = user_gogetit_home + '/conf'
|
67
|
+
config[:provider_conf_dir] = provider_conf_dir
|
68
|
+
default_provider_conf_file = provider_conf_dir + '/default.yml'
|
69
|
+
config[:default_provider_conf_file] = default_provider_conf_file
|
70
|
+
if not File.exists?(default_provider_conf_file)
|
71
|
+
if not File.directory?(provider_conf_dir)
|
72
|
+
logger.debug('Creating provider configuration directory..')
|
73
|
+
FileUtils.mkdir(provider_conf_dir)
|
74
|
+
end
|
75
|
+
src = File.new(lib_dir + '/sample_conf/default.yml')
|
76
|
+
dst = Dir.new(provider_conf_dir)
|
77
|
+
logger.debug('Copying provider configuration file..')
|
78
|
+
FileUtils.cp(src, dst)
|
79
|
+
abort('Please define default configuration for providers at ~/.gogetit/conf/default.yml.')
|
80
|
+
end
|
81
|
+
|
82
|
+
end
|
83
|
+
end
|
File without changes
|
File without changes
|
data/lib/gogetit/version.rb
CHANGED
data/lib/providers/libvirt.rb
CHANGED
@@ -2,13 +2,13 @@ require 'libvirt'
|
|
2
2
|
require 'securerandom'
|
3
3
|
require 'oga'
|
4
4
|
require 'rexml/document'
|
5
|
-
require 'util'
|
5
|
+
require 'gogetit/util'
|
6
6
|
|
7
7
|
module Gogetit
|
8
8
|
class GogetLibvirt
|
9
9
|
include Gogetit::Util
|
10
10
|
|
11
|
-
attr_reader :config, :
|
11
|
+
attr_reader :config, :logger, :conn, :maas
|
12
12
|
|
13
13
|
def initialize(conf, maas, logger)
|
14
14
|
@config = conf
|
data/lib/providers/lxd.rb
CHANGED
@@ -1,11 +1,11 @@
|
|
1
1
|
require 'hyperkit'
|
2
|
-
require 'util'
|
2
|
+
require 'gogetit/util'
|
3
3
|
|
4
4
|
module Gogetit
|
5
5
|
class GogetLXD
|
6
6
|
include Gogetit::Util
|
7
7
|
|
8
|
-
attr_reader :config, :
|
8
|
+
attr_reader :config, :logger, :conn, :maas
|
9
9
|
|
10
10
|
def initialize(conf, maas, logger)
|
11
11
|
@config = conf
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gogetit
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.19
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Don Draper
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-08-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -114,14 +114,14 @@ dependencies:
|
|
114
114
|
requirements:
|
115
115
|
- - "~>"
|
116
116
|
- !ruby/object:Gem::Version
|
117
|
-
version: 0.1.
|
117
|
+
version: 0.1.24
|
118
118
|
type: :runtime
|
119
119
|
prerelease: false
|
120
120
|
version_requirements: !ruby/object:Gem::Requirement
|
121
121
|
requirements:
|
122
122
|
- - "~>"
|
123
123
|
- !ruby/object:Gem::Version
|
124
|
-
version: 0.1.
|
124
|
+
version: 0.1.24
|
125
125
|
- !ruby/object:Gem::Dependency
|
126
126
|
name: ruby-libvirt
|
127
127
|
requirement: !ruby/object:Gem::Requirement
|
@@ -208,9 +208,11 @@ files:
|
|
208
208
|
- lib/executionhooks.rb
|
209
209
|
- lib/gogetit.rb
|
210
210
|
- lib/gogetit/cli.rb
|
211
|
+
- lib/gogetit/config.rb
|
212
|
+
- lib/gogetit/maas.rb
|
213
|
+
- lib/gogetit/multilogger.rb
|
214
|
+
- lib/gogetit/util.rb
|
211
215
|
- lib/gogetit/version.rb
|
212
|
-
- lib/maas.rb
|
213
|
-
- lib/multilogger.rb
|
214
216
|
- lib/providers/libvirt.rb
|
215
217
|
- lib/providers/lxd.rb
|
216
218
|
- lib/sample_conf/ceph.yml
|
@@ -220,7 +222,6 @@ files:
|
|
220
222
|
- lib/template/domain.xml
|
221
223
|
- lib/template/nic.xml
|
222
224
|
- lib/template/volume.xml
|
223
|
-
- lib/util.rb
|
224
225
|
homepage: https://github.com/itisnotdone/gogetit.git
|
225
226
|
licenses:
|
226
227
|
- MIT
|