vagrant-hp 0.1.0 → 0.1.1
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.
- data/.gitignore +59 -59
- data/CHANGELOG.md +6 -3
- data/Gemfile +10 -10
- data/LICENSE +9 -0
- data/README.md +172 -167
- data/Rakefile +21 -21
- data/example_box/README.md +13 -13
- data/example_box/Vagrantfile +7 -7
- data/example_box/metadata.json +3 -3
- data/lib/vagrant-hp.rb +18 -18
- data/lib/vagrant-hp/action.rb +110 -110
- data/lib/vagrant-hp/action/connect_hp.rb +54 -54
- data/lib/vagrant-hp/action/create_server.rb +124 -121
- data/lib/vagrant-hp/action/delete_server.rb +30 -30
- data/lib/vagrant-hp/action/halt_server.rb +30 -30
- data/lib/vagrant-hp/action/is_created.rb +23 -23
- data/lib/vagrant-hp/action/is_running.rb +23 -23
- data/lib/vagrant-hp/action/message_already_created.rb +21 -21
- data/lib/vagrant-hp/action/message_not_created.rb +21 -21
- data/lib/vagrant-hp/action/read_ssh_info.rb +51 -51
- data/lib/vagrant-hp/action/read_state.rb +43 -43
- data/lib/vagrant-hp/action/sync_folders.rb +63 -63
- data/lib/vagrant-hp/action/timed_provision.rb +27 -27
- data/lib/vagrant-hp/action/warn_networks.rb +24 -24
- data/lib/vagrant-hp/config.rb +159 -157
- data/lib/vagrant-hp/errors.rb +24 -24
- data/lib/vagrant-hp/plugin.rb +78 -78
- data/lib/vagrant-hp/provider.rb +55 -55
- data/lib/vagrant-hp/util/timer.rb +17 -17
- data/lib/vagrant-hp/version.rb +10 -10
- data/locales/en.yml +91 -91
- data/spec/vagrant-hp/config_spec.rb +42 -42
- data/vagrant-hp.gemspec +59 -59
- metadata +4 -3
data/Rakefile
CHANGED
@@ -1,21 +1,21 @@
|
|
1
|
-
require 'rubygems'
|
2
|
-
require 'bundler/setup'
|
3
|
-
require 'rspec/core/rake_task'
|
4
|
-
|
5
|
-
# Immediately sync all stdout so that tools like buildbot can
|
6
|
-
# immediately load in the output.
|
7
|
-
$stdout.sync = true
|
8
|
-
$stderr.sync = true
|
9
|
-
|
10
|
-
# Change to the directory of this file.
|
11
|
-
Dir.chdir(File.expand_path("../", __FILE__))
|
12
|
-
|
13
|
-
# This installs the tasks that help with gem creation and
|
14
|
-
# publishing.
|
15
|
-
Bundler::GemHelper.install_tasks
|
16
|
-
|
17
|
-
# Install the `spec` task so that we can run tests.
|
18
|
-
RSpec::Core::RakeTask.new
|
19
|
-
|
20
|
-
# Default task is to run the unit tests
|
21
|
-
task :default => "spec"
|
1
|
+
require 'rubygems'
|
2
|
+
require 'bundler/setup'
|
3
|
+
require 'rspec/core/rake_task'
|
4
|
+
|
5
|
+
# Immediately sync all stdout so that tools like buildbot can
|
6
|
+
# immediately load in the output.
|
7
|
+
$stdout.sync = true
|
8
|
+
$stderr.sync = true
|
9
|
+
|
10
|
+
# Change to the directory of this file.
|
11
|
+
Dir.chdir(File.expand_path("../", __FILE__))
|
12
|
+
|
13
|
+
# This installs the tasks that help with gem creation and
|
14
|
+
# publishing.
|
15
|
+
Bundler::GemHelper.install_tasks
|
16
|
+
|
17
|
+
# Install the `spec` task so that we can run tests.
|
18
|
+
RSpec::Core::RakeTask.new
|
19
|
+
|
20
|
+
# Default task is to run the unit tests
|
21
|
+
task :default => "spec"
|
data/example_box/README.md
CHANGED
@@ -1,13 +1,13 @@
|
|
1
|
-
# Vagrant HP Example Box
|
2
|
-
|
3
|
-
Vagrant providers each require a custom provider-specific box format.
|
4
|
-
This folder shows the example contents of a box for the `hp` provider.
|
5
|
-
To turn this into a box:
|
6
|
-
|
7
|
-
```
|
8
|
-
$ tar cvzf hp.box ./metadata.json ./Vagrantfile
|
9
|
-
```
|
10
|
-
|
11
|
-
This box works by using Vagrant's built-in Vagrantfile merging to setup
|
12
|
-
defaults for HP. These defaults can easily be overwritten by higher-level
|
13
|
-
Vagrantfiles (such as project root Vagrantfiles).
|
1
|
+
# Vagrant HP Example Box
|
2
|
+
|
3
|
+
Vagrant providers each require a custom provider-specific box format.
|
4
|
+
This folder shows the example contents of a box for the `hp` provider.
|
5
|
+
To turn this into a box:
|
6
|
+
|
7
|
+
```
|
8
|
+
$ tar cvzf hp.box ./metadata.json ./Vagrantfile
|
9
|
+
```
|
10
|
+
|
11
|
+
This box works by using Vagrant's built-in Vagrantfile merging to setup
|
12
|
+
defaults for HP. These defaults can easily be overwritten by higher-level
|
13
|
+
Vagrantfiles (such as project root Vagrantfiles).
|
data/example_box/Vagrantfile
CHANGED
@@ -1,7 +1,7 @@
|
|
1
|
-
# -*- mode: ruby -*-
|
2
|
-
# vi: set ft=ruby :
|
3
|
-
|
4
|
-
Vagrant.configure("2") do |config|
|
5
|
-
config.vm.provider :hp do |rs|
|
6
|
-
end
|
7
|
-
end
|
1
|
+
# -*- mode: ruby -*-
|
2
|
+
# vi: set ft=ruby :
|
3
|
+
|
4
|
+
Vagrant.configure("2") do |config|
|
5
|
+
config.vm.provider :hp do |rs|
|
6
|
+
end
|
7
|
+
end
|
data/example_box/metadata.json
CHANGED
@@ -1,3 +1,3 @@
|
|
1
|
-
{
|
2
|
-
"provider": "hp"
|
3
|
-
}
|
1
|
+
{
|
2
|
+
"provider": "hp"
|
3
|
+
}
|
data/lib/vagrant-hp.rb
CHANGED
@@ -1,18 +1,18 @@
|
|
1
|
-
require "pathname"
|
2
|
-
|
3
|
-
require "vagrant-hp/plugin"
|
4
|
-
|
5
|
-
module VagrantPlugins
|
6
|
-
module HP
|
7
|
-
lib_path = Pathname.new(File.expand_path("../vagrant-hp", __FILE__))
|
8
|
-
autoload :Action, lib_path.join("action")
|
9
|
-
autoload :Errors, lib_path.join("errors")
|
10
|
-
|
11
|
-
# This returns the path to the source of this plugin.
|
12
|
-
#
|
13
|
-
# @return [Pathname]
|
14
|
-
def self.source_root
|
15
|
-
@source_root ||= Pathname.new(File.expand_path("../../", __FILE__))
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
1
|
+
require "pathname"
|
2
|
+
|
3
|
+
require "vagrant-hp/plugin"
|
4
|
+
|
5
|
+
module VagrantPlugins
|
6
|
+
module HP
|
7
|
+
lib_path = Pathname.new(File.expand_path("../vagrant-hp", __FILE__))
|
8
|
+
autoload :Action, lib_path.join("action")
|
9
|
+
autoload :Errors, lib_path.join("errors")
|
10
|
+
|
11
|
+
# This returns the path to the source of this plugin.
|
12
|
+
#
|
13
|
+
# @return [Pathname]
|
14
|
+
def self.source_root
|
15
|
+
@source_root ||= Pathname.new(File.expand_path("../../", __FILE__))
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
data/lib/vagrant-hp/action.rb
CHANGED
@@ -1,110 +1,110 @@
|
|
1
|
-
#
|
2
|
-
# Author:: Mohit Sethi (<mohit@sethis.in>)
|
3
|
-
# Copyright:: Copyright (c) 2013 Mohit Sethi.
|
4
|
-
#
|
5
|
-
|
6
|
-
require "pathname"
|
7
|
-
require "vagrant/action/builder"
|
8
|
-
|
9
|
-
module VagrantPlugins
|
10
|
-
module HP
|
11
|
-
module Action
|
12
|
-
# Include the built-in modules so we can use them as top-level things.
|
13
|
-
include Vagrant::Action::Builtin
|
14
|
-
|
15
|
-
# This action is called to terminate the remote machine.
|
16
|
-
def self.action_destroy
|
17
|
-
Vagrant::Action::Builder.new.tap do |b|
|
18
|
-
b.use ConfigValidate
|
19
|
-
b.use ConnectHP
|
20
|
-
b.use DeleteServer
|
21
|
-
end
|
22
|
-
end
|
23
|
-
|
24
|
-
# This action is called when `vagrant provision` is called.
|
25
|
-
def self.action_provision
|
26
|
-
Vagrant::Action::Builder.new.tap do |b|
|
27
|
-
b.use ConfigValidate
|
28
|
-
b.use Call, IsCreated do |env, b2|
|
29
|
-
if !env[:result]
|
30
|
-
b2.use MessageNotCreated
|
31
|
-
next
|
32
|
-
end
|
33
|
-
b2.use SyncFolders
|
34
|
-
b2.use Provision
|
35
|
-
end
|
36
|
-
end
|
37
|
-
end
|
38
|
-
|
39
|
-
# This action is called to read the SSH info of the machine. The
|
40
|
-
# resulting state is expected to be put into the `:machine_ssh_info`
|
41
|
-
# key.
|
42
|
-
def self.action_read_ssh_info
|
43
|
-
Vagrant::Action::Builder.new.tap do |b|
|
44
|
-
b.use ConfigValidate
|
45
|
-
b.use ConnectHP
|
46
|
-
b.use ReadSSHInfo
|
47
|
-
end
|
48
|
-
end
|
49
|
-
|
50
|
-
# This action is called to read the state of the machine. The
|
51
|
-
# resulting state is expected to be put into the `:machine_state_id`
|
52
|
-
# key.
|
53
|
-
def self.action_read_state
|
54
|
-
Vagrant::Action::Builder.new.tap do |b|
|
55
|
-
b.use ConfigValidate
|
56
|
-
b.use ConnectHP
|
57
|
-
b.use ReadState
|
58
|
-
end
|
59
|
-
end
|
60
|
-
|
61
|
-
# This action is called to SSH into the machine.
|
62
|
-
def self.action_ssh
|
63
|
-
Vagrant::Action::Builder.new.tap do |b|
|
64
|
-
b.use ConfigValidate
|
65
|
-
b.use Call, IsCreated do |env, b2|
|
66
|
-
if !env[:result]
|
67
|
-
b2.use MessageNotCreated
|
68
|
-
next
|
69
|
-
end
|
70
|
-
|
71
|
-
b2.use SSHExec
|
72
|
-
end
|
73
|
-
end
|
74
|
-
end
|
75
|
-
|
76
|
-
def self.action_up
|
77
|
-
Vagrant::Action::Builder.new.tap do |b|
|
78
|
-
b.use ConfigValidate
|
79
|
-
b.use Call, IsCreated do |env, b2|
|
80
|
-
if env[:result]
|
81
|
-
b2.use MessageAlreadyCreated
|
82
|
-
next
|
83
|
-
end
|
84
|
-
|
85
|
-
b2.use ConnectHP
|
86
|
-
b2.use Provision
|
87
|
-
b2.use SyncFolders
|
88
|
-
b2.use WarnNetworks
|
89
|
-
b2.use CreateServer
|
90
|
-
end
|
91
|
-
end
|
92
|
-
end
|
93
|
-
|
94
|
-
# The autoload farm
|
95
|
-
action_root = Pathname.new(File.expand_path("../action", __FILE__))
|
96
|
-
autoload :ConnectHP, action_root.join("connect_hp")
|
97
|
-
autoload :IsCreated, action_root.join("is_created")
|
98
|
-
autoload :MessageAlreadyCreated, action_root.join("message_already_created")
|
99
|
-
autoload :MessageNotCreated, action_root.join("message_not_created")
|
100
|
-
autoload :ReadSSHInfo, action_root.join("read_ssh_info")
|
101
|
-
autoload :ReadState, action_root.join("read_state")
|
102
|
-
autoload :RunInstance, action_root.join("run_instance")
|
103
|
-
autoload :SyncFolders, action_root.join("sync_folders")
|
104
|
-
autoload :TimedProvision, action_root.join("timed_provision")
|
105
|
-
autoload :WarnNetworks, action_root.join("warn_networks")
|
106
|
-
autoload :CreateServer, action_root.join("create_server")
|
107
|
-
autoload :DeleteServer, action_root.join("delete_server")
|
108
|
-
end
|
109
|
-
end
|
110
|
-
end
|
1
|
+
#
|
2
|
+
# Author:: Mohit Sethi (<mohit@sethis.in>)
|
3
|
+
# Copyright:: Copyright (c) 2013 Mohit Sethi.
|
4
|
+
#
|
5
|
+
|
6
|
+
require "pathname"
|
7
|
+
require "vagrant/action/builder"
|
8
|
+
|
9
|
+
module VagrantPlugins
|
10
|
+
module HP
|
11
|
+
module Action
|
12
|
+
# Include the built-in modules so we can use them as top-level things.
|
13
|
+
include Vagrant::Action::Builtin
|
14
|
+
|
15
|
+
# This action is called to terminate the remote machine.
|
16
|
+
def self.action_destroy
|
17
|
+
Vagrant::Action::Builder.new.tap do |b|
|
18
|
+
b.use ConfigValidate
|
19
|
+
b.use ConnectHP
|
20
|
+
b.use DeleteServer
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
# This action is called when `vagrant provision` is called.
|
25
|
+
def self.action_provision
|
26
|
+
Vagrant::Action::Builder.new.tap do |b|
|
27
|
+
b.use ConfigValidate
|
28
|
+
b.use Call, IsCreated do |env, b2|
|
29
|
+
if !env[:result]
|
30
|
+
b2.use MessageNotCreated
|
31
|
+
next
|
32
|
+
end
|
33
|
+
b2.use SyncFolders
|
34
|
+
b2.use Provision
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
# This action is called to read the SSH info of the machine. The
|
40
|
+
# resulting state is expected to be put into the `:machine_ssh_info`
|
41
|
+
# key.
|
42
|
+
def self.action_read_ssh_info
|
43
|
+
Vagrant::Action::Builder.new.tap do |b|
|
44
|
+
b.use ConfigValidate
|
45
|
+
b.use ConnectHP
|
46
|
+
b.use ReadSSHInfo
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
# This action is called to read the state of the machine. The
|
51
|
+
# resulting state is expected to be put into the `:machine_state_id`
|
52
|
+
# key.
|
53
|
+
def self.action_read_state
|
54
|
+
Vagrant::Action::Builder.new.tap do |b|
|
55
|
+
b.use ConfigValidate
|
56
|
+
b.use ConnectHP
|
57
|
+
b.use ReadState
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
# This action is called to SSH into the machine.
|
62
|
+
def self.action_ssh
|
63
|
+
Vagrant::Action::Builder.new.tap do |b|
|
64
|
+
b.use ConfigValidate
|
65
|
+
b.use Call, IsCreated do |env, b2|
|
66
|
+
if !env[:result]
|
67
|
+
b2.use MessageNotCreated
|
68
|
+
next
|
69
|
+
end
|
70
|
+
|
71
|
+
b2.use SSHExec
|
72
|
+
end
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
def self.action_up
|
77
|
+
Vagrant::Action::Builder.new.tap do |b|
|
78
|
+
b.use ConfigValidate
|
79
|
+
b.use Call, IsCreated do |env, b2|
|
80
|
+
if env[:result]
|
81
|
+
b2.use MessageAlreadyCreated
|
82
|
+
next
|
83
|
+
end
|
84
|
+
|
85
|
+
b2.use ConnectHP
|
86
|
+
b2.use Provision
|
87
|
+
b2.use SyncFolders
|
88
|
+
b2.use WarnNetworks
|
89
|
+
b2.use CreateServer
|
90
|
+
end
|
91
|
+
end
|
92
|
+
end
|
93
|
+
|
94
|
+
# The autoload farm
|
95
|
+
action_root = Pathname.new(File.expand_path("../action", __FILE__))
|
96
|
+
autoload :ConnectHP, action_root.join("connect_hp")
|
97
|
+
autoload :IsCreated, action_root.join("is_created")
|
98
|
+
autoload :MessageAlreadyCreated, action_root.join("message_already_created")
|
99
|
+
autoload :MessageNotCreated, action_root.join("message_not_created")
|
100
|
+
autoload :ReadSSHInfo, action_root.join("read_ssh_info")
|
101
|
+
autoload :ReadState, action_root.join("read_state")
|
102
|
+
autoload :RunInstance, action_root.join("run_instance")
|
103
|
+
autoload :SyncFolders, action_root.join("sync_folders")
|
104
|
+
autoload :TimedProvision, action_root.join("timed_provision")
|
105
|
+
autoload :WarnNetworks, action_root.join("warn_networks")
|
106
|
+
autoload :CreateServer, action_root.join("create_server")
|
107
|
+
autoload :DeleteServer, action_root.join("delete_server")
|
108
|
+
end
|
109
|
+
end
|
110
|
+
end
|
@@ -1,54 +1,54 @@
|
|
1
|
-
#
|
2
|
-
# Author:: Mohit Sethi (<mohit@sethis.in>)
|
3
|
-
# Copyright:: Copyright (c) 2013 Mohit Sethi.
|
4
|
-
#
|
5
|
-
|
6
|
-
require "fog"
|
7
|
-
require "log4r"
|
8
|
-
|
9
|
-
module VagrantPlugins
|
10
|
-
module HP
|
11
|
-
module Action
|
12
|
-
# This action connects to HP, verifies credentials work, and
|
13
|
-
# puts the HP connection object into the `:hp_compute` key
|
14
|
-
# in the environment.
|
15
|
-
class ConnectHP
|
16
|
-
def initialize(app, env)
|
17
|
-
@app = app
|
18
|
-
@logger = Log4r::Logger.new("vagrant_hp::action::connect_hp")
|
19
|
-
end
|
20
|
-
|
21
|
-
def call(env)
|
22
|
-
# Get the configs
|
23
|
-
config = env[:machine].provider_config
|
24
|
-
access_key = config.access_key
|
25
|
-
secret_key = config.secret_key
|
26
|
-
tenant_id = config.tenant_id
|
27
|
-
availability_zone = availability_zone(config.availability_zone)
|
28
|
-
|
29
|
-
@logger.info("Connecting to HP...")
|
30
|
-
env[:hp_compute] = Fog::Compute.new({
|
31
|
-
:provider => :hp,
|
32
|
-
:hp_access_key => access_key,
|
33
|
-
:hp_secret_key => secret_key,
|
34
|
-
:hp_tenant_id => tenant_id,
|
35
|
-
:hp_avl_zone => availability_zone,
|
36
|
-
})
|
37
|
-
|
38
|
-
@app.call(env)
|
39
|
-
end
|
40
|
-
|
41
|
-
def availability_zone(availability_zone)
|
42
|
-
case availability_zone
|
43
|
-
when 'az3'
|
44
|
-
return 'az-3.region-a.geo-1'
|
45
|
-
when 'az2'
|
46
|
-
return 'az-2.region-a.geo-1'
|
47
|
-
else
|
48
|
-
return 'az-1.region-a.geo-1'
|
49
|
-
end
|
50
|
-
end
|
51
|
-
end
|
52
|
-
end
|
53
|
-
end
|
54
|
-
end
|
1
|
+
#
|
2
|
+
# Author:: Mohit Sethi (<mohit@sethis.in>)
|
3
|
+
# Copyright:: Copyright (c) 2013 Mohit Sethi.
|
4
|
+
#
|
5
|
+
|
6
|
+
require "fog/hp"
|
7
|
+
require "log4r"
|
8
|
+
|
9
|
+
module VagrantPlugins
|
10
|
+
module HP
|
11
|
+
module Action
|
12
|
+
# This action connects to HP, verifies credentials work, and
|
13
|
+
# puts the HP connection object into the `:hp_compute` key
|
14
|
+
# in the environment.
|
15
|
+
class ConnectHP
|
16
|
+
def initialize(app, env)
|
17
|
+
@app = app
|
18
|
+
@logger = Log4r::Logger.new("vagrant_hp::action::connect_hp")
|
19
|
+
end
|
20
|
+
|
21
|
+
def call(env)
|
22
|
+
# Get the configs
|
23
|
+
config = env[:machine].provider_config
|
24
|
+
access_key = config.access_key
|
25
|
+
secret_key = config.secret_key
|
26
|
+
tenant_id = config.tenant_id
|
27
|
+
availability_zone = availability_zone(config.availability_zone)
|
28
|
+
|
29
|
+
@logger.info("Connecting to HP...")
|
30
|
+
env[:hp_compute] = Fog::Compute.new({
|
31
|
+
:provider => :hp,
|
32
|
+
:hp_access_key => access_key,
|
33
|
+
:hp_secret_key => secret_key,
|
34
|
+
:hp_tenant_id => tenant_id,
|
35
|
+
:hp_avl_zone => availability_zone,
|
36
|
+
})
|
37
|
+
|
38
|
+
@app.call(env)
|
39
|
+
end
|
40
|
+
|
41
|
+
def availability_zone(availability_zone)
|
42
|
+
case availability_zone
|
43
|
+
when 'az3'
|
44
|
+
return 'az-3.region-a.geo-1'
|
45
|
+
when 'az2'
|
46
|
+
return 'az-2.region-a.geo-1'
|
47
|
+
else
|
48
|
+
return 'az-1.region-a.geo-1'
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|