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