rightscale-cli 0.4.0 → 0.4.1
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/README.md +1 -1
- data/lib/rightscale_cli/client.rb +24 -4
- data/lib/rightscale_cli/deployments.rb +21 -15
- data/lib/rightscale_cli/multi_cloud_images.rb +7 -2
- data/lib/rightscale_cli/rightscale_cli.rb +43 -6
- data/lib/rightscale_cli/server_arrays.rb +19 -13
- data/lib/rightscale_cli/servers.rb +20 -15
- data/lib/rightscale_cli/tags.rb +60 -0
- data/lib/rightscale_cli/version.rb +1 -1
- metadata +22 -21
- data/lib/rightscale_cli/base.rb +0 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8d2ce2baf29c81d2b85a867713659c964d26f890
|
4
|
+
data.tar.gz: 35ae05487225b689a25e6c8b709e487ce02504b7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7ee7e7330c4a4b1aa5be4cf4a11d56156398462b8e14cdfdb0eb7e0bc4935d451a27c73d89a342efbf3c7824bc80a7aeaa5272b7cae602f3b8371fe1baf6c39e
|
7
|
+
data.tar.gz: d706e6fc89434481e328bbcd6cfec740abc74b001e16c415871d2997fe59bb2ad96f075fb2d8134d2bdeb4ec9e906f3368e8d43582f0ed8c8329c41612818365
|
data/README.md
CHANGED
@@ -25,7 +25,7 @@ As a result, to avoid overwriting the `/usr/bin/rs` binary, use a different loca
|
|
25
25
|
## Configuration
|
26
26
|
|
27
27
|
Setup `~/.rightscale/right_api_client.yml` with your RightScale credentials.
|
28
|
-
Ensure the correct shard
|
28
|
+
Ensure the correct shard for your account is set with `:api_url`.
|
29
29
|
|
30
30
|
An example file is available, https://github.com/rightscale/right_api_client/blob/master/config/login.yml.example.
|
31
31
|
|
@@ -20,10 +20,16 @@ require 'rightscale_cli/logger'
|
|
20
20
|
|
21
21
|
class RightScaleCLI
|
22
22
|
class Client
|
23
|
+
attr_accessor :client
|
23
24
|
attr_accessor :render
|
24
25
|
|
25
|
-
def initialize(
|
26
|
-
|
26
|
+
def initialize(options)
|
27
|
+
config = RightScaleCLI::Config::API
|
28
|
+
config[:account_id] = options['account'] if options[:account]
|
29
|
+
config[:api_version] = options['api'] if options[:api]
|
30
|
+
|
31
|
+
@options = options
|
32
|
+
@client = RightApi::Client.new(config)
|
27
33
|
@logger = RightScaleCLI::Logger.new()
|
28
34
|
end
|
29
35
|
|
@@ -35,6 +41,20 @@ class RightScaleCLI
|
|
35
41
|
return result
|
36
42
|
end
|
37
43
|
|
44
|
+
def show(resource, resource_id, *args)
|
45
|
+
if args.count > 0
|
46
|
+
result = []
|
47
|
+
records = @client.send(resource).index({ :id => resource_id }).show.send(args[0]).index
|
48
|
+
records.each { |record|
|
49
|
+
result.push(record.raw)
|
50
|
+
}
|
51
|
+
@logger.info("Resource count: #{result.count}.")
|
52
|
+
else
|
53
|
+
result = @client.send(resource).index({ :id => resource_id }).show.raw
|
54
|
+
end
|
55
|
+
return result
|
56
|
+
end
|
57
|
+
|
38
58
|
def create(resource, params)
|
39
59
|
resource = @client.send("#{resource}s").create(resource => params)
|
40
60
|
@logger.info("Created #{resource.href}.")
|
@@ -46,8 +66,8 @@ class RightScaleCLI
|
|
46
66
|
@logger.info("Deleted #{resource.href}.")
|
47
67
|
end
|
48
68
|
|
49
|
-
def render(data, root_element
|
50
|
-
RightScaleCLI::Output.render(data, root_element, options)
|
69
|
+
def render(data, root_element)
|
70
|
+
RightScaleCLI::Output.render(data, root_element, @options)
|
51
71
|
end
|
52
72
|
end
|
53
73
|
end
|
@@ -21,29 +21,35 @@ require 'right_api_client'
|
|
21
21
|
class RightScaleCLI
|
22
22
|
class Deployments < Thor
|
23
23
|
namespace :deployments
|
24
|
-
|
24
|
+
|
25
|
+
def initialize(*args)
|
26
|
+
super
|
27
|
+
@client = RightScaleCLI::Client.new(options)
|
28
|
+
@logger = RightScaleCLI::Logger.new()
|
29
|
+
end
|
30
|
+
|
31
|
+
# include render options
|
32
|
+
eval(IO.read("#{File.dirname(File.expand_path(__FILE__))}/render_options.rb"), binding)
|
33
|
+
|
25
34
|
desc "list", "Lists all deployments."
|
26
35
|
def list()
|
27
|
-
deployments
|
28
|
-
RightApi::Client.new(RightScaleCLI::Config::API).deployments.index.each { |deployment|
|
29
|
-
deployments.push(deployment.raw)
|
30
|
-
}
|
31
|
-
puts deployments.to_yaml
|
36
|
+
@client.render(@client.get('deployments'), 'deployments')
|
32
37
|
end
|
33
38
|
|
34
39
|
desc "create", "Creates a deployment."
|
35
|
-
def create(name)
|
36
|
-
|
37
|
-
|
40
|
+
def create(name, description)
|
41
|
+
@client.create('deployment', { :name => name, :description => description })
|
38
42
|
end
|
39
43
|
|
40
44
|
desc "destroy", "Deletes a deployment."
|
41
|
-
def destroy(
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
45
|
+
def destroy(deployment_id)
|
46
|
+
@client.destroy('deployment', deployment_id)
|
47
|
+
end
|
48
|
+
|
49
|
+
desc "servers", "Lists servers in a deployment."
|
50
|
+
def servers(deployment)
|
51
|
+
@logger.info("Retrieving all servers in deployment, #{deployment}...")
|
52
|
+
@client.render(@client.show('deployments', deployment, 'servers'), 'servers')
|
47
53
|
end
|
48
54
|
|
49
55
|
def self.banner(task, namespace = true, subcommand = false)
|
@@ -26,7 +26,7 @@ class RightScaleCLI
|
|
26
26
|
|
27
27
|
def initialize(*args)
|
28
28
|
super
|
29
|
-
@client = RightScaleCLI::Client.new()
|
29
|
+
@client = RightScaleCLI::Client.new(options)
|
30
30
|
@logger = RightScaleCLI::Logger.new()
|
31
31
|
end
|
32
32
|
|
@@ -36,9 +36,14 @@ class RightScaleCLI
|
|
36
36
|
desc "list", "Lists all MultiCloud Images."
|
37
37
|
def list()
|
38
38
|
@logger.info('Retrieving all MultiCloud Images...')
|
39
|
-
@client.render(@client.get('multi_cloud_images'), 'multi_cloud_images'
|
39
|
+
@client.render(@client.get('multi_cloud_images'), 'multi_cloud_images')
|
40
40
|
end
|
41
41
|
|
42
|
+
desc "show", "Shows a particular MultiCloud Image."
|
43
|
+
def show(multi_cloud_image_id)
|
44
|
+
@client.render(@client.show('multi_cloud_images', multi_cloud_image_id), 'multi_cloud_image')
|
45
|
+
end
|
46
|
+
|
42
47
|
desc "create", "Creates a MultiCloud Image."
|
43
48
|
def create(name, description)
|
44
49
|
@client.create('multi_cloud_image', { :name => name, :description => description })
|
@@ -26,18 +26,54 @@ require 'rightscale_cli/repositories'
|
|
26
26
|
require 'rightscale_cli/servers'
|
27
27
|
require 'rightscale_cli/server_arrays'
|
28
28
|
require 'rightscale_cli/server_templates'
|
29
|
+
require 'rightscale_cli/tags'
|
29
30
|
require 'rightscale_cli/volumes'
|
30
31
|
|
31
32
|
# http://stackoverflow.com/questions/5663519/namespacing-thor-commands-in-a-standalone-ruby-executable
|
32
33
|
|
33
34
|
class RightScaleCLI
|
34
35
|
class Base < Thor
|
35
|
-
class_option :
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
36
|
+
class_option :account,
|
37
|
+
:type => :string,
|
38
|
+
:aliases => '-a',
|
39
|
+
:required => false,
|
40
|
+
:desc => 'The RightScale account ID.'
|
41
|
+
|
42
|
+
class_option :api,
|
43
|
+
:type => :string,
|
44
|
+
:aliases => '-A',
|
45
|
+
:required => false,
|
46
|
+
:desc => 'The RightScale API version.'
|
47
|
+
|
48
|
+
class_option :debug,
|
49
|
+
:type => :boolean,
|
50
|
+
:default => false,
|
51
|
+
:aliases => '-D',
|
52
|
+
:desc => 'Debug mode.'
|
53
|
+
|
54
|
+
class_option :verbose,
|
55
|
+
:type => :boolean,
|
56
|
+
:default => false,
|
57
|
+
:aliases => '-V',
|
58
|
+
:desc => 'Verbose output.'
|
59
|
+
|
60
|
+
class_option :silent,
|
61
|
+
:type => :boolean,
|
62
|
+
:default => false,
|
63
|
+
:aliases => '-S',
|
64
|
+
:desc => 'Silent mode, do not print any log.'
|
65
|
+
|
66
|
+
class_option :non_interactive,
|
67
|
+
:type => :boolean,
|
68
|
+
:default => false,
|
69
|
+
:aliases => '-N',
|
70
|
+
:desc => 'Non-interactive mode.'
|
71
|
+
|
72
|
+
class_option :dry,
|
73
|
+
:type => :boolean,
|
74
|
+
:default => false,
|
75
|
+
:desc => 'Dry-run only.'
|
76
|
+
|
41
77
|
register(Clouds, 'clouds', 'clouds <command>', 'Query clouds.')
|
42
78
|
register(Dashboard, 'dashboard', 'dashboard <command>', 'RightScale Dashboard (HTTP hax).')
|
43
79
|
register(ServerArrays, 'arrays', 'arrays <command>', 'Manage server arrays.')
|
@@ -47,6 +83,7 @@ class RightScaleCLI
|
|
47
83
|
register(Repositories, 'repositories', 'repositories <command>', 'Manage (Chef) Repositories.')
|
48
84
|
register(Servers, 'servers', 'servers <command>', 'Manage servers.')
|
49
85
|
register(ServerTemplates, 'server_templates', 'server-templates <command>', 'Manage ServerTemplates.')
|
86
|
+
register(Tags, 'tags', 'tags <command>', 'Manage tags.')
|
50
87
|
register(Volumes, 'volumes', 'volumes <command>', 'Manage volumes.')
|
51
88
|
end
|
52
89
|
end
|
@@ -31,6 +31,12 @@ class RightScaleCLI
|
|
31
31
|
class ServerArrays < Thor
|
32
32
|
namespace :arrays
|
33
33
|
|
34
|
+
def initialize(*args)
|
35
|
+
super
|
36
|
+
@client = RightScaleCLI::Client.new(options)
|
37
|
+
@logger = RightScaleCLI::Logger.new()
|
38
|
+
end
|
39
|
+
|
34
40
|
# include render options
|
35
41
|
eval(IO.read("#{File.dirname(File.expand_path(__FILE__))}/render_options.rb"), binding)
|
36
42
|
|
@@ -62,21 +68,11 @@ class RightScaleCLI
|
|
62
68
|
end
|
63
69
|
end
|
64
70
|
|
65
|
-
desc "show", "Shows a server array."
|
71
|
+
desc "show", "Shows a particular server array."
|
66
72
|
def show(server_array_id)
|
67
|
-
|
68
|
-
|
69
|
-
server_array = rightscale.server_arrays(:id => server_array_id).show.raw
|
70
|
-
|
71
|
-
if options[:xml]
|
72
|
-
puts server_array.to_xml(:root => 'server_array')
|
73
|
-
elsif options[:json]
|
74
|
-
puts JSON.pretty_generate(server_array)
|
75
|
-
else
|
76
|
-
puts server_array.to_yaml
|
77
|
-
end
|
73
|
+
@client.render(@client.show('server_arrays', server_array_id), 'server_array')
|
78
74
|
end
|
79
|
-
|
75
|
+
|
80
76
|
desc "state", "Shows the state of a server array."
|
81
77
|
def state(server_array_id)
|
82
78
|
$log.info "Retrieving state for server array, #{server_array_id}."
|
@@ -113,6 +109,16 @@ class RightScaleCLI
|
|
113
109
|
puts server_array
|
114
110
|
end
|
115
111
|
|
112
|
+
desc "inputs", 'Update the inputs of the server array.'
|
113
|
+
def inputs(server_array_id)
|
114
|
+
@client.render(@client.show('server_arrays', server_array_id), 'server_array')
|
115
|
+
end
|
116
|
+
|
117
|
+
desc "next", 'Show the next instance properties of the server array.'
|
118
|
+
def next(server_array_id)
|
119
|
+
@client.render(@client.client.server_arrays(:id => server_array_id).show.next_instance.index)
|
120
|
+
end
|
121
|
+
|
116
122
|
def self.banner(task, namespace = true, subcommand = false)
|
117
123
|
"#{basename} #{task.formatted_usage(self, true, subcommand)}"
|
118
124
|
end
|
@@ -16,34 +16,39 @@
|
|
16
16
|
|
17
17
|
require 'thor'
|
18
18
|
require 'yaml'
|
19
|
-
require '
|
19
|
+
require 'rightscale_cli/client'
|
20
20
|
|
21
21
|
class RightScaleCLI
|
22
22
|
class Servers < Thor
|
23
23
|
namespace :servers
|
24
24
|
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
25
|
+
def initialize(*args)
|
26
|
+
super
|
27
|
+
@client = RightScaleCLI::Client.new(options)
|
28
|
+
@logger = RightScaleCLI::Logger.new()
|
29
|
+
end
|
30
|
+
|
31
|
+
# include render options
|
32
|
+
eval(IO.read("#{File.dirname(File.expand_path(__FILE__))}/render_options.rb"), binding)
|
33
|
+
|
34
|
+
desc "list", "Lists all servers."
|
35
|
+
def list()
|
36
|
+
@client.render(@client.get('servers'), 'servers')
|
37
|
+
end
|
38
|
+
|
39
|
+
desc "show", "Shows a server."
|
40
|
+
def show(id)
|
41
|
+
@client.render(@client.show('servers', id), 'server')
|
32
42
|
end
|
33
43
|
|
34
44
|
desc "create", "Creates a server."
|
35
45
|
def create(name)
|
36
|
-
|
37
|
-
|
46
|
+
# todo
|
38
47
|
end
|
39
48
|
|
40
49
|
desc "destroy", "Deletes a server."
|
41
50
|
def destroy(server)
|
42
|
-
|
43
|
-
|
44
|
-
# construct deployment
|
45
|
-
server = Hash.new
|
46
|
-
rightscale.servers.delete({:server => server})
|
51
|
+
# todo
|
47
52
|
end
|
48
53
|
|
49
54
|
def self.banner(task, namespace = true, subcommand = false)
|
@@ -0,0 +1,60 @@
|
|
1
|
+
# Author:: Chris Fordham (<chris@fordham-nagy.id.au>)
|
2
|
+
# Copyright:: Copyright (c) 2013 Chris Fordham
|
3
|
+
# License:: Apache License, Version 2.0
|
4
|
+
#
|
5
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
6
|
+
# you may not use this file except in compliance with the License.
|
7
|
+
# You may obtain a copy of the License at
|
8
|
+
#
|
9
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
10
|
+
#
|
11
|
+
# Unless required by applicable law or agreed to in writing, software
|
12
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
13
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
14
|
+
# See the License for the specific language governing permissions and
|
15
|
+
# limitations under the License.
|
16
|
+
|
17
|
+
require 'thor'
|
18
|
+
require 'yaml'
|
19
|
+
require 'right_api_client'
|
20
|
+
require 'rightscale_cli/client'
|
21
|
+
require 'rightscale_cli/logger'
|
22
|
+
|
23
|
+
class RightScaleCLI
|
24
|
+
class Tags < Thor
|
25
|
+
namespace :tags
|
26
|
+
|
27
|
+
def initialize(*args)
|
28
|
+
super
|
29
|
+
@client = RightScaleCLI::Client.new(options)
|
30
|
+
@logger = RightScaleCLI::Logger.new()
|
31
|
+
end
|
32
|
+
|
33
|
+
# include render options
|
34
|
+
eval(IO.read("#{File.dirname(File.expand_path(__FILE__))}/render_options.rb"), binding)
|
35
|
+
|
36
|
+
desc "search", "Search for resources having a list of tags in a specific resource_type."
|
37
|
+
def search()
|
38
|
+
# todo
|
39
|
+
end
|
40
|
+
|
41
|
+
desc "resource", "Get tags for a list of resource hrefs."
|
42
|
+
def resource(resource_hrefs)
|
43
|
+
@client.client.tags.by_resource(:resource_hrefs => resource_hrefs.split(','))
|
44
|
+
end
|
45
|
+
|
46
|
+
desc "add", "Adds tag(s) to resource(s)."
|
47
|
+
def add(hrefs, tags)
|
48
|
+
@client.client.tags.multi_add(:resource_hrefs => [hrefs.split(',')], :tags => [tags.split(',')])
|
49
|
+
end
|
50
|
+
|
51
|
+
desc "delete", "Deletes tags from resource(s)."
|
52
|
+
def delete(hrefs, tags)
|
53
|
+
@client.client.tags.multi_delete(:resource_hrefs => [hrefs.split(',')], :tags => [tags.split(',')])
|
54
|
+
end
|
55
|
+
|
56
|
+
def self.banner(task, namespace = true, subcommand = false)
|
57
|
+
"#{basename} #{task.formatted_usage(self, true, subcommand)}"
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rightscale-cli
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Chris Fordham
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-02-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -101,36 +101,36 @@ executables:
|
|
101
101
|
extensions: []
|
102
102
|
extra_rdoc_files: []
|
103
103
|
files:
|
104
|
+
- LICENSE
|
105
|
+
- README.md
|
104
106
|
- bin/rs
|
105
107
|
- lib/rightscale_cli.rb
|
106
|
-
- lib/rightscale_cli/servers.rb
|
107
|
-
- lib/rightscale_cli/rightscale_cli.rb
|
108
|
-
- lib/rightscale_cli/repositories.rb
|
109
|
-
- lib/rightscale_cli/base.rb
|
110
|
-
- lib/rightscale_cli/monkey_patches/client_attributes.rb
|
111
|
-
- lib/rightscale_cli/output.rb
|
112
|
-
- lib/rightscale_cli/instances.rb
|
113
108
|
- lib/rightscale_cli/client.rb
|
114
|
-
- lib/rightscale_cli/version.rb
|
115
|
-
- lib/rightscale_cli/server_templates.rb
|
116
109
|
- lib/rightscale_cli/clouds.rb
|
117
|
-
- lib/rightscale_cli/deployments.rb
|
118
110
|
- lib/rightscale_cli/config.rb
|
119
111
|
- lib/rightscale_cli/dashboard.rb
|
120
|
-
- lib/rightscale_cli/
|
112
|
+
- lib/rightscale_cli/deployments.rb
|
113
|
+
- lib/rightscale_cli/instances.rb
|
114
|
+
- lib/rightscale_cli/logger.rb
|
115
|
+
- lib/rightscale_cli/monkey_patches/client_attributes.rb
|
121
116
|
- lib/rightscale_cli/multi_cloud_images.rb
|
117
|
+
- lib/rightscale_cli/output.rb
|
122
118
|
- lib/rightscale_cli/render_options.rb
|
123
|
-
- lib/rightscale_cli/
|
124
|
-
- lib/rightscale_cli/
|
125
|
-
- lib/rightscale_cli/server_arrays
|
126
|
-
- lib/rightscale_cli/server_arrays/elasticity_params.rb
|
119
|
+
- lib/rightscale_cli/repositories.rb
|
120
|
+
- lib/rightscale_cli/rightscale_cli.rb
|
121
|
+
- lib/rightscale_cli/server_arrays.rb
|
127
122
|
- lib/rightscale_cli/server_arrays/alert_specs.rb
|
128
123
|
- lib/rightscale_cli/server_arrays/alerts.rb
|
124
|
+
- lib/rightscale_cli/server_arrays/current_instances.rb
|
125
|
+
- lib/rightscale_cli/server_arrays/elasticity_params.rb
|
126
|
+
- lib/rightscale_cli/server_arrays/links.rb
|
129
127
|
- lib/rightscale_cli/server_arrays/multi_run_executable.rb
|
130
|
-
- lib/rightscale_cli/
|
128
|
+
- lib/rightscale_cli/server_templates.rb
|
129
|
+
- lib/rightscale_cli/servers.rb
|
130
|
+
- lib/rightscale_cli/tags.rb
|
131
|
+
- lib/rightscale_cli/version.rb
|
132
|
+
- lib/rightscale_cli/volumes.rb
|
131
133
|
- lib/yesno.rb
|
132
|
-
- README.md
|
133
|
-
- LICENSE
|
134
134
|
homepage: https://github.com/flaccid/rightscale-cli
|
135
135
|
licenses:
|
136
136
|
- Apache 2.0
|
@@ -151,8 +151,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
151
151
|
version: '0'
|
152
152
|
requirements: []
|
153
153
|
rubyforge_project:
|
154
|
-
rubygems_version: 2.
|
154
|
+
rubygems_version: 2.2.0
|
155
155
|
signing_key:
|
156
156
|
specification_version: 4
|
157
157
|
summary: rightscale-cli
|
158
158
|
test_files: []
|
159
|
+
has_rdoc:
|