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.
Files changed (57) hide show
  1. checksums.yaml +13 -5
  2. data/.rubocop.yml +28 -0
  3. data/Appraisals +3 -3
  4. data/CHANGELOG.md +4 -0
  5. data/Gemfile +3 -0
  6. data/Rakefile +6 -2
  7. data/Vagrantfile +4 -15
  8. data/gemfiles/latest_stable.gemfile +2 -0
  9. data/gemfiles/oldest_current.gemfile +2 -0
  10. data/gemfiles/previous_release.gemfile +2 -0
  11. data/lib/vagrant-openstack-provider.rb +18 -13
  12. data/lib/vagrant-openstack-provider/action.rb +112 -46
  13. data/lib/vagrant-openstack-provider/action/connect_openstack.rb +9 -10
  14. data/lib/vagrant-openstack-provider/action/create_server.rb +86 -57
  15. data/lib/vagrant-openstack-provider/action/delete_server.rb +5 -6
  16. data/lib/vagrant-openstack-provider/action/{is_created.rb → message.rb} +4 -3
  17. data/lib/vagrant-openstack-provider/action/read_ssh_info.rb +7 -27
  18. data/lib/vagrant-openstack-provider/action/read_state.rb +7 -9
  19. data/lib/vagrant-openstack-provider/action/resume.rb +20 -0
  20. data/lib/vagrant-openstack-provider/action/start_server.rb +22 -0
  21. data/lib/vagrant-openstack-provider/action/stop_server.rb +22 -0
  22. data/lib/vagrant-openstack-provider/action/suspend.rb +20 -0
  23. data/lib/vagrant-openstack-provider/action/sync_folders.rb +27 -38
  24. data/lib/vagrant-openstack-provider/action/wait_stop.rb +29 -0
  25. data/lib/vagrant-openstack-provider/client/keystone.rb +76 -0
  26. data/lib/vagrant-openstack-provider/client/neutron.rb +32 -0
  27. data/lib/vagrant-openstack-provider/client/nova.rb +166 -0
  28. data/lib/vagrant-openstack-provider/client/openstack.rb +41 -0
  29. data/lib/vagrant-openstack-provider/client/utils.rb +38 -0
  30. data/lib/vagrant-openstack-provider/config.rb +38 -110
  31. data/lib/vagrant-openstack-provider/errors.rb +7 -3
  32. data/lib/vagrant-openstack-provider/plugin.rb +8 -8
  33. data/lib/vagrant-openstack-provider/provider.rb +6 -6
  34. data/lib/vagrant-openstack-provider/version.rb +1 -1
  35. data/locales/en.yml +83 -5
  36. data/numergyrc +22 -0
  37. data/spec/vagrant-openstack-provider/action/create_server_spec.rb +89 -0
  38. data/spec/vagrant-openstack-provider/client/keystone_spec.rb +140 -0
  39. data/spec/vagrant-openstack-provider/client/neutron_spec.rb +53 -0
  40. data/spec/vagrant-openstack-provider/client/nova_spec.rb +373 -0
  41. data/spec/vagrant-openstack-provider/client/utils_spec.rb +125 -0
  42. data/spec/vagrant-openstack-provider/config_spec.rb +117 -0
  43. data/spec/vagrant-openstack-provider/provider_spec.rb +13 -0
  44. data/spec/vagrant-openstack-provider/spec_helper.rb +23 -0
  45. data/vagrant-openstack-provider.gemspec +13 -14
  46. metadata +40 -30
  47. data/features/provision.feature +0 -35
  48. data/features/steps/sdk_steps.rb +0 -13
  49. data/features/steps/server_steps.rb +0 -25
  50. data/features/support/env.rb +0 -37
  51. data/features/support/fog_mock.rb +0 -19
  52. data/features/vagrant-openstack-provider.feature +0 -70
  53. data/lib/vagrant-openstack-provider/action/message_already_created.rb +0 -16
  54. data/lib/vagrant-openstack-provider/action/message_not_created.rb +0 -16
  55. data/lib/vagrant-openstack-provider/openstack_client.rb +0 -98
  56. data/spec/vagrant-openstack/config_spec.rb +0 -184
  57. 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 "vagrant"
1
+ require 'vagrant'
2
2
 
3
3
  module VagrantPlugins
4
4
  module Openstack
5
- class Config < Vagrant.plugin("2", :config)
5
+ class Config < Vagrant.plugin('2', :config)
6
6
  # The API key to access Openstack.
7
7
  #
8
- # @return [String]
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 compute_url to access Openstack. If nil, it will default
21
- # to DFW.
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 authenication endpoint. This defaults to Openstack's global authentication endpoint.
38
- # Users of the London data center should specify the following:
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
- # @return [String]
45
- attr_accessor :network
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
- @api_key = UNSET_VALUE
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
- @api_key = nil if @api_key == UNSET_VALUE
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 = /m1.tiny/ if @flavor == UNSET_VALUE # TODO No default value
161
- @image = /cirros/ if @image == UNSET_VALUE # TODO No default value
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 = "rsync" if @sync_method == UNSET_VALUE
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 = 60 if @ssh_timeout == UNSET_VALUE
181
- end
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(machine)
130
+ def validate(_machine)
198
131
  errors = _detected_errors
199
132
 
200
- errors << I18n.t("vagrant_openstack.config.api_key required") if !@api_key
201
- errors << I18n.t("vagrant_openstack.config.username required") if !@username
202
- errors << I18n.t("vagrant_openstack.config.keypair_name required") if !@keypair_name
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
- :openstack_compute_url => @openstack_compute_url,
206
- :openstack_auth_url => @openstack_auth_url
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("vagrant_openstack.config.invalid_uri", :key => key, :uri => value) unless value.nil? || valid_uri?(value)
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
- { "Openstack Provider" => errors }
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? value
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 "vagrant"
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("vagrant_openstack.errors")
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 "vagrant"
2
+ require 'vagrant'
3
3
  rescue LoadError
4
- raise "The Openstack Cloud provider must be run within Vagrant."
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 < "1.1.0"
10
- raise "Openstack Cloud provider is only compatible with Vagrant 1.1+"
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("2")
16
- name "Openstack Cloud"
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 "config"
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 "provider"
32
+ require_relative 'provider'
33
33
  Provider
34
34
  end
35
35
  end
@@ -1,10 +1,10 @@
1
- require "vagrant"
1
+ require 'vagrant'
2
2
 
3
- require "vagrant-openstack-provider/action"
3
+ require 'vagrant-openstack-provider/action'
4
4
 
5
5
  module VagrantPlugins
6
6
  module Openstack
7
- class Provider < Vagrant.plugin("2", :provider)
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("read_ssh_info")
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("read_state")
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
- "Openstack Cloud"
46
+ 'Openstack Cloud'
47
47
  end
48
48
  end
49
49
  end
@@ -1,5 +1,5 @@
1
1
  module VagrantPlugins
2
2
  module Openstack
3
- VERSION = "0.1.2"
3
+ VERSION = '0.2.0'
4
4
  end
5
5
  end
@@ -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
- api_key_required: |-
34
- An API key is required.
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 Openstack support
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}