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,39 @@
|
|
|
1
|
+
module VagrantPlugins
|
|
2
|
+
module Openstack
|
|
3
|
+
module Logging
|
|
4
|
+
# This initializes the logging so that our logs are outputted at
|
|
5
|
+
# the same level as Vagrant core logs.
|
|
6
|
+
def self.init
|
|
7
|
+
# Initialize logging
|
|
8
|
+
level = nil
|
|
9
|
+
begin
|
|
10
|
+
level = Log4r.const_get(ENV['VAGRANT_LOG'].upcase)
|
|
11
|
+
rescue NameError
|
|
12
|
+
# This means that the logging constant wasn't found,
|
|
13
|
+
# which is fine. We just keep `level` as `nil`. But
|
|
14
|
+
# we tell the user.
|
|
15
|
+
begin
|
|
16
|
+
level = Log4r.const_get(ENV['VAGRANT_OPENSTACK_LOG'].upcase)
|
|
17
|
+
rescue NameError
|
|
18
|
+
level = nil
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
# Some constants, such as "true" resolve to booleans, so the
|
|
23
|
+
# above error checking doesn't catch it. This will check to make
|
|
24
|
+
# sure that the log level is an integer, as Log4r requires.
|
|
25
|
+
level = nil unless level.is_a?(Integer)
|
|
26
|
+
|
|
27
|
+
# Set the logging level
|
|
28
|
+
# logs as long as we have a valid level.
|
|
29
|
+
if level
|
|
30
|
+
logger = Log4r::Logger.new('vagrant_openstack')
|
|
31
|
+
out = Log4r::Outputter.stdout
|
|
32
|
+
out.formatter = Log4r::PatternFormatter.new(pattern: '%d | %5l | %m', date_pattern: '%Y-%m-%d %H:%M')
|
|
33
|
+
logger.outputters = out
|
|
34
|
+
logger.level = level
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
end
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
begin
|
|
2
|
+
require 'vagrant'
|
|
3
|
+
rescue LoadError
|
|
4
|
+
raise 'The Openstack Cloud provider must be run within Vagrant.'
|
|
5
|
+
end
|
|
6
|
+
|
|
7
|
+
require 'vagrant-openstack-illuin-provider/version_checker'
|
|
8
|
+
|
|
9
|
+
# This is a sanity check to make sure no one is attempting to install
|
|
10
|
+
# this into an early Vagrant version.
|
|
11
|
+
if Vagrant::VERSION < '1.4.0'
|
|
12
|
+
fail 'Openstack Cloud provider is only compatible with Vagrant 1.4+'
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
module VagrantPlugins
|
|
16
|
+
module Openstack
|
|
17
|
+
class Plugin < Vagrant.plugin('2')
|
|
18
|
+
name 'Openstack Cloud'
|
|
19
|
+
description <<-DESC
|
|
20
|
+
This plugin enables Vagrant to manage machines in Openstack Cloud.
|
|
21
|
+
DESC
|
|
22
|
+
|
|
23
|
+
config(:openstack_illuin, :provider) do
|
|
24
|
+
require_relative 'config'
|
|
25
|
+
Config
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
provider(:openstack_illuin, box_optional: true, parallel: true) do
|
|
29
|
+
Openstack.init_i18n
|
|
30
|
+
Openstack.init_logging
|
|
31
|
+
VagrantPlugins::Openstack.check_version
|
|
32
|
+
|
|
33
|
+
# Load the actual provider
|
|
34
|
+
require_relative 'provider'
|
|
35
|
+
Provider
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
# TODO: Remove the if guard when Vagrant 1.8.0 is the minimum version.
|
|
39
|
+
# rubocop:disable IndentationWidth
|
|
40
|
+
if Gem::Version.new(Vagrant::VERSION) >= Gem::Version.new('1.8.0')
|
|
41
|
+
provider_capability('openstack', 'snapshot_list') do
|
|
42
|
+
require_relative 'cap/snapshot_list'
|
|
43
|
+
Cap::SnapshotList
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
# rubocop:enable IndentationWidth
|
|
47
|
+
|
|
48
|
+
command('openstack') do
|
|
49
|
+
Openstack.init_i18n
|
|
50
|
+
Openstack.init_logging
|
|
51
|
+
VagrantPlugins::Openstack.check_version
|
|
52
|
+
|
|
53
|
+
require_relative 'command/main'
|
|
54
|
+
Command::Main
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
end
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
require 'vagrant'
|
|
2
|
+
|
|
3
|
+
require 'vagrant-openstack-illuin-provider/action'
|
|
4
|
+
|
|
5
|
+
module VagrantPlugins
|
|
6
|
+
module Openstack
|
|
7
|
+
class Provider < Vagrant.plugin('2', :provider)
|
|
8
|
+
def initialize(machine)
|
|
9
|
+
@machine = machine
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def action(name)
|
|
13
|
+
# Attempt to get the action method from the Action class if it
|
|
14
|
+
# exists, otherwise return nil to show that we don't support the
|
|
15
|
+
# given action.
|
|
16
|
+
action_method = "action_#{name}"
|
|
17
|
+
return Action.send(action_method) if Action.respond_to?(action_method)
|
|
18
|
+
nil
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def ssh_info
|
|
22
|
+
# Run a custom action called "read_ssh_info" which does what it
|
|
23
|
+
# says and puts the resulting SSH info into the `:machine_ssh_info`
|
|
24
|
+
# key in the environment.
|
|
25
|
+
env = @machine.action('read_ssh_info', lock: false)
|
|
26
|
+
env[:machine_ssh_info]
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def state
|
|
30
|
+
# Run a custom action we define called "read_state" which does
|
|
31
|
+
# what it says. It puts the state in the `:machine_state_id`
|
|
32
|
+
# key in the environment.
|
|
33
|
+
env = @machine.action('read_state', lock: false)
|
|
34
|
+
|
|
35
|
+
state_id = env[:machine_state_id]
|
|
36
|
+
|
|
37
|
+
# Get the short and long description
|
|
38
|
+
short = I18n.t("vagrant_openstack.states.short_#{state_id}")
|
|
39
|
+
long = I18n.t("vagrant_openstack.states.long_#{state_id}")
|
|
40
|
+
|
|
41
|
+
# Return the MachineState object
|
|
42
|
+
Vagrant::MachineState.new(state_id, short, long)
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
def to_s
|
|
46
|
+
'Openstack Cloud'
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
end
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
module VagrantPlugins
|
|
2
|
+
module Openstack
|
|
3
|
+
class Utils
|
|
4
|
+
def initialize
|
|
5
|
+
@logger = Log4r::Logger.new('vagrant_openstack::action::config_resolver')
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
def get_ip_address(env)
|
|
9
|
+
addresses = env[:openstack_client].nova.get_server_details(env, env[:machine].id)['addresses']
|
|
10
|
+
# First, try to get a floating ip with the right version. If none of the floating ip is of the right version,
|
|
11
|
+
# return the first floating ip anyway.
|
|
12
|
+
fallback = nil
|
|
13
|
+
addresses.each do |_, network|
|
|
14
|
+
network.each do |network_detail|
|
|
15
|
+
next unless network_detail['OS-EXT-IPS:type'] == 'floating'
|
|
16
|
+
if env[:machine].provider_config.ip_version.nil?
|
|
17
|
+
return network_detail['addr']
|
|
18
|
+
elsif network_detail['version'] == env[:machine].provider_config.ip_version
|
|
19
|
+
return network_detail['addr']
|
|
20
|
+
end
|
|
21
|
+
fallback ||= network_detail['addr']
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
return fallback unless fallback.nil?
|
|
25
|
+
|
|
26
|
+
fail Errors::UnableToResolveIP if addresses.size == 0
|
|
27
|
+
|
|
28
|
+
# If only one network, we don't use networks config and return the first IP of the correct version
|
|
29
|
+
# If no IP for this version, return the first IP anyway
|
|
30
|
+
if addresses.size == 1
|
|
31
|
+
net_addresses = addresses.first[1]
|
|
32
|
+
fail Errors::UnableToResolveIP if net_addresses.size == 0
|
|
33
|
+
if env[:machine].provider_config.ip_version.nil?
|
|
34
|
+
return net_addresses[0]['addr']
|
|
35
|
+
else
|
|
36
|
+
right_version_ip = filter_by_version(net_addresses, env[:machine].provider_config.ip_version)
|
|
37
|
+
if right_version_ip.nil?
|
|
38
|
+
return net_addresses[0]['addr']
|
|
39
|
+
else
|
|
40
|
+
return right_version_ip
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
# If multiple networks exist, follow the order of the networks config and return the first IP of the correct
|
|
46
|
+
# version, be it in the first network or not.
|
|
47
|
+
fallback = nil
|
|
48
|
+
env[:machine].provider_config.networks.each do |network|
|
|
49
|
+
if network.is_a? String
|
|
50
|
+
net_addresses = addresses[network]
|
|
51
|
+
else
|
|
52
|
+
net_addresses = addresses[network[:name]]
|
|
53
|
+
end
|
|
54
|
+
next if net_addresses.size == 0
|
|
55
|
+
fallback ||= net_addresses[0]['addr']
|
|
56
|
+
if env[:machine].provider_config.ip_version.nil?
|
|
57
|
+
return net_addresses[0]['addr']
|
|
58
|
+
else
|
|
59
|
+
right_version_ip = filter_by_version(net_addresses, env[:machine].provider_config.ip_version)
|
|
60
|
+
if right_version_ip.nil?
|
|
61
|
+
next
|
|
62
|
+
else
|
|
63
|
+
return right_version_ip
|
|
64
|
+
end
|
|
65
|
+
end
|
|
66
|
+
end
|
|
67
|
+
fail Errors::UnableToResolveIP if fallback.nil?
|
|
68
|
+
fallback
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
private
|
|
72
|
+
|
|
73
|
+
def filter_by_version(net_addresses, wanted_ip_version)
|
|
74
|
+
net_addresses.each do |address|
|
|
75
|
+
return address['addr'] if address['version'] == wanted_ip_version
|
|
76
|
+
end
|
|
77
|
+
nil
|
|
78
|
+
end
|
|
79
|
+
end
|
|
80
|
+
end
|
|
81
|
+
end
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
module VagrantPlugins
|
|
2
|
+
module Openstack
|
|
3
|
+
#
|
|
4
|
+
# Stable versions must respect the pattern given
|
|
5
|
+
# by VagrantPlugins::Openstack::VERSION_PATTERN
|
|
6
|
+
#
|
|
7
|
+
VERSION = '0.12.0'
|
|
8
|
+
|
|
9
|
+
#
|
|
10
|
+
# Stable version must respect the naming convention 'x.y.z'
|
|
11
|
+
# where x, y and z are integers inside the range [0, 999]
|
|
12
|
+
#
|
|
13
|
+
VERSION_PATTERN = /^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$/
|
|
14
|
+
end
|
|
15
|
+
end
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
require 'colorize'
|
|
2
|
+
require 'singleton'
|
|
3
|
+
require 'vagrant-openstack-illuin-provider/version'
|
|
4
|
+
|
|
5
|
+
module VagrantPlugins
|
|
6
|
+
module Openstack
|
|
7
|
+
class VersionChecker
|
|
8
|
+
include Singleton
|
|
9
|
+
|
|
10
|
+
#
|
|
11
|
+
# :latest, :outdated or :unstable
|
|
12
|
+
#
|
|
13
|
+
# A version is considered unstable if it does not
|
|
14
|
+
# respect the pattern or if it is greater than the
|
|
15
|
+
# latest from rubygem
|
|
16
|
+
#
|
|
17
|
+
attr_accessor :status
|
|
18
|
+
|
|
19
|
+
def initialize
|
|
20
|
+
@status = nil
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
#
|
|
24
|
+
# Check the latest version from rubygem and set the status
|
|
25
|
+
#
|
|
26
|
+
def check
|
|
27
|
+
return @status unless @status.nil?
|
|
28
|
+
latest = Gem.latest_spec_for('vagrant-openstack-illuin-provider').version.version
|
|
29
|
+
current = VagrantPlugins::Openstack::VERSION
|
|
30
|
+
|
|
31
|
+
unless current =~ VERSION_PATTERN
|
|
32
|
+
@status = :unstable
|
|
33
|
+
print I18n.t('vagrant_openstack.version_unstable')
|
|
34
|
+
return
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
if latest.eql? current
|
|
38
|
+
@status = :latest
|
|
39
|
+
return
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
v_latest = latest.split('.').map(&:to_i)
|
|
43
|
+
v_current = current.split('.').map(&:to_i)
|
|
44
|
+
|
|
45
|
+
i_latest = v_latest[2] + v_latest[1] * 1000 + v_latest[0] * 1_000_000
|
|
46
|
+
i_current = v_current[2] + v_current[1] * 1000 + v_current[0] * 1_000_000
|
|
47
|
+
|
|
48
|
+
if i_current > i_latest
|
|
49
|
+
@status = :unstable
|
|
50
|
+
print I18n.t('vagrant_openstack.version_unstable')
|
|
51
|
+
return
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
@status = :outdated
|
|
55
|
+
print I18n.t('vagrant_openstack.version_outdated', latest: latest, current: current)
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
private
|
|
59
|
+
|
|
60
|
+
def print(message)
|
|
61
|
+
puts message.yellow
|
|
62
|
+
puts ''
|
|
63
|
+
end
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
# rubocop:disable Lint/HandleExceptions
|
|
67
|
+
def self.check_version
|
|
68
|
+
Timeout.timeout(3, Errors::Timeout) do
|
|
69
|
+
VersionChecker.instance.check
|
|
70
|
+
end
|
|
71
|
+
rescue
|
|
72
|
+
# Do nothing whatever the failure cause
|
|
73
|
+
end
|
|
74
|
+
# rubocop:enable Lint/HandleExceptions
|
|
75
|
+
end
|
|
76
|
+
end
|
data/locales/en.yml
ADDED
|
@@ -0,0 +1,412 @@
|
|
|
1
|
+
en:
|
|
2
|
+
vagrant_openstack:
|
|
3
|
+
global_error: |-
|
|
4
|
+
An unknown error happened in Vagrant OpenStack provider
|
|
5
|
+
|
|
6
|
+
To easily debug what happened, we recommend to set the environment
|
|
7
|
+
variable VAGRANT_OPENSTACK_LOG to debug
|
|
8
|
+
|
|
9
|
+
$ export VAGRANT_OPENSTACK_LOG=debug
|
|
10
|
+
|
|
11
|
+
If doing this does not help fixing your issue, there may be a bug
|
|
12
|
+
in the provider. Please submit an issue on Github at
|
|
13
|
+
https://github.com/ggiamarchi/vagrant-openstack-provider
|
|
14
|
+
with the stracktrace and the logs.
|
|
15
|
+
|
|
16
|
+
We are looking for feedback, so feel free to ask questions or
|
|
17
|
+
describe features you would like to see in this provider.
|
|
18
|
+
version_outdated: |-
|
|
19
|
+
You're not using the latest version of the 'vagrant-openstack-provider' plugin.
|
|
20
|
+
The latest version is %{latest}, yours is %{current}. You should update to the latest
|
|
21
|
+
version running the command :
|
|
22
|
+
|
|
23
|
+
$ vagrant plugin update vagrant-openstack-provider
|
|
24
|
+
version_unstable: |-
|
|
25
|
+
You're not running a stable version of the 'vagrant-openstack-provider' plugin.
|
|
26
|
+
Unless you are either developing on vagrant or have deliberately installed a not
|
|
27
|
+
stable version, you should uninstall it an install the latest stable version
|
|
28
|
+
running commands :
|
|
29
|
+
|
|
30
|
+
$ vagrant plugin uninstall vagrant-openstack-provider
|
|
31
|
+
$ vagrant plugin install vagrant-openstack-provider
|
|
32
|
+
already_created: |-
|
|
33
|
+
The server is already created.
|
|
34
|
+
create_stack: |-
|
|
35
|
+
Creating Heat Stack.
|
|
36
|
+
delete_stack: |-
|
|
37
|
+
Deleting Heat Stack.
|
|
38
|
+
already_suspended: |-
|
|
39
|
+
The server is already suspended.
|
|
40
|
+
ongoing_task: |-
|
|
41
|
+
The server is currently running a task and cannot execute your request.
|
|
42
|
+
not_suspended: |-
|
|
43
|
+
The server is not currently "suspended" and cannot be resumed.
|
|
44
|
+
deleting_server: |-
|
|
45
|
+
Deleting server...
|
|
46
|
+
finding_flavor: |-
|
|
47
|
+
Finding flavor for server...
|
|
48
|
+
finding_image: |-
|
|
49
|
+
Finding image for server...
|
|
50
|
+
finding_networks: |-
|
|
51
|
+
Finding network(s) for server...
|
|
52
|
+
finding_volumes: |-
|
|
53
|
+
Finding volume(s) to attach on server...
|
|
54
|
+
launching_server: |-
|
|
55
|
+
Launching a server with the following settings...
|
|
56
|
+
not_created: |-
|
|
57
|
+
The server hasn't been created yet. Run `vagrant up` first.
|
|
58
|
+
ready: |-
|
|
59
|
+
The server is ready!
|
|
60
|
+
stopping_server: |-
|
|
61
|
+
Stopping server...
|
|
62
|
+
starting_server: |-
|
|
63
|
+
Starting server...
|
|
64
|
+
timeout: |-
|
|
65
|
+
Timeout!
|
|
66
|
+
trying_authentication: |-
|
|
67
|
+
Trying authentication...
|
|
68
|
+
rsync_folder: |-
|
|
69
|
+
Rsyncing folder: %{hostpath} => %{guestpath}
|
|
70
|
+
using_floating_ip: |-
|
|
71
|
+
Using floating IP %{floating_ip}
|
|
72
|
+
waiting_for_floating_ip: |-
|
|
73
|
+
Waiting for floating IP %{floating_ip} to be assigned...
|
|
74
|
+
waiting_for_build: |-
|
|
75
|
+
Waiting for the server to be built...
|
|
76
|
+
waiting_for_ssh: |-
|
|
77
|
+
Waiting for SSH to become available...
|
|
78
|
+
waiting_stop: |-
|
|
79
|
+
Waiting for the server to stop...
|
|
80
|
+
waiting_start: |-
|
|
81
|
+
Waiting for the server to start...
|
|
82
|
+
waiting_deleted: |-
|
|
83
|
+
Waiting for the server to be deleted...
|
|
84
|
+
waiting_for_stack: |-
|
|
85
|
+
Waiting for Heat Stack to be created...
|
|
86
|
+
waiting_for_stack_deleted: |-
|
|
87
|
+
Waiting for Heat Stack to be created...
|
|
88
|
+
warn_networks: |-
|
|
89
|
+
Warning! The OpenStack provider doesn't support any of the Vagrant
|
|
90
|
+
high-level network configurations (`config.vm.network`). They
|
|
91
|
+
will be silently ignored.
|
|
92
|
+
warn_network_identifier_is_assumed_to_be_an_id: |-
|
|
93
|
+
As Neutron endpoint is not available, the identifier '%{network}' is assumed to be an id (not a name).
|
|
94
|
+
warn_volume_identifier_is_assumed_to_be_an_id: |-
|
|
95
|
+
As Cinder endpoint is not available, the identifier '%{volume}' is assumed to be an id (not a name).
|
|
96
|
+
ssh_disabled_provisioning: |-
|
|
97
|
+
Provisioning will not be performed because provider config ssh_disabled is set to true
|
|
98
|
+
ssh_disabled_sync_folders: |-
|
|
99
|
+
Folders will not be synced because provider config ssh_disabled is set to true
|
|
100
|
+
disabled_sync_folders: |-
|
|
101
|
+
Sync folders are disabled in the provider configuration
|
|
102
|
+
|
|
103
|
+
config:
|
|
104
|
+
password_required: |-
|
|
105
|
+
A password is required.
|
|
106
|
+
username_required: |-
|
|
107
|
+
A username is required.
|
|
108
|
+
tenant_name_required: |-
|
|
109
|
+
A tenant name is required.
|
|
110
|
+
invalid_uri: |-
|
|
111
|
+
The value for %{key} is not a valid URI: %{uri}
|
|
112
|
+
invalid_stack: |-
|
|
113
|
+
One of the stacks in the stacks provider configuration is invalid
|
|
114
|
+
The configuration option should have the following format:
|
|
115
|
+
os.stacks = [{
|
|
116
|
+
name: 'mystack',
|
|
117
|
+
template: '/path/to/heat_template.yml',
|
|
118
|
+
}]
|
|
119
|
+
invalid_endpoint_type: |-
|
|
120
|
+
endpoint_type must be publicURL, adminURL or internalURL (if not provided, default is publicURL)
|
|
121
|
+
metadata_must_be_hash: |-
|
|
122
|
+
Metadata must be a hash.
|
|
123
|
+
keypair_name_required: |-
|
|
124
|
+
Warning! You have specified ssh.private_key_path in your Vagrant configuration.
|
|
125
|
+
but nor keypair_name neither public_key_path are present. The OpenStack provider
|
|
126
|
+
will automatically generate a new keypair and your configuration option
|
|
127
|
+
ssh.private_key_path will be overriden
|
|
128
|
+
private_key_missing: |-
|
|
129
|
+
config.ssh.private_key_path is required when either keypair_name or
|
|
130
|
+
public_key_path is set in Vagrantfile
|
|
131
|
+
ssh_username_deprecated: |-
|
|
132
|
+
ssh_username provider config is deprecated for vagrant-openstack provider.
|
|
133
|
+
If you are using it, it will continue to work but we recommend to switch to the
|
|
134
|
+
standard vagrant configuration option `config.ssh.username` instead
|
|
135
|
+
ssh_username_required: |-
|
|
136
|
+
vagrant standard configuration option `ssh.username` is required
|
|
137
|
+
ssh_timeout_deprecated: |-
|
|
138
|
+
ssh_timeout provider config is deprecated for vagrant-openstack provider.
|
|
139
|
+
If you are using it, it will continue to work but we recommend switching
|
|
140
|
+
to the standard vagrant configuration option `config.vm.boot_timeout`.
|
|
141
|
+
invalid_value_for_parameter: |-
|
|
142
|
+
Invalid value '%{value}' for parameter '%{parameter}'
|
|
143
|
+
sync_folders_deprecated: |-
|
|
144
|
+
The following configuration settings are deprecated and should be
|
|
145
|
+
removed: rsync_includes, rsync_ignore_files, sync_method. Using these
|
|
146
|
+
settings causes the OpenStack provider to fall back to an old synced
|
|
147
|
+
folder implementation instead of using standard Vagrant synced folders.
|
|
148
|
+
domain_required: |-
|
|
149
|
+
A domain is required when using identity API version 3
|
|
150
|
+
project_name_required: |-
|
|
151
|
+
A project name is required when using identity API version 3
|
|
152
|
+
invalid_interface_type: |-
|
|
153
|
+
Interface type must be public, admin or internal (if not provided, default is public)
|
|
154
|
+
invalid_api_version: |-
|
|
155
|
+
identity API verison must be 2 or 3 (if not provided, default is 2)
|
|
156
|
+
|
|
157
|
+
errors:
|
|
158
|
+
default: |-
|
|
159
|
+
%{message}
|
|
160
|
+
timeout: |-
|
|
161
|
+
Timeout occurred
|
|
162
|
+
authentication_required: |-
|
|
163
|
+
Authentication token is missing or no longer valid.
|
|
164
|
+
floating_ip_already_assigned: |-
|
|
165
|
+
Floating IP %{floating_ip} already assigned to another server
|
|
166
|
+
floating_ip_not_available: |-
|
|
167
|
+
Floating IP %{floating_ip} not available for this tenant
|
|
168
|
+
authentication_failed: |-
|
|
169
|
+
Authentication failed.
|
|
170
|
+
bad_authentication_endpoint: |-
|
|
171
|
+
Bad authentication endpoint.
|
|
172
|
+
create_bad_state: |-
|
|
173
|
+
While creating the server, it transitioned to an unexpected
|
|
174
|
+
state: '%{state}', instead of properly booting. Run `vagrant status`
|
|
175
|
+
to find out what can be done about this state, or `vagrant destroy`
|
|
176
|
+
if you want to start over.
|
|
177
|
+
no_matching_api_version: |-
|
|
178
|
+
No matching version found for %{api_name} API
|
|
179
|
+
|
|
180
|
+
%{version_list}
|
|
181
|
+
You must specify the desired %{api_name} API url by setting
|
|
182
|
+
the provider's property '%{url_property}'.
|
|
183
|
+
no_matching_flavor: |-
|
|
184
|
+
No matching flavor was found! Please check your flavor setting
|
|
185
|
+
to make sure you have a valid flavor chosen.
|
|
186
|
+
no_matching_image: |-
|
|
187
|
+
No matching image was found! Please check your image setting to
|
|
188
|
+
make sure you have a valid image chosen.
|
|
189
|
+
conflict_boot_volume: |-
|
|
190
|
+
When booting from an existing volume it is not authorized to specify in your Vagrantfile either 'image' or 'size' or 'delete_on_destroy'.
|
|
191
|
+
When booting from a newly creating volume it is not authorized to specify in your Vagrantfile either 'id' or 'name'.
|
|
192
|
+
sync_method_error: |-
|
|
193
|
+
Value '%{sync_method_value}' is not allowed for 'sync_method' configuration parameter. Valid values are 'rsync' and 'none'
|
|
194
|
+
rsync_error: |-
|
|
195
|
+
There was an error when attempting to rsync a share folder.
|
|
196
|
+
Please inspect the error message below for more info.
|
|
197
|
+
|
|
198
|
+
Host path: %{hostpath}
|
|
199
|
+
Guest path: %{guestpath}
|
|
200
|
+
Error: %{stderr}
|
|
201
|
+
ssh_unavailble: |-
|
|
202
|
+
SSH server unavailable on instance %{host}. You should maybe increase the timeout value which currently is %{timeout} second(s).
|
|
203
|
+
no_arg_required_for_command: |-
|
|
204
|
+
Command '%{cmd}' does not required any argument.
|
|
205
|
+
unrecognized_arg_for_command: |-
|
|
206
|
+
Argument '%{arg}' unrecognized for command '%{cmd}'.
|
|
207
|
+
unable_to_resolve_floating_ip: |-
|
|
208
|
+
Vagrant was unable to resolve a floating ip to communicate with your OpenStack instance. Please specify in your Vagrantfile either `floating_ip` or `floating_ip_pool`.
|
|
209
|
+
unable_to_resolve_ip: |-
|
|
210
|
+
Vagrant was unable to resolve a valid ip to ssh on your OpenStack instance.
|
|
211
|
+
unable_to_resolve_ssh_key: |-
|
|
212
|
+
Vagrant was unable to resolve a valid ssh key to connect to your OpenStack instance. Please specify in your Vagrantfile either `public_key_path` or `keypair_name`.
|
|
213
|
+
invalid_network_format: |-
|
|
214
|
+
Network '%{network}' is not valid.
|
|
215
|
+
unresolved_network: |-
|
|
216
|
+
No matching network with id or name '%{network}'
|
|
217
|
+
unresolved_network_id: |-
|
|
218
|
+
No matching network with id '%{id}'
|
|
219
|
+
unresolved_network_name: |-
|
|
220
|
+
No matching network with name '%{name}'
|
|
221
|
+
conflict_network_name_id: |-
|
|
222
|
+
One (and only one) of 'id' or 'name' must be specified in network definition : %{network}
|
|
223
|
+
multiple_network_name: |-
|
|
224
|
+
More than one network exists with name '%{name}'. In this case you can't use name in network definition. Please, use id instead.
|
|
225
|
+
invalid_volume_format: |-
|
|
226
|
+
Volume '%{volume}' is not valid.
|
|
227
|
+
unresolved_volume: |-
|
|
228
|
+
No matching volume with id or name '%{volume}'
|
|
229
|
+
unresolved_volume_id: |-
|
|
230
|
+
No matching volume with id '%{id}'
|
|
231
|
+
unresolved_volume_name: |-
|
|
232
|
+
No matching volume with name '%{name}'
|
|
233
|
+
conflict_volume_name_id: |-
|
|
234
|
+
One (and only one) of 'id' or 'name' must be specified in volume definition : %{volume}
|
|
235
|
+
multiple_volume_name: |-
|
|
236
|
+
More than one volume exists with name '%{name}'. In this case you can't use name in volume definition. Please, use id instead.
|
|
237
|
+
missing_boot_option: |-
|
|
238
|
+
Either 'image' or 'volume_boot' configuration must be provided
|
|
239
|
+
conflict_boot_option: |-
|
|
240
|
+
Only one of 'image' and 'volume_boot' configuration must be provided
|
|
241
|
+
ssh_username_missing: |-
|
|
242
|
+
Vagrant was unable to resolve which ssh username to use to connect to the machine. Please provide config parameter `ssh.username`
|
|
243
|
+
instance_not_found: |-
|
|
244
|
+
Vagrant was unable to find the OpenStack instance used for your vagrant machine.
|
|
245
|
+
This can happen when the instance has been deleted via OpenStack APIs or OpenStack
|
|
246
|
+
Dashboard instead of using vagrant commands.
|
|
247
|
+
We recommend using the command `vagrant openstack reset` to reset
|
|
248
|
+
vagrant to a clear state
|
|
249
|
+
stack_not_found: |-
|
|
250
|
+
Heat stack not found
|
|
251
|
+
nerwork_service_unavailable: |-
|
|
252
|
+
Neutron service endpoint is not available, thus there is not way to retrieve
|
|
253
|
+
network id from its name. You have to provide only ids in your Vagrantfile.
|
|
254
|
+
volume_service_unavailable: |-
|
|
255
|
+
Cinder service endpoint is not available, thus there is not way to retrieve
|
|
256
|
+
volume id from its name. You have to provide only ids in your Vagrantfile.
|
|
257
|
+
server_status_error: |-
|
|
258
|
+
Server '%{server}' is in error status.
|
|
259
|
+
stack_status_error: |-
|
|
260
|
+
Heat Stack '%{stack}' is in error status.
|
|
261
|
+
missing_nova_endpoint: |-
|
|
262
|
+
Nova endpoint must either be present in your keystone service catalog or be
|
|
263
|
+
specified using the provider's attribute 'openstack_compute_url'
|
|
264
|
+
|
|
265
|
+
states:
|
|
266
|
+
short_active: |-
|
|
267
|
+
active
|
|
268
|
+
long_active: |-
|
|
269
|
+
The server is up and running. Run `vagrant ssh` to access it.
|
|
270
|
+
short_build: |-
|
|
271
|
+
building
|
|
272
|
+
long_build: |-
|
|
273
|
+
The server is currently being built. You must wait for this to
|
|
274
|
+
complete before you can access it. You can delete the server, however,
|
|
275
|
+
by running `vagrant destroy`.
|
|
276
|
+
short_error: |-
|
|
277
|
+
error
|
|
278
|
+
long_error: |-
|
|
279
|
+
The server is in an erroneous state. Contact your OpenStack administrator
|
|
280
|
+
or destroy the machine with `vagrant destroy`.
|
|
281
|
+
short_hard_reboot: |-
|
|
282
|
+
hard reboot
|
|
283
|
+
long_hard_reboot: |-
|
|
284
|
+
The server is hard rebooting. This is equivalent to pulling the power plug
|
|
285
|
+
on a physical server, plugging it back in, and rebooting it.
|
|
286
|
+
short_password: |-
|
|
287
|
+
password reset
|
|
288
|
+
long_password: |-
|
|
289
|
+
The password is being reset on the server.
|
|
290
|
+
short_reboot: |-
|
|
291
|
+
reboot
|
|
292
|
+
long_reboot: |-
|
|
293
|
+
The server is in a soft reboot state. A reboot command was passed to the operating system.
|
|
294
|
+
short_rebuild: |-
|
|
295
|
+
rebuild
|
|
296
|
+
long_rebuild: |-
|
|
297
|
+
The server is currently being rebuilt from an image.
|
|
298
|
+
short_rescue: |-
|
|
299
|
+
rescue
|
|
300
|
+
long_rescue: |-
|
|
301
|
+
The server is in rescue mode.
|
|
302
|
+
short_resize: |-
|
|
303
|
+
resize
|
|
304
|
+
long_resize: |-
|
|
305
|
+
Server is performing the differential copy of data that changed during
|
|
306
|
+
its initial copy. Server is down for this stage.
|
|
307
|
+
short_revert_resize: |-
|
|
308
|
+
revert resize
|
|
309
|
+
long_revert_resize: |-
|
|
310
|
+
The resize or migration of a server failed for some reason. The destination
|
|
311
|
+
server is being cleaned up and the original source server is restarting.
|
|
312
|
+
short_shutoff: |-
|
|
313
|
+
shutoff
|
|
314
|
+
long_shutoff: |-
|
|
315
|
+
The virtual machine (VM) was powered down by the user, but not through the
|
|
316
|
+
OpenStack Compute API. For example, the user issued a shutdown -h command
|
|
317
|
+
from within the server instance. If the OpenStack Compute manager detects
|
|
318
|
+
that the VM was powered down, it transitions the server instance to the
|
|
319
|
+
SHUTOFF status. If you use the OpenStack Compute API to restart the instance,
|
|
320
|
+
the instance might be deleted first, depending on the value in the
|
|
321
|
+
shutdown_terminate database field on the Instance model.
|
|
322
|
+
short_suspended: |-
|
|
323
|
+
suspended
|
|
324
|
+
long_suspended: |-
|
|
325
|
+
The server is suspended, either by request or necessity. This status appears
|
|
326
|
+
for only the following hypervisors: XenServer/XCP, KVM, and ESXi.
|
|
327
|
+
short_unknown: |-
|
|
328
|
+
unknown
|
|
329
|
+
long_unknown: |-
|
|
330
|
+
The state of the server is unknown. Contact your cloud provider.
|
|
331
|
+
short_verify_resize: |-
|
|
332
|
+
verify resize
|
|
333
|
+
long_verifiy_resize: |-
|
|
334
|
+
System is awaiting confirmation that the server is operational after a move or resize.
|
|
335
|
+
short_not_created: |-
|
|
336
|
+
not created
|
|
337
|
+
long_not_created: |-
|
|
338
|
+
The server is not created. Run `vagrant up` to create it.
|
|
339
|
+
short_suspending: |-
|
|
340
|
+
suspending
|
|
341
|
+
long_suspending: |-
|
|
342
|
+
The server is active and currently suspending, either by request or necessity.
|
|
343
|
+
short_resuming: |-
|
|
344
|
+
resuming
|
|
345
|
+
long_resuming: |-
|
|
346
|
+
The server is suspended and currently resuming by request.
|
|
347
|
+
short_spawning: |-
|
|
348
|
+
spawning
|
|
349
|
+
long_spawning: |-
|
|
350
|
+
The server is not created yet but is currently spawning by request.
|
|
351
|
+
short_scheduling: |-
|
|
352
|
+
scheduling
|
|
353
|
+
long_scheduling: |-
|
|
354
|
+
The server is building and currently scheduling by necessity.
|
|
355
|
+
short_deleting: |-
|
|
356
|
+
deleting
|
|
357
|
+
long_deleting: |-
|
|
358
|
+
The server is created and currently deleting by request.
|
|
359
|
+
short_rebooting: |-
|
|
360
|
+
rebooting
|
|
361
|
+
long_rebooting: |-
|
|
362
|
+
The server is currently rebooting, either by request or necessity.
|
|
363
|
+
short_reboot_pending: |-
|
|
364
|
+
reboot_pending
|
|
365
|
+
long_reboot_pending: |-
|
|
366
|
+
The server reboot is pending by necessity.
|
|
367
|
+
short_reboot_started: |-
|
|
368
|
+
reboot_started
|
|
369
|
+
long_reboot_started: |-
|
|
370
|
+
The server is starting to reboot, either by request or necessity.
|
|
371
|
+
short_rebooting_hard: |-
|
|
372
|
+
rebooting_hard
|
|
373
|
+
long_rebooting_hard: |-
|
|
374
|
+
The server is currently hard rebooting, either by request.
|
|
375
|
+
short_reboot_pending_hard: |-
|
|
376
|
+
reboot_pending_hard
|
|
377
|
+
long_reboot_pending_hard: |-
|
|
378
|
+
The server hard reboot is pending by necessity.
|
|
379
|
+
short_reboot_started_hard: |-
|
|
380
|
+
reboot_started_hard
|
|
381
|
+
long_reboot_started_hard: |-
|
|
382
|
+
The server is starting to hard reboot by request.
|
|
383
|
+
|
|
384
|
+
client:
|
|
385
|
+
looking_for_available_endpoints: |-
|
|
386
|
+
Looking for available endpoints...
|
|
387
|
+
multiple_endpoint: |-
|
|
388
|
+
%{size} endpoints are available for service '%{type}' but only the first one will be used
|
|
389
|
+
authentication: |-
|
|
390
|
+
Authentication on project %{project} with user %{user}
|
|
391
|
+
|
|
392
|
+
command:
|
|
393
|
+
main_synopsis: |-
|
|
394
|
+
OpenStack provider specific commands
|
|
395
|
+
main_usage : |-
|
|
396
|
+
Usage: vagrant openstack command
|
|
397
|
+
available_subcommands: |-
|
|
398
|
+
Available subcommands:
|
|
399
|
+
image_list_synopsis : |-
|
|
400
|
+
List available images
|
|
401
|
+
flavor_list_synopsis : |-
|
|
402
|
+
List available flavors
|
|
403
|
+
network_list_synopsis : |-
|
|
404
|
+
List private networks in project
|
|
405
|
+
subnet_list_synopsis : |-
|
|
406
|
+
List subnets for available networks
|
|
407
|
+
flaotingip_list_synopsis : |-
|
|
408
|
+
List floating IP and floating IP pools
|
|
409
|
+
volume_list_synopsis : |-
|
|
410
|
+
List existing volumes
|
|
411
|
+
reset : |-
|
|
412
|
+
Reset Vagrant OpenStack provider to a clear state
|