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,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
|