rhoconnect 3.1.1 → 3.1.2

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.
Files changed (76) hide show
  1. data/CHANGELOG.md +7 -0
  2. data/Gemfile +3 -3
  3. data/Gemfile.lock +26 -45
  4. data/Rakefile +2 -3
  5. data/bench/bench_runner.rb +37 -37
  6. data/bench/benchapp/Gemfile.lock +4 -5
  7. data/bench/benchapp/config.ru +1 -5
  8. data/bench/benchapp/spec/spec_helper.rb +0 -13
  9. data/bench/blobapp/Gemfile.lock +8 -9
  10. data/bench/blobapp/config.ru +1 -2
  11. data/bench/blobapp/spec/spec_helper.rb +0 -13
  12. data/bench/lib/bench/aws_utils.rb +0 -1
  13. data/bench/spec/bench_spec_helper.rb +1 -1
  14. data/doc/java-plugin.txt +176 -49
  15. data/doc/net-plugin.txt +150 -70
  16. data/doc/plugin-intro.txt +2 -2
  17. data/doc/supported-platforms.txt +12 -11
  18. data/generators/templates/application/config.ru +1 -2
  19. data/generators/templates/application/spec/spec_helper.rb +0 -15
  20. data/install.sh +3 -3
  21. data/installer/unix-like/create_texts.rb +2 -2
  22. data/installer/unix-like/rho_connect_install_constants.rb +3 -3
  23. data/installer/unix-like/rho_connect_install_utilities.rb +0 -1
  24. data/installer/utils/constants.rb +5 -5
  25. data/installer/utils/create_sha1.rb +26 -0
  26. data/installer/utils/delete_from_s3.rb +32 -0
  27. data/installer/utils/download_from_s3.rb +55 -0
  28. data/installer/utils/nix_install_test.rb +29 -19
  29. data/installer/utils/package_upload/repos.rake +52 -40
  30. data/installer/utils/package_upload/s3_upload.rb +7 -28
  31. data/installer/utils/verify_checksum.rb +33 -0
  32. data/installer/windows/rhosync.nsi +5 -5
  33. data/lib/rhoconnect.rb +1 -1
  34. data/lib/rhoconnect/app.rb +0 -3
  35. data/lib/rhoconnect/predefined_adapters/bench_adapter.rb +6 -0
  36. data/lib/rhoconnect/server.rb +27 -24
  37. data/lib/rhoconnect/stats/middleware.rb +13 -8
  38. data/lib/rhoconnect/store.rb +12 -10
  39. data/lib/rhoconnect/version.rb +1 -1
  40. data/rhoconnect.gemspec +2 -2
  41. data/spec/api/admin/api_token_spec.rb +0 -1
  42. data/spec/api/admin/stats_spec.rb +3 -0
  43. data/spec/api/api_helper.rb +2 -2
  44. data/spec/api/user/list_users_spec.rb +2 -2
  45. data/spec/api_token_spec.rb +0 -1
  46. data/spec/app_spec.rb +0 -1
  47. data/spec/bulk_data/bulk_data_spec.rb +0 -1
  48. data/spec/client_spec.rb +0 -1
  49. data/spec/client_sync_spec.rb +0 -2
  50. data/spec/document_spec.rb +0 -1
  51. data/spec/dynamic_adapter_spec.rb +0 -2
  52. data/spec/jobs/bulk_data_job_spec.rb +0 -1
  53. data/spec/jobs/ping_job_spec.rb +0 -1
  54. data/spec/jobs/source_job_spec.rb +0 -1
  55. data/spec/license_spec.rb +0 -1
  56. data/spec/perf/perf_spec_helper.rb +0 -1
  57. data/spec/ping/android_spec.rb +0 -1
  58. data/spec/ping/apple_spec.rb +0 -1
  59. data/spec/ping/blackberry_spec.rb +0 -1
  60. data/spec/read_state_spec.rb +0 -1
  61. data/spec/rhoconnect_spec.rb +0 -1
  62. data/spec/server/server_spec.rb +1 -12
  63. data/spec/source_adapter_spec.rb +0 -1
  64. data/spec/source_spec.rb +0 -1
  65. data/spec/source_sync_spec.rb +0 -1
  66. data/spec/spec_helper.rb +8 -19
  67. data/spec/stats/middleware_spec.rb +9 -0
  68. data/spec/stats/record_spec.rb +1 -0
  69. data/spec/store_spec.rb +6 -1
  70. data/spec/sync_states_spec.rb +0 -1
  71. data/spec/test_methods_spec.rb +0 -1
  72. data/spec/user_spec.rb +0 -1
  73. data/tasks/redis.rake +4 -2
  74. metadata +421 -436
  75. data/bin/thorhoconnect +0 -79
  76. data/installer/utils/package_upload/auto-repo.rb +0 -136
