danarchy_sys 0.2.12 → 0.2.14
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/danarchy_sys/cli/instance_manager.rb +5 -1
- data/lib/danarchy_sys/cli/keypair_manager.rb +153 -0
- data/lib/danarchy_sys/cli/menus.rb +11 -7
- data/lib/danarchy_sys/cli/providers.rb +4 -2
- data/lib/danarchy_sys/cli.rb +2 -3
- data/lib/danarchy_sys/helpers.rb +1 -1
- data/lib/danarchy_sys/openstack/compute/keypairs.rb +3 -0
- data/lib/danarchy_sys/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2eb2359dc35e6ad315efe1e66f82c7e9341c1b72
|
4
|
+
data.tar.gz: 0876ad89c05d969f6768b173fe1245f22cdeaf15
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2b7c28329ad67c2c1553b7d20a22eb581bdf7437675352402605abe6225b714998ca8307da3a4a9add757324abd84484eaf4cd284ff494890c045a550a2d077f
|
7
|
+
data.tar.gz: f2a4c861f6157f9837d4b01a154100bc77e98101fef32bb0af51941005f22742735b7905a7f34539bcefbfb4493ce6f007de312e243ee070e5cef0c84f7132a4
|
@@ -4,13 +4,14 @@ require_relative 'instance_manager/instance_status'
|
|
4
4
|
class InstanceManager
|
5
5
|
def self.manager(os_compute)
|
6
6
|
comp_inst = os_compute.compute_instances
|
7
|
-
puts 'Instance Manager: enter \'
|
7
|
+
puts 'Instance Manager: enter \'help\' to view available commands or \'main\' for the main menu.'
|
8
8
|
menu = Menus.numbered_menu('instance')
|
9
9
|
instance = false
|
10
10
|
|
11
11
|
loop do
|
12
12
|
while instance == false
|
13
13
|
instance = chooser(os_compute)
|
14
|
+
return Menus.print_menu('main') if instance == 'main'
|
14
15
|
end
|
15
16
|
|
16
17
|
print "#{instance.name} ~: "
|
@@ -75,6 +76,8 @@ class InstanceManager
|
|
75
76
|
Menus.print_menu('instance')
|
76
77
|
puts "\nCommand \'#{cmd}\' not available. Enter a command from above."
|
77
78
|
end
|
79
|
+
|
80
|
+
return Menus.print_menu('main') if instance == 'main'
|
78
81
|
end
|
79
82
|
end
|
80
83
|
|
@@ -112,6 +115,7 @@ class InstanceManager
|
|
112
115
|
end
|
113
116
|
|
114
117
|
abort('Exiting') if instance_name == 'exit'
|
118
|
+
return 'main' if instance_name == 'main'
|
115
119
|
|
116
120
|
# Accept instance Id as an entry
|
117
121
|
if instance_name =~ /^[0-9]*$/
|
@@ -0,0 +1,153 @@
|
|
1
|
+
require_relative './menus'
|
2
|
+
|
3
|
+
class KeypairManager
|
4
|
+
def self.manager(os_compute)
|
5
|
+
comp_kp = os_compute.compute_keypairs
|
6
|
+
puts 'Keypair Manager: enter \'help\' to view available commands or \'main\' for the main menu.'
|
7
|
+
menu = Menus.numbered_menu('keypair')
|
8
|
+
keypair = false
|
9
|
+
|
10
|
+
loop do
|
11
|
+
while keypair == false
|
12
|
+
keypair = chooser(os_compute)
|
13
|
+
return Menus.print_menu('main') if keypair == 'main'
|
14
|
+
end
|
15
|
+
|
16
|
+
print "#{keypair.name} ~: " if keypair
|
17
|
+
cmd = gets.chomp
|
18
|
+
|
19
|
+
next if cmd.empty?
|
20
|
+
abort('Exiting!') if cmd == 'exit'
|
21
|
+
|
22
|
+
if cmd =~ /^[0-9]*$/
|
23
|
+
menu[cmd.to_i].map { |k, v| cmd = k } if menu.keys.include? cmd.to_i
|
24
|
+
end
|
25
|
+
|
26
|
+
if cmd == 'help'
|
27
|
+
Menus.print_menu('keypair')
|
28
|
+
elsif cmd == 'main'
|
29
|
+
return Menus.print_menu('main')
|
30
|
+
elsif cmd == 'chooser'
|
31
|
+
keypair = chooser(os_compute)
|
32
|
+
elsif cmd == 'create'
|
33
|
+
print 'Enter a new keypair name: '
|
34
|
+
keypair_name = gets.chomp
|
35
|
+
keypair = comp_kp.create_keypair(keypair_name)
|
36
|
+
puts "Keypair: #{keypair_name} created!"
|
37
|
+
Menus.print_menu('keypair')
|
38
|
+
puts "Managing keypair: #{keypair_name}"
|
39
|
+
elsif cmd == 'delete'
|
40
|
+
print "Are you sure you wish to delete keypair: #{keypair.name}? (this is permanent!) (Y/N): "
|
41
|
+
delete = comp_kp.delete_keypair(keypair.name) if gets.chomp =~ /^y(es)?$/i
|
42
|
+
if delete == true
|
43
|
+
puts "#{keypair.name} has been deleted! Returning to the keypair chooser."
|
44
|
+
keypair = chooser(os_compute)
|
45
|
+
else
|
46
|
+
puts "#{keypair.name} was not deleted!"
|
47
|
+
end
|
48
|
+
elsif cmd == 'status'
|
49
|
+
printf("%#{keypair.name.size}s %0s %0s\n", keypair.name, ' => ', keypair.state)
|
50
|
+
elsif %w(pause unpause suspend resume start stop).include?(cmd.to_s)
|
51
|
+
status = keypair.state
|
52
|
+
|
53
|
+
if cmd =~ /e$/
|
54
|
+
print "#{cmd.gsub(/e$/, 'ing')} #{keypair.name} ."
|
55
|
+
else
|
56
|
+
print "#{cmd}ing #{keypair.name} ."
|
57
|
+
end
|
58
|
+
|
59
|
+
response = comp_kp.send(cmd.to_s, keypair.name.to_s)
|
60
|
+
if response == false
|
61
|
+
puts "\nInvalid action for #{keypair.name}'s current status!"
|
62
|
+
next
|
63
|
+
end
|
64
|
+
|
65
|
+
until status != keypair.state
|
66
|
+
keypair = os_compute.compute_keypairs.get_keypair(keypair.name)
|
67
|
+
sleep(3)
|
68
|
+
print ' .'
|
69
|
+
end
|
70
|
+
|
71
|
+
printf("\n%#{keypair.name.size}s %0s %0s\n", keypair.name, ' => ', keypair.state)
|
72
|
+
elsif cmd == 'connect'
|
73
|
+
if keypair.state == 'ACTIVE'
|
74
|
+
os_compute.compute_ssh(keypair.name.to_s)
|
75
|
+
else
|
76
|
+
puts "Unable to connect: #{keypair.name} is not running!"
|
77
|
+
end
|
78
|
+
else
|
79
|
+
Menus.print_menu('keypair')
|
80
|
+
puts "\nCommand \'#{cmd}\' not available. Enter a command from above."
|
81
|
+
end
|
82
|
+
|
83
|
+
return Menus.print_menu('main') if keypair == 'main'
|
84
|
+
end
|
85
|
+
end
|
86
|
+
|
87
|
+
def self.chooser(os_compute)
|
88
|
+
comp_kp = os_compute.compute_keypairs
|
89
|
+
keypairs = comp_kp.list_keypairs
|
90
|
+
keypair_numhash = Helpers.array_to_numhash(keypairs)
|
91
|
+
keypair_name = 'nil'
|
92
|
+
keypair = 'nil'
|
93
|
+
|
94
|
+
# Create a new keypairs if none exist
|
95
|
+
if keypair_numhash.empty?
|
96
|
+
print 'No existing keypairs were found. Should we create a new one? (Y/N): '
|
97
|
+
abort('Exiting!') unless gets.chomp =~ /^y(es)?$/i
|
98
|
+
keypair = PromptsCreateKeypair.create_keypair(os_compute, 'nil')
|
99
|
+
puts "Working with: #{keypair.name}\tStatus: #{keypair.state}"
|
100
|
+
return keypair
|
101
|
+
end
|
102
|
+
|
103
|
+
puts 'Available keypairs:'
|
104
|
+
fields = PrintFormats.printf_hash(keypair_numhash)
|
105
|
+
keypair_numhash.each do |k, v|
|
106
|
+
printf("#{fields}\n", "#{k}.", v)
|
107
|
+
end
|
108
|
+
|
109
|
+
# Loop input until an existing keypair is selected
|
110
|
+
print 'Enter an keypair to manage or enter a name for a new keypair: '
|
111
|
+
|
112
|
+
until keypairs.include?(keypair_name)
|
113
|
+
keypair_name = gets.chomp
|
114
|
+
|
115
|
+
until keypair_name.empty? == false
|
116
|
+
print 'Input was blank! Enter an keypair or Id from above: '
|
117
|
+
keypair_name = gets.chomp
|
118
|
+
end
|
119
|
+
|
120
|
+
abort('Exiting') if keypair_name == 'exit'
|
121
|
+
return 'main' if keypair_name == 'main'
|
122
|
+
|
123
|
+
# Accept keypair Id as an entry
|
124
|
+
if keypair_name =~ /^[0-9]*$/
|
125
|
+
until keypair_numhash.keys.include?(keypair_name.to_i)
|
126
|
+
print "#{keypair_name} is not a valid Id. Enter an Id from above: "
|
127
|
+
keypair_name = gets.chomp
|
128
|
+
end
|
129
|
+
|
130
|
+
keypair_name = keypair_numhash[keypair_name.to_i]
|
131
|
+
end
|
132
|
+
|
133
|
+
if comp_kp.check_keypair(keypair_name) == false
|
134
|
+
print "#{keypair_name} is not a valid keypair.
|
135
|
+
Should we create a new keypair named #{keypair_name}? (Y/N): "
|
136
|
+
|
137
|
+
if gets.chomp =~ /^y(es)?$/i
|
138
|
+
comp_kp.create_keypair(keypair_name)
|
139
|
+
else
|
140
|
+
puts "Not creating new keypair: #{keypair_name}."
|
141
|
+
return false
|
142
|
+
end
|
143
|
+
end
|
144
|
+
|
145
|
+
keypairs = comp_kp.list_keypairs
|
146
|
+
end
|
147
|
+
|
148
|
+
keypair = comp_kp.get_keypair(keypair_name)
|
149
|
+
Menus.print_menu('keypair')
|
150
|
+
puts "Managing keypair: #{keypair_name}"
|
151
|
+
keypair
|
152
|
+
end
|
153
|
+
end
|
@@ -2,9 +2,10 @@
|
|
2
2
|
class Menus
|
3
3
|
def self.get_menu(menu)
|
4
4
|
menus = { 'main' => { 'instance' => 'Instance Manager',
|
5
|
-
'keypair' => 'Keypair Manager
|
5
|
+
'keypair' => 'Keypair Manager',
|
6
6
|
'help' => 'Outputs commands for current the menu level',
|
7
|
-
'exit' => 'Exit dAnarchy_sys'
|
7
|
+
'exit' => 'Exit dAnarchy_sys'
|
8
|
+
},
|
8
9
|
'instance' => { 'status' => 'Current running status of instance',
|
9
10
|
'connect' => 'Connect to instance through SSH',
|
10
11
|
'start' => 'Start a currently stopped instance',
|
@@ -14,7 +15,11 @@ class Menus
|
|
14
15
|
'suspend' => 'Suspend Instance (to disk)',
|
15
16
|
'resume' => 'Resume instance from suspended state',
|
16
17
|
'create' => 'Create a new instance',
|
17
|
-
'delete' => 'Delete this instance'
|
18
|
+
'delete' => 'Delete this instance'
|
19
|
+
},
|
20
|
+
'keypair' => { 'create' => 'Create a new keypair',
|
21
|
+
'delete' => 'Delete an existing keypair'
|
22
|
+
}
|
18
23
|
}
|
19
24
|
|
20
25
|
menus[menu]
|
@@ -31,13 +36,12 @@ class Menus
|
|
31
36
|
# print_menu(menu)
|
32
37
|
elsif menu == 'instance'
|
33
38
|
puts 'Instance Manager commands: '
|
34
|
-
puts 'Enter \'help\' to view available commands or \'main\' for the main menu.'
|
39
|
+
puts 'Enter enter \'chooser\' to select an instance, \'help\' to view available commands or \'main\' for the main menu.'
|
35
40
|
# print_menu(menu)
|
36
41
|
elsif menu == 'keypair'
|
37
42
|
puts 'Keypair Manager commands: '
|
38
|
-
puts '
|
39
|
-
|
40
|
-
# print_menu(menu)
|
43
|
+
puts 'Enter enter \'chooser\' to select a keypair, \'help\' to view available commands or \'main\' for the main menu.'
|
44
|
+
# print_menu(menu)
|
41
45
|
elsif menu == 'storage'
|
42
46
|
puts 'Storage Manager commands: '
|
43
47
|
puts 'Not yet implemented!'
|
@@ -22,8 +22,10 @@ class Providers
|
|
22
22
|
|
23
23
|
abort('Exiting') if provider == 'exit'
|
24
24
|
|
25
|
-
if provider =~ /^[0-9]*$/
|
26
|
-
provider = providers[provider.
|
25
|
+
if provider =~ /^[0-9]*$/
|
26
|
+
provider = providers[provider.to_i]
|
27
|
+
else
|
28
|
+
provider = provider.to_sym
|
27
29
|
end
|
28
30
|
end
|
29
31
|
|
data/lib/danarchy_sys/cli.rb
CHANGED
@@ -9,7 +9,7 @@ module DanarchySys
|
|
9
9
|
require_relative 'cli/menus'
|
10
10
|
require_relative 'cli/providers'
|
11
11
|
require_relative 'cli/instance_manager'
|
12
|
-
|
12
|
+
require_relative 'cli/keypair_manager'
|
13
13
|
|
14
14
|
provider = Providers.chooser
|
15
15
|
puts "OpenStack -> #{provider}"
|
@@ -47,8 +47,7 @@ module DanarchySys
|
|
47
47
|
if cmd == 'instance'
|
48
48
|
InstanceManager.manager(@os_compute)
|
49
49
|
elsif cmd == 'keypair'
|
50
|
-
|
51
|
-
# Keypair.manager(@os_compute)
|
50
|
+
KeypairManager.manager(@os_compute)
|
52
51
|
elsif cmd == 'help'
|
53
52
|
Menus.print_menu('main')
|
54
53
|
elsif cmd == 'exit'
|
data/lib/danarchy_sys/helpers.rb
CHANGED
data/lib/danarchy_sys/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: danarchy_sys
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.14
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Dan James
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-07-
|
11
|
+
date: 2017-07-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: fog-openstack
|
@@ -100,6 +100,7 @@ files:
|
|
100
100
|
- lib/danarchy_sys/cli/instance_manager.rb
|
101
101
|
- lib/danarchy_sys/cli/instance_manager/instance_status.rb
|
102
102
|
- lib/danarchy_sys/cli/instance_manager/prompts_create_instance.rb
|
103
|
+
- lib/danarchy_sys/cli/keypair_manager.rb
|
103
104
|
- lib/danarchy_sys/cli/menus.rb
|
104
105
|
- lib/danarchy_sys/cli/providers.rb
|
105
106
|
- lib/danarchy_sys/config_manager.rb
|