rs-api-tools 0.0.5 → 0.0.6
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
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: da3f05678b70779ba27dddd503255e99ca6d05fc
|
4
|
+
data.tar.gz: f09666c9e205da278d2578f595a556274e92aac0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 671283c2e86e1dde795b24c7b5b7f4841f6415e8ca7594e465ab4eb71aab6db90f6d4ee7fefc7471ac683c572a95cd2a44de7d81403446528e24935938d9e6ba
|
7
|
+
data.tar.gz: 35a8d8d2d165fb4642bea42be44010dfd5dd79e480385778790300d82afc4fce33585ebdab4c08993485aa826d5c6fd64752d229b6031d855dc1782dc7d55780
|
@@ -0,0 +1,143 @@
|
|
1
|
+
#!/usr/bin/ruby
|
2
|
+
|
3
|
+
# rs-create-repositories [--cheffile <Cheffile>] [[--no-import]] [[--help]]
|
4
|
+
|
5
|
+
require 'rubygems'
|
6
|
+
require 'getoptlong'
|
7
|
+
|
8
|
+
def usage
|
9
|
+
puts "usage: rs-create-repositories [--cheffile <Cheffile>] [[--no-import]] [[--help]]"
|
10
|
+
puts ''
|
11
|
+
puts "See rs-create-repositories --help for more information on usage."
|
12
|
+
end
|
13
|
+
|
14
|
+
def usage_exit
|
15
|
+
usage; exit
|
16
|
+
end
|
17
|
+
|
18
|
+
def help_info
|
19
|
+
puts("#{$0}")
|
20
|
+
puts ''
|
21
|
+
puts "Creates RightScale Repositories from a Cheffile (and imports the cookbooks from each repository)."
|
22
|
+
puts ''
|
23
|
+
puts "examples: rs-create-repositories --cheffile https://raw.github.com/chef-blueprints/linux_box/master/Cheffile"
|
24
|
+
puts " rs-create-repositories --cheffile /home/billgates/Cheffile --no-import"
|
25
|
+
puts ''
|
26
|
+
end
|
27
|
+
|
28
|
+
cheffile = false
|
29
|
+
dry = false
|
30
|
+
interactive = true
|
31
|
+
import = true
|
32
|
+
verbose = false
|
33
|
+
help = false
|
34
|
+
create_repo = true
|
35
|
+
delete_repo = false
|
36
|
+
|
37
|
+
opts = GetoptLong.new(
|
38
|
+
[ '--cheffile', '-c', GetoptLong::REQUIRED_ARGUMENT ],
|
39
|
+
[ '--dry', '-d', GetoptLong::OPTIONAL_ARGUMENT ],
|
40
|
+
[ '--no-import', '-n', GetoptLong::OPTIONAL_ARGUMENT ],
|
41
|
+
[ '--verbose', '-v', GetoptLong::OPTIONAL_ARGUMENT ],
|
42
|
+
[ '--help', '-h', GetoptLong::NO_ARGUMENT ]
|
43
|
+
)
|
44
|
+
|
45
|
+
opts.each do |opt, arg|
|
46
|
+
case opt
|
47
|
+
when '--cheffile'
|
48
|
+
cheffile = arg
|
49
|
+
when '--dry'
|
50
|
+
dry = true
|
51
|
+
when '--noninteractive'
|
52
|
+
interactive = false
|
53
|
+
puts 'Warning: non-interactive mode.'
|
54
|
+
when '--no-import'
|
55
|
+
import = false
|
56
|
+
when '--help'
|
57
|
+
help = true
|
58
|
+
when '--verbose'
|
59
|
+
verbose = true
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
if help
|
64
|
+
help_info
|
65
|
+
exit
|
66
|
+
end
|
67
|
+
|
68
|
+
usage_exit if !(cheffile)
|
69
|
+
|
70
|
+
def yesno
|
71
|
+
begin
|
72
|
+
system("stty raw -echo")
|
73
|
+
str = STDIN.getc
|
74
|
+
ensure
|
75
|
+
system("stty -raw echo")
|
76
|
+
end
|
77
|
+
if str.downcase == "y"
|
78
|
+
return true
|
79
|
+
elsif str.downcase == "n"
|
80
|
+
return false
|
81
|
+
else
|
82
|
+
raise "Invalid response. Please enter y/n."
|
83
|
+
end
|
84
|
+
end
|
85
|
+
|
86
|
+
require 'yaml'
|
87
|
+
require 'right_api_client'
|
88
|
+
require File.expand_path(File.join(File.dirname(__FILE__), '..', 'lib', 'librarian_chef_dsl_parser'))
|
89
|
+
|
90
|
+
library = LibrarianChefDSLParser.new(cheffile)
|
91
|
+
rightscale = RightApi::Client.new(YAML.load_file(File.join(ENV['HOME'], '.rightscale', 'right_api_client.yml')))
|
92
|
+
|
93
|
+
# api 1.5 does not yet support server side filter of repositories
|
94
|
+
repositories = rightscale.repositories.index
|
95
|
+
|
96
|
+
library.cookbooks.each { |cookbook|
|
97
|
+
# create profile of the repository to add
|
98
|
+
# http://reference.rightscale.com/api1.5/resources/ResourceRepositories.html#create
|
99
|
+
repository = Hash.new
|
100
|
+
repository['name'] = "#{cookbook['name']} #{cookbook['options'][:ref]}"
|
101
|
+
repository['description'] = "" # TODO: if gihtub, fetch the repos description via GitHub API
|
102
|
+
repository['source_type'] = 'git' # only git supported so far
|
103
|
+
repository['auto_import'] = import
|
104
|
+
repository['source'] = cookbook['options'][:git]
|
105
|
+
repository['commit_reference'] = cookbook['options'][:ref]
|
106
|
+
repository['credentials'] = Hash.new
|
107
|
+
repository['credentials']['ssh_key'] = 'text:'
|
108
|
+
puts repository if verbose
|
109
|
+
|
110
|
+
puts 'Checking if an existing repository exists...' if verbose
|
111
|
+
existing_repos = repositories.select{ |r|
|
112
|
+
r.name == repository['name'] && r.source == repository['source'] && r.commit_reference == repository['commit_reference']
|
113
|
+
}
|
114
|
+
|
115
|
+
if existing_repos.count > 0
|
116
|
+
puts "Found #{existing_repos.count} repositories." if verbose
|
117
|
+
existing_repos.each { |repo|
|
118
|
+
puts repo.raw if verbose
|
119
|
+
puts "==> Delete repository [#{repo.id}] ? (y/n)"
|
120
|
+
delete_repo = yesno
|
121
|
+
if delete_repo
|
122
|
+
puts "Deleting repository, #{repo.id}." if verbose
|
123
|
+
repo.destroy
|
124
|
+
end
|
125
|
+
}
|
126
|
+
else
|
127
|
+
puts 'None found.' if verbose
|
128
|
+
end
|
129
|
+
|
130
|
+
if !dry
|
131
|
+
if interactive
|
132
|
+
puts "==> Create repository, #{repository['name']} ? (y/n)"
|
133
|
+
create_repo = yesno
|
134
|
+
end
|
135
|
+
if create_repo
|
136
|
+
puts "Creating RightScale repository, '#{repository['name']}'."
|
137
|
+
rightscale.repositories.create({ :repository => repository })
|
138
|
+
end
|
139
|
+
else
|
140
|
+
puts 'Dry run only, skipping.'
|
141
|
+
end
|
142
|
+
puts
|
143
|
+
}
|
@@ -0,0 +1,64 @@
|
|
1
|
+
#!/usr/bin/ruby
|
2
|
+
|
3
|
+
def usage
|
4
|
+
puts "usage: rs-create-servertemplate [--name <server_template_name>] --name <server_template_description>] [[--help]]"
|
5
|
+
puts ''
|
6
|
+
puts "See rs-create-servertemplate --help for more information on usage."
|
7
|
+
end
|
8
|
+
|
9
|
+
def usage_exit
|
10
|
+
usage; exit
|
11
|
+
end
|
12
|
+
|
13
|
+
def help_info
|
14
|
+
puts("#{$0}")
|
15
|
+
puts ''
|
16
|
+
puts "Creates a RightScale ServerTemplate."
|
17
|
+
puts ''
|
18
|
+
puts "examples: rs-create-servertemplate --name 'Skynet Terminator Terminator' --description 'Ends all Skynet terminators.'"
|
19
|
+
puts ''
|
20
|
+
end
|
21
|
+
|
22
|
+
require 'rubygems'
|
23
|
+
require 'getoptlong'
|
24
|
+
|
25
|
+
server_template = Hash.new
|
26
|
+
server_template['name'] = false
|
27
|
+
server_template['description'] = ''
|
28
|
+
|
29
|
+
verbose = false
|
30
|
+
help = false
|
31
|
+
|
32
|
+
opts = GetoptLong.new(
|
33
|
+
[ '--name', '-N', GetoptLong::REQUIRED_ARGUMENT ],
|
34
|
+
[ '--description', '-D', GetoptLong::OPTIONAL_ARGUMENT ],
|
35
|
+
[ '--verbose', '-v', GetoptLong::OPTIONAL_ARGUMENT ],
|
36
|
+
[ '--help', '-h', GetoptLong::NO_ARGUMENT ]
|
37
|
+
)
|
38
|
+
|
39
|
+
opts.each do |opt, arg|
|
40
|
+
case opt
|
41
|
+
when '--name'
|
42
|
+
server_template['name'] = arg
|
43
|
+
when '--description'
|
44
|
+
server_template['description'] = arg
|
45
|
+
when '--help'
|
46
|
+
help = true
|
47
|
+
when '--verbose'
|
48
|
+
verbose = true
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
if help
|
53
|
+
help_info
|
54
|
+
exit
|
55
|
+
end
|
56
|
+
|
57
|
+
usage_exit if !(server_template['name'])
|
58
|
+
|
59
|
+
require 'yaml'
|
60
|
+
require 'right_api_client'
|
61
|
+
rightscale = RightApi::Client.new(YAML.load_file(File.join(ENV['HOME'], '.rightscale', 'right_api_client.yml')))
|
62
|
+
|
63
|
+
puts "Creating ServerTemplate, '#{server_template['name']}'."
|
64
|
+
rightscale.server_templates.create({ :server_template => server_template })
|
File without changes
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rs-api-tools
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Chris Fordham
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-10-
|
11
|
+
date: 2013-10-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: json
|
@@ -69,7 +69,6 @@ dependencies:
|
|
69
69
|
description: RightScale API Command Line Tools.
|
70
70
|
email: chris@fordham-nagy.id.au
|
71
71
|
executables:
|
72
|
-
- rs-describe-server-templates
|
73
72
|
- rs-describe-rightscripts
|
74
73
|
- rs-clone-server
|
75
74
|
- rs-describe-instance
|
@@ -99,6 +98,7 @@ executables:
|
|
99
98
|
- rs-describe-ec2-ebs-volumes
|
100
99
|
- rs-terminate-server
|
101
100
|
- rs-run-recipe
|
101
|
+
- rs-describe-servertemplates
|
102
102
|
- rs-search-tags
|
103
103
|
- rs-describe-keys
|
104
104
|
- rs-describe-ec2-security-groups
|
@@ -121,6 +121,7 @@ executables:
|
|
121
121
|
- rs-stop-server
|
122
122
|
- rs-reboot-deployment
|
123
123
|
- rs-describe-multi-cloud-images
|
124
|
+
- rs-create-repositories
|
124
125
|
- rs-launch-server
|
125
126
|
- rs-get-server-monitoring
|
126
127
|
- rs-run-rightscript
|
@@ -129,12 +130,12 @@ executables:
|
|
129
130
|
- rs-get-server-sketchy-data
|
130
131
|
- rs-import-publication
|
131
132
|
- rs-describe-deployment
|
133
|
+
- rs-create-servertemplate
|
132
134
|
- rs-describe-alerts
|
133
135
|
- rs-stop-deployment
|
134
136
|
extensions: []
|
135
137
|
extra_rdoc_files: []
|
136
138
|
files:
|
137
|
-
- bin/rs-describe-server-templates
|
138
139
|
- bin/rs-describe-rightscripts
|
139
140
|
- bin/rs-clone-server
|
140
141
|
- bin/rs-describe-instance
|
@@ -164,6 +165,7 @@ files:
|
|
164
165
|
- bin/rs-describe-ec2-ebs-volumes
|
165
166
|
- bin/rs-terminate-server
|
166
167
|
- bin/rs-run-recipe
|
168
|
+
- bin/rs-describe-servertemplates
|
167
169
|
- bin/rs-search-tags
|
168
170
|
- bin/rs-describe-keys
|
169
171
|
- bin/rs-describe-ec2-security-groups
|
@@ -186,6 +188,7 @@ files:
|
|
186
188
|
- bin/rs-stop-server
|
187
189
|
- bin/rs-reboot-deployment
|
188
190
|
- bin/rs-describe-multi-cloud-images
|
191
|
+
- bin/rs-create-repositories
|
189
192
|
- bin/rs-launch-server
|
190
193
|
- bin/rs-get-server-monitoring
|
191
194
|
- bin/rs-run-rightscript
|
@@ -194,6 +197,7 @@ files:
|
|
194
197
|
- bin/rs-get-server-sketchy-data
|
195
198
|
- bin/rs-import-publication
|
196
199
|
- bin/rs-describe-deployment
|
200
|
+
- bin/rs-create-servertemplate
|
197
201
|
- bin/rs-describe-alerts
|
198
202
|
- bin/rs-stop-deployment
|
199
203
|
homepage: https://github.com/flaccid/rs-api-tools
|