@@ -1,8 +1,8 @@
1
1
  RhoConnect Plugins Introduction
2
2
  ===
3
3
 
4
- Rhoconnect Plugins allow you to connect your backend apps seamlessly with rhoconnect. You can write the source (query, create, update and delete operations) into a backend application, and write a RhoConnect plugin in the language that matchs your backend application, such as Java or .NET.
4
+ Rhoconnect Plugins allow you to connect your backend apps seamlessly with rhoconnect. You can write the source (query, create, update and delete operations) into a backend application, and use a RhoConnect plugin in the language that matchs your backend application, such as Java or .NET.
5
5
 
6
6
  <img src='https://s3.amazonaws.com/rhodocs/rhoconnect-service/intro-plugin.png' alt='image' height='467' width='800' />
7
7
 
8
- **NOTE:** Another way to connect particular backend applications (such as for Salesforce or Oracle) is to generate a [RhoConnect source adapter](/rhoconnect/source-adapters) which contains the query, create, update and delete operations.
8
+ **NOTE: Another way to connect particular backend applications (such as for Salesforce or Oracle) is to generate a [RhoConnect source adapter](/rhoconnect/source-adapters) which contains the query, create, update and delete operations.**
@@ -15,22 +15,22 @@ Supported Platforms
15
15
  </tr>
16
16
  <tr>
17
17
  <td class='cap'>Linux</td>
18
- <td> CentOS 5 & 6,<br/>Ubuntu 11,<br/>Amazon Linux</td>
19
- <td> ruby-1.8.7-p352 <br/> ruby-1.8.7-p357 </td>
20
- <td> ree-1.8.7-2011.03 <br/> ree-1.8.7-2012.01 </td>
18
+ <td> CentOS / RHEL 5 & 6,<br/>Ubuntu 11,<br/>Amazon Linux</td>
19
+ <td> ruby-1.8.7-p358 </td>
20
+ <td> ree-1.8.7-2012.02 </td>
21
21
  <td> ruby-1.9.2-p290 </td>
22
- <td> ruby-1.9.3-p0 </td>
23
- <td> jruby-1.6.4,<br/>jruby-1.6.5.1 </td>
22
+ <td> ruby-1.9.3-p125 </td>
23
+ <td> jruby-1.6.7 </td>
24
24
  <td>Development &<br/>Production</td>
25
25
  </tr>
26
26
  <tr>
27
27
  <td class='cap'>Mac OS </td>
28
28
  <td> Mac OS X 10.6/10.7 </td>
29
- <td> ruby-1.8.7-p352 <br/> ruby-1.8.7-p357 </td>
30
- <td> ree-1.8.7-2011.03 <br/> ree-1.8.7-2012.01 </td>
29
+ <td> ruby-1.8.7-p358 </td>
30
+ <td> ree-1.8.7-2012.02 </td>
31
31
  <td> ruby-1.9.2-p290 </td>
32
- <td> ruby-1.9.3-p0 </td>
33
- <td> jruby-1.6.4,<br/>jruby-1.6.5.1 </td>
32
+ <td> ruby-1.9.3-p125 </td>
33
+ <td> jruby-1.6.7 </td>
34
34
  <td>Development &<br/>Production</td>
35
35
  </tr>
36
36
  <tr>
@@ -69,5 +69,6 @@ RhoConnect for Linux and Mac OS X is supported for both development and producti
69
69
  ## Known Issues
70
70
 
71
71
  * Windows platform: only pre-release (~> 1.0.0.beta) of <b>eventmachine</b> is working on Windows
