cloudstack-cli 0.3.10 → 0.3.11
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile.lock +1 -1
- data/lib/cloudstack-cli/cli.rb +35 -29
- data/lib/cloudstack-cli/commands/account.rb +1 -1
- data/lib/cloudstack-cli/commands/capacity.rb +1 -1
- data/lib/cloudstack-cli/commands/cluster.rb +1 -1
- data/lib/cloudstack-cli/commands/disk_offering.rb +1 -1
- data/lib/cloudstack-cli/commands/domain.rb +1 -1
- data/lib/cloudstack-cli/commands/host.rb +1 -1
- data/lib/cloudstack-cli/commands/ip_address.rb +3 -3
- data/lib/cloudstack-cli/commands/iso.rb +1 -1
- data/lib/cloudstack-cli/commands/job.rb +2 -2
- data/lib/cloudstack-cli/commands/load_balancer.rb +3 -3
- data/lib/cloudstack-cli/commands/network.rb +42 -42
- data/lib/cloudstack-cli/commands/offering.rb +3 -3
- data/lib/cloudstack-cli/commands/physical_network.rb +1 -1
- data/lib/cloudstack-cli/commands/pod.rb +1 -1
- data/lib/cloudstack-cli/commands/port_rule.rb +2 -2
- data/lib/cloudstack-cli/commands/project.rb +2 -2
- data/lib/cloudstack-cli/commands/router.rb +5 -5
- data/lib/cloudstack-cli/commands/server.rb +9 -8
- data/lib/cloudstack-cli/commands/snapshot.rb +1 -1
- data/lib/cloudstack-cli/commands/ssh_key_pairs.rb +4 -3
- data/lib/cloudstack-cli/commands/stack.rb +1 -1
- data/lib/cloudstack-cli/commands/template.rb +1 -1
- data/lib/cloudstack-cli/commands/user.rb +1 -1
- data/lib/cloudstack-cli/commands/volume.rb +1 -1
- data/lib/cloudstack-cli/commands/zone.rb +1 -1
- data/lib/cloudstack-cli/version.rb +1 -1
- data/lib/cloudstack-client/commands/server.rb +10 -0
- data/lib/cloudstack-client/version.rb +1 -1
- metadata +1 -1
data/Gemfile.lock
CHANGED
data/lib/cloudstack-cli/cli.rb
CHANGED
@@ -3,7 +3,7 @@ module CloudstackCli
|
|
3
3
|
include Thor::Actions
|
4
4
|
|
5
5
|
package_name "cloudstack-cli"
|
6
|
-
map %w(-v --version) => :version
|
6
|
+
map %w(-v --version) => :version
|
7
7
|
|
8
8
|
class_option :config,
|
9
9
|
default: File.join(Dir.home, '.cloudstack-cli.yml'),
|
@@ -68,10 +68,15 @@ module CloudstackCli
|
|
68
68
|
error "Can't load configuration from file #{config_file}."
|
69
69
|
exit 1
|
70
70
|
end
|
71
|
-
|
72
|
-
|
71
|
+
table = [%w(Name URL)]
|
72
|
+
table << ["default", config[:url]]
|
73
|
+
config.each_key do |key|
|
74
|
+
table << [key, config[key][:url]] unless key.class == Symbol
|
75
|
+
end
|
76
|
+
print_table table
|
73
77
|
end
|
74
|
-
end
|
78
|
+
end
|
79
|
+
map :envs => :environments
|
75
80
|
|
76
81
|
desc "command COMMAND [arg1=val1 arg2=val2...]", "run a custom api command"
|
77
82
|
def command(command, *args)
|
@@ -89,78 +94,79 @@ module CloudstackCli
|
|
89
94
|
end
|
90
95
|
|
91
96
|
desc "zone SUBCOMMAND ...ARGS", "Manage zones"
|
92
|
-
subcommand
|
97
|
+
subcommand :zone, Zone
|
93
98
|
|
94
99
|
desc "pod SUBCOMMAND ...ARGS", "List pods"
|
95
|
-
subcommand
|
100
|
+
subcommand :pod, Pod
|
96
101
|
|
97
102
|
desc "cluster SUBCOMMAND ...ARGS", "List clusters"
|
98
|
-
subcommand
|
103
|
+
subcommand :cluster, Cluster
|
99
104
|
|
100
105
|
desc "host SUBCOMMAND ...ARGS", "List hosts"
|
101
|
-
subcommand
|
106
|
+
subcommand :host, Host
|
102
107
|
|
103
108
|
desc "project SUBCOMMAND ...ARGS", "Manage servers"
|
104
|
-
subcommand
|
109
|
+
subcommand :project, Project
|
105
110
|
|
106
111
|
desc "server SUBCOMMAND ...ARGS", "Manage servers"
|
107
|
-
subcommand
|
112
|
+
subcommand :server, Server
|
108
113
|
|
109
114
|
desc "offering SUBCOMMAND ...ARGS", "Manage offerings"
|
110
|
-
subcommand
|
115
|
+
subcommand :offering, Offering
|
111
116
|
|
112
117
|
desc "disk_offering SUBCOMMAND ...ARGS", "Manage disk offerings"
|
113
|
-
subcommand
|
118
|
+
subcommand :disk_offering, DiskOffering
|
114
119
|
|
115
120
|
desc "network SUBCOMMAND ...ARGS", "Manage networks"
|
116
|
-
subcommand
|
121
|
+
subcommand :network, Network
|
122
|
+
map 'networks' => 'network'
|
117
123
|
|
118
124
|
desc "physical_network SUBCOMMAND ...ARGS", "Manage physical networks"
|
119
|
-
subcommand
|
125
|
+
subcommand :physical_network, PhysicalNetwork
|
120
126
|
|
121
127
|
desc "load_balancer SUBCOMMAND ...ARGS", "Manage load balancing rules"
|
122
|
-
subcommand
|
128
|
+
subcommand :load_balancer, LoadBalancer
|
123
129
|
|
124
130
|
desc "template SUBCOMMAND ...ARGS", "Manage templates"
|
125
|
-
subcommand
|
131
|
+
subcommand :template, Template
|
126
132
|
|
127
133
|
desc "iso SUBCOMMAND ...ARGS", "Manage iso's"
|
128
|
-
subcommand
|
134
|
+
subcommand :iso, Iso
|
129
135
|
|
130
136
|
desc "router SUBCOMMAND ...ARGS", "Manage virtual routers"
|
131
|
-
subcommand
|
137
|
+
subcommand :router, Router
|
132
138
|
|
133
139
|
desc "volume SUBCOMMAND ...ARGS", "Manage volumes"
|
134
|
-
subcommand
|
140
|
+
subcommand :volume, Volume
|
135
141
|
|
136
142
|
desc "snapshot SUBCOMMAND ...ARGS", "Manage snapshots"
|
137
|
-
subcommand
|
143
|
+
subcommand :snapshot, Snapshot
|
138
144
|
|
139
145
|
desc "stack SUBCOMMAND ...ARGS", "Manage stacks"
|
140
|
-
subcommand
|
146
|
+
subcommand :stack, Stack
|
141
147
|
|
142
148
|
desc "account SUBCOMMAND ...ARGS", "Manage accounts"
|
143
|
-
subcommand
|
149
|
+
subcommand :account, Account
|
144
150
|
|
145
151
|
desc "user SUBCOMMAND ...ARGS", "Manage users"
|
146
|
-
subcommand
|
152
|
+
subcommand :user, User
|
147
153
|
|
148
154
|
desc "domain SUBCOMMAND ...ARGS", "Manage domains"
|
149
|
-
subcommand
|
155
|
+
subcommand :domain, Domain
|
150
156
|
|
151
157
|
desc "ip_address SUBCOMMAND ...ARGS", "Manage ip addresses"
|
152
|
-
subcommand
|
158
|
+
subcommand :ip_address, IpAddress
|
153
159
|
|
154
160
|
desc "capacity SUBCOMMAND ...ARGS", "Lists all the system wide capacities"
|
155
|
-
subcommand
|
161
|
+
subcommand :capacity, Capacity
|
156
162
|
|
157
163
|
desc "port_rule SUBCOMMAND ...ARGS", "Manage portforwarding rules"
|
158
|
-
subcommand
|
164
|
+
subcommand :port_rule, PortRule
|
159
165
|
|
160
166
|
desc "job SUBCOMMAND ...ARGS", "Display async jobs"
|
161
|
-
subcommand
|
167
|
+
subcommand :job, Job
|
162
168
|
|
163
169
|
desc "ssh_key_pair SUBCOMMAND ...ARGS", "Manage ssh key pairs"
|
164
|
-
subcommand
|
170
|
+
subcommand :ssh_key_pair, SshKeyPair
|
165
171
|
end
|
166
172
|
end
|
@@ -12,7 +12,7 @@ class Capacity < CloudstackCli::Base
|
|
12
12
|
9 => {name: "Local Storage", unit: "TB", divider: 1024.0**4}
|
13
13
|
}
|
14
14
|
|
15
|
-
desc "list", "list system capacity"
|
15
|
+
desc "capacity list", "list system capacity"
|
16
16
|
option :zone
|
17
17
|
def list
|
18
18
|
capacities = client.list_capacity
|
@@ -1,11 +1,11 @@
|
|
1
1
|
class IpAddress < CloudstackCli::Base
|
2
2
|
|
3
|
-
desc "release ID", "release public IP address"
|
3
|
+
desc "ip_address release ID", "release public IP address"
|
4
4
|
def release(id)
|
5
5
|
say("OK", :green) if client.disassociate_ip_address(id)
|
6
6
|
end
|
7
7
|
|
8
|
-
desc "assign NETWORK", "assign a public IP address"
|
8
|
+
desc "ip_address assign NETWORK", "assign a public IP address"
|
9
9
|
option :project
|
10
10
|
def assign(network)
|
11
11
|
project = find_project if options[:project]
|
@@ -18,7 +18,7 @@ class IpAddress < CloudstackCli::Base
|
|
18
18
|
say ip['ipaddress']
|
19
19
|
end
|
20
20
|
|
21
|
-
desc "list", "list public IP address"
|
21
|
+
desc "ip_address list", "list public IP address"
|
22
22
|
option :project
|
23
23
|
option :account
|
24
24
|
option :listall
|
@@ -1,6 +1,6 @@
|
|
1
1
|
class Iso < CloudstackCli::Base
|
2
2
|
|
3
|
-
desc 'list [TYPE]', "list iso's by type [featured|self|self-executable|executable|community], default is featured"
|
3
|
+
desc 'iso list [TYPE]', "list iso's by type [featured|self|self-executable|executable|community], default is featured"
|
4
4
|
option :project
|
5
5
|
option :zone
|
6
6
|
option :account
|
@@ -1,6 +1,6 @@
|
|
1
1
|
class Job < CloudstackCli::Base
|
2
2
|
|
3
|
-
desc 'list', 'list async jobs'
|
3
|
+
desc 'job list', 'list async jobs'
|
4
4
|
def list
|
5
5
|
jobs = client.list_jobs()
|
6
6
|
if jobs.size < 1
|
@@ -14,7 +14,7 @@ class Job < CloudstackCli::Base
|
|
14
14
|
end
|
15
15
|
end
|
16
16
|
|
17
|
-
desc 'query ID', 'query async job'
|
17
|
+
desc 'job query ID', 'query async job'
|
18
18
|
def query(id)
|
19
19
|
job = client.query_job(id)
|
20
20
|
job.each do |key, value|
|
@@ -1,6 +1,6 @@
|
|
1
1
|
class LoadBalancer < CloudstackCli::Base
|
2
2
|
|
3
|
-
desc "list", "list load balancer rules"
|
3
|
+
desc "load_balancer list", "list load balancer rules"
|
4
4
|
option :project
|
5
5
|
def list
|
6
6
|
project = find_project if options[:project]
|
@@ -18,7 +18,7 @@ class LoadBalancer < CloudstackCli::Base
|
|
18
18
|
end
|
19
19
|
end
|
20
20
|
|
21
|
-
desc "create NAME", "create load balancer rule"
|
21
|
+
desc "load_balancer create NAME", "create load balancer rule"
|
22
22
|
option :project
|
23
23
|
option :ip, required: true
|
24
24
|
option :public_port, required: true
|
@@ -36,7 +36,7 @@ class LoadBalancer < CloudstackCli::Base
|
|
36
36
|
say "OK!", :green
|
37
37
|
end
|
38
38
|
|
39
|
-
desc "add NAME", "assign servers to balancer rule"
|
39
|
+
desc "load_balancer add NAME", "assign servers to balancer rule"
|
40
40
|
option :servers, required: true, type: :array, description: 'server names'
|
41
41
|
def add(name)
|
42
42
|
say "Add #{names.join(', ')} to rule #{id}...", :yellow
|
@@ -1,6 +1,44 @@
|
|
1
1
|
class Network < CloudstackCli::Base
|
2
2
|
|
3
|
-
desc "
|
3
|
+
desc "network list", "list networks"
|
4
|
+
option :project
|
5
|
+
option :account
|
6
|
+
option :showid, type: :boolean
|
7
|
+
option :isdefault, type: :boolean
|
8
|
+
def list
|
9
|
+
project = find_project if options[:project]
|
10
|
+
networks = []
|
11
|
+
if project
|
12
|
+
networks = client.list_networks(project_id: project['id'])
|
13
|
+
elsif options[:account]
|
14
|
+
networks = client.list_networks(account: options[:account])
|
15
|
+
else
|
16
|
+
networks = client.list_networks(isdefault: options[:isdefault])
|
17
|
+
networks += client.list_networks(project_id: -1, isdefault: options[:isdefault])
|
18
|
+
end
|
19
|
+
|
20
|
+
if networks.size < 1
|
21
|
+
puts "No networks found."
|
22
|
+
else
|
23
|
+
table = [["Name", "Displaytext", "Account", "Project", "Domain", "State", "Type"]]
|
24
|
+
table[0] << "ID" if options[:showid]
|
25
|
+
networks.each do |network|
|
26
|
+
table << [
|
27
|
+
network["name"],
|
28
|
+
network["displaytext"],
|
29
|
+
network["account"],
|
30
|
+
network["project"],
|
31
|
+
network["domain"],
|
32
|
+
network["state"],
|
33
|
+
network["type"]
|
34
|
+
]
|
35
|
+
table[-1] << network["id"] if options[:showid]
|
36
|
+
end
|
37
|
+
print_table table
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
desc "network default", "get the default network"
|
4
42
|
option :zone
|
5
43
|
def default
|
6
44
|
network = client.get_default_network(options[:zone])
|
@@ -20,7 +58,7 @@ class Network < CloudstackCli::Base
|
|
20
58
|
end
|
21
59
|
end
|
22
60
|
|
23
|
-
desc "show NAME", "show detailed infos about a network"
|
61
|
+
desc "network show NAME", "show detailed infos about a network"
|
24
62
|
option :project
|
25
63
|
def show(name)
|
26
64
|
if options[:project]
|
@@ -41,45 +79,7 @@ class Network < CloudstackCli::Base
|
|
41
79
|
end
|
42
80
|
end
|
43
81
|
|
44
|
-
desc "
|
45
|
-
option :project
|
46
|
-
option :account
|
47
|
-
option :showid, type: :boolean
|
48
|
-
option :isdefault, type: :boolean
|
49
|
-
def list
|
50
|
-
project = find_project if options[:project]
|
51
|
-
networks = []
|
52
|
-
if project
|
53
|
-
networks = client.list_networks(project_id: project['id'])
|
54
|
-
elsif options[:account]
|
55
|
-
networks = client.list_networks(account: options[:account])
|
56
|
-
else
|
57
|
-
networks = client.list_networks(isdefault: options[:isdefault])
|
58
|
-
networks += client.list_networks(project_id: -1, isdefault: options[:isdefault])
|
59
|
-
end
|
60
|
-
|
61
|
-
if networks.size < 1
|
62
|
-
puts "No networks found."
|
63
|
-
else
|
64
|
-
table = [["Name", "Displaytext", "Account", "Project", "Domain", "State", "Type"]]
|
65
|
-
table[0] << "ID" if options[:showid]
|
66
|
-
networks.each do |network|
|
67
|
-
table << [
|
68
|
-
network["name"],
|
69
|
-
network["displaytext"],
|
70
|
-
network["account"],
|
71
|
-
network["project"],
|
72
|
-
network["domain"],
|
73
|
-
network["state"],
|
74
|
-
network["type"]
|
75
|
-
]
|
76
|
-
table[-1] << network["id"] if options[:showid]
|
77
|
-
end
|
78
|
-
print_table table
|
79
|
-
end
|
80
|
-
end
|
81
|
-
|
82
|
-
desc "restart NAME", "restart network"
|
82
|
+
desc "network restart NAME", "restart network"
|
83
83
|
option :cleanup, type: :boolean, default: true
|
84
84
|
def restart(name)
|
85
85
|
network = client.get_network(name)
|
@@ -93,7 +93,7 @@ class Network < CloudstackCli::Base
|
|
93
93
|
end
|
94
94
|
end
|
95
95
|
|
96
|
-
desc "delete NAME", "delete network"
|
96
|
+
desc "network delete NAME", "delete network"
|
97
97
|
def delete(name)
|
98
98
|
network = client.get_network(name)
|
99
99
|
network = client.get_network(name, -1) unless network
|
@@ -1,6 +1,6 @@
|
|
1
1
|
class Offering < CloudstackCli::Base
|
2
2
|
|
3
|
-
desc 'list', 'list compute offerings'
|
3
|
+
desc 'offering list', 'list compute offerings'
|
4
4
|
option :domain
|
5
5
|
def list
|
6
6
|
offerings = client.list_service_offerings(options[:domain])
|
@@ -20,7 +20,7 @@ class Offering < CloudstackCli::Base
|
|
20
20
|
end
|
21
21
|
end
|
22
22
|
|
23
|
-
desc 'create NAME', 'create offering'
|
23
|
+
desc 'offering create NAME', 'create offering'
|
24
24
|
option :cpunumber, required: true
|
25
25
|
option :cpuspeed, required: true
|
26
26
|
option :displaytext, required: true
|
@@ -39,7 +39,7 @@ class Offering < CloudstackCli::Base
|
|
39
39
|
end
|
40
40
|
|
41
41
|
|
42
|
-
desc 'sort', 'sort by cpu and memory grouped by domain'
|
42
|
+
desc 'offering sort', 'sort by cpu and memory grouped by domain'
|
43
43
|
def sort
|
44
44
|
offerings = client.list_service_offerings(options[:domain])
|
45
45
|
sortkey = -1
|
@@ -1,6 +1,6 @@
|
|
1
1
|
class PortRule < CloudstackCli::Base
|
2
2
|
|
3
|
-
desc "create SERVER", "create portforwarding rules"
|
3
|
+
desc "port_rule create SERVER", "create portforwarding rules"
|
4
4
|
option :rules, type: :array,
|
5
5
|
required: true,
|
6
6
|
desc: "Port Forwarding Rules [public_ip]:port ...",
|
@@ -35,7 +35,7 @@ class PortRule < CloudstackCli::Base
|
|
35
35
|
end
|
36
36
|
end
|
37
37
|
|
38
|
-
desc "list", "list portforwarding rules"
|
38
|
+
desc "port_rule list", "list portforwarding rules"
|
39
39
|
option :project
|
40
40
|
def list
|
41
41
|
project_id = find_project['id'] if options[:project]
|
@@ -1,6 +1,6 @@
|
|
1
1
|
class Project < CloudstackCli::Base
|
2
2
|
|
3
|
-
desc "show NAME", "show detailed infos about a project"
|
3
|
+
desc "project show NAME", "show detailed infos about a project"
|
4
4
|
option :project
|
5
5
|
def show(name)
|
6
6
|
unless project = client.get_project(name)
|
@@ -13,7 +13,7 @@ class Project < CloudstackCli::Base
|
|
13
13
|
end
|
14
14
|
end
|
15
15
|
|
16
|
-
desc "list", "list projects"
|
16
|
+
desc "project list", "list projects"
|
17
17
|
def list
|
18
18
|
projects = client.list_projects
|
19
19
|
if projects.size < 1
|
@@ -1,6 +1,6 @@
|
|
1
1
|
class Router < CloudstackCli::Base
|
2
2
|
|
3
|
-
desc "list", "list virtual routers"
|
3
|
+
desc "router list", "list virtual routers"
|
4
4
|
option :project
|
5
5
|
option :account
|
6
6
|
option :zone
|
@@ -64,7 +64,7 @@ class Router < CloudstackCli::Base
|
|
64
64
|
end
|
65
65
|
end
|
66
66
|
|
67
|
-
desc "stop NAME [NAME2 ..]", "stop virtual router(s)"
|
67
|
+
desc "router stop NAME [NAME2 ..]", "stop virtual router(s)"
|
68
68
|
option :force, description: "stop without asking", type: :boolean, aliases: '-f'
|
69
69
|
def stop(*names)
|
70
70
|
routers = names.map {|name| get_router(name)}
|
@@ -77,7 +77,7 @@ class Router < CloudstackCli::Base
|
|
77
77
|
watch_jobs(jobs)
|
78
78
|
end
|
79
79
|
|
80
|
-
desc "start NAME [NAME2 ..]", "start virtual router(s)"
|
80
|
+
desc "router start NAME [NAME2 ..]", "start virtual router(s)"
|
81
81
|
option :force, description: "start without asking", type: :boolean, aliases: '-f'
|
82
82
|
def start(*names)
|
83
83
|
routers = names.map {|name| get_router(name)}
|
@@ -90,7 +90,7 @@ class Router < CloudstackCli::Base
|
|
90
90
|
watch_jobs(jobs)
|
91
91
|
end
|
92
92
|
|
93
|
-
desc "start NAME [NAME2 ..]", "restart virtual router(s) (stop and start)"
|
93
|
+
desc "router start NAME [NAME2 ..]", "restart virtual router(s) (stop and start)"
|
94
94
|
option :force, description: "restart without asking", type: :boolean, aliases: '-f'
|
95
95
|
def restart(*names)
|
96
96
|
routers = names.map {|name| get_router(name)}
|
@@ -111,7 +111,7 @@ class Router < CloudstackCli::Base
|
|
111
111
|
say "Finished.", :green
|
112
112
|
end
|
113
113
|
|
114
|
-
desc "destroy NAME [NAME2 ..]", "destroy virtual router(s)"
|
114
|
+
desc "router destroy NAME [NAME2 ..]", "destroy virtual router(s)"
|
115
115
|
option :force, description: "destroy without asking", type: :boolean, aliases: '-f'
|
116
116
|
def destroy(*names)
|
117
117
|
routers = names.map {|name| get_router(name)}
|
@@ -1,8 +1,9 @@
|
|
1
1
|
class Server < CloudstackCli::Base
|
2
2
|
|
3
|
-
desc "list", "list servers"
|
3
|
+
desc "server list", "list servers"
|
4
4
|
option :project
|
5
5
|
option :account
|
6
|
+
option :zone
|
6
7
|
def list
|
7
8
|
if options[:project]
|
8
9
|
if options[:project].downcase == "all"
|
@@ -31,7 +32,7 @@ class Server < CloudstackCli::Base
|
|
31
32
|
end
|
32
33
|
end
|
33
34
|
|
34
|
-
desc "show NAME", "show detailed infos about a server"
|
35
|
+
desc "server show NAME", "show detailed infos about a server"
|
35
36
|
option :project
|
36
37
|
def show(name)
|
37
38
|
if options[:project]
|
@@ -52,7 +53,7 @@ class Server < CloudstackCli::Base
|
|
52
53
|
end
|
53
54
|
end
|
54
55
|
|
55
|
-
desc "create NAME [NAME2 ...]", "create server(s)"
|
56
|
+
desc "server create NAME [NAME2 ...]", "create server(s)"
|
56
57
|
option :template, aliases: '-t', desc: "name of the template"
|
57
58
|
option :iso, desc: "name of the iso", desc: "name of the iso template"
|
58
59
|
option :offering, aliases: '-o', required: true, desc: "computing offering name"
|
@@ -106,7 +107,7 @@ class Server < CloudstackCli::Base
|
|
106
107
|
say "Finished.", :green
|
107
108
|
end
|
108
109
|
|
109
|
-
desc "destroy NAME [NAME2 ..]", "destroy server(s)"
|
110
|
+
desc "server destroy NAME [NAME2 ..]", "destroy server(s)"
|
110
111
|
option :project
|
111
112
|
option :force, description: "destroy without asking", type: :boolean, aliases: '-f'
|
112
113
|
def destroy(*names)
|
@@ -126,24 +127,24 @@ class Server < CloudstackCli::Base
|
|
126
127
|
end
|
127
128
|
end
|
128
129
|
|
129
|
-
desc "bootstrap", "interactive creation of a server with network access"
|
130
|
+
desc "server bootstrap", "interactive creation of a server with network access"
|
130
131
|
def bootstrap
|
131
132
|
bootstrap_server_interactive
|
132
133
|
end
|
133
134
|
|
134
|
-
desc "stop NAME", "stop a server"
|
135
|
+
desc "server stop NAME", "stop a server"
|
135
136
|
def stop(name)
|
136
137
|
client.stop_server(name)
|
137
138
|
puts
|
138
139
|
end
|
139
140
|
|
140
|
-
desc "start NAME", "start a server"
|
141
|
+
desc "server start NAME", "start a server"
|
141
142
|
def start(name)
|
142
143
|
client.start_server(name)
|
143
144
|
puts
|
144
145
|
end
|
145
146
|
|
146
|
-
desc "reboot NAME", "reboot a server"
|
147
|
+
desc "server reboot NAME", "reboot a server"
|
147
148
|
def restart(name)
|
148
149
|
client.reboot_server(name)
|
149
150
|
puts
|
@@ -1,10 +1,11 @@
|
|
1
1
|
class SshKeyPair < CloudstackCli::Base
|
2
2
|
|
3
|
-
desc
|
3
|
+
desc "ssh_key_pair list", 'list ssh key pairs'
|
4
4
|
option :listall
|
5
5
|
option :account
|
6
6
|
option :project
|
7
7
|
def list
|
8
|
+
puts self.methods
|
8
9
|
pairs = client.list_ssh_key_pairs(options)
|
9
10
|
if pairs.size < 1
|
10
11
|
say "No ssh key pairs found."
|
@@ -17,7 +18,7 @@ class SshKeyPair < CloudstackCli::Base
|
|
17
18
|
end
|
18
19
|
end
|
19
20
|
|
20
|
-
desc 'create NAME', 'create ssh key pair'
|
21
|
+
desc 'ssh_key_pair create NAME', 'create ssh key pair'
|
21
22
|
option :account
|
22
23
|
option :project
|
23
24
|
option :public_key
|
@@ -29,7 +30,7 @@ class SshKeyPair < CloudstackCli::Base
|
|
29
30
|
say pair['privatekey']
|
30
31
|
end
|
31
32
|
|
32
|
-
desc 'delete NAME', 'delete ssh key pair'
|
33
|
+
desc 'ssh_key_pair delete NAME', 'delete ssh key pair'
|
33
34
|
option :account
|
34
35
|
option :project
|
35
36
|
option :force, aliases: '-f', desc: "delete without asking"
|
@@ -1,6 +1,6 @@
|
|
1
1
|
class Template < CloudstackCli::Base
|
2
2
|
|
3
|
-
desc 'list [TYPE]', 'list templates by type [featured|self|self-executable|executable|community], default is featured'
|
3
|
+
desc 'template list [TYPE]', 'list templates by type [featured|self|self-executable|executable|community], default is featured'
|
4
4
|
option :project
|
5
5
|
option :zone
|
6
6
|
def list(type='featured')
|
@@ -93,6 +93,16 @@ module CloudstackClient
|
|
93
93
|
'listAll' => true
|
94
94
|
}
|
95
95
|
params['projectid'] = options[:project_id] if options[:project_id]
|
96
|
+
|
97
|
+
if options[:zone]
|
98
|
+
zone = get_zone(options[:zone])
|
99
|
+
unless zone
|
100
|
+
puts "Error: Zone #{options[:zone]} not found"
|
101
|
+
exit 1
|
102
|
+
end
|
103
|
+
params['zoneid'] = zone['id']
|
104
|
+
end
|
105
|
+
|
96
106
|
if options[:account]
|
97
107
|
if account = list_accounts({name: options[:account]}).first
|
98
108
|
params['domainid'] = account["domainid"]
|