vagrant-openstack-provider 0.1.2 → 0.2.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 +13 -5
- data/.rubocop.yml +28 -0
- data/Appraisals +3 -3
- data/CHANGELOG.md +4 -0
- data/Gemfile +3 -0
- data/Rakefile +6 -2
- data/Vagrantfile +4 -15
- data/gemfiles/latest_stable.gemfile +2 -0
- data/gemfiles/oldest_current.gemfile +2 -0
- data/gemfiles/previous_release.gemfile +2 -0
- data/lib/vagrant-openstack-provider.rb +18 -13
- data/lib/vagrant-openstack-provider/action.rb +112 -46
- data/lib/vagrant-openstack-provider/action/connect_openstack.rb +9 -10
- data/lib/vagrant-openstack-provider/action/create_server.rb +86 -57
- data/lib/vagrant-openstack-provider/action/delete_server.rb +5 -6
- data/lib/vagrant-openstack-provider/action/{is_created.rb → message.rb} +4 -3
- data/lib/vagrant-openstack-provider/action/read_ssh_info.rb +7 -27
- data/lib/vagrant-openstack-provider/action/read_state.rb +7 -9
- data/lib/vagrant-openstack-provider/action/resume.rb +20 -0
- data/lib/vagrant-openstack-provider/action/start_server.rb +22 -0
- data/lib/vagrant-openstack-provider/action/stop_server.rb +22 -0
- data/lib/vagrant-openstack-provider/action/suspend.rb +20 -0
- data/lib/vagrant-openstack-provider/action/sync_folders.rb +27 -38
- data/lib/vagrant-openstack-provider/action/wait_stop.rb +29 -0
- data/lib/vagrant-openstack-provider/client/keystone.rb +76 -0
- data/lib/vagrant-openstack-provider/client/neutron.rb +32 -0
- data/lib/vagrant-openstack-provider/client/nova.rb +166 -0
- data/lib/vagrant-openstack-provider/client/openstack.rb +41 -0
- data/lib/vagrant-openstack-provider/client/utils.rb +38 -0
- data/lib/vagrant-openstack-provider/config.rb +38 -110
- data/lib/vagrant-openstack-provider/errors.rb +7 -3
- data/lib/vagrant-openstack-provider/plugin.rb +8 -8
- data/lib/vagrant-openstack-provider/provider.rb +6 -6
- data/lib/vagrant-openstack-provider/version.rb +1 -1
- data/locales/en.yml +83 -5
- data/numergyrc +22 -0
- data/spec/vagrant-openstack-provider/action/create_server_spec.rb +89 -0
- data/spec/vagrant-openstack-provider/client/keystone_spec.rb +140 -0
- data/spec/vagrant-openstack-provider/client/neutron_spec.rb +53 -0
- data/spec/vagrant-openstack-provider/client/nova_spec.rb +373 -0
- data/spec/vagrant-openstack-provider/client/utils_spec.rb +125 -0
- data/spec/vagrant-openstack-provider/config_spec.rb +117 -0
- data/spec/vagrant-openstack-provider/provider_spec.rb +13 -0
- data/spec/vagrant-openstack-provider/spec_helper.rb +23 -0
- data/vagrant-openstack-provider.gemspec +13 -14
- metadata +40 -30
- data/features/provision.feature +0 -35
- data/features/steps/sdk_steps.rb +0 -13
- data/features/steps/server_steps.rb +0 -25
- data/features/support/env.rb +0 -37
- data/features/support/fog_mock.rb +0 -19
- data/features/vagrant-openstack-provider.feature +0 -70
- data/lib/vagrant-openstack-provider/action/message_already_created.rb +0 -16
- data/lib/vagrant-openstack-provider/action/message_not_created.rb +0 -16
- data/lib/vagrant-openstack-provider/openstack_client.rb +0 -98
- data/spec/vagrant-openstack/config_spec.rb +0 -184
- data/stackrc +0 -31
@@ -0,0 +1,41 @@
|
|
1
|
+
require 'log4r'
|
2
|
+
require 'restclient'
|
3
|
+
require 'json'
|
4
|
+
|
5
|
+
require 'vagrant-openstack-provider/client/keystone'
|
6
|
+
require 'vagrant-openstack-provider/client/nova'
|
7
|
+
require 'vagrant-openstack-provider/client/neutron'
|
8
|
+
|
9
|
+
module VagrantPlugins
|
10
|
+
module Openstack
|
11
|
+
class Session
|
12
|
+
include Singleton
|
13
|
+
|
14
|
+
attr_accessor :token
|
15
|
+
attr_accessor :project_id
|
16
|
+
attr_accessor :endpoints
|
17
|
+
|
18
|
+
def initialize
|
19
|
+
@token = nil
|
20
|
+
@project_id = nil
|
21
|
+
@endpoints = {}
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
def self.session
|
26
|
+
Session.instance
|
27
|
+
end
|
28
|
+
|
29
|
+
def self.keystone
|
30
|
+
Openstack::KeystoneClient.instance
|
31
|
+
end
|
32
|
+
|
33
|
+
def self.nova
|
34
|
+
Openstack::NovaClient.instance
|
35
|
+
end
|
36
|
+
|
37
|
+
def self.neutron
|
38
|
+
Openstack::NeutronClient.instance
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
require 'log4r'
|
2
|
+
require 'restclient'
|
3
|
+
require 'json'
|
4
|
+
|
5
|
+
require 'vagrant-openstack-provider/client/keystone'
|
6
|
+
|
7
|
+
module VagrantPlugins
|
8
|
+
module Openstack
|
9
|
+
module Utils
|
10
|
+
def handle_response(response)
|
11
|
+
case response.code
|
12
|
+
when 200, 201, 202, 204
|
13
|
+
response
|
14
|
+
when 401
|
15
|
+
fail Errors::AuthenticationRequired
|
16
|
+
when 400
|
17
|
+
fail Errors::VagrantOpenstackError, message: JSON.parse(response.to_s)['badRequest']['message']
|
18
|
+
else
|
19
|
+
fail Errors::VagrantOpenstackError, message: response.to_s
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
def authenticated(env)
|
24
|
+
nb_retry = 0
|
25
|
+
begin
|
26
|
+
return yield
|
27
|
+
rescue Errors::AuthenticationRequired => e
|
28
|
+
nb_retry += 1
|
29
|
+
env[:ui].warn(e)
|
30
|
+
env[:ui].warn(I18n.t('vagrant_openstack.trying_authentication'))
|
31
|
+
env[:openstack_client].keystone.authenticate(env)
|
32
|
+
retry if nb_retry < 3
|
33
|
+
raise e
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
@@ -1,48 +1,24 @@
|
|
1
|
-
require
|
1
|
+
require 'vagrant'
|
2
2
|
|
3
3
|
module VagrantPlugins
|
4
4
|
module Openstack
|
5
|
-
class Config < Vagrant.plugin(
|
5
|
+
class Config < Vagrant.plugin('2', :config)
|
6
6
|
# The API key to access Openstack.
|
7
7
|
#
|
8
|
-
|
9
|
-
attr_accessor :api_key
|
10
|
-
|
11
|
-
# The region to access Openstack. If nil, it will default
|
12
|
-
# to DFW.
|
13
|
-
# (formerly know as 'endpoint')
|
14
|
-
#
|
15
|
-
# expected to be a symbol - :dfw (default), :ord, :lon
|
16
|
-
#
|
17
|
-
# Users should preference the openstack_region setting over openstack_compute_url
|
18
|
-
attr_accessor :openstack_region
|
8
|
+
attr_accessor :password
|
19
9
|
|
20
|
-
# The
|
21
|
-
#
|
22
|
-
# (formerly know as 'endpoint')
|
10
|
+
# The compute service url to access Openstack. If nil, it will read from
|
11
|
+
# hypermedia catalog form REST API
|
23
12
|
#
|
24
|
-
# expected to be a string url -
|
25
|
-
# 'https://dfw.servers.api.openstackcloud.com/v2'
|
26
|
-
# 'https://ord.servers.api.openstackcloud.com/v2'
|
27
|
-
# 'https://lon.servers.api.openstackcloud.com/v2'
|
28
|
-
#
|
29
|
-
# alternatively, can use constants if you require 'fog/openstack' in your Vagrantfile
|
30
|
-
# Fog::Compute::OpenstackV2::DFW_ENDPOINT
|
31
|
-
# Fog::Compute::OpenstackV2::ORD_ENDPOINT
|
32
|
-
# Fog::Compute::OpenstackV2::LON_ENDPOINT
|
33
|
-
#
|
34
|
-
# Users should preference the openstack_region setting over openstack_compute_url
|
35
13
|
attr_accessor :openstack_compute_url
|
36
14
|
|
37
|
-
# The
|
38
|
-
#
|
39
|
-
# https://lon.identity.api.openstackcloud.com/v2.0
|
40
|
-
attr_writer :openstack_auth_url
|
41
|
-
|
42
|
-
# Network configurations for the instance
|
15
|
+
# The network service url to access Openstack. If nil, it will read from
|
16
|
+
# hypermedia catalog form REST API
|
43
17
|
#
|
44
|
-
|
45
|
-
|
18
|
+
attr_accessor :openstack_network_url
|
19
|
+
|
20
|
+
# The authentication endpoint. This defaults to Openstack's global authentication endpoint.
|
21
|
+
attr_accessor :openstack_auth_url
|
46
22
|
|
47
23
|
# The flavor of server to launch, either the ID or name. This
|
48
24
|
# can also be a regular expression to partially match a name.
|
@@ -52,22 +28,6 @@ module VagrantPlugins
|
|
52
28
|
# expression to partially match a name.
|
53
29
|
attr_accessor :image
|
54
30
|
|
55
|
-
# Alternately, if a keypair were already uploaded to Openstack,
|
56
|
-
# the key name could be provided.
|
57
|
-
#
|
58
|
-
# @return [String]
|
59
|
-
attr_accessor :key_name
|
60
|
-
|
61
|
-
# A Hash of metadata that will be sent to the instance for configuration
|
62
|
-
#
|
63
|
-
# @return [Hash]
|
64
|
-
attr_accessor :metadata
|
65
|
-
|
66
|
-
# The option that indicates RackConnect usage or not.
|
67
|
-
#
|
68
|
-
# @return [Boolean]
|
69
|
-
attr_accessor :rackconnect
|
70
|
-
|
71
31
|
#
|
72
32
|
# The name of the openstack project on witch the vm will be created.
|
73
33
|
#
|
@@ -78,9 +38,6 @@ module VagrantPlugins
|
|
78
38
|
# here.
|
79
39
|
attr_accessor :server_name
|
80
40
|
|
81
|
-
# Specify the availability zone in which to create the instance
|
82
|
-
attr_accessor :availability_zone
|
83
|
-
|
84
41
|
# The username to access Openstack.
|
85
42
|
#
|
86
43
|
# @return [String]
|
@@ -103,18 +60,6 @@ module VagrantPlugins
|
|
103
60
|
# @return [Integer]
|
104
61
|
attr_accessor :ssh_timeout
|
105
62
|
|
106
|
-
# The disk configuration value.
|
107
|
-
# * AUTO - The server is built with a single partition the size of the target flavor disk. The file system is automatically adjusted to fit the entire partition.
|
108
|
-
# This keeps things simple and automated. AUTO is valid only for images and servers with a single partition that use the EXT3 file system.
|
109
|
-
# This is the default setting for applicable Openstack base images.
|
110
|
-
#
|
111
|
-
# * MANUAL - The server is built using whatever partition scheme and file system is in the source image. If the target flavor disk is larger,
|
112
|
-
# the remaining disk space is left unpartitioned. This enables images to have non-EXT3 file systems, multiple partitions,
|
113
|
-
# and so on, and enables you to manage the disk configuration.
|
114
|
-
#
|
115
|
-
# This defaults to MANUAL
|
116
|
-
attr_accessor :disk_config
|
117
|
-
|
118
63
|
# Opt files/directories in to the rsync operation performed by this provider
|
119
64
|
#
|
120
65
|
# @return [Array]
|
@@ -130,96 +75,79 @@ module VagrantPlugins
|
|
130
75
|
# @return [String]
|
131
76
|
attr_accessor :sync_method
|
132
77
|
|
78
|
+
# Network list the VM will be connected to
|
79
|
+
#
|
80
|
+
# @return [Array]
|
81
|
+
attr_accessor :networks
|
82
|
+
|
133
83
|
def initialize
|
134
|
-
@
|
135
|
-
@openstack_region = UNSET_VALUE
|
84
|
+
@password = UNSET_VALUE
|
136
85
|
@openstack_compute_url = UNSET_VALUE
|
86
|
+
@openstack_network_url = UNSET_VALUE
|
137
87
|
@openstack_auth_url = UNSET_VALUE
|
138
88
|
@flavor = UNSET_VALUE
|
139
89
|
@image = UNSET_VALUE
|
140
|
-
@rackconnect = UNSET_VALUE
|
141
|
-
@availability_zone = UNSET_VALUE
|
142
90
|
@tenant_name = UNSET_VALUE
|
143
91
|
@server_name = UNSET_VALUE
|
144
92
|
@username = UNSET_VALUE
|
145
|
-
@disk_config = UNSET_VALUE
|
146
|
-
@network = UNSET_VALUE
|
147
93
|
@rsync_includes = []
|
148
94
|
@keypair_name = UNSET_VALUE
|
149
95
|
@ssh_username = UNSET_VALUE
|
150
96
|
@ssh_timeout = UNSET_VALUE
|
151
97
|
@floating_ip = UNSET_VALUE
|
152
98
|
@sync_method = UNSET_VALUE
|
99
|
+
@networks = []
|
153
100
|
end
|
154
101
|
|
102
|
+
# rubocop:disable Style/CyclomaticComplexity
|
155
103
|
def finalize!
|
156
|
-
@
|
157
|
-
@openstack_region = nil if @openstack_region == UNSET_VALUE
|
104
|
+
@password = nil if @password == UNSET_VALUE
|
158
105
|
@openstack_compute_url = nil if @openstack_compute_url == UNSET_VALUE
|
106
|
+
@openstack_network_url = nil if @openstack_network_url == UNSET_VALUE
|
159
107
|
@openstack_auth_url = nil if @openstack_auth_url == UNSET_VALUE
|
160
|
-
@flavor =
|
161
|
-
@image =
|
162
|
-
@rackconnect = nil if @rackconnect == UNSET_VALUE
|
163
|
-
@availability_zone = nil if @availability_zone == UNSET_VALUE
|
108
|
+
@flavor = nil if @flavor == UNSET_VALUE
|
109
|
+
@image = nil if @image == UNSET_VALUE
|
164
110
|
@tenant_name = nil if @tenant_name == UNSET_VALUE
|
165
111
|
@server_name = nil if @server_name == UNSET_VALUE
|
166
|
-
@metadata = nil if @metadata == UNSET_VALUE
|
167
|
-
@network = nil if @network == UNSET_VALUE
|
168
112
|
@username = nil if @username == UNSET_VALUE
|
169
|
-
@disk_config = nil if @disk_config == UNSET_VALUE
|
170
113
|
@rsync_includes = nil if @rsync_includes.empty?
|
171
114
|
@floating_ip = nil if @floating_ip == UNSET_VALUE
|
172
|
-
@sync_method =
|
173
|
-
|
174
|
-
# Keypair defaults to nil
|
115
|
+
@sync_method = 'rsync' if @sync_method == UNSET_VALUE
|
175
116
|
@keypair_name = nil if @keypair_name == UNSET_VALUE
|
176
117
|
|
177
118
|
# The SSH values by default are nil, and the top-level config
|
178
119
|
# `config.ssh` values are used.
|
179
120
|
@ssh_username = nil if @ssh_username == UNSET_VALUE
|
180
|
-
@ssh_timeout =
|
181
|
-
|
182
|
-
|
183
|
-
# @note Currently, you must authenticate against the UK authenication endpoint to access the London Data center.
|
184
|
-
# Hopefully this method makes the experience more seemless for users of the UK cloud.
|
185
|
-
def openstack_auth_url
|
186
|
-
if (@openstack_auth_url.nil? || @openstack_auth_url == UNSET_VALUE) && lon_region?
|
187
|
-
Fog::Openstack::UK_AUTH_ENDPOINT
|
188
|
-
else
|
189
|
-
@openstack_auth_url
|
190
|
-
end
|
121
|
+
@ssh_timeout = 180 if @ssh_timeout == UNSET_VALUE
|
122
|
+
@networks = nil if @networks.empty?
|
191
123
|
end
|
124
|
+
# rubocop:enable Style/CyclomaticComplexity
|
192
125
|
|
193
126
|
def rsync_include(inc)
|
194
127
|
@rsync_includes << inc
|
195
128
|
end
|
196
129
|
|
197
|
-
def validate(
|
130
|
+
def validate(_machine)
|
198
131
|
errors = _detected_errors
|
199
132
|
|
200
|
-
errors << I18n.t(
|
201
|
-
errors << I18n.t(
|
202
|
-
errors << I18n.t(
|
133
|
+
errors << I18n.t('vagrant_openstack.config.password_required') unless @password
|
134
|
+
errors << I18n.t('vagrant_openstack.config.username_required') unless @username
|
135
|
+
errors << I18n.t('vagrant_openstack.config.keypair_name_required') unless @keypair_name
|
203
136
|
|
204
137
|
{
|
205
|
-
:
|
206
|
-
:
|
138
|
+
openstack_compute_url: @openstack_compute_url,
|
139
|
+
openstack_network_url: @openstack_network_url,
|
140
|
+
openstack_auth_url: @openstack_auth_url
|
207
141
|
}.each_pair do |key, value|
|
208
|
-
errors << I18n.t(
|
142
|
+
errors << I18n.t('vagrant_openstack.config.invalid_uri', key: key, uri: value) unless value.nil? || valid_uri?(value)
|
209
143
|
end
|
210
144
|
|
211
|
-
{
|
212
|
-
end
|
213
|
-
|
214
|
-
private
|
215
|
-
|
216
|
-
def lon_region?
|
217
|
-
openstack_region && openstack_region != UNSET_VALUE && openstack_region.to_sym == :lon
|
145
|
+
{ 'Openstack Provider' => errors }
|
218
146
|
end
|
219
147
|
|
220
148
|
private
|
221
149
|
|
222
|
-
def valid_uri?
|
150
|
+
def valid_uri?(value)
|
223
151
|
uri = URI.parse value
|
224
152
|
uri.kind_of?(URI::HTTP)
|
225
153
|
end
|
@@ -1,10 +1,15 @@
|
|
1
|
-
require
|
1
|
+
require 'vagrant'
|
2
2
|
|
3
3
|
module VagrantPlugins
|
4
4
|
module Openstack
|
5
5
|
module Errors
|
6
6
|
class VagrantOpenstackError < Vagrant::Errors::VagrantError
|
7
|
-
error_namespace(
|
7
|
+
error_namespace('vagrant_openstack.errors')
|
8
|
+
error_key(:default)
|
9
|
+
end
|
10
|
+
|
11
|
+
class AuthenticationRequired < VagrantOpenstackError
|
12
|
+
error_key(:authentication_required)
|
8
13
|
end
|
9
14
|
|
10
15
|
class CreateBadState < VagrantOpenstackError
|
@@ -30,7 +35,6 @@ module VagrantPlugins
|
|
30
35
|
class SshUnavailable < VagrantOpenstackError
|
31
36
|
error_key(:ssh_unavailble)
|
32
37
|
end
|
33
|
-
|
34
38
|
end
|
35
39
|
end
|
36
40
|
end
|
@@ -1,25 +1,25 @@
|
|
1
1
|
begin
|
2
|
-
require
|
2
|
+
require 'vagrant'
|
3
3
|
rescue LoadError
|
4
|
-
raise
|
4
|
+
raise 'The Openstack Cloud provider must be run within Vagrant.'
|
5
5
|
end
|
6
6
|
|
7
7
|
# This is a sanity check to make sure no one is attempting to install
|
8
8
|
# this into an early Vagrant version.
|
9
|
-
if Vagrant::VERSION <
|
10
|
-
|
9
|
+
if Vagrant::VERSION < '1.1.0'
|
10
|
+
fail 'Openstack Cloud provider is only compatible with Vagrant 1.1+'
|
11
11
|
end
|
12
12
|
|
13
13
|
module VagrantPlugins
|
14
14
|
module Openstack
|
15
|
-
class Plugin < Vagrant.plugin(
|
16
|
-
name
|
15
|
+
class Plugin < Vagrant.plugin('2')
|
16
|
+
name 'Openstack Cloud'
|
17
17
|
description <<-DESC
|
18
18
|
This plugin enables Vagrant to manage machines in Openstack Cloud.
|
19
19
|
DESC
|
20
20
|
|
21
21
|
config(:openstack, :provider) do
|
22
|
-
require_relative
|
22
|
+
require_relative 'config'
|
23
23
|
Config
|
24
24
|
end
|
25
25
|
|
@@ -29,7 +29,7 @@ module VagrantPlugins
|
|
29
29
|
Openstack.init_logging
|
30
30
|
|
31
31
|
# Load the actual provider
|
32
|
-
require_relative
|
32
|
+
require_relative 'provider'
|
33
33
|
Provider
|
34
34
|
end
|
35
35
|
end
|
@@ -1,10 +1,10 @@
|
|
1
|
-
require
|
1
|
+
require 'vagrant'
|
2
2
|
|
3
|
-
require
|
3
|
+
require 'vagrant-openstack-provider/action'
|
4
4
|
|
5
5
|
module VagrantPlugins
|
6
6
|
module Openstack
|
7
|
-
class Provider < Vagrant.plugin(
|
7
|
+
class Provider < Vagrant.plugin('2', :provider)
|
8
8
|
def initialize(machine)
|
9
9
|
@machine = machine
|
10
10
|
end
|
@@ -22,7 +22,7 @@ module VagrantPlugins
|
|
22
22
|
# Run a custom action called "read_ssh_info" which does what it
|
23
23
|
# says and puts the resulting SSH info into the `:machine_ssh_info`
|
24
24
|
# key in the environment.
|
25
|
-
env = @machine.action(
|
25
|
+
env = @machine.action('read_ssh_info')
|
26
26
|
env[:machine_ssh_info]
|
27
27
|
end
|
28
28
|
|
@@ -30,7 +30,7 @@ module VagrantPlugins
|
|
30
30
|
# Run a custom action we define called "read_state" which does
|
31
31
|
# what it says. It puts the state in the `:machine_state_id`
|
32
32
|
# key in the environment.
|
33
|
-
env = @machine.action(
|
33
|
+
env = @machine.action('read_state')
|
34
34
|
|
35
35
|
state_id = env[:machine_state_id]
|
36
36
|
|
@@ -43,7 +43,7 @@ module VagrantPlugins
|
|
43
43
|
end
|
44
44
|
|
45
45
|
def to_s
|
46
|
-
|
46
|
+
'Openstack Cloud'
|
47
47
|
end
|
48
48
|
end
|
49
49
|
end
|
data/locales/en.yml
CHANGED
@@ -2,44 +2,60 @@ en:
|
|
2
2
|
vagrant_openstack:
|
3
3
|
already_created: |-
|
4
4
|
The server is already created.
|
5
|
+
already_suspended: |-
|
6
|
+
The server is already suspended
|
5
7
|
deleting_server: |-
|
6
8
|
Deleting server...
|
7
9
|
finding_flavor: |-
|
8
10
|
Finding flavor for server...
|
9
11
|
finding_image: |-
|
10
12
|
Finding image for server...
|
13
|
+
finding_networks: |-
|
14
|
+
Finding network(s) for server...
|
11
15
|
launching_server: |-
|
12
16
|
Launching a server with the following settings...
|
13
17
|
not_created: |-
|
14
18
|
The server hasn't been created yet. Run `vagrant up` first.
|
15
19
|
ready: |-
|
16
20
|
The server is ready!
|
21
|
+
stopping_server: |-
|
22
|
+
Stopping server...
|
23
|
+
starting_server: |-
|
24
|
+
Starting server...
|
17
25
|
timeout: |-
|
18
26
|
Timeout!
|
27
|
+
trying_authentication: |-
|
28
|
+
Trying authentication...
|
19
29
|
rsync_folder: |-
|
20
30
|
Rsyncing folder: %{hostpath} => %{guestpath}
|
21
31
|
waiting_for_build: |-
|
22
32
|
Waiting for the server to be built...
|
23
|
-
waiting_for_rackconnect: |-
|
24
|
-
Waiting for RackConnect to complete...
|
25
33
|
waiting_for_ssh: |-
|
26
34
|
Waiting for SSH to become available...
|
35
|
+
waiting_stop: |-
|
36
|
+
Waiting for the server to stop...
|
27
37
|
warn_networks: |-
|
28
38
|
Warning! The Openstack provider doesn't support any of the Vagrant
|
29
39
|
high-level network configurations (`config.vm.network`). They
|
30
40
|
will be silently ignored.
|
31
41
|
|
32
42
|
config:
|
33
|
-
|
34
|
-
|
43
|
+
password_required: |-
|
44
|
+
A password is required.
|
35
45
|
username_required: |-
|
36
46
|
A username is required.
|
37
47
|
invalid_uri: |-
|
38
48
|
The value for %{key} is not a valid URI: %{uri}
|
39
49
|
metadata_must_be_hash: |-
|
40
50
|
Metadata must be a hash.
|
51
|
+
keypair_name_required: |-
|
52
|
+
A keypair name is required.
|
41
53
|
|
42
54
|
errors:
|
55
|
+
default: |-
|
56
|
+
%{message}
|
57
|
+
authentication_required: |-
|
58
|
+
Authentication token is missing or no longer valid.
|
43
59
|
create_bad_state: |-
|
44
60
|
While creating the server, it transitioned to an unexpected
|
45
61
|
state: '%{state}', instead of properly booting. Run `vagrant status`
|
@@ -77,9 +93,71 @@ en:
|
|
77
93
|
short_error: |-
|
78
94
|
error
|
79
95
|
long_error: |-
|
80
|
-
The server is in an erroneous state. Contact
|
96
|
+
The server is in an erroneous state. Contact your OpenStack administrator
|
81
97
|
or destroy the machine with `vagrant destroy`.
|
98
|
+
short_hard_reboot: |-
|
99
|
+
hard reboot
|
100
|
+
long_hard_reboot: |-
|
101
|
+
The server is hard rebooting. This is equivalent to pulling the power plug
|
102
|
+
on a physical server, plugging it back in, and rebooting it.
|
103
|
+
short_password: |-
|
104
|
+
password reset
|
105
|
+
long_password: |-
|
106
|
+
The password is being reset on the server.
|
107
|
+
short_reboot: |-
|
108
|
+
reboot
|
109
|
+
long_reboot: |-
|
110
|
+
The server is in a soft reboot state. A reboot command was passed to the operating system.
|
111
|
+
short_rebuild: |-
|
112
|
+
rebuild
|
113
|
+
long_rebuild: |-
|
114
|
+
The server is currently being rebuilt from an image.
|
115
|
+
short_rescue: |-
|
116
|
+
rescue
|
117
|
+
long_rescue: |-
|
118
|
+
The server is in rescue mode.
|
119
|
+
short_resize: |-
|
120
|
+
resize
|
121
|
+
long_resize: |-
|
122
|
+
Server is performing the differential copy of data that changed during
|
123
|
+
its initial copy. Server is down for this stage.
|
124
|
+
short_revert_resize: |-
|
125
|
+
revert resize
|
126
|
+
long_revert_resize: |-
|
127
|
+
The resize or migration of a server failed for some reason. The destination
|
128
|
+
server is being cleaned up and the original source server is restarting.
|
129
|
+
short_shutoff: |-
|
130
|
+
shutoff
|
131
|
+
long_shutoff: |-
|
132
|
+
The virtual machine (VM) was powered down by the user, but not through the
|
133
|
+
OpenStack Compute API. For example, the user issued a shutdown -h command
|
134
|
+
from within the server instance. If the OpenStack Compute manager detects
|
135
|
+
that the VM was powered down, it transitions the server instance to the
|
136
|
+
SHUTOFF status. If you use the OpenStack Compute API to restart the instance,
|
137
|
+
the instance might be deleted first, depending on the value in the
|
138
|
+
shutdown_terminate database field on the Instance model.
|
139
|
+
short_suspended: |-
|
140
|
+
suspended
|
141
|
+
long_suspended: |-
|
142
|
+
The server is suspended, either by request or necessity. This status appears
|
143
|
+
for only the following hypervisors: XenServer/XCP, KVM, and ESXi.
|
144
|
+
short_unknown: |-
|
145
|
+
unknown
|
146
|
+
long_unknown: |-
|
147
|
+
The state of the server is unknown. Contact your cloud provider.
|
148
|
+
short_verify_resize: |-
|
149
|
+
verify resize
|
150
|
+
long_verifiy_resize: |-
|
151
|
+
System is awaiting confirmation that the server is operational after a move or resize.
|
82
152
|
short_not_created: |-
|
83
153
|
not created
|
84
154
|
long_not_created: |-
|
85
155
|
The server is not created. Run `vagrant up` to create it.
|
156
|
+
|
157
|
+
client:
|
158
|
+
looking_for_available_endpoints: |-
|
159
|
+
Looking for available endpoints...
|
160
|
+
multiple_endpoint: |-
|
161
|
+
%{size} endpoints are available for service '%{type}' but only the first one will be used
|
162
|
+
authentication: |-
|
163
|
+
Authentication on project %{project} with user %{user}
|