danarchy_sys 0.2.12 → 0.2.14
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.
- 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
|