72
- * Examples for <b>RSpec</b> (~> 2.8.0) fail for Ruby 1.8.7, gemset locked to ver. >= 2.6.0
73
- * Release <b>JRuby-1.6.5</b> is broken, use either <b>JRuby-1.6.4</b> or <b>JRuby-1.6.5.1</b> instead
72
+ * Examples for <b>RSpec</b> (~> 2.8.0) fail for Ruby 1.8.7, gemset locked to ver. >= 2.6.0. <b>Issue is fixed in v. 3.1.2.</b>
73
+ * Rack is locked to version 1.3.6 due to issues with RhoConnect applications deployed on Heroku (502 server error if rhoconnect bundled with rake 1.4.1). <b>Fixed in v. 3.1.2.</b>
74
+
@@ -33,8 +33,7 @@ Rhoconnect::Server.set :root, ROOT_PATH
33
33
  Rhoconnect::Server.use Rack::Static, :urls => ["/data"], :root => Rhoconnect::Server.root
34
34
 
35
35
  # Load our rhoconnect application
36
- $:.unshift ROOT_PATH if RUBY_VERSION =~ /1.9/ # FIXME: see PT story #16682771
37
- require 'application'
36
+ require "#{ROOT_PATH}/application"
38
37
 
39
38
  # Setup the url map
40
39
  run Rack::URLMap.new \
@@ -19,21 +19,6 @@ include Rhoconnect
19
19
 
20
20
  require 'rhoconnect/test_methods'
21
21
 
22
- # Monkey patch to fix the following issue:
23
- # /usr/local/rvm/gems/ruby-1.8.7-p352/gems/rspec-core-2.6.4/lib/rspec/core/shared_example_group.rb:59:
24
- # in `ensure_shared_example_group_name_not_taken': Shared example group 'SharedRhoconnectHelper' already exists (ArgumentError)
25
- if RUBY_VERSION =~ /1.8/
26
- module RSpec
27
- module Core
28
- module SharedExampleGroup
29
- private
30
- def ensure_shared_example_group_name_not_taken(name)
31
- end
32
- end
33
- end
34
- end
35
- end
36
-
37
22
  shared_examples_for "SpecHelper" do
38
23
  include Rhoconnect::TestMethods
39
24
 
