vagrant-hivemind 0.1.3 → 0.1.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/vagrant/hivemind/commands/desc.rb +15 -8
- data/lib/vagrant/hivemind/commands/halt.rb +10 -6
- data/lib/vagrant/hivemind/commands/kill.rb +15 -9
- data/lib/vagrant/hivemind/commands/spawn.rb +31 -20
- data/lib/vagrant/hivemind/commands/up.rb +10 -6
- data/lib/vagrant/hivemind/util.rb +8 -0
- data/lib/vagrant/hivemind/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 50d4a8040973f3f420d21e5d57b4caa10a4d4cee
|
4
|
+
data.tar.gz: cef39ddce159974e3fddceebab5fa654f114c5ad
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0f56a4b3aeb1ad4b0409366be075419ac6276eb18a0f69949e0d43aa82613581fb485d2520151794951171df9a583643013980b9fd8258a3d20e3051dd7e6458
|
7
|
+
data.tar.gz: bee703c4db7d000cdde0f576df72d2db3afcd5c8238e87b9360905ef442d084aa235bfb42b1085582c63ec24f15eec79c62c712634b549044f1c73a5b64b9d95
|
@@ -24,8 +24,8 @@ module Vagrant
|
|
24
24
|
o.separator "Options:"
|
25
25
|
o.separator ""
|
26
26
|
|
27
|
-
o.on("-n", "--hostname HOSTNAME", "
|
28
|
-
options[:hostname] = n
|
27
|
+
o.on("-n", "--hostname HOSTNAME", "A comma-separated list of Drone hostnames (REQUIRED)") do |n|
|
28
|
+
options[:hostname] = Args.from_csv n
|
29
29
|
end
|
30
30
|
|
31
31
|
o.on("-d", "--directory DIRECTORY", "Specify the directory where '#{HIVE_FILE}' is located (default: current directory)") do |d|
|
@@ -51,12 +51,18 @@ module Vagrant
|
|
51
51
|
|
52
52
|
hosts = HiveFile.read_from root_path
|
53
53
|
|
54
|
-
|
55
|
-
|
56
|
-
|
54
|
+
hostnames = []
|
55
|
+
options[:hostname].each do |hostname|
|
56
|
+
if hosts.values.map(&:hostname).include? hostname
|
57
|
+
hostnames << hostname
|
58
|
+
else
|
59
|
+
@env.ui.warn "The hostname '#{hostname}' does not exist in the Hive!"
|
60
|
+
end
|
57
61
|
end
|
58
62
|
|
59
|
-
|
63
|
+
hostnames.each do |hostname|
|
64
|
+
|
65
|
+
host = hosts[hostname]
|
60
66
|
|
61
67
|
@env.ui.info "Hostname : #{host.hostname}"
|
62
68
|
@env.ui.info "IP Address : #{host.ip_address}"
|
@@ -65,14 +71,15 @@ module Vagrant
|
|
65
71
|
@env.ui.info "Box Type : #{BOX_TYPES[host.box_type.to_sym][:name]} (#{BOX_TYPES[host.box_type.to_sym][:box_id]})"
|
66
72
|
@env.ui.info "GUI Machine : #{BOX_TYPES[host.box_type.to_sym][:is_gui] ? 'Yes' : 'No'}"
|
67
73
|
@env.ui.info "Detached Data : #{host.is_data_detached ? 'Yes' : 'No'}"
|
68
|
-
@env.ui.info ""
|
69
74
|
|
70
75
|
if host.forwarded_ports and !host.forwarded_ports.empty?
|
71
76
|
@env.ui.info "Forwarded Ports"
|
72
77
|
host.forwarded_ports.each do |forwarded_port|
|
73
78
|
@env.ui.info "#{'%15.15s' % forwarded_port["guest_port"]} : #{forwarded_port["host_port"]}"
|
74
79
|
end
|
75
|
-
|
80
|
+
end
|
81
|
+
@env.ui.info ""
|
82
|
+
|
76
83
|
end
|
77
84
|
|
78
85
|
0
|
@@ -24,8 +24,8 @@ module Vagrant
|
|
24
24
|
o.separator "Options:"
|
25
25
|
o.separator ""
|
26
26
|
|
27
|
-
o.on("-n", "--hostname HOSTNAME", "
|
28
|
-
options[:hostname] = n
|
27
|
+
o.on("-n", "--hostname HOSTNAME", "A comma-separated list of Drone hostnames (REQUIRED)") do |n|
|
28
|
+
options[:hostname] = Args.from_csv n
|
29
29
|
end
|
30
30
|
|
31
31
|
o.on("-f", "--force", "Force shut down (equivalent of pulling power)") do |f|
|
@@ -55,14 +55,18 @@ module Vagrant
|
|
55
55
|
|
56
56
|
hosts = HiveFile.read_from root_path
|
57
57
|
|
58
|
-
|
59
|
-
|
60
|
-
|
58
|
+
hostnames = []
|
59
|
+
options[:hostname].each do |hostname|
|
60
|
+
if hosts.values.map(&:hostname).include? hostname
|
61
|
+
hostnames << hostname
|
62
|
+
else
|
63
|
+
@env.ui.warn "The hostname '#{hostname}' does not exist in the Hive!"
|
64
|
+
end
|
61
65
|
end
|
62
66
|
|
63
67
|
Vagrant::Hivemind::Util::Vagrantfile.generate_hivemind_vagrantfile @env, hosts, root_path
|
64
68
|
|
65
|
-
with_target_vms(
|
69
|
+
with_target_vms(hostnames) do |vm|
|
66
70
|
vm.action(:halt, force_halt: options[:force])
|
67
71
|
end
|
68
72
|
|
@@ -24,8 +24,8 @@ module Vagrant
|
|
24
24
|
o.separator "Options:"
|
25
25
|
o.separator ""
|
26
26
|
|
27
|
-
o.on("-n", "--hostname HOSTNAME", "
|
28
|
-
options[:hostname] = n
|
27
|
+
o.on("-n", "--hostname HOSTNAME", "A comma-separated list of Drone hostnames (REQUIRED)") do |n|
|
28
|
+
options[:hostname] = Args.from_csv n
|
29
29
|
end
|
30
30
|
|
31
31
|
o.on("-d", "--directory DIRECTORY", "Specify the directory where '#{HIVE_FILE}' is located (default: current directory)") do |d|
|
@@ -51,20 +51,26 @@ module Vagrant
|
|
51
51
|
|
52
52
|
hosts = HiveFile.read_from root_path
|
53
53
|
|
54
|
-
|
55
|
-
|
56
|
-
|
54
|
+
hostnames = []
|
55
|
+
options[:hostname].each do |hostname|
|
56
|
+
if hosts.values.map(&:hostname).include? hostname
|
57
|
+
hostnames << hostname
|
58
|
+
else
|
59
|
+
@env.ui.warn "The hostname '#{hostname}' does not exist in the Hive!"
|
60
|
+
end
|
57
61
|
end
|
58
62
|
|
59
63
|
Vagrant::Hivemind::Util::Vagrantfile.generate_hivemind_vagrantfile @env, hosts, root_path
|
60
64
|
|
61
|
-
with_target_vms(
|
65
|
+
with_target_vms(hostnames) do |vm|
|
62
66
|
action_env = vm.action(:destroy, force_confirm_destroy: true)
|
63
67
|
end
|
64
68
|
|
65
|
-
|
66
|
-
|
67
|
-
|
69
|
+
hostnames.each do |hostname|
|
70
|
+
hosts.delete hostname
|
71
|
+
HiveFile.write_to hosts, root_path
|
72
|
+
@env.ui.info "Killed the Drone with hostname '#{hostname}'"
|
73
|
+
end
|
68
74
|
|
69
75
|
0
|
70
76
|
end
|
@@ -24,8 +24,8 @@ module Vagrant
|
|
24
24
|
o.separator "Options:"
|
25
25
|
o.separator ""
|
26
26
|
|
27
|
-
o.on("-n", "--hostname HOSTNAME", "
|
28
|
-
options[:hostname] = n
|
27
|
+
o.on("-n", "--hostname HOSTNAME", "A comma-separated list of Drone hostnames (REQUIRED)") do |n|
|
28
|
+
options[:hostname] = Args.from_csv n
|
29
29
|
end
|
30
30
|
|
31
31
|
o.on("-c", "--control", "Assign the Drone to be a Control Machine") do |c|
|
@@ -67,29 +67,40 @@ module Vagrant
|
|
67
67
|
|
68
68
|
hosts = HiveFile.read_from root_path
|
69
69
|
|
70
|
-
|
71
|
-
|
72
|
-
|
70
|
+
hostnames = []
|
71
|
+
options[:hostname].each do |hostname|
|
72
|
+
if hosts.values.map(&:hostname).include? hostname
|
73
|
+
@env.ui.warn "The hostname '#{hostname}' already exists in the Hive!"
|
74
|
+
else
|
75
|
+
if Network.is_valid_hostname? hostname
|
76
|
+
hostnames << hostname
|
77
|
+
else
|
78
|
+
@env.ui.warn "Invalid hostname format!"
|
79
|
+
end
|
80
|
+
end
|
73
81
|
end
|
74
82
|
|
75
|
-
|
76
|
-
@env.ui.
|
83
|
+
if hostnames.empty?
|
84
|
+
@env.ui.warn "No Drones to spawn!"
|
77
85
|
return 1
|
78
86
|
end
|
79
87
|
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
88
|
+
hostnames.each do |hostname|
|
89
|
+
drone = {
|
90
|
+
hostname => Vagrant::Hivemind::Host.new(
|
91
|
+
hostname,
|
92
|
+
Network.next_ip_address(hosts),
|
93
|
+
{
|
94
|
+
is_control: options[:control],
|
95
|
+
box_size: options[:size],
|
96
|
+
box_type: options[:type],
|
97
|
+
is_data_detached: options[:detach]
|
98
|
+
})
|
99
|
+
}
|
100
|
+
hosts = hosts.merge(drone)
|
101
|
+
@env.ui.info "Spawned the Drone with hostname '#{hostname}'"
|
102
|
+
end
|
103
|
+
HiveFile.write_to hosts, root_path
|
93
104
|
|
94
105
|
0
|
95
106
|
end
|
@@ -25,8 +25,8 @@ module Vagrant
|
|
25
25
|
o.separator "Options:"
|
26
26
|
o.separator ""
|
27
27
|
|
28
|
-
o.on("-n", "--hostname HOSTNAME", "
|
29
|
-
options[:hostname] = n
|
28
|
+
o.on("-n", "--hostname HOSTNAME", "A comma-separated list of Drone hostnames (REQUIRED)") do |n|
|
29
|
+
options[:hostname] = Args.from_csv n
|
30
30
|
end
|
31
31
|
|
32
32
|
o.on("-d", "--directory DIRECTORY", "Specify the directory where '#{HIVE_FILE}' is located (default: current directory)") do |d|
|
@@ -52,9 +52,13 @@ module Vagrant
|
|
52
52
|
|
53
53
|
hosts = HiveFile.read_from root_path
|
54
54
|
|
55
|
-
|
56
|
-
|
57
|
-
|
55
|
+
hostnames = []
|
56
|
+
options[:hostname].each do |hostname|
|
57
|
+
if hosts.values.map(&:hostname).include? hostname
|
58
|
+
hostnames << hostname
|
59
|
+
else
|
60
|
+
@env.ui.warn "The hostname '#{hostname}' does not exist in the Hive!"
|
61
|
+
end
|
58
62
|
end
|
59
63
|
|
60
64
|
Vagrant::Hivemind::Util::Vagrantfile.generate_hivemind_vagrantfile @env, hosts, root_path
|
@@ -63,7 +67,7 @@ module Vagrant
|
|
63
67
|
|
64
68
|
machines = []
|
65
69
|
@env.batch do |batch|
|
66
|
-
with_target_vms(
|
70
|
+
with_target_vms(hostnames) do |machine|
|
67
71
|
@env.ui.info(I18n.t("vagrant.commands.up.upping",
|
68
72
|
name: machine.name,
|
69
73
|
provider: machine.provider_name))
|
@@ -36,6 +36,14 @@ module Vagrant
|
|
36
36
|
end
|
37
37
|
end
|
38
38
|
|
39
|
+
class Args
|
40
|
+
def self.from_csv(csv)
|
41
|
+
return nil unless csv
|
42
|
+
tokens = csv.delete(" ").split(",").select do |token| !token.empty? end
|
43
|
+
tokens.empty? ? nil : tokens
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
39
47
|
class Network
|
40
48
|
def self.is_valid_hostname?(hostname)
|
41
49
|
return false unless hostname and hostname.size > 0 and hostname.size <= Vagrant::Hivemind::Constants::SIMPLE_HOSTNAME_MAX_LENGTH
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: vagrant-hivemind
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Nap Ramirez
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-10-
|
11
|
+
date: 2015-10-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|