vagrant-openstack-provider 0.1.2 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
checksums.yaml
CHANGED
@@ -1,7 +1,15 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
|
2
|
+
!binary "U0hBMQ==":
|
3
|
+
metadata.gz: !binary |-
|
4
|
+
NjA4MjM1MzJiZGI0MWJlNWMzMTQxNDI5M2NmZmY3MTA3YzE0MWU0Mw==
|
5
|
+
data.tar.gz: !binary |-
|
6
|
+
M2U3ZDFiNzA0YWRhMWU4OTA1ZTJjYmUwZWQxMDNkMzQ4NGNhYTUyMQ==
|
5
7
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
|
8
|
+
metadata.gz: !binary |-
|
9
|
+
ODJkZGMzYzNiNzA0ZTdlMDAxNzA1ODIzYTQ0YTQ4Mjc2MDJmMmY1ZjY3ZDJh
|
10
|
+
NzM2YWM5MzgzODQ4ODZkMzU2NzVmZTcwMzc1N2VmOGQxYjRiZmE2NzBkZTMy
|
11
|
+
NWZlYTNjYzZiZWVhYWZjMjQwYTgyMDdjMjQwOTNkMmE3Y2NmOWM=
|
12
|
+
data.tar.gz: !binary |-
|
13
|
+
MThiZjUyYjU1NmY2M2JkYjAxOTcwYzczM2I1YTAzYTAyNjYwODQ1Njg0ZWYw
|
14
|
+
ZGY3M2I0YmE0ZmEwODBlZTdlOGEzYjkxNDAwNjY3MzIzMjY3ZTIxZWRkNmEz
|
15
|
+
OTJiYmVmNzY3ZWM2ZWQwZTMyM2MxYjEzYTI0YzliMGJkMGE1OTE=
|
data/.rubocop.yml
ADDED
@@ -0,0 +1,28 @@
|
|
1
|
+
AllCops:
|
2
|
+
Exclude:
|
3
|
+
- 'out/**/*'
|
4
|
+
|
5
|
+
Style/FileName:
|
6
|
+
Enabled: false
|
7
|
+
|
8
|
+
Style/Encoding:
|
9
|
+
Enabled: false
|
10
|
+
|
11
|
+
Style/Documentation:
|
12
|
+
Enabled: false
|
13
|
+
|
14
|
+
Style/ClassLength:
|
15
|
+
Max: 300
|
16
|
+
|
17
|
+
Style/CyclomaticComplexity:
|
18
|
+
Severity: warning
|
19
|
+
Max: 10
|
20
|
+
|
21
|
+
Style/MethodLength:
|
22
|
+
Max: 50
|
23
|
+
|
24
|
+
Style/LineLength:
|
25
|
+
Max: 150
|
26
|
+
|
27
|
+
Style/ParameterLists:
|
28
|
+
Max: 6
|
data/Appraisals
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
appraise "latest-stable" do
|
2
|
-
gem "vagrant", :git => 'git://github.com/mitchellh/vagrant.git', :
|
2
|
+
gem "vagrant", :git => 'git://github.com/mitchellh/vagrant.git', :tag => 'v1.6.3'
|
3
3
|
end
|
4
4
|
|
5
5
|
# Oldest (current release)
|
6
6
|
appraise "oldest-current" do
|
7
|
-
gem "vagrant", :git => 'git://github.com/mitchellh/vagrant.git', :
|
7
|
+
gem "vagrant", :git => 'git://github.com/mitchellh/vagrant.git', :tag => 'v1.5.4'
|
8
8
|
end
|
9
9
|
|
10
10
|
# Latest patch (previous release)
|
11
11
|
appraise "previous-release" do
|
12
|
-
gem "vagrant", :git => 'git://github.com/mitchellh/vagrant.git', :
|
12
|
+
gem "vagrant", :git => 'git://github.com/mitchellh/vagrant.git', :tag => 'v1.4.3'
|
13
13
|
end
|
data/CHANGELOG.md
CHANGED
data/Gemfile
CHANGED
@@ -4,8 +4,11 @@ gemspec
|
|
4
4
|
|
5
5
|
gem "appraisal", "1.0.0"
|
6
6
|
gem "restclient", "0.10.0"
|
7
|
+
gem 'webmock', '~> 1.18.0', :group => [:test]
|
8
|
+
gem "rubocop", '0.23.0', require: false
|
7
9
|
gem "vagrant", :git => "git://github.com/mitchellh/vagrant.git", :tag => "v1.4.3"
|
8
10
|
|
11
|
+
|
9
12
|
group :development do
|
10
13
|
# We depend on Vagrant for development, but we don't add it as a
|
11
14
|
# gem dependency because we expect to be installed within the
|
data/Rakefile
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
require 'rubygems'
|
2
2
|
require 'bundler/setup'
|
3
3
|
require 'rspec/core/rake_task'
|
4
|
+
require 'rubocop/rake_task'
|
4
5
|
|
5
6
|
# Immediately sync all stdout so that tools like buildbot can
|
6
7
|
# immediately load in the output.
|
@@ -8,7 +9,7 @@ $stdout.sync = true
|
|
8
9
|
$stderr.sync = true
|
9
10
|
|
10
11
|
# Change to the directory of this file.
|
11
|
-
Dir.chdir(File.expand_path(
|
12
|
+
Dir.chdir(File.expand_path('../', __FILE__))
|
12
13
|
|
13
14
|
# This installs the tasks that help with gem creation and
|
14
15
|
# publishing.
|
@@ -17,5 +18,8 @@ Bundler::GemHelper.install_tasks
|
|
17
18
|
# Install the `spec` task so that we can run tests.
|
18
19
|
RSpec::Core::RakeTask.new
|
19
20
|
|
21
|
+
# Install the `rubocop` task
|
22
|
+
RuboCop::RakeTask.new
|
23
|
+
|
20
24
|
# Default task is to run the unit tests
|
21
|
-
task :
|
25
|
+
task default: %w(rubocop spec)
|
data/Vagrantfile
CHANGED
@@ -12,26 +12,15 @@ Vagrant.configure("2") do |config|
|
|
12
12
|
|
13
13
|
os.server_name = "vagrant-os-plugin-test"
|
14
14
|
os.username = ENV['OS_USERNAME']
|
15
|
-
os.floating_ip = "185.39.216.
|
16
|
-
os.
|
17
|
-
|
18
|
-
os.flavor = /Linux-XL.2plus-4vCpu-32G/
|
15
|
+
os.floating_ip = "185.39.216.244"
|
16
|
+
os.password = ENV['OS_PASSWORD']
|
17
|
+
os.flavor = /Linux-L-2vCpu-4G/
|
19
18
|
os.image = /ubuntu-12.04_x86_64_LVM/
|
20
19
|
os.openstack_auth_url = ENV['OS_AUTH_URL']
|
21
20
|
os.openstack_compute_url = ENV['OS_COMPUTE_URL']
|
22
|
-
os.
|
21
|
+
os.openstack_network_url = ENV['OS_NETWORK_URL']
|
23
22
|
os.tenant_name = ENV['OS_TENANT_NAME']
|
24
23
|
os.keypair_name = "julien-vagrant"
|
25
24
|
os.ssh_username = "stack"
|
26
|
-
|
27
|
-
# os.metadata = {"key" => "value"} # optional
|
28
|
-
# os.user_data = "#cloud-config\nmanage_etc_hosts: True" # optional
|
29
|
-
# os.networks = [ "internal", "external" ] # optional, overrides os.network
|
30
|
-
# os.address_id = "YOUR ADDRESS ID" # optional (`network` above has higher precedence)
|
31
|
-
# os.scheduler_hints = {
|
32
|
-
# :cell => 'australia'
|
33
|
-
# } # optional
|
34
|
-
# os.security_groups = ['ssh', 'http'] # optional
|
35
|
-
|
36
25
|
end
|
37
26
|
end
|
@@ -4,6 +4,8 @@ source "https://rubygems.org"
|
|
4
4
|
|
5
5
|
gem "appraisal", "1.0.0"
|
6
6
|
gem "restclient", "0.10.0"
|
7
|
+
gem "webmock", "~> 1.18.0", :group => [:test]
|
8
|
+
gem "rubocop", "0.23.0", :require => false
|
7
9
|
gem "vagrant", :git => "git://github.com/mitchellh/vagrant.git", :tag => "v1.4.3"
|
8
10
|
|
9
11
|
group :development do
|
@@ -4,6 +4,8 @@ source "https://rubygems.org"
|
|
4
4
|
|
5
5
|
gem "appraisal", "1.0.0"
|
6
6
|
gem "restclient", "0.10.0"
|
7
|
+
gem "webmock", "~> 1.18.0", :group => [:test]
|
8
|
+
gem "rubocop", "0.23.0", :require => false
|
7
9
|
gem "vagrant", :git => "git://github.com/mitchellh/vagrant.git", :tag => "v1.4.3"
|
8
10
|
|
9
11
|
group :development do
|
@@ -4,6 +4,8 @@ source "https://rubygems.org"
|
|
4
4
|
|
5
5
|
gem "appraisal", "1.0.0"
|
6
6
|
gem "restclient", "0.10.0"
|
7
|
+
gem "webmock", "~> 1.18.0", :group => [:test]
|
8
|
+
gem "rubocop", "0.23.0", :require => false
|
7
9
|
gem "vagrant", :git => "git://github.com/mitchellh/vagrant.git", :tag => "v1.4.3"
|
8
10
|
|
9
11
|
group :development do
|
@@ -1,16 +1,16 @@
|
|
1
|
-
require
|
1
|
+
require 'pathname'
|
2
2
|
|
3
|
-
require
|
3
|
+
require 'vagrant-openstack-provider/plugin'
|
4
4
|
|
5
5
|
module VagrantPlugins
|
6
6
|
module Openstack
|
7
|
-
lib_path = Pathname.new(File.expand_path(
|
8
|
-
autoload :Errors, lib_path.join(
|
7
|
+
lib_path = Pathname.new(File.expand_path('../vagrant-openstack-provider', __FILE__))
|
8
|
+
autoload :Errors, lib_path.join('errors')
|
9
9
|
|
10
10
|
# This initializes the i18n load path so that the plugin-specific
|
11
11
|
# translations work.
|
12
12
|
def self.init_i18n
|
13
|
-
I18n.load_path << File.expand_path(
|
13
|
+
I18n.load_path << File.expand_path('locales/en.yml', source_root)
|
14
14
|
I18n.reload!
|
15
15
|
end
|
16
16
|
|
@@ -20,26 +20,31 @@ module VagrantPlugins
|
|
20
20
|
# Initialize logging
|
21
21
|
level = nil
|
22
22
|
begin
|
23
|
-
level = Log4r.const_get(ENV[
|
23
|
+
level = Log4r.const_get(ENV['VAGRANT_LOG'].upcase)
|
24
24
|
rescue NameError
|
25
25
|
# This means that the logging constant wasn't found,
|
26
26
|
# which is fine. We just keep `level` as `nil`. But
|
27
27
|
# we tell the user.
|
28
|
-
|
28
|
+
begin
|
29
|
+
level = Log4r.const_get(ENV['VAGRANT_OPENSTACK_LOG'].upcase)
|
30
|
+
rescue NameError
|
31
|
+
level = nil
|
32
|
+
end
|
29
33
|
end
|
30
34
|
|
31
35
|
# Some constants, such as "true" resolve to booleans, so the
|
32
36
|
# above error checking doesn't catch it. This will check to make
|
33
37
|
# sure that the log level is an integer, as Log4r requires.
|
34
|
-
level = nil
|
38
|
+
level = nil unless level.is_a?(Integer)
|
35
39
|
|
36
|
-
# Set the logging level
|
40
|
+
# Set the logging level
|
37
41
|
# logs as long as we have a valid level.
|
38
42
|
if level
|
39
|
-
logger = Log4r::Logger.new(
|
40
|
-
|
43
|
+
logger = Log4r::Logger.new('vagrant_openstack')
|
44
|
+
out = Log4r::Outputter.stdout
|
45
|
+
out.formatter = Log4r::PatternFormatter.new(pattern: '%d | %5l | %m', date_pattern: '%Y-%m-%d %H:%M')
|
46
|
+
logger.outputters = out
|
41
47
|
logger.level = level
|
42
|
-
logger = nil
|
43
48
|
end
|
44
49
|
end
|
45
50
|
|
@@ -47,7 +52,7 @@ module VagrantPlugins
|
|
47
52
|
#
|
48
53
|
# @return [Pathname]
|
49
54
|
def self.source_root
|
50
|
-
@source_root ||= Pathname.new(File.expand_path(
|
55
|
+
@source_root ||= Pathname.new(File.expand_path('../../', __FILE__))
|
51
56
|
end
|
52
57
|
end
|
53
58
|
end
|
@@ -1,6 +1,6 @@
|
|
1
|
-
require
|
1
|
+
require 'pathname'
|
2
2
|
|
3
|
-
require
|
3
|
+
require 'vagrant/action/builder'
|
4
4
|
|
5
5
|
module VagrantPlugins
|
6
6
|
module Openstack
|
@@ -12,14 +12,13 @@ module VagrantPlugins
|
|
12
12
|
def self.action_destroy
|
13
13
|
Vagrant::Action::Builder.new.tap do |b|
|
14
14
|
b.use ConfigValidate
|
15
|
-
b.use
|
16
|
-
|
17
|
-
|
18
|
-
|
15
|
+
b.use ConnectOpenstack
|
16
|
+
b.use Call, ReadState do |env, b2|
|
17
|
+
if env[:machine_state_id] == :not_created
|
18
|
+
b2.use Message, I18n.t('vagrant_openstack.not_created')
|
19
|
+
else
|
20
|
+
b2.use DeleteServer
|
19
21
|
end
|
20
|
-
|
21
|
-
b2.use ConnectOpenstack
|
22
|
-
b2.use DeleteServer
|
23
22
|
end
|
24
23
|
end
|
25
24
|
end
|
@@ -28,14 +27,14 @@ module VagrantPlugins
|
|
28
27
|
def self.action_provision
|
29
28
|
Vagrant::Action::Builder.new.tap do |b|
|
30
29
|
b.use ConfigValidate
|
31
|
-
b.use
|
32
|
-
|
33
|
-
|
34
|
-
|
30
|
+
b.use ConnectOpenstack
|
31
|
+
b.use Call, ReadState do |env, b2|
|
32
|
+
if env[:machine_state_id] == :not_created
|
33
|
+
b2.use Message, I18n.t('vagrant_openstack.not_created')
|
34
|
+
else
|
35
|
+
b2.use Provision
|
36
|
+
b2.use SyncFolders
|
35
37
|
end
|
36
|
-
|
37
|
-
b2.use Provision
|
38
|
-
b2.use SyncFolders
|
39
38
|
end
|
40
39
|
end
|
41
40
|
end
|
@@ -65,13 +64,13 @@ module VagrantPlugins
|
|
65
64
|
def self.action_ssh
|
66
65
|
Vagrant::Action::Builder.new.tap do |b|
|
67
66
|
b.use ConfigValidate
|
68
|
-
b.use
|
69
|
-
|
70
|
-
|
71
|
-
|
67
|
+
b.use ConnectOpenstack
|
68
|
+
b.use Call, ReadState do |env, b2|
|
69
|
+
if env[:machine_state_id] == :not_created
|
70
|
+
b2.use Message, I18n.t('vagrant_openstack.not_created')
|
71
|
+
else
|
72
|
+
b2.use SSHExec
|
72
73
|
end
|
73
|
-
|
74
|
-
b2.use SSHExec
|
75
74
|
end
|
76
75
|
end
|
77
76
|
end
|
@@ -79,13 +78,13 @@ module VagrantPlugins
|
|
79
78
|
def self.action_ssh_run
|
80
79
|
Vagrant::Action::Builder.new.tap do |b|
|
81
80
|
b.use ConfigValidate
|
82
|
-
b.use
|
83
|
-
|
84
|
-
|
85
|
-
|
81
|
+
b.use ConnectOpenstack
|
82
|
+
b.use Call, ReadState do |env, b2|
|
83
|
+
if env[:machine_state_id] == :not_created
|
84
|
+
b2.use Message, I18n.t('vagrant_openstack.not_created')
|
85
|
+
else
|
86
|
+
b2.use SSHRun
|
86
87
|
end
|
87
|
-
|
88
|
-
b2.use SSHRun
|
89
88
|
end
|
90
89
|
end
|
91
90
|
end
|
@@ -93,31 +92,98 @@ module VagrantPlugins
|
|
93
92
|
def self.action_up
|
94
93
|
Vagrant::Action::Builder.new.tap do |b|
|
95
94
|
b.use ConfigValidate
|
96
|
-
b.use
|
97
|
-
|
98
|
-
|
99
|
-
|
95
|
+
b.use ConnectOpenstack
|
96
|
+
|
97
|
+
b.use Call, ReadState do |env, b2|
|
98
|
+
if env[:machine_state_id] == :not_created
|
99
|
+
b2.use Provision
|
100
|
+
b2.use SyncFolders
|
101
|
+
b2.use CreateServer
|
102
|
+
else
|
103
|
+
b2.use Message, I18n.t('vagrant_openstack.already_created')
|
100
104
|
end
|
105
|
+
end
|
106
|
+
end
|
107
|
+
end
|
108
|
+
|
109
|
+
def self.action_halt
|
110
|
+
Vagrant::Action::Builder.new.tap do |b|
|
111
|
+
b.use ConfigValidate
|
112
|
+
b.use ConnectOpenstack
|
113
|
+
b.use Call, ReadState do |env, b2|
|
114
|
+
if env[:machine_state_id] == :not_created
|
115
|
+
b2.use Message, I18n.t('vagrant_openstack.not_created')
|
116
|
+
else
|
117
|
+
b2.use StopServer
|
118
|
+
end
|
119
|
+
end
|
120
|
+
end
|
121
|
+
end
|
101
122
|
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
123
|
+
# This is the action that is primarily responsible for suspending
|
124
|
+
# the virtual machine.
|
125
|
+
def self.action_suspend
|
126
|
+
Vagrant::Action::Builder.new.tap do |b|
|
127
|
+
b.use ConfigValidate
|
128
|
+
b.use ConnectOpenstack
|
129
|
+
b.use Call, ReadState do |env, b2|
|
130
|
+
if env[:machine_state_id] == :not_created
|
131
|
+
b2.use Message, I18n.t('vagrant_openstack.not_created')
|
132
|
+
elsif env[:machine_state_id] == :suspended
|
133
|
+
b2.use Message, I18n.t('vagrant_openstack.already_suspended')
|
134
|
+
else
|
135
|
+
b2.use Suspend
|
136
|
+
end
|
137
|
+
end
|
138
|
+
end
|
139
|
+
end
|
140
|
+
|
141
|
+
# This is the action that is primarily responsible for resuming
|
142
|
+
# suspended machines.
|
143
|
+
def self.action_resume
|
144
|
+
Vagrant::Action::Builder.new.tap do |b|
|
145
|
+
b.use ConfigValidate
|
146
|
+
b.use ConnectOpenstack
|
147
|
+
b.use Call, ReadState do |env, b2|
|
148
|
+
if env[:machine_state_id] == :not_created
|
149
|
+
b2.use Message, I18n.t('vagrant_openstack.not_created')
|
150
|
+
else
|
151
|
+
b2.use Resume
|
152
|
+
end
|
153
|
+
end
|
154
|
+
end
|
155
|
+
end
|
156
|
+
|
157
|
+
def self.action_reload
|
158
|
+
Vagrant::Action::Builder.new.tap do |b|
|
159
|
+
b.use ConfigValidate
|
160
|
+
b.use ConnectOpenstack
|
161
|
+
b.use Call, ReadState do |env, b2|
|
162
|
+
if env[:machine_state_id] == :not_created
|
163
|
+
b2.use Message, I18n.t('vagrant_openstack.not_created')
|
164
|
+
else
|
165
|
+
b2.use StopServer
|
166
|
+
b2.use WaitForServerToStop
|
167
|
+
b2.use StartServer
|
168
|
+
end
|
106
169
|
end
|
107
170
|
end
|
108
171
|
end
|
109
172
|
|
110
173
|
# The autoload farm
|
111
|
-
action_root = Pathname.new(File.expand_path(
|
112
|
-
autoload :
|
113
|
-
autoload :
|
114
|
-
autoload :
|
115
|
-
autoload :
|
116
|
-
autoload :
|
117
|
-
autoload :
|
118
|
-
autoload :ReadSSHInfo, action_root.join(
|
119
|
-
autoload :ReadState, action_root.join(
|
120
|
-
autoload :SyncFolders, action_root.join(
|
174
|
+
action_root = Pathname.new(File.expand_path('../action', __FILE__))
|
175
|
+
autoload :Message, action_root.join('message')
|
176
|
+
autoload :ConnectOpenstack, action_root.join('connect_openstack')
|
177
|
+
autoload :CreateServer, action_root.join('create_server')
|
178
|
+
autoload :DeleteServer, action_root.join('delete_server')
|
179
|
+
autoload :StopServer, action_root.join('stop_server')
|
180
|
+
autoload :StartServer, action_root.join('start_server')
|
181
|
+
autoload :ReadSSHInfo, action_root.join('read_ssh_info')
|
182
|
+
autoload :ReadState, action_root.join('read_state')
|
183
|
+
autoload :SyncFolders, action_root.join('sync_folders')
|
184
|
+
autoload :Suspend, action_root.join('suspend')
|
185
|
+
autoload :Resume, action_root.join('resume')
|
186
|
+
autoload :WaitForServerToStop, action_root.join('wait_stop')
|
121
187
|
end
|
122
188
|
end
|
123
189
|
end
|