cloudstack-cli 0.3.10 → 0.3.11
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/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"]
|