vagrant-openstack-illuin-provider 0.12.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 +7 -0
- data/.gitignore +22 -0
- data/.rubocop.yml +40 -0
- data/CHANGELOG.md +282 -0
- data/Gemfile +18 -0
- data/RELEASE.md +15 -0
- data/Rakefile +25 -0
- data/Vagrantfile +20 -0
- data/dummy.box +0 -0
- data/example_box/README.md +13 -0
- data/example_box/metadata.json +3 -0
- data/functional_tests/Vagrantfile +58 -0
- data/functional_tests/keys/vagrant-openstack +27 -0
- data/functional_tests/keys/vagrant-openstack.pub +1 -0
- data/functional_tests/run_tests.sh +142 -0
- data/lib/vagrant-openstack-illuin-provider.rb +29 -0
- data/lib/vagrant-openstack-illuin-provider/action.rb +344 -0
- data/lib/vagrant-openstack-illuin-provider/action/abstract_action.rb +22 -0
- data/lib/vagrant-openstack-illuin-provider/action/connect_openstack.rb +60 -0
- data/lib/vagrant-openstack-illuin-provider/action/create_server.rb +187 -0
- data/lib/vagrant-openstack-illuin-provider/action/create_stack.rb +76 -0
- data/lib/vagrant-openstack-illuin-provider/action/delete_server.rb +53 -0
- data/lib/vagrant-openstack-illuin-provider/action/delete_stack.rb +73 -0
- data/lib/vagrant-openstack-illuin-provider/action/message.rb +19 -0
- data/lib/vagrant-openstack-illuin-provider/action/provision.rb +60 -0
- data/lib/vagrant-openstack-illuin-provider/action/read_ssh_info.rb +74 -0
- data/lib/vagrant-openstack-illuin-provider/action/read_state.rb +43 -0
- data/lib/vagrant-openstack-illuin-provider/action/resume.rb +24 -0
- data/lib/vagrant-openstack-illuin-provider/action/snapshot_cleanup.rb +32 -0
- data/lib/vagrant-openstack-illuin-provider/action/snapshot_delete.rb +32 -0
- data/lib/vagrant-openstack-illuin-provider/action/snapshot_list.rb +22 -0
- data/lib/vagrant-openstack-illuin-provider/action/snapshot_restore.rb +29 -0
- data/lib/vagrant-openstack-illuin-provider/action/snapshot_save.rb +51 -0
- data/lib/vagrant-openstack-illuin-provider/action/start_server.rb +24 -0
- data/lib/vagrant-openstack-illuin-provider/action/stop_server.rb +25 -0
- data/lib/vagrant-openstack-illuin-provider/action/suspend.rb +24 -0
- data/lib/vagrant-openstack-illuin-provider/action/sync_folders.rb +138 -0
- data/lib/vagrant-openstack-illuin-provider/action/wait_active.rb +33 -0
- data/lib/vagrant-openstack-illuin-provider/action/wait_stop.rb +33 -0
- data/lib/vagrant-openstack-illuin-provider/cap/snapshot_list.rb +15 -0
- data/lib/vagrant-openstack-illuin-provider/catalog/openstack_catalog.rb +90 -0
- data/lib/vagrant-openstack-illuin-provider/client/cinder.rb +39 -0
- data/lib/vagrant-openstack-illuin-provider/client/domain.rb +163 -0
- data/lib/vagrant-openstack-illuin-provider/client/glance.rb +65 -0
- data/lib/vagrant-openstack-illuin-provider/client/heat.rb +49 -0
- data/lib/vagrant-openstack-illuin-provider/client/http_utils.rb +116 -0
- data/lib/vagrant-openstack-illuin-provider/client/keystone.rb +128 -0
- data/lib/vagrant-openstack-illuin-provider/client/neutron.rb +48 -0
- data/lib/vagrant-openstack-illuin-provider/client/nova.rb +303 -0
- data/lib/vagrant-openstack-illuin-provider/client/openstack.rb +59 -0
- data/lib/vagrant-openstack-illuin-provider/client/request_logger.rb +23 -0
- data/lib/vagrant-openstack-illuin-provider/client/rest_utils.rb +28 -0
- data/lib/vagrant-openstack-illuin-provider/command/abstract_command.rb +51 -0
- data/lib/vagrant-openstack-illuin-provider/command/flavor_list.rb +24 -0
- data/lib/vagrant-openstack-illuin-provider/command/floatingip_list.rb +32 -0
- data/lib/vagrant-openstack-illuin-provider/command/image_list.rb +29 -0
- data/lib/vagrant-openstack-illuin-provider/command/main.rb +52 -0
- data/lib/vagrant-openstack-illuin-provider/command/network_list.rb +25 -0
- data/lib/vagrant-openstack-illuin-provider/command/openstack_command.rb +16 -0
- data/lib/vagrant-openstack-illuin-provider/command/reset.rb +20 -0
- data/lib/vagrant-openstack-illuin-provider/command/subnet_list.rb +22 -0
- data/lib/vagrant-openstack-illuin-provider/command/utils.rb +22 -0
- data/lib/vagrant-openstack-illuin-provider/command/volume_list.rb +25 -0
- data/lib/vagrant-openstack-illuin-provider/config.rb +505 -0
- data/lib/vagrant-openstack-illuin-provider/config/http.rb +39 -0
- data/lib/vagrant-openstack-illuin-provider/config_resolver.rb +334 -0
- data/lib/vagrant-openstack-illuin-provider/errors.rb +187 -0
- data/lib/vagrant-openstack-illuin-provider/logging.rb +39 -0
- data/lib/vagrant-openstack-illuin-provider/plugin.rb +58 -0
- data/lib/vagrant-openstack-illuin-provider/provider.rb +50 -0
- data/lib/vagrant-openstack-illuin-provider/utils.rb +81 -0
- data/lib/vagrant-openstack-illuin-provider/version.rb +15 -0
- data/lib/vagrant-openstack-illuin-provider/version_checker.rb +76 -0
- data/locales/en.yml +412 -0
- data/spec/vagrant-openstack-illuin-provider/action/connect_openstack_spec.rb +770 -0
- data/spec/vagrant-openstack-illuin-provider/action/create_server_spec.rb +260 -0
- data/spec/vagrant-openstack-illuin-provider/action/create_stack_spec.rb +99 -0
- data/spec/vagrant-openstack-illuin-provider/action/delete_server_spec.rb +89 -0
- data/spec/vagrant-openstack-illuin-provider/action/delete_stack_spec.rb +63 -0
- data/spec/vagrant-openstack-illuin-provider/action/message_spec.rb +33 -0
- data/spec/vagrant-openstack-illuin-provider/action/provision_spec.rb +97 -0
- data/spec/vagrant-openstack-illuin-provider/action/read_ssh_info_spec.rb +202 -0
- data/spec/vagrant-openstack-illuin-provider/action/read_state_spec.rb +81 -0
- data/spec/vagrant-openstack-illuin-provider/action/resume_server_spec.rb +49 -0
- data/spec/vagrant-openstack-illuin-provider/action/start_server_spec.rb +49 -0
- data/spec/vagrant-openstack-illuin-provider/action/stop_server_spec.rb +49 -0
- data/spec/vagrant-openstack-illuin-provider/action/suspend_server_spec.rb +49 -0
- data/spec/vagrant-openstack-illuin-provider/action/sync_folders_spec.rb +155 -0
- data/spec/vagrant-openstack-illuin-provider/action/wait_active_spec.rb +53 -0
- data/spec/vagrant-openstack-illuin-provider/action/wait_stop_spec.rb +53 -0
- data/spec/vagrant-openstack-illuin-provider/action_spec.rb +120 -0
- data/spec/vagrant-openstack-illuin-provider/client/cinder_spec.rb +129 -0
- data/spec/vagrant-openstack-illuin-provider/client/glance_spec.rb +145 -0
- data/spec/vagrant-openstack-illuin-provider/client/heat_spec.rb +130 -0
- data/spec/vagrant-openstack-illuin-provider/client/keystone_spec.rb +226 -0
- data/spec/vagrant-openstack-illuin-provider/client/neutron_spec.rb +173 -0
- data/spec/vagrant-openstack-illuin-provider/client/nova_spec.rb +760 -0
- data/spec/vagrant-openstack-illuin-provider/client/utils_spec.rb +176 -0
- data/spec/vagrant-openstack-illuin-provider/command/flavor_list_spec.rb +43 -0
- data/spec/vagrant-openstack-illuin-provider/command/floatingip_list_spec.rb +74 -0
- data/spec/vagrant-openstack-illuin-provider/command/image_list_spec.rb +95 -0
- data/spec/vagrant-openstack-illuin-provider/command/network_list_spec.rb +65 -0
- data/spec/vagrant-openstack-illuin-provider/command/reset_spec.rb +24 -0
- data/spec/vagrant-openstack-illuin-provider/command/subnet_list_spec.rb +45 -0
- data/spec/vagrant-openstack-illuin-provider/command/volume_list_spec.rb +40 -0
- data/spec/vagrant-openstack-illuin-provider/config_resolver_spec.rb +879 -0
- data/spec/vagrant-openstack-illuin-provider/config_spec.rb +416 -0
- data/spec/vagrant-openstack-illuin-provider/e2e_spec.rb.save +27 -0
- data/spec/vagrant-openstack-illuin-provider/provider_spec.rb +13 -0
- data/spec/vagrant-openstack-illuin-provider/spec_helper.rb +37 -0
- data/spec/vagrant-openstack-illuin-provider/utils_spec.rb +197 -0
- data/spec/vagrant-openstack-illuin-provider/version_checker_spec.rb +39 -0
- data/stackrc +25 -0
- data/vagrant-openstack-illuin-provider.gemspec +35 -0
- metadata +379 -0
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
require 'log4r'
|
|
2
|
+
require 'json'
|
|
3
|
+
|
|
4
|
+
require 'vagrant-openstack-illuin-provider/client/heat'
|
|
5
|
+
require 'vagrant-openstack-illuin-provider/client/keystone'
|
|
6
|
+
require 'vagrant-openstack-illuin-provider/client/nova'
|
|
7
|
+
require 'vagrant-openstack-illuin-provider/client/neutron'
|
|
8
|
+
require 'vagrant-openstack-illuin-provider/client/cinder'
|
|
9
|
+
require 'vagrant-openstack-illuin-provider/client/glance'
|
|
10
|
+
|
|
11
|
+
module VagrantPlugins
|
|
12
|
+
module Openstack
|
|
13
|
+
class Session
|
|
14
|
+
include Singleton
|
|
15
|
+
|
|
16
|
+
attr_accessor :token
|
|
17
|
+
attr_accessor :project_id
|
|
18
|
+
attr_accessor :endpoints
|
|
19
|
+
|
|
20
|
+
def initialize
|
|
21
|
+
@token = nil
|
|
22
|
+
@project_id = nil
|
|
23
|
+
@endpoints = {}
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def reset
|
|
27
|
+
initialize
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def self.session
|
|
32
|
+
Session.instance
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
def self.keystone
|
|
36
|
+
Openstack::KeystoneClient.instance
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
def self.nova
|
|
40
|
+
Openstack::NovaClient.instance
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
def self.heat
|
|
44
|
+
Openstack::HeatClient.instance
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
def self.neutron
|
|
48
|
+
Openstack::NeutronClient.instance
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
def self.cinder
|
|
52
|
+
Openstack::CinderClient.instance
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
def self.glance
|
|
56
|
+
Openstack::GlanceClient.instance
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
end
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
require 'log4r'
|
|
2
|
+
require 'json'
|
|
3
|
+
|
|
4
|
+
module VagrantPlugins
|
|
5
|
+
module Openstack
|
|
6
|
+
module HttpUtils
|
|
7
|
+
module RequestLogger
|
|
8
|
+
def log_request(method, url, body = nil, headers)
|
|
9
|
+
@logger.debug "request => method : #{method}"
|
|
10
|
+
@logger.debug "request => url : #{url}"
|
|
11
|
+
@logger.debug "request => headers : #{headers}"
|
|
12
|
+
@logger.debug "request => body : #{body}" unless body.nil?
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def log_response(response)
|
|
16
|
+
@logger.debug "response => code : #{response.code}"
|
|
17
|
+
@logger.debug "response => headers : #{response.headers}"
|
|
18
|
+
@logger.debug "response => body : #{response}"
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
require 'restclient'
|
|
2
|
+
|
|
3
|
+
module VagrantPlugins
|
|
4
|
+
module Openstack
|
|
5
|
+
module RestUtils
|
|
6
|
+
def self.get(env, url, headers = {}, &block)
|
|
7
|
+
config = env[:machine].provider_config
|
|
8
|
+
RestClient::Request.execute(method: :get, url: url, headers: headers,
|
|
9
|
+
timeout: config.http.read_timeout, open_timeout: config.http.open_timeout,
|
|
10
|
+
ssl_ca_file: config.ssl_ca_file, verify_ssl: config.ssl_verify_peer, &block)
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def self.post(env, url, payload, headers = {}, &block)
|
|
14
|
+
config = env[:machine].provider_config
|
|
15
|
+
RestClient::Request.execute(method: :post, url: url, payload: payload, headers: headers,
|
|
16
|
+
timeout: config.http.read_timeout, open_timeout: config.http.open_timeout,
|
|
17
|
+
ssl_ca_file: config.ssl_ca_file, verify_ssl: config.ssl_verify_peer, &block)
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def self.delete(env, url, headers = {}, &block)
|
|
21
|
+
config = env[:machine].provider_config
|
|
22
|
+
RestClient::Request.execute(method: :delete, url: url, headers: headers,
|
|
23
|
+
timeout: config.http.read_timeout, open_timeout: config.http.open_timeout,
|
|
24
|
+
ssl_ca_file: config.ssl_ca_file, verify_ssl: config.ssl_verify_peer, &block)
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
require 'vagrant-openstack-illuin-provider/client/openstack'
|
|
2
|
+
require 'colorize'
|
|
3
|
+
|
|
4
|
+
module VagrantPlugins
|
|
5
|
+
module Openstack
|
|
6
|
+
module Command
|
|
7
|
+
class AbstractCommand < Vagrant.plugin('2', :command)
|
|
8
|
+
def initialize(argv, env)
|
|
9
|
+
@env = env
|
|
10
|
+
super(normalize_args(argv), env)
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def execute(name)
|
|
14
|
+
env = {}
|
|
15
|
+
with_target_vms(nil, provider: :openstack) do |machine|
|
|
16
|
+
env[:machine] = machine
|
|
17
|
+
env[:ui] = @env.ui
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
before_cmd(name, @argv, env)
|
|
21
|
+
|
|
22
|
+
cmd(name, @argv, env)
|
|
23
|
+
@env.ui.info('')
|
|
24
|
+
# rubocop:disable Lint/RescueException
|
|
25
|
+
rescue Errors::VagrantOpenstackError, SystemExit, Interrupt => e
|
|
26
|
+
raise e
|
|
27
|
+
rescue Exception => e
|
|
28
|
+
puts I18n.t('vagrant_openstack.global_error').red unless e.message && e.message.start_with?('Catched Error:')
|
|
29
|
+
raise e
|
|
30
|
+
end
|
|
31
|
+
# rubocop:enable Lint/RescueException
|
|
32
|
+
|
|
33
|
+
#
|
|
34
|
+
# Before Vagrant 1.5, args list ends with an extra arg '--'. It removes it if present.
|
|
35
|
+
#
|
|
36
|
+
def normalize_args(args)
|
|
37
|
+
return args if args.nil?
|
|
38
|
+
args.pop if args.size > 0 && args.last == '--'
|
|
39
|
+
args
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
def before_cmd(_name, _argv, _env)
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
def cmd(_name, _argv, _env)
|
|
46
|
+
fail 'Command not implemented. \'cmd\' method must be overridden in all subclasses'
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
end
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
require 'vagrant-openstack-illuin-provider/command/openstack_command'
|
|
2
|
+
|
|
3
|
+
module VagrantPlugins
|
|
4
|
+
module Openstack
|
|
5
|
+
module Command
|
|
6
|
+
class FlavorList < OpenstackCommand
|
|
7
|
+
def self.synopsis
|
|
8
|
+
I18n.t('vagrant_openstack.command.flavor_list_synopsis')
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def cmd(name, argv, env)
|
|
12
|
+
fail Errors::NoArgRequiredForCommand, cmd: name unless argv.size == 0
|
|
13
|
+
flavors = env[:openstack_client].nova.get_all_flavors(env)
|
|
14
|
+
|
|
15
|
+
rows = []
|
|
16
|
+
flavors.each do |f|
|
|
17
|
+
rows << [f.id, f.name, f.vcpus, f.ram, f.disk]
|
|
18
|
+
end
|
|
19
|
+
display_table(env, ['ID', 'Name', 'vCPU', 'RAM (Mo)', 'Disk size (Go)'], rows)
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
require 'vagrant-openstack-illuin-provider/command/openstack_command'
|
|
2
|
+
|
|
3
|
+
module VagrantPlugins
|
|
4
|
+
module Openstack
|
|
5
|
+
module Command
|
|
6
|
+
class FloatingIpList < OpenstackCommand
|
|
7
|
+
def self.synopsis
|
|
8
|
+
I18n.t('vagrant_openstack.command.flaotingip_list_synopsis')
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def cmd(name, argv, env)
|
|
12
|
+
fail Errors::NoArgRequiredForCommand, cmd: name unless argv.size == 0
|
|
13
|
+
|
|
14
|
+
floating_ip_pools = env[:openstack_client].nova.get_floating_ip_pools(env)
|
|
15
|
+
floating_ips = env[:openstack_client].nova.get_floating_ips(env)
|
|
16
|
+
|
|
17
|
+
rows = []
|
|
18
|
+
floating_ip_pools.each do |floating_ip_pool|
|
|
19
|
+
rows << [floating_ip_pool['name']]
|
|
20
|
+
end
|
|
21
|
+
display_table(env, ['Floating IP pools'], rows)
|
|
22
|
+
|
|
23
|
+
rows = []
|
|
24
|
+
floating_ips.each do |floating_ip|
|
|
25
|
+
rows << [floating_ip['id'], floating_ip['ip'], floating_ip['pool'], floating_ip['instance_id']]
|
|
26
|
+
end
|
|
27
|
+
display_table(env, ['ID', 'IP', 'Pool', 'Instance ID'], rows)
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
end
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
require 'vagrant-openstack-illuin-provider/command/openstack_command'
|
|
2
|
+
|
|
3
|
+
module VagrantPlugins
|
|
4
|
+
module Openstack
|
|
5
|
+
module Command
|
|
6
|
+
class ImageList < OpenstackCommand
|
|
7
|
+
def self.synopsis
|
|
8
|
+
I18n.t('vagrant_openstack.command.image_list_synopsis')
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def cmd(name, argv, env)
|
|
12
|
+
fail Errors::NoArgRequiredForCommand, cmd: name unless argv.size == 0
|
|
13
|
+
rows = []
|
|
14
|
+
headers = %w(ID Name)
|
|
15
|
+
if env[:openstack_client].session.endpoints.key? :image
|
|
16
|
+
images = env[:openstack_client].glance.get_all_images(env)
|
|
17
|
+
images.each { |i| rows << [i.id, i.name, i.visibility, i.size.to_i / 1024 / 1024, i.min_ram, i.min_disk] }
|
|
18
|
+
headers << ['Visibility', 'Size (Mo)', 'Min RAM (Go)', 'Min Disk (Go)']
|
|
19
|
+
headers = headers.flatten
|
|
20
|
+
else
|
|
21
|
+
images = env[:openstack_client].nova.get_all_images(env)
|
|
22
|
+
images.each { |image| rows << [image.id, image.name] }
|
|
23
|
+
end
|
|
24
|
+
display_table(env, headers, rows)
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
module VagrantPlugins
|
|
2
|
+
module Openstack
|
|
3
|
+
module Command
|
|
4
|
+
COMMANDS = [
|
|
5
|
+
{ name: :'image-list', file: 'image_list', clazz: 'ImageList' },
|
|
6
|
+
{ name: :'flavor-list', file: 'flavor_list', clazz: 'FlavorList' },
|
|
7
|
+
{ name: :'network-list', file: 'network_list', clazz: 'NetworkList' },
|
|
8
|
+
{ name: :'subnet-list', file: 'subnet_list', clazz: 'SubnetList' },
|
|
9
|
+
{ name: :'floatingip-list', file: 'floatingip_list', clazz: 'FloatingIpList' },
|
|
10
|
+
{ name: :'volume-list', file: 'volume_list', clazz: 'VolumeList' },
|
|
11
|
+
{ name: :'reset', file: 'reset', clazz: 'Reset' }
|
|
12
|
+
]
|
|
13
|
+
|
|
14
|
+
class Main < Vagrant.plugin('2', :command)
|
|
15
|
+
def self.synopsis
|
|
16
|
+
I18n.t('vagrant_openstack.command.main_synopsis')
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def initialize(argv, env)
|
|
20
|
+
@env = env
|
|
21
|
+
@main_args, @sub_command, @sub_args = split_main_and_subcommand(argv)
|
|
22
|
+
@commands = Vagrant::Registry.new
|
|
23
|
+
|
|
24
|
+
COMMANDS.each do |cmd|
|
|
25
|
+
@commands.register(cmd[:name]) do
|
|
26
|
+
require_relative cmd[:file]
|
|
27
|
+
Command.const_get(cmd[:clazz])
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
super(argv, env)
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
def execute
|
|
35
|
+
command_class = @commands.get(@sub_command.to_sym) if @sub_command
|
|
36
|
+
return usage unless command_class && @sub_command
|
|
37
|
+
command_class.new(@sub_args, @env).execute(@sub_command)
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
def usage
|
|
41
|
+
@env.ui.info I18n.t('vagrant_openstack.command.main_usage')
|
|
42
|
+
@env.ui.info ''
|
|
43
|
+
@env.ui.info I18n.t('vagrant_openstack.command.available_subcommands')
|
|
44
|
+
@commands.each do |key, value|
|
|
45
|
+
@env.ui.info " #{key.to_s.ljust(20)} #{value.synopsis}"
|
|
46
|
+
end
|
|
47
|
+
@env.ui.info ''
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
end
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
require 'vagrant-openstack-illuin-provider/command/openstack_command'
|
|
2
|
+
|
|
3
|
+
module VagrantPlugins
|
|
4
|
+
module Openstack
|
|
5
|
+
module Command
|
|
6
|
+
class NetworkList < OpenstackCommand
|
|
7
|
+
def self.synopsis
|
|
8
|
+
I18n.t('vagrant_openstack.command.network_list_synopsis')
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def cmd(name, argv, env)
|
|
12
|
+
fail Errors::UnrecognizedArgForCommand, cmd: name, arg: argv[1] if argv.size > 1
|
|
13
|
+
if argv.size == 0
|
|
14
|
+
networks = env[:openstack_client].neutron.get_private_networks(env)
|
|
15
|
+
elsif argv[0] == 'all'
|
|
16
|
+
networks = env[:openstack_client].neutron.get_all_networks(env)
|
|
17
|
+
else
|
|
18
|
+
fail Errors::UnrecognizedArgForCommand, cmd: name, arg: argv[0]
|
|
19
|
+
end
|
|
20
|
+
display_item_list(env, networks)
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
require 'vagrant-openstack-illuin-provider/command/utils'
|
|
2
|
+
require 'vagrant-openstack-illuin-provider/command/abstract_command'
|
|
3
|
+
|
|
4
|
+
module VagrantPlugins
|
|
5
|
+
module Openstack
|
|
6
|
+
module Command
|
|
7
|
+
class OpenstackCommand < AbstractCommand
|
|
8
|
+
include VagrantPlugins::Openstack::Command::Utils
|
|
9
|
+
|
|
10
|
+
def before_cmd(_name, _argv, env)
|
|
11
|
+
VagrantPlugins::Openstack::Action::ConnectOpenstack.new(nil, env).call(env)
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
require 'vagrant-openstack-illuin-provider/command/utils'
|
|
2
|
+
require 'vagrant-openstack-illuin-provider/command/abstract_command'
|
|
3
|
+
|
|
4
|
+
module VagrantPlugins
|
|
5
|
+
module Openstack
|
|
6
|
+
module Command
|
|
7
|
+
class Reset < AbstractCommand
|
|
8
|
+
def self.synopsis
|
|
9
|
+
I18n.t('vagrant_openstack.command.reset')
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def cmd(name, argv, env)
|
|
13
|
+
fail Errors::NoArgRequiredForCommand, cmd: name unless argv.size == 0
|
|
14
|
+
FileUtils.remove_dir("#{env[:machine].data_dir}")
|
|
15
|
+
env[:ui].info 'Vagrant OpenStack Provider has been reset'
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
require 'vagrant-openstack-illuin-provider/command/openstack_command'
|
|
2
|
+
|
|
3
|
+
module VagrantPlugins
|
|
4
|
+
module Openstack
|
|
5
|
+
module Command
|
|
6
|
+
class SubnetList < OpenstackCommand
|
|
7
|
+
def self.synopsis
|
|
8
|
+
I18n.t('vagrant_openstack.command.subnet_list_synopsis')
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def cmd(name, argv, env)
|
|
12
|
+
fail Errors::NoArgRequiredForCommand, cmd: name unless argv.size == 0
|
|
13
|
+
rows = []
|
|
14
|
+
env[:openstack_client].neutron.get_subnets(env).each do |subnet|
|
|
15
|
+
rows << [subnet.id, subnet.name, subnet.cidr, subnet.enable_dhcp, subnet.network_id]
|
|
16
|
+
end
|
|
17
|
+
display_table(env, ['ID', 'Name', 'CIDR', 'DHCP', 'Network ID'], rows)
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
require 'terminal-table'
|
|
2
|
+
|
|
3
|
+
module VagrantPlugins
|
|
4
|
+
module Openstack
|
|
5
|
+
module Command
|
|
6
|
+
module Utils
|
|
7
|
+
def display_item_list(env, items)
|
|
8
|
+
rows = []
|
|
9
|
+
items.each do |item|
|
|
10
|
+
rows << [item.id, item.name]
|
|
11
|
+
end
|
|
12
|
+
display_table(env, %w(ID Name), rows)
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def display_table(env, headers, rows)
|
|
16
|
+
table = Terminal::Table.new headings: headers, rows: rows
|
|
17
|
+
env[:ui].info("\n#{table}")
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
require 'vagrant-openstack-illuin-provider/command/openstack_command'
|
|
2
|
+
|
|
3
|
+
module VagrantPlugins
|
|
4
|
+
module Openstack
|
|
5
|
+
module Command
|
|
6
|
+
class VolumeList < OpenstackCommand
|
|
7
|
+
def self.synopsis
|
|
8
|
+
I18n.t('vagrant_openstack.command.volume_list_synopsis')
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def cmd(name, argv, env)
|
|
12
|
+
fail Errors::NoArgRequiredForCommand, cmd: name unless argv.size == 0
|
|
13
|
+
volumes = env[:openstack_client].cinder.get_all_volumes(env)
|
|
14
|
+
|
|
15
|
+
rows = []
|
|
16
|
+
volumes.each do |v|
|
|
17
|
+
attachment = "#{v.instance_id} (#{v.device})" unless v.instance_id.nil?
|
|
18
|
+
rows << [v.id, v.name, v.size, v.status, attachment]
|
|
19
|
+
end
|
|
20
|
+
display_table(env, ['ID', 'Name', 'Size (Go)', 'Status', 'Attachment (instance ID and device)'], rows)
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|