vagrant-openshift 1.0.9
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 +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
|