vagrant-openshift 1.0.9
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitattributes +1 -0
- data/.gitignore +24 -0
- data/Gemfile +11 -0
- data/LICENSE.txt +13 -0
- data/README.asciidoc +379 -0
- data/Rakefile +53 -0
- data/lib/vagrant-openshift/action/build_geard.rb +41 -0
- data/lib/vagrant-openshift/action/build_geard_broker.rb +59 -0
- data/lib/vagrant-openshift/action/build_geard_console.rb +55 -0
- data/lib/vagrant-openshift/action/build_geard_images.rb +54 -0
- data/lib/vagrant-openshift/action/build_sources.rb +39 -0
- data/lib/vagrant-openshift/action/checkout_repositories.rb +72 -0
- data/lib/vagrant-openshift/action/checkout_tests.rb +57 -0
- data/lib/vagrant-openshift/action/clean.rb +51 -0
- data/lib/vagrant-openshift/action/clean_network_setup.rb +52 -0
- data/lib/vagrant-openshift/action/clone_upstream_repositories.rb +65 -0
- data/lib/vagrant-openshift/action/create_ami.rb +54 -0
- data/lib/vagrant-openshift/action/create_bare_repo_placeholders.rb +53 -0
- data/lib/vagrant-openshift/action/create_puppet_file.rb +84 -0
- data/lib/vagrant-openshift/action/create_test_users.rb +36 -0
- data/lib/vagrant-openshift/action/create_yum_repositories.rb +121 -0
- data/lib/vagrant-openshift/action/download_artifacts.rb +70 -0
- data/lib/vagrant-openshift/action/generate_template.rb +89 -0
- data/lib/vagrant-openshift/action/idle_all_gears.rb +36 -0
- data/lib/vagrant-openshift/action/install_build_dependencies.rb +48 -0
- data/lib/vagrant-openshift/action/install_geard.rb +76 -0
- data/lib/vagrant-openshift/action/install_geard_base_dependencies.rb +72 -0
- data/lib/vagrant-openshift/action/install_geard_broker.rb +39 -0
- data/lib/vagrant-openshift/action/install_geard_images.rb +51 -0
- data/lib/vagrant-openshift/action/install_open_shift_dependencies.rb +50 -0
- data/lib/vagrant-openshift/action/install_rhc.rb +42 -0
- data/lib/vagrant-openshift/action/local_geard_checkout.rb +58 -0
- data/lib/vagrant-openshift/action/local_repo_checkout.rb +47 -0
- data/lib/vagrant-openshift/action/modify_ami.rb +54 -0
- data/lib/vagrant-openshift/action/modify_instance.rb +71 -0
- data/lib/vagrant-openshift/action/prepare_ssh_config.rb +89 -0
- data/lib/vagrant-openshift/action/preserve_mcollective_logs.rb +48 -0
- data/lib/vagrant-openshift/action/restart_geard.rb +39 -0
- data/lib/vagrant-openshift/action/restart_geard_broker.rb +43 -0
- data/lib/vagrant-openshift/action/restart_geard_console.rb +43 -0
- data/lib/vagrant-openshift/action/run_geard_tests.rb +57 -0
- data/lib/vagrant-openshift/action/run_tests.rb +47 -0
- data/lib/vagrant-openshift/action/set_host_name.rb +43 -0
- data/lib/vagrant-openshift/action/setup_bind_dns_key.rb +38 -0
- data/lib/vagrant-openshift/action/setup_bind_host.rb +141 -0
- data/lib/vagrant-openshift/action/setup_builder_files.rb +57 -0
- data/lib/vagrant-openshift/action/setup_geard_broker.rb +71 -0
- data/lib/vagrant-openshift/action/sync_local_repository.rb +115 -0
- data/lib/vagrant-openshift/action/sync_upstream_repository.rb +71 -0
- data/lib/vagrant-openshift/action/test_exit_code.rb +36 -0
- data/lib/vagrant-openshift/action/uninstall_openshift_rpms.rb +37 -0
- data/lib/vagrant-openshift/action/yum_update.rb +67 -0
- data/lib/vagrant-openshift/action.rb +308 -0
- data/lib/vagrant-openshift/command/build_geard.rb +51 -0
- data/lib/vagrant-openshift/command/build_geard_base.rb +51 -0
- data/lib/vagrant-openshift/command/build_geard_broker.rb +59 -0
- data/lib/vagrant-openshift/command/build_geard_console.rb +59 -0
- data/lib/vagrant-openshift/command/build_geard_images.rb +68 -0
- data/lib/vagrant-openshift/command/build_origin_base.rb +51 -0
- data/lib/vagrant-openshift/command/checkout_repositories.rb +55 -0
- data/lib/vagrant-openshift/command/clone_upstream_repositories.rb +54 -0
- data/lib/vagrant-openshift/command/create_ami.rb +49 -0
- data/lib/vagrant-openshift/command/install_geard.rb +51 -0
- data/lib/vagrant-openshift/command/install_geard_broker.rb +51 -0
- data/lib/vagrant-openshift/command/install_rhc.rb +49 -0
- data/lib/vagrant-openshift/command/local_geard_setup.rb +62 -0
- data/lib/vagrant-openshift/command/local_repo_setup.rb +62 -0
- data/lib/vagrant-openshift/command/modify_ami.rb +54 -0
- data/lib/vagrant-openshift/command/modify_instance.rb +63 -0
- data/lib/vagrant-openshift/command/openshift_init.rb +83 -0
- data/lib/vagrant-openshift/command/repo_sync.rb +73 -0
- data/lib/vagrant-openshift/command/repo_sync_geard.rb +78 -0
- data/lib/vagrant-openshift/command/restart_geard.rb +51 -0
- data/lib/vagrant-openshift/command/restart_geard_broker.rb +51 -0
- data/lib/vagrant-openshift/command/restart_geard_console.rb +51 -0
- data/lib/vagrant-openshift/command/setup_geard_broker.rb +49 -0
- data/lib/vagrant-openshift/command/test.rb +108 -0
- data/lib/vagrant-openshift/command/test_geard.rb +59 -0
- data/lib/vagrant-openshift/command/test_geard_image.rb +147 -0
- data/lib/vagrant-openshift/config.rb +56 -0
- data/lib/vagrant-openshift/constants.rb +111 -0
- data/lib/vagrant-openshift/helper/command_helper.rb +213 -0
- data/lib/vagrant-openshift/plugin.rb +171 -0
- data/lib/vagrant-openshift/provisioner.rb +82 -0
- data/lib/vagrant-openshift/templates/builder/Rakefile +231 -0
- data/lib/vagrant-openshift/templates/builder/lib/.gitkeep +0 -0
- data/lib/vagrant-openshift/templates/builder/lib/rpm.rb +248 -0
- data/lib/vagrant-openshift/templates/builder/lib/test.rb +432 -0
- data/lib/vagrant-openshift/templates/builder/yum-listbuilddep +124 -0
- data/lib/vagrant-openshift/templates/command/init-openshift/Vagrantfile.erb +175 -0
- data/lib/vagrant-openshift/templates/command/init-openshift/box_info.yaml +152 -0
- data/lib/vagrant-openshift/version.rb +21 -0
- data/lib/vagrant-openshift.rb +34 -0
- data/vagrant-openshift.gemspec +43 -0
- metadata +234 -0
@@ -0,0 +1,231 @@
|
|
1
|
+
#--
|
2
|
+
# Copyright 2013 Red Hat, Inc.
|
3
|
+
#
|
4
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
+
# you may not use this file except in compliance with the License.
|
6
|
+
# You may obtain a copy of the License at
|
7
|
+
#
|
8
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
9
|
+
#
|
10
|
+
# Unless required by applicable law or agreed to in writing, software
|
11
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
12
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
13
|
+
# See the License for the specific language governing permissions and
|
14
|
+
# limitations under the License.
|
15
|
+
#++
|
16
|
+
|
17
|
+
require 'rubygems'
|
18
|
+
require 'pathname'
|
19
|
+
require 'yaml'
|
20
|
+
require 'tsort'
|
21
|
+
require_relative 'lib/constants'
|
22
|
+
require_relative 'lib/options'
|
23
|
+
require_relative 'lib/rpm'
|
24
|
+
require_relative 'lib/test'
|
25
|
+
$stdout.sync = true
|
26
|
+
$stderr.sync = true
|
27
|
+
|
28
|
+
VALID_IP_ADDR_RE = Regexp.new('^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$')
|
29
|
+
|
30
|
+
task :install_deps do
|
31
|
+
spec_files = RPM::get_packages(ignore_packages: OPTIONS[:ignore_packages], ignore_cache: true)
|
32
|
+
|
33
|
+
all_build_dependencies = []
|
34
|
+
all_inst_dependencies = []
|
35
|
+
spec_files.each do |spec|
|
36
|
+
all_build_dependencies += spec[:build_deps]
|
37
|
+
all_inst_dependencies += spec[:deps]
|
38
|
+
end
|
39
|
+
|
40
|
+
all_packages = all_build_dependencies + all_inst_dependencies
|
41
|
+
|
42
|
+
all_packages.map! do |name|
|
43
|
+
m = name.match(/(ruby193-)?rubygem[(]([a-z\-_]*)[)]/)
|
44
|
+
if m.nil?
|
45
|
+
name.strip
|
46
|
+
else
|
47
|
+
scl_prefix = m[1].nil? ? "" : m[1]
|
48
|
+
"#{scl_prefix}rubygem-#{m[2]}".strip
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
all_packages.delete_if { |name| name.match(/openshift/)}
|
53
|
+
|
54
|
+
RPM::install_rpms(all_packages)
|
55
|
+
end
|
56
|
+
|
57
|
+
task :build_all do
|
58
|
+
FileUtils.rm_rf("/tmp/tito/*")
|
59
|
+
spec_files = RPM::get_packages(remove_os_build_deps: true, ignore_packages: OPTIONS[:ignore_packages], ignore_cache: true)
|
60
|
+
RPM::build_packages(spec_files)
|
61
|
+
end
|
62
|
+
|
63
|
+
task :clean_rpms do
|
64
|
+
FileUtils.rm_rf("/tmp/tito/*")
|
65
|
+
RPM::uninstall_openshift
|
66
|
+
end
|
67
|
+
|
68
|
+
task :install_puppet do
|
69
|
+
Dir.chdir((Vagrant::Openshift::Constants.build_dir + "puppet-openshift_origin").to_s) do
|
70
|
+
FileUtils.rm_rf "pkg"
|
71
|
+
system("puppet module build .")
|
72
|
+
pkg = Dir.glob((Vagrant::Openshift::Constants.build_dir + "puppet-openshift_origin/pkg/openshift-openshift_origin*.tar.gz").to_s).first
|
73
|
+
system("puppet module uninstall openshift-openshift_origin")
|
74
|
+
system("puppet module install #{pkg}")
|
75
|
+
system("rm -rf #{Vagrant::Openshift::Constants.build_dir + "puppet-openshift_origin/pkg"}")
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
task :update_packages do
|
80
|
+
if (Vagrant::Openshift::Constants.build_dir + ".built_packages").exist?
|
81
|
+
print "Updating packages\n"
|
82
|
+
RPM::updated_packages
|
83
|
+
else
|
84
|
+
print "Building all packages\n"
|
85
|
+
Rake::Task['build_all'].invoke
|
86
|
+
print "Installing openshift puppet module\n"
|
87
|
+
Rake::Task['install_puppet'].invoke
|
88
|
+
print "Applying openshift puppet recipe\n"
|
89
|
+
system("puppet apply --verbose #{Vagrant::Openshift::Constants.build_dir + 'configure_origin.pp'}")
|
90
|
+
end
|
91
|
+
Rake::Task['restart_services'].invoke
|
92
|
+
end
|
93
|
+
|
94
|
+
task :restart_services do
|
95
|
+
is_fedora=File.exists?("/etc/fedora-release")
|
96
|
+
system(Vagrant::Openshift::Constants.restart_services_cmd(is_fedora).join("\n"))
|
97
|
+
cmd = ""
|
98
|
+
OPTIONS[:additional_services].each do |service|
|
99
|
+
cmd += "service #{service} restart;"
|
100
|
+
end
|
101
|
+
system(cmd)
|
102
|
+
|
103
|
+
unless system("service openshift-tc status 2>/dev/null 1>/dev/null")
|
104
|
+
system("service openshift-tc reload")
|
105
|
+
end
|
106
|
+
|
107
|
+
# TODO: Replace this temporary fix with a complete post-install routine
|
108
|
+
`oo-admin-ctl-cartridge -c import-node --activate --obsolete && RAILS_ENV=test oo-admin-ctl-cartridge -c import-node --activate --obsolete`
|
109
|
+
end
|
110
|
+
|
111
|
+
task :checkout_tests do
|
112
|
+
print "Updating remote tests..."
|
113
|
+
system "rm -rf #{Vagrant::Openshift::Constants.build_dir}/openshift-test"
|
114
|
+
git_archive_commands = ''
|
115
|
+
Vagrant::Openshift::Constants.repos.each do |repo_name, url|
|
116
|
+
repo_dir = "#{Vagrant::Openshift::Constants.build_dir}/#{repo_name}-bare"
|
117
|
+
git_archive_commands += "pushd #{repo_dir} > /dev/null; git archive --prefix openshift-test/ --format=tar 'HEAD' | (cd #{Vagrant::Openshift::Constants.build_dir} && tar --warning=no-timestamp -xf -); popd > /dev/null; "
|
118
|
+
end
|
119
|
+
git_archive_commands += "pushd #{Vagrant::Openshift::Constants.build_dir}/rhc-bare > /dev/null; git archive --prefix openshift-test/rhc/ --format=tar 'HEAD' | (cd #{Vagrant::Openshift::Constants.build_dir} && tar --warning=no-timestamp -xf -); popd > /dev/null; "
|
120
|
+
|
121
|
+
system %{
|
122
|
+
set -e;
|
123
|
+
rm -rf #{Vagrant::Openshift::Constants.build_dir}/openshift-test
|
124
|
+
#{git_archive_commands}
|
125
|
+
mkdir -p /tmp/rhc/junit
|
126
|
+
}
|
127
|
+
|
128
|
+
system(%{
|
129
|
+
rm -rf #{Vagrant::Openshift::Constants.build_dir}/openshift-test/tests;
|
130
|
+
ln -s #{Vagrant::Openshift::Constants.build_dir}/openshift-test/controller/test/cucumber #{Vagrant::Openshift::Constants.build_dir}/openshift-test/tests
|
131
|
+
})
|
132
|
+
print "done\n"
|
133
|
+
end
|
134
|
+
|
135
|
+
task :create_test_users do
|
136
|
+
system("mkdir -p /etc/openshift && touch /etc/openshift/htpasswd")
|
137
|
+
['test_user@test.com', 'user_with_multiple_gear_sizes@test.com', 'user_with_extra_storage@test.com', 'user_with_certificate_capabilities@test.com']. each do |user|
|
138
|
+
unless system("/usr/bin/curl -f -k https://broker.example.com/broker/rest/user -u #{user}:test 2>/dev/null 1>/dev/null")
|
139
|
+
|
140
|
+
# Try to create the user record
|
141
|
+
print "Creating test user: #{user}\n"
|
142
|
+
user_created = false
|
143
|
+
create_retries = 0
|
144
|
+
while create_retries < 3 do
|
145
|
+
user_created = system("/usr/bin/htpasswd -b /etc/openshift/htpasswd #{user} test")
|
146
|
+
break if user_created
|
147
|
+
create_retries = create_retries + 1
|
148
|
+
print "Could not add user #{user} to htpasswd file on attempt #{create_retries}\n"
|
149
|
+
sleep 2
|
150
|
+
end
|
151
|
+
if not user_created
|
152
|
+
print "Unable to add user '#{user}' to /etc/openshift/htpasswd\n"
|
153
|
+
exit 1
|
154
|
+
end
|
155
|
+
|
156
|
+
# Test the user record via the REST API
|
157
|
+
rest_connected = false
|
158
|
+
rest_retries = 0
|
159
|
+
while rest_retries < 3 do
|
160
|
+
rest_connected = system("/usr/bin/curl -f -k https://broker.example.com/broker/rest/user -u #{user}:test 2>/dev/null 1>/dev/null")
|
161
|
+
break if rest_connected
|
162
|
+
rest_retries = rest_retries + 1
|
163
|
+
print "Could not verify user #{user} via the REST API on attempt #{rest_retries}\n"
|
164
|
+
sleep 10
|
165
|
+
end
|
166
|
+
if not rest_connected
|
167
|
+
print "Unable to verify user #{user} via the REST API\n"
|
168
|
+
exit 1
|
169
|
+
end
|
170
|
+
else
|
171
|
+
print "#{user} already exists\n"
|
172
|
+
end
|
173
|
+
end
|
174
|
+
|
175
|
+
# Create a known test user with medium-sized gears
|
176
|
+
# This must be done before the deployment of application templates!
|
177
|
+
exitcode = system("/usr/sbin/oo-admin-ctl-user -l user_with_multiple_gear_sizes@test.com --addgearsize medium")
|
178
|
+
if(!exitcode)
|
179
|
+
print "Unable to assign medium gear capability to user_with_multiple_gear_sizes@test.com"
|
180
|
+
exit 1
|
181
|
+
end
|
182
|
+
|
183
|
+
# Create a test user with additional storage capabilities
|
184
|
+
exitcode = system("/usr/sbin/oo-admin-ctl-user -l user_with_extra_storage@test.com --setmaxuntrackedstorage 5 --setmaxgears 10")
|
185
|
+
if(!exitcode)
|
186
|
+
print "Unable to assign additional storage to user_with_extra_storage@test.com"
|
187
|
+
exit 1
|
188
|
+
end
|
189
|
+
|
190
|
+
# Create a test user with ssl certificates capabilities
|
191
|
+
exitcode = system("/usr/sbin/oo-admin-ctl-user -l user_with_certificate_capabilities@test.com --allowprivatesslcertificates true")
|
192
|
+
if(!exitcode)
|
193
|
+
print "Unable to assign ssl certificates capabilities to user_with_certificate_capabilities@test.com"
|
194
|
+
exit 1
|
195
|
+
end
|
196
|
+
|
197
|
+
unless system("test -e /root/.ssh/id_rsa")
|
198
|
+
system("ssh-keygen -q -f /root/.ssh/id_rsa -P \"\" </dev/null")
|
199
|
+
end
|
200
|
+
end
|
201
|
+
|
202
|
+
task :idle_all_gears do
|
203
|
+
Test.new.idle_all_gears
|
204
|
+
end
|
205
|
+
|
206
|
+
task :run_tests do
|
207
|
+
options = {}
|
208
|
+
options[:fixme] = ENV["fixme"] == "true"
|
209
|
+
if ENV["extended"] == "true"
|
210
|
+
options[:gear_extended] = ENV["gear"] == "true"
|
211
|
+
options[:node_extended] = ENV["node"] == "true"
|
212
|
+
options[:cart_extended] = ENV["cart"] == "true"
|
213
|
+
options[:broker_extended] = ENV["broker"] == "true"
|
214
|
+
options[:rhc_extended] = ENV["rhc"] == "true"
|
215
|
+
options[:console_extended] = ENV["console"] == "true"
|
216
|
+
options[:node] = false
|
217
|
+
options[:cart] = false
|
218
|
+
options[:broker] = false
|
219
|
+
options[:rhc] = false
|
220
|
+
options[:console] = false
|
221
|
+
else
|
222
|
+
options[:gear] = ENV["gear"] == "true"
|
223
|
+
options[:node] = ENV["node"] == "true"
|
224
|
+
options[:cart] = ENV["cart"] == "true"
|
225
|
+
options[:broker] = ENV["broker"] == "true"
|
226
|
+
options[:rhc] = ENV["rhc"] == "true"
|
227
|
+
options[:console] = ENV["console"] == "true"
|
228
|
+
end
|
229
|
+
|
230
|
+
Test.new.test(options)
|
231
|
+
end
|
File without changes
|
@@ -0,0 +1,248 @@
|
|
1
|
+
#--
|
2
|
+
# Copyright 2013 Red Hat, Inc.
|
3
|
+
#
|
4
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
+
# you may not use this file except in compliance with the License.
|
6
|
+
# You may obtain a copy of the License at
|
7
|
+
#
|
8
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
9
|
+
#
|
10
|
+
# Unless required by applicable law or agreed to in writing, software
|
11
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
12
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
13
|
+
# See the License for the specific language governing permissions and
|
14
|
+
# limitations under the License.
|
15
|
+
#++
|
16
|
+
|
17
|
+
require_relative 'constants'
|
18
|
+
require_relative 'options'
|
19
|
+
require 'tempfile'
|
20
|
+
require 'fileutils'
|
21
|
+
require 'pathname'
|
22
|
+
require 'yaml'
|
23
|
+
|
24
|
+
class RPM
|
25
|
+
def self.get_packages(options={})
|
26
|
+
spec_cache = Pathname.new(Vagrant::Openshift::Constants.build_dir + ".spec_cache")
|
27
|
+
if spec_cache.exist? && !options[:ignore_cache]
|
28
|
+
return YAML.load(File.open(spec_cache.to_s))
|
29
|
+
end
|
30
|
+
|
31
|
+
parent_dir = Pathname.new(File.expand_path("__FILE__/../../"))
|
32
|
+
|
33
|
+
#find all spec files
|
34
|
+
spec_files = []
|
35
|
+
Vagrant::Openshift::Constants.repos.each do |name, url|
|
36
|
+
repo_dir = parent_dir + name
|
37
|
+
spec_files += Dir.glob((repo_dir + "**/*.spec").to_s).map{ |p| {path: p}}
|
38
|
+
end
|
39
|
+
|
40
|
+
#exclude ones that have not been tagged
|
41
|
+
source_package_names = []
|
42
|
+
spec_files.delete_if do |spec|
|
43
|
+
spec[:name] = `rpm -q --specfile --queryformat '%{NAME}\n' #{spec[:path]}`.split("\n")[0]
|
44
|
+
spec[:version] = `rpm -q --specfile --queryformat '%{VERSION}\n' #{spec[:path]}`.split("\n")[0]
|
45
|
+
source_package_names << spec[:name]
|
46
|
+
spec[:dir] = Pathname.new(spec[:path]).dirname
|
47
|
+
is_tagged = Dir.chdir(spec[:dir]) { system "git tag | grep '#{spec[:name]}' 2>&1 1>/dev/null" }
|
48
|
+
is_spec_bad = false
|
49
|
+
if is_tagged
|
50
|
+
begin
|
51
|
+
spec[:build_deps] = YAML.load(`./yum-listbuilddep #{spec[:path]}`.split("\n").last)
|
52
|
+
raise "Bad spec" if spec[:build_deps].class == Hash
|
53
|
+
spec[:deps] = `rpm -q --specfile --requires #{spec[:path]}`.split("\n")
|
54
|
+
rescue Exception => e
|
55
|
+
next true
|
56
|
+
end
|
57
|
+
else
|
58
|
+
puts "\n\nSkipping '#{spec[:name]}' in '#{spec[:dir]}' since it is not tagged.\n"
|
59
|
+
next true
|
60
|
+
end
|
61
|
+
|
62
|
+
options.has_key?(:ignore_packages) && options[:ignore_packages].include?(spec[:name])
|
63
|
+
end
|
64
|
+
|
65
|
+
if(options.has_key?(:remove_os_build_deps) && options[:remove_os_build_deps])
|
66
|
+
#remove deps provided by OS and keep only the ones that will be built from source
|
67
|
+
spec_files.each do |spec|
|
68
|
+
spec[:build_deps].delete_if{ |dep| not source_package_names.include? dep }
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
File.open(spec_cache.to_s, "w") do |file|
|
73
|
+
file.write(spec_files.to_yaml)
|
74
|
+
end
|
75
|
+
|
76
|
+
spec_files
|
77
|
+
end
|
78
|
+
|
79
|
+
def self.install_rpms(list)
|
80
|
+
print "Installing #{list.size} in chunks of 20 packages"
|
81
|
+
list.uniq.each_slice(20) do |sub_list|
|
82
|
+
system %{yum install -y --skip-broken "#{sub_list.join('" "')}"}
|
83
|
+
end
|
84
|
+
end
|
85
|
+
|
86
|
+
def self.uninstall_openshift
|
87
|
+
#undo pam.d sshd modification
|
88
|
+
if system("grep -n 'pam_openshift' /etc/pam.d/sshd")
|
89
|
+
file = Tempfile.new('temp')
|
90
|
+
begin
|
91
|
+
file.write(%{
|
92
|
+
set /files/etc/pam.d/sshd/#comment[.='pam_openshift.so close should be the first session rule'] 'pam_selinux.so close should be the first session rule'
|
93
|
+
ins 01 before /files/etc/pam.d/sshd/*[argument='close']
|
94
|
+
set /files/etc/pam.d/sshd/01/type session
|
95
|
+
set /files/etc/pam.d/sshd/01/control required
|
96
|
+
set /files/etc/pam.d/sshd/01/module pam_selinux.so
|
97
|
+
set /files/etc/pam.d/sshd/01/argument close
|
98
|
+
|
99
|
+
set /files/etc/pam.d/sshd/#comment[.='pam_openshift.so open should only be followed by sessions to be executed in the user context'] 'pam_selinux.so open should only be followed by sessions to be executed in the user context'
|
100
|
+
ins 02 before /files/etc/pam.d/sshd/*[argument='open']
|
101
|
+
set /files/etc/pam.d/sshd/02/type session
|
102
|
+
set /files/etc/pam.d/sshd/02/control required
|
103
|
+
set /files/etc/pam.d/sshd/02/module pam_selinux.so
|
104
|
+
set /files/etc/pam.d/sshd/02/argument[1] open
|
105
|
+
set /files/etc/pam.d/sshd/02/argument[2] env_params
|
106
|
+
|
107
|
+
rm /files/etc/pam.d/sshd/*[module='pam_openshift.so']
|
108
|
+
rm /files/etc/pam.d/sshd/*[module='pam_namespace.so']
|
109
|
+
rm /files/etc/pam.d/sshd/*[module='pam_cgroup.so']
|
110
|
+
rm /files/etc/pam.d/sshd/*[module='pam_succeed_if.so']
|
111
|
+
save
|
112
|
+
})
|
113
|
+
file.close
|
114
|
+
system("augtool --file #{file.path}")
|
115
|
+
ensure
|
116
|
+
file.unlink
|
117
|
+
end
|
118
|
+
end
|
119
|
+
FileUtils.rm_rf("/etc/openshift")
|
120
|
+
|
121
|
+
get_packages(ignore_cache: true).each_slice(10) do |spec_files_list|
|
122
|
+
sub_list = spec_files_list.map {|s| s[:name] }
|
123
|
+
system %{yum erase -y "#{sub_list.join('" "')}"}
|
124
|
+
end
|
125
|
+
end
|
126
|
+
|
127
|
+
def self.build_packages(spec_files, opts={})
|
128
|
+
built_specs = []
|
129
|
+
|
130
|
+
FileUtils.mkdir_p "/tmp/tito/noarch/"
|
131
|
+
FileUtils.mkdir_p (Vagrant::Openshift::Constants.build_dir + "origin-rpms").to_s
|
132
|
+
FileUtils.mkdir_p (Vagrant::Openshift::Constants.build_dir + "origin-srpms").to_s
|
133
|
+
(1..3).each do |phase|
|
134
|
+
print "Build phase #{phase}\n"
|
135
|
+
buildable = []
|
136
|
+
|
137
|
+
#install pre reqs if they have already been built
|
138
|
+
spec_files.each do |spec|
|
139
|
+
spec[:build_deps].delete_if do |dep|
|
140
|
+
if opts[:assume_deps_built] || built_specs.map{ |s| s[:name] }.include?(dep)
|
141
|
+
puts "\n Installing...#{dep}"
|
142
|
+
raise "Unable to install package #{package.name}" unless system("rpm -Uvh --force /tmp/tito/noarch/#{dep}*.rpm")
|
143
|
+
true
|
144
|
+
else
|
145
|
+
false
|
146
|
+
end
|
147
|
+
end
|
148
|
+
end
|
149
|
+
|
150
|
+
buildable = spec_files.select{ |spec| spec[:build_deps].size == 0 }
|
151
|
+
|
152
|
+
buildable.each do |spec|
|
153
|
+
Dir.chdir(spec[:dir]) do
|
154
|
+
puts "\n#{'-'*60}"
|
155
|
+
system "rm -f /tmp/tito/noarch/#{spec[:name]}*.rpm"
|
156
|
+
system "rm -f /tmp/tito/#{spec[:name]}*.src.rpm"
|
157
|
+
|
158
|
+
raise "Unable to build #{spec[:name]}" unless system("tito build --rpm --test")
|
159
|
+
|
160
|
+
Dir.glob('/tmp/tito/x86_64/*.rpm').each {|file|
|
161
|
+
FileUtils.mv file, "/tmp/tito/noarch/"
|
162
|
+
}
|
163
|
+
Dir.glob("/tmp/tito/noarch/#{spec[:name]}*.rpm").each do |file|
|
164
|
+
FileUtils.rm_f (Vagrant::Openshift::Constants.build_dir + "origin-rpms/" + "#{spec[:name]}*.rpm").to_s
|
165
|
+
FileUtils.cp file, (Vagrant::Openshift::Constants.build_dir + "origin-rpms/").to_s
|
166
|
+
end
|
167
|
+
Dir.glob('/tmp/tito/*.src.rpm').each {|file|
|
168
|
+
FileUtils.rm_f (Vagrant::Openshift::Constants.build_dir + "origin-srpms/" + "#{spec[:name]}*.src.rpm").to_s
|
169
|
+
FileUtils.mv file, (Vagrant::Openshift::Constants.build_dir + "origin-srpms/").to_s
|
170
|
+
}
|
171
|
+
|
172
|
+
built_specs << spec
|
173
|
+
spec_files.delete(spec)
|
174
|
+
end
|
175
|
+
end
|
176
|
+
end
|
177
|
+
|
178
|
+
File.open((Vagrant::Openshift::Constants.build_dir + ".built_packages").to_s, "w") do |file|
|
179
|
+
file.write(tito_report.to_yaml)
|
180
|
+
end
|
181
|
+
|
182
|
+
print "Updating local repo for built sources"
|
183
|
+
Dir.chdir((Vagrant::Openshift::Constants.build_dir + "origin-rpms/").to_s) do
|
184
|
+
system("createrepo .")
|
185
|
+
system("yum clean all")
|
186
|
+
end
|
187
|
+
|
188
|
+
built_specs
|
189
|
+
end
|
190
|
+
|
191
|
+
def self.updated_packages
|
192
|
+
spec_files = get_updated_packages
|
193
|
+
built_packages = build_packages(spec_files, {assume_deps_built: true})
|
194
|
+
built_packages.each do |spec|
|
195
|
+
unless system("rpm -Uvh --force #{Vagrant::Openshift::Constants.build_dir + "origin-rpms"}/#{spec[:name]}*.rpm")
|
196
|
+
unless system("rpm -e --justdb --nodeps #{spec[:name]}; yum install -y #{Vagrant::Openshift::Constants.build_dir + "origin-rpms"}/#{spec[:name]}*.rpm")
|
197
|
+
print "Unable to install updated package #{spec[:name]}"
|
198
|
+
exit 1
|
199
|
+
end
|
200
|
+
end
|
201
|
+
end
|
202
|
+
end
|
203
|
+
|
204
|
+
private
|
205
|
+
|
206
|
+
def self.get_updated_packages
|
207
|
+
raise "Please perform full build with 'rake openshift:build_all' before running sync" unless (Vagrant::Openshift::Constants.build_dir + ".built_packages").exist?
|
208
|
+
|
209
|
+
spec_files = get_packages(remove_os_build_deps: true)
|
210
|
+
cur_report = tito_report
|
211
|
+
old_report = YAML.load(File.new((Vagrant::Openshift::Constants.build_dir + ".built_packages").to_s))
|
212
|
+
|
213
|
+
updated_packages = []
|
214
|
+
spec_files.each do |spec|
|
215
|
+
cur_package_report = cur_report[spec[:name]]
|
216
|
+
old_package_report = old_report[spec[:name]]
|
217
|
+
|
218
|
+
if (old_package_report.nil? && !cur_package_report.nil?) ||
|
219
|
+
(!cur_package_report.nil? && cur_package_report[:version] != old_package_report[:version]) ||
|
220
|
+
(!cur_package_report.nil? && cur_package_report[:untagged_revisions] != old_package_report[:untagged_revisions])
|
221
|
+
updated_packages << spec unless OPTIONS[:ignore_packages].include?(spec[:name])
|
222
|
+
end
|
223
|
+
end
|
224
|
+
|
225
|
+
updated_packages
|
226
|
+
end
|
227
|
+
|
228
|
+
def self.tito_report
|
229
|
+
packages = {}
|
230
|
+
Vagrant::Openshift::Constants.repos.each do |name, url|
|
231
|
+
Dir.chdir((Vagrant::Openshift::Constants.build_dir + name).to_s) do
|
232
|
+
tito_report = `tito report --untagged-commits`
|
233
|
+
tito_report = tito_report.split(/[-]+{10,100}[\n]/)
|
234
|
+
tito_report.shift
|
235
|
+
|
236
|
+
tito_report.each do |package_report|
|
237
|
+
package_report = package_report.split("\n")
|
238
|
+
m = package_report.shift.match(/([a-z0-9\-]+)-([\d\.\-]+)..HEAD/)
|
239
|
+
packages[m[1]] = {
|
240
|
+
version: m[2],
|
241
|
+
untagged_revisions: package_report.map{ |line| line.split(" ")[0] }
|
242
|
+
}
|
243
|
+
end
|
244
|
+
end
|
245
|
+
end
|
246
|
+
packages
|
247
|
+
end
|
248
|
+
end
|