rs-api-tools 0.0.5 → 0.0.6

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 5a6a5dfe281f32afa20501f99d0047fcce12cf6d
4
- data.tar.gz: aa48cd124c4b8962347d8879280ce51d69f1fc62
3
+ metadata.gz: da3f05678b70779ba27dddd503255e99ca6d05fc
4
+ data.tar.gz: f09666c9e205da278d2578f595a556274e92aac0
5
5
  SHA512:
6
- metadata.gz: 523702bffa6d20055dc2b5cdaec5cf93adce261738afb95b47fa3b9e70e471cff35daa65aa183febf810bebe9cc21e83f523d5e7752fd6ae17305f0b6c75d30f
7
- data.tar.gz: e3506e740e229c9cb8e5bef780285ac89b359ce59a2ece0403846a96af4d687b209bbf5b7b6dad3cbf6d788124d41550f3a8fa31ccc4dde7aeadee34856a1b43
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 })
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.5
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-21 00:00:00.000000000 Z
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