data/install.sh CHANGED
@@ -201,7 +201,7 @@ setRubyVars ()
201
201
  {
202
202
  if [[ $rubyVersion == "" || $rubyVersion =~ ruby'ee'|'enterprise' ]]; then
203
203
  rubyVersion="rubyee"
204
- rubyDir="ruby-enterprise-1.8.7-2012.01"
204
+ rubyDir="ruby-enterprise-1.8.7-2012.02"
205
205
  rubyTar="${rubyDir}.tar.gz"
206
206
  rubyURL="http://rubyenterpriseedition.googlecode.com/files/${rubyTar}"
207
207
  elif [$rubyVersion == "ruby187"]; then
@@ -351,7 +351,7 @@ else
351
351
  fi
352
352
 
353
353
  # Construct the string with which to call the ruby installation script.
354
- callruby="sudo ${prefix}/bin/ruby ${INSTALL_DIR}/unix-like/rhoinstaller.rb ${opts}"
354
+ callruby="${prefix}/bin/ruby ${INSTALL_DIR}/unix-like/rhoinstaller.rb ${opts}"
355
355
  # Call the ruby script
356
356
  $callruby
357
357
  rho_status=$?
@@ -372,7 +372,7 @@ if [[ $installedSoftware -eq ${#INSTALL_ARRAY[@]} ]]; then
372
372
  echo "Installation failed. For troubleshooting see file $log ..." | tee -a $log
373
373
  else
374
374
  opts=" -d $dist"
375
- sudo ${prefix}/bin/ruby ${INSTALL_DIR}/unix-like/create_texts.rb ${opts}
375
+ ${prefix}/bin/ruby ${INSTALL_DIR}/unix-like/create_texts.rb ${opts}
376
376
  fi
377
377
  # timeFinal=`date +%H%M%S`
378
378
  # getTime $timeFinal
@@ -151,8 +151,8 @@ redis_stop() {
151
151
  while [[ -x /proc/${pid} ]] ; do
152
152
  echo -n '.' ; sleep 1
153
153
  done
154
- else # Darwin, etc...
155
- while [[ ! -z "$(ps auxww | grep [r]edis | grep "$config" | awk '{print $2}')" ]] ; do
154
+ else # Darwin, etc ...
155
+ while [[ ! -z "$(ps auxww | grep [r]edis | grep "$config" | grep -v grep | awk '{print $2}')" ]] ; do
156
156
  echo -n '.' ; sleep 1
157
157
  done
158
158
  fi
@@ -8,11 +8,11 @@ module Constants
8
8
  "libaprutil1-dev",
9
9
  "dtach"]
10
10
 
11
- REDIS = "redis-2.4.6"
11
+ REDIS = "redis-2.4.10"
12
12
  SQLITE3 = "sqlite-autoconf-3071000"
13
13
 
14
- RUBY = "ruby-enterprise-1.8.7-2012.01"
15
- Nginx = "nginx-1.0.11"
14
+ RUBY = "ruby-enterprise-1.8.7-2012.02"
15
+ Nginx = "nginx-1.0.14"
16
16
 
17
17
  SOFTWARE = [ REDIS, SQLITE3, RUBY, Nginx ]
18
18
 
@@ -1,4 +1,3 @@
1
- require 'readline'
2
1
  require 'net/http'
3
2
  require 'net/https'
4
3
  require 'rho_connect_install_constants'
@@ -9,18 +9,18 @@ module Constants
9
9
  SLEEP = 60
10
10
  HOME_DIR = `echo ~/`.strip.chomp("/")
11
11
  REMOTE_HOME = '/home/ubuntu'
12
- PEM_FILE = 'alexdevkey.pem'
12
+ PEM_FILE = 'jenkinskey.pem'
13
13
  SSH_KEY = "#{HOME_DIR}/.ssh/#{PEM_FILE}"
14
14
  ACCESS_KEY_FILE = "#{HOME_DIR}/.ec2"
15
- UBUNTU_STACK = { :image_id => 'ami-3d491a78',
16
- :flavor_id => 'c1.medium',
17
- :key_name => 'alexdevkey',
15
+ UBUNTU_STACK = { :image_id => 'ami-6da8f128',
16
+ :flavor_id => 'c1.xlarge',
17
+ :key_name => 'jenkinskey',
18
18
  :groups => 'load-test',
19
19
  :user => 'ubuntu'}
20
20
 
21
21
  CENTOS_STACK = { :image_id => 'ami-13346656',
22
22
  :flavor_id => 'c1.medium',
23
- :key_name => 'alexdevkey',
23
+ :key_name => 'jenkinskey',
24
24
  :groups => 'load-test',
25
25
  :user => 'root'}
26
26
 
@@ -0,0 +1,26 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'rubygems'
4
+ require 'digest/sha1'
5
+ require 'find'
6
+
7
+ if ARGV.length != 2 ||
8
+ !File.directory?(ARGV[0])
9
+ puts "Usage: #{$0} directory_to_use location_for_SHA1_file"
10
+ exit 1
11
+ end #if
12
+
13
+ dir = ARGV[0]
14
+ dest_dir = ARGV[1]
15
+
16
+ dir_digest = Digest::SHA1.new
17
+
18
+ Find.find(dir) do |path|
19
+ if !File.directory?(path)
20
+ file_sha1 = Digest::SHA1.file(path).to_s
21
+ dir_digest << file_sha1
22
+ end #if
23
+ end #do
24
+
25
+ Dir.mkdir(dest_dir) unless File.directory?(dest_dir)
26
+ File.open("#{dest_dir}/checksum", 'w') { |f| f.write(dir_digest) }
@@ -0,0 +1,32 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'rubygems'
4
+ require 'aws/s3'
5
+
6
+ include AWS::S3
7
+
8
+ USER_DATA = `wget -q -O - http://169.254.169.254/latest/user-data`.split("\n")
9
+
10
+ bucket_name = ARGV[0].strip
11
+ channel = ARGV[1].strip
12
+ files = []
13
+
14
+ def get_access_keys
15
+ access_key = USER_DATA[0].to_s.strip
16
+ secret_access_key = USER_DATA[1].to_s.strip
17
+ keys = { :access_key_id => access_key,
18
+ :secret_access_key => secret_access_key}
19
+ end #get_access_keys
20
+
21
+ AWS::S3::Base.establish_connection!(get_access_keys)
22
+
23
+ objects = Bucket.objects(bucket_name)
24
+
25
+ objects.each do |obj|
26
+ files << "#{obj.key}" if obj.key =~ /^#{channel}/
27
+ end
28
+
29
+ files.each do |file|
30
+ puts "Deleting #{file}"
31
+ S3Object.delete file, bucket_name
32
+ end #do
@@ -0,0 +1,55 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'rubygems'
4
+ require 'aws/s3'
5
+
6
+ include AWS::S3
7
+
8
+ USER_DATA = `wget -q -O - http://169.254.169.254/latest/user-data`.split("\n")
9
+
10
+ bucket_name = 'rhoconnect'
11
+ channel = ARGV[0]
12
+ files = []
13
+
14
+ exit if ARGV.length != 1
15
+
16
+ def cmd(cmd)
17
+ puts cmd
18
+ system(cmd)
19
+ end #cmd
20
+
21
+ def get_access_keys
22
+ access_key = USER_DATA[0].to_s.strip
23
+ secret_access_key = USER_DATA[1].to_s.strip
24
+ keys = { :access_key_id => access_key,
25
+ :secret_access_key => secret_access_key}
26
+ end #get_access_keys
27
+
28
+ AWS::S3::Base.establish_connection!(get_access_keys)
29
+
30
+ objects = Bucket.objects(bucket_name)
31
+
32
+ objects.each do |obj|
33
+ files << "#{obj.key}" if obj.key =~ /^#{channel}/
34
+ end
35
+
36
+ # Remove the files before downloading new in case they already exist
37
+ cmd "rm -rf #{channel}" if File.directory? channel
38
+ cmd "rm -f #{channel}/SHA1/checksum" if File.exists?("#{channel}/SHA1/checksum")
39
+
40
+ puts "Downloading S3 files"
41
+ files.each do |file|
42
+ cmd = "wget -qx -P #{channel} \"http://#{bucket_name}.s3.amazonaws.com/#{file}\""
43
+ puts cmd
44
+ system(cmd)
45
+ end #do
46
+
47
+ # The download increases the depth of the files by two folders.
48
+ # Remove exess directory levels.
49
+ cmd "mv -f #{channel}/#{bucket_name}.s3.amazonaws.com/#{channel}/* #{channel}"
50
+ cmd "rm -rf #{channel}/#{bucket_name}.s3.amazonaws.com"
51
+
52
+ # Pull the SHA1 checksum out
53
+ cmd "mv -f #{channel}/SHA1/checksum ."
54
+ cmd "mv -f checksum old_checksum"
55
+ cmd "rm -rf #{channel}/SHA1"
@@ -3,12 +3,12 @@
3
3
  $:.unshift File.expand_path(File.dirname(__FILE__))
4
4
  $:.unshift File.expand_path(File.join(File.dirname(__FILE__), 'installer', 'utils'))
5
5
 
6
- require 'rhoconnect'
7
6
  require 'rubygems'
8
- require 'fog'
9
7
  require 'net/http'
10
8
  require 'constants'
11
- require 'readline'
9
+ require 'fog'
10
+
11
+ BUCKET = 'rhoconnect'
12
12
 
13
13
  # METHODS
14
14
 
@@ -29,11 +29,19 @@ def ssh_cmd(cmd)
29
29
  exit 1 if exit_code.to_i != 0
30
30
  end #ssh_cmd
31
31
 
32
- # nightly_build?
33
- # Return whether or not
34
- def nightly_build?
35
- ARGV.include? 'nightly'
36
- end #nightly_build?
32
+ # build_type
33
+ def build_type
34
+ case ARGV[0]
35
+ when 'test'
36
+ 'test-packages'
37
+ when 'beta'
38
+ 'beta-packages'
39
+ when 'release'
40
+ 'release-packages'
41
+ else
42
+ 'nightly-packages'
43
+ end #case
44
+ end #build_type
37
45
 
38
46
  # compile_stack_info
39
47
  # Fills in all necessary information which is stack specific
@@ -46,11 +54,8 @@ def compile_stack_info
46
54
  # This part of the package name will always be the same
47
55
  local_file = "#{`pwd`.strip}/pkg/"
48
56
 
49
- # Determine whether or not the build is a nightly build.
50
- bucket = nightly_build? ? 'rhoconnect' : 'rhoconnect-test'
51
-
52
- # Determine which folder in the bucket to grab files from
53
- packages = Rhoconnect::VERSION.include?('beta') ? 'beta-packages' : 'packages'
57
+ # Determine what channel to pull the packages from
58
+ channel = build_type
54
59
 
55
60
  # Append the rest of the file name according to distribution
56
61
  if @user == 'ubuntu'
@@ -65,7 +70,7 @@ def compile_stack_info
65
70
  :repo_src_file => '/etc/apt/sources.list',
66
71
  :repo_str => '\n' +
67
72
  '# This is the repository for rhoconnect packages\n' +
68
- "deb http://#{bucket}.s3.amazonaws.com/#{packages}/deb rhoconnect main" }
73
+ "deb http://#{BUCKET}.s3.amazonaws.com/#{channel}/deb rhoconnect main" }
69
74
  elsif @user == 'root'
70
75
  @dist = { :flavor => "centos",
71
76
  :package => "rhoconnect-#{Constants::RC_VERSION}.noarch.rpm",
@@ -77,7 +82,7 @@ def compile_stack_info
77
82
  :repo_src_file => '/etc/yum.repos.d/rhoconnect.repo',
78
83
  :repo_str => '[rhoconnect]\n' +
79
84
  'name=Rhoconnect\n' +
80
- "baseurl=http://#{bucket}.s3.amazonaws.com/#{packages}/rpm" +
85
+ "baseurl=http://#{BUCKET}.s3.amazonaws.com/#{channel}/rpm" +
81
86
  '\nenabled=1\n' +
82
87
  'gpgcheck=0\n' }
83
88
 
@@ -210,12 +215,19 @@ def start_servers
210
215
  end #do
211
216
  end # start_servers
212
217
 
213
- # chack_rc_service
218
+ # check_rc_service
214
219
  # Makes an HTTP request to check that the rhoconnect service is working
215
220
  def check_rc_service
216
- request = Net::HTTP.get_response(@host, '/console')
217
221
  puts "Host: #{@host}"
222
+
223
+ puts "Checking RC service."
224
+ request = nil #Defined outside block as to not limit the scope of request to the do block.
225
+ 2.times do
226
+ request = Net::HTTP.get_response(@host, '/')
227
+ end #do
228
+
218
229
  puts "Code: #{request.code} Message: #{request.message}"
230
+
219
231
  if request.code == '200'
220
232
  puts "Rhoconnect service up!"
221
233
  else
@@ -247,8 +259,6 @@ end #compute_time
247
259
  # Test Package installations
248
260
  Constants::STACKS.each do |stack|
249
261
  start_time = Time.now
250
-
251
-
252
262
 
253
263
  begin
254
264
  @stack = stack
@@ -1,27 +1,39 @@
1
+ require 'rubygems'
1
2
  require 'rake'
3
+ require 'find'
4
+ require 'fileutils'
5
+
2
6
 
3
7
  desc 'Creates and uploads apt and rpm repos.'
4
- task "build:repos", :build_type do |t, args|
8
+ task "build:repos", :build_type, :build_number do |t, args|
5
9
  # Run dependent rake jobs first
6
10
  Rake::Task['build:deb'].invoke
7
11
  Rake::Task['build:rpm'].invoke
8
- args.with_defaults :build_type => 'nightly-build'
12
+ args.with_defaults :build_type => 'nightly'
13
+ args.with_defaults :build_number => ''
9
14
  puts args
10
- # Exit if args are not valid args
11
- exit 1 if !args[:build_type].eql? "nightly-build" and !args[:build_type].eql? "release-build"
12
-
13
- require 'find'
14
- require 'fileutils'
15
+
16
+ build_type = args[:build_type]
17
+ build_number = args[:build_number]
15
18
 
16
19
  # CONSTANTS
17
20
 
18
- PKG_DIR = '/packages'
19
- BETA_PKG_DIR = '/beta-packages'
20
- BUCKET = args[:build_type].eql?('release-build') ? 'rhoconnect-test' : 'rhoconnect'
21
+ PKG_DIR = case build_type
22
+ when 'release'
23
+ '/packages'
24
+ when 'test'
25
+ '/test-packages'
26
+ when 'beta'
27
+ '/beta-packages'
28
+ else 'nightly'
29
+ '/nightly-packages'
30
+ end #case
31
+
32
+ BUCKET = 'rhoconnect'
21
33
 
22
34
  def cmd(cmd)
23
- puts cmd unless @raked
24
- system(cmd)
35
+ puts cmd
36
+ puts `#{cmd}`
25
37
  end #cmd
26
38
 
27
39
  # METHODS
@@ -29,15 +41,7 @@ task "build:repos", :build_type do |t, args|
29
41
  def prepare_destination
30
42
  # Prompt to remove the /deb directory if it exists
31
43
  if File.directory?("#{PKG_DIR}/deb")
32
- if !@raked
33
- puts "Remove #{PKG_DIR}/deb?"
34
- remove = STDIN.gets.strip.downcase.chars.first
35
- else
36
- remove = 'y'
37
- end #if
38
- if remove == 'y'
39
- cmd "sudo rm -rf #{PKG_DIR}/deb"
40
- end #if
44
+ cmd "sudo rm -rf #{PKG_DIR}/deb"
41
45
  end #if
42
46
 
43
47
  # Create deb directory if it does not already exist
@@ -70,7 +74,8 @@ task "build:repos", :build_type do |t, args|
70
74
  Find.find('./pkg') do |file|
71
75
  if !FileTest.directory?(file)
72
76
  dest_dir = File.extname(file)
73
- dest_dir[0] = '' #get rid of '.' before extension name
77
+ # get rid of '.' before extension name
78
+ dest_dir[0] = ''
74
79
  if dest_dir == 'deb' || dest_dir == 'rpm'
75
80
  if dest_dir == 'deb'
76
81
  @deb_pkg = File.basename(file)
@@ -82,31 +87,38 @@ task "build:repos", :build_type do |t, args|
82
87
  end #do
83
88
  end #copy_files
84
89
 
85
- @raked = true
86
-
87
90
  prepare_destination
88
91
 
89
92
  copy_files
93
+
94
+ if build_type != "release" &&
95
+ build_type != "test"
96
+ # Change name of packages to include build number
97
+ ['deb', 'rpm'].each do |arch|
98
+ Find.find("#{PKG_DIR}") do |file|
99
+ if !File.directory?(file) &&
100
+ file =~ /#{arch}$/
101
+ file_to_rename = File.open(file, 'r')
102
+ old_name = File.expand_path(file)
103
+ puts "Old Name:\t#{old_name}"
104
+ new_name = old_name.gsub(/(#{arch})$/, "build-#{build_number.to_s}.\\1" )
105
+ File.rename(old_name, new_name)
106
+ end #if
107
+ end #do
108
+ end #do
109
+ end #if
90
110
 
91
111
  # REPOIFY!
92
112
  cmd "sudo reprepro -b #{PKG_DIR}/deb includedeb rhoconnect #{PKG_DIR}/deb/#{@deb_pkg}"
93
113
  cmd "sudo createrepo #{PKG_DIR}/rpm"
114
+
115
+ # Create SHA1 checksum of repo dirs
116
+ checksum_dest = "#{PKG_DIR}/SHA1/"
117
+ cmd "sudo ./installer/utils/create_sha1.rb #{PKG_DIR} #{PKG_DIR}/SHA1"
94
118
 
95
- # Call S3 upload script
119
+ # Call s3_upload.rb
96
120
  ['deb', 'rpm'].each do |dir|
97
- beta = false
98
- pkg_dir = PKG_DIR
99
- Find.find("#{PKG_DIR}/#{dir}") do |file|
100
- if File.extname(file) =~ /deb|rpm/
101
- beta = file.include?('beta') ? true : false
102
- pkg_dir = BETA_PKG_DIR if beta
103
- cmd "sudo mkdir #{BETA_PKG_DIR}" unless File.directory? BETA_PKG_DIR
104
- cmd "sudo chmod 777 #{BETA_PKG_DIR}"
105
- # If one beta pkg is found, break.
106
- break if beta
107
- end #if
108
- end #do
109
- cmd "sudo cp -rf #{PKG_DIR}/#{dir} #{BETA_PKG_DIR}/#{dir}" if pkg_dir == BETA_PKG_DIR
110
- cmd "sudo ruby ./installer/utils/package_upload/s3_upload.rb #{pkg_dir}/#{dir} #{BUCKET} #{@raked}"
121
+ cmd "sudo ruby ./installer/utils/package_upload/s3_upload.rb #{PKG_DIR}/#{dir} #{BUCKET}"
111
122
  end #do
112
- end #build:repos
123
+ cmd "sudo ruby ./installer/utils/package_upload/s3_upload.rb #{PKG_DIR}/SHA1 #{BUCKET}"
124
+ end #build:repos