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,54 @@
|
|
|
1
|
+
#--
|
|
2
|
+
# Copyright 2014 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
|
+
module Vagrant
|
|
18
|
+
module Openshift
|
|
19
|
+
module Action
|
|
20
|
+
class BuildGeardImages
|
|
21
|
+
include CommandHelper
|
|
22
|
+
|
|
23
|
+
def initialize(app, env, options)
|
|
24
|
+
@app = app
|
|
25
|
+
@env = env
|
|
26
|
+
@options = options
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def call(env)
|
|
30
|
+
# FIXME: Measure what would be the appropriate timeout here as the
|
|
31
|
+
# docker build command can take quite a long time...
|
|
32
|
+
#
|
|
33
|
+
@options[:geard_images].each do |geard_image, _|
|
|
34
|
+
docker_image_name = "openshift/#{geard_image}"
|
|
35
|
+
docker_file_path = "#{Constants.build_dir}#{geard_image}"
|
|
36
|
+
build_cmd = %{
|
|
37
|
+
echo "Building #{docker_image_name} image"
|
|
38
|
+
pushd #{docker_file_path}
|
|
39
|
+
docker build --rm #{@options[:force] ? "--no-cache" : ""} -t #{docker_image_name} .
|
|
40
|
+
popd
|
|
41
|
+
}
|
|
42
|
+
if @options[:force]
|
|
43
|
+
sudo(env[:machine], build_cmd, { :timeout => 60*20 })
|
|
44
|
+
else
|
|
45
|
+
sudo(env[:machine], sync_bash_command(geard_image, build_cmd), { :timeout => 60*20 })
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
@app.call(env)
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
end
|
|
@@ -0,0 +1,39 @@
|
|
|
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
|
+
module Vagrant
|
|
18
|
+
module Openshift
|
|
19
|
+
module Action
|
|
20
|
+
class BuildSources
|
|
21
|
+
include CommandHelper
|
|
22
|
+
|
|
23
|
+
def initialize(app, env)
|
|
24
|
+
@app = app
|
|
25
|
+
@env = env
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def call(env)
|
|
29
|
+
is_fedora = env[:machine].communicate.test("test -e /etc/fedora-release")
|
|
30
|
+
hostname = env[:machine].config.vm.hostname
|
|
31
|
+
sudo(env[:machine],"echo #{hostname} > /proc/sys/kernel/hostname")
|
|
32
|
+
sudo(env[:machine], "cd #{Constants.build_dir + "builder"}; #{scl_wrapper(is_fedora,'rake update_packages')}", {timeout: 60*30})
|
|
33
|
+
|
|
34
|
+
@app.call(env)
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
end
|
|
@@ -0,0 +1,72 @@
|
|
|
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
|
+
module Vagrant
|
|
18
|
+
module Openshift
|
|
19
|
+
module Action
|
|
20
|
+
class CheckoutRepositories
|
|
21
|
+
include CommandHelper
|
|
22
|
+
|
|
23
|
+
def initialize(app, env, options={})
|
|
24
|
+
@app = app
|
|
25
|
+
@env = env
|
|
26
|
+
@options = options
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def call(env)
|
|
30
|
+
git_clone_commands = ""
|
|
31
|
+
Constants.repos.each do |repo_name, url|
|
|
32
|
+
bare_repo_name = repo_name + "-bare"
|
|
33
|
+
bare_repo_path = Constants.build_dir + bare_repo_name
|
|
34
|
+
repo_path = Constants.build_dir + repo_name
|
|
35
|
+
|
|
36
|
+
git_clone_commands += %{
|
|
37
|
+
(
|
|
38
|
+
if [ -d #{bare_repo_path} ]; then
|
|
39
|
+
rm -rf #{repo_path}
|
|
40
|
+
echo 'Cloning #{repo_name} ...'
|
|
41
|
+
git clone --quiet #{bare_repo_path} #{repo_path}
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
if @options[:branch] && @options[:branch][repo_name]
|
|
45
|
+
git_clone_commands += "cd #{repo_path}; git checkout --quiet #{@options[:branch][repo_name]}; cd #{Constants.build_dir};\n"
|
|
46
|
+
end
|
|
47
|
+
git_clone_commands += %{
|
|
48
|
+
else
|
|
49
|
+
MISSING_REPO+='#{bare_repo_name}'
|
|
50
|
+
fi
|
|
51
|
+
) &
|
|
52
|
+
PIDS+=$!\" \";
|
|
53
|
+
}
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
git_clone_commands += %{
|
|
57
|
+
[ -n \"$PIDS\" ] && wait $PIDS
|
|
58
|
+
if [ -n \"$MISSING_REPO\" ]; then
|
|
59
|
+
echo 'Missing required upstream repositories:'
|
|
60
|
+
echo $MISSING_REPO
|
|
61
|
+
echo 'To fix, execute command: vagrant clone-upstream-repos'
|
|
62
|
+
fi
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
do_execute env[:machine], git_clone_commands
|
|
66
|
+
|
|
67
|
+
@app.call(env)
|
|
68
|
+
end
|
|
69
|
+
end
|
|
70
|
+
end
|
|
71
|
+
end
|
|
72
|
+
end
|
|
@@ -0,0 +1,57 @@
|
|
|
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
|
+
module Vagrant
|
|
18
|
+
module Openshift
|
|
19
|
+
module Action
|
|
20
|
+
class CheckoutTests
|
|
21
|
+
include CommandHelper
|
|
22
|
+
|
|
23
|
+
def initialize(app, env)
|
|
24
|
+
@app = app
|
|
25
|
+
@env = env
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def call(env)
|
|
29
|
+
is_fedora = env[:machine].communicate.test("test -e /etc/fedora-release")
|
|
30
|
+
sudo env[:machine], "cd #{Constants.build_dir}/builder; #{scl_wrapper(is_fedora,'rake checkout_tests')}"
|
|
31
|
+
|
|
32
|
+
sudo env[:machine], "mkdir -p /var/www/html/binaryartifacts"
|
|
33
|
+
sudo env[:machine], "restorecon /var/www/html/binaryartifacts"
|
|
34
|
+
|
|
35
|
+
remote_write(env[:machine], "/etc/httpd/conf.d/binaryartifacts.conf", "root:root", "0644") {
|
|
36
|
+
%{#
|
|
37
|
+
# This configuration is to host the binary artifacts for use during testing.
|
|
38
|
+
# Currently the apache only hosts on https and with a cert that is not signed
|
|
39
|
+
# so curl requires -k. To get around this in testing just host it over non-ssl
|
|
40
|
+
# and test test copies the tgz file to the /var/www/html/binaryartifacts folder.
|
|
41
|
+
#
|
|
42
|
+
|
|
43
|
+
Listen 81
|
|
44
|
+
|
|
45
|
+
<VirtualHost *:81>
|
|
46
|
+
ServerName localhost
|
|
47
|
+
ServerAdmin root@localhost
|
|
48
|
+
DocumentRoot /var/www/html/binaryartifacts
|
|
49
|
+
</VirtualHost>}}
|
|
50
|
+
sudo env[:machine], "restorecon -v /etc/httpd/conf.d/binaryartifacts.conf"
|
|
51
|
+
sudo env[:machine], "service httpd restart"
|
|
52
|
+
@app.call(env)
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
end
|
|
@@ -0,0 +1,51 @@
|
|
|
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
|
+
module Vagrant
|
|
18
|
+
module Openshift
|
|
19
|
+
module Action
|
|
20
|
+
class Clean
|
|
21
|
+
include CommandHelper
|
|
22
|
+
|
|
23
|
+
def initialize(app, env)
|
|
24
|
+
@app = app
|
|
25
|
+
@env = env
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def call(env)
|
|
29
|
+
is_fedora = env[:machine].communicate.test("test -e /etc/fedora-release")
|
|
30
|
+
|
|
31
|
+
git_clone_commands = ""
|
|
32
|
+
Constants.repos.each do |repo_name, url|
|
|
33
|
+
bare_repo_name = repo_name + "-bare"
|
|
34
|
+
wc_repo_name = repo_name + "-bare-working_copy"
|
|
35
|
+
bare_repo_path = Constants.build_dir + bare_repo_name
|
|
36
|
+
repo_path = Constants.build_dir + repo_name
|
|
37
|
+
wc_repo_path = Constants.build_dir + wc_repo_name
|
|
38
|
+
|
|
39
|
+
git_clone_commands += "rm -rf #{bare_repo_path}; \n"
|
|
40
|
+
end
|
|
41
|
+
do_execute env[:machine], git_clone_commands
|
|
42
|
+
|
|
43
|
+
sudo env[:machine], "rm -rf /etc/yum.repos.d/openshift-origin.repo"
|
|
44
|
+
sudo env[:machine], "rm -rf /var/cache/yum/x86_64/19/openshift-origin" #clear OpenShift package cache
|
|
45
|
+
sudo env[:machine], "rm -f /etc/openshift/.mongo-setup-complete"
|
|
46
|
+
@app.call(env)
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
end
|
|
@@ -0,0 +1,52 @@
|
|
|
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
|
+
module Vagrant
|
|
18
|
+
module Openshift
|
|
19
|
+
module Action
|
|
20
|
+
class CleanNetworkSetup
|
|
21
|
+
include CommandHelper
|
|
22
|
+
|
|
23
|
+
def initialize(app, env)
|
|
24
|
+
@app = app
|
|
25
|
+
@env = env
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def call(env)
|
|
29
|
+
is_fedora = env[:machine].communicate.test("test -e /etc/fedora-release")
|
|
30
|
+
|
|
31
|
+
if !is_fedora
|
|
32
|
+
if env[:machine].communicate.test("test -e /etc/udev/rules.d/70-persistent-net.rules")
|
|
33
|
+
remote_write(env[:machine], "/etc/udev/rules.d/70-persistent-net.rules") do
|
|
34
|
+
%{# This file was automatically generated by the /lib/udev/write_net_rules
|
|
35
|
+
# program, run by the persistent-net-generator.rules rules file.
|
|
36
|
+
#
|
|
37
|
+
# You can modify it, as long as you keep each rule on a single
|
|
38
|
+
# line, and change only the value of the NAME= key.
|
|
39
|
+
|
|
40
|
+
}
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
sudo env[:machine], "yum clean all"
|
|
46
|
+
sudo env[:machine], "rm -f /var/lib/mlocate/mlocate.db"
|
|
47
|
+
@app.call(env)
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
end
|
|
@@ -0,0 +1,65 @@
|
|
|
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
|
+
module Vagrant
|
|
18
|
+
module Openshift
|
|
19
|
+
module Action
|
|
20
|
+
class CloneUpstreamRepositories
|
|
21
|
+
include CommandHelper
|
|
22
|
+
|
|
23
|
+
def initialize(app, env, options={})
|
|
24
|
+
@app = app
|
|
25
|
+
@env = env
|
|
26
|
+
@options = options
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def call(env)
|
|
30
|
+
remote_write(env[:machine], "/root/.ssh/config", "root:root", "0600") {
|
|
31
|
+
%{Host github.com
|
|
32
|
+
StrictHostKeyChecking no
|
|
33
|
+
UserKnownHostsFile=/dev/null
|
|
34
|
+
}}
|
|
35
|
+
|
|
36
|
+
git_clone_commands = ""
|
|
37
|
+
Constants.repos.each do |repo_name, url|
|
|
38
|
+
bare_repo_name = repo_name + "-bare"
|
|
39
|
+
bare_repo_path = Constants.build_dir + bare_repo_name
|
|
40
|
+
|
|
41
|
+
if @options[:clean]
|
|
42
|
+
git_clone_commands += "rm -fr #{bare_repo_path};\n"
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
git_clone_commands += %{
|
|
46
|
+
if [ ! -d #{bare_repo_path} ]; then
|
|
47
|
+
git clone --quiet --bare #{url} #{bare_repo_path} >/dev/null &
|
|
48
|
+
PIDS+=$!\" \"
|
|
49
|
+
fi
|
|
50
|
+
}
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
git_clone_commands += "[ -n \"$PIDS\" ] && wait $PIDS\n"
|
|
54
|
+
|
|
55
|
+
ssh_user = env[:machine].ssh_info[:username]
|
|
56
|
+
sudo(env[:machine], "mkdir -p #{Constants.build_dir}")
|
|
57
|
+
sudo(env[:machine], "mkdir -p #{Constants.build_dir + "builder"} && chown -R #{ssh_user}:#{ssh_user} #{Constants.build_dir}")
|
|
58
|
+
do_execute env[:machine], git_clone_commands
|
|
59
|
+
|
|
60
|
+
@app.call(env)
|
|
61
|
+
end
|
|
62
|
+
end
|
|
63
|
+
end
|
|
64
|
+
end
|
|
65
|
+
end
|
|
@@ -0,0 +1,54 @@
|
|
|
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
|
+
require 'xmlsimple'
|
|
17
|
+
|
|
18
|
+
module Vagrant
|
|
19
|
+
module Openshift
|
|
20
|
+
module Action
|
|
21
|
+
class CreateAMI
|
|
22
|
+
include CommandHelper
|
|
23
|
+
|
|
24
|
+
def initialize(app, env, options)
|
|
25
|
+
@app = app
|
|
26
|
+
@env = env
|
|
27
|
+
@options = options
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def call(env)
|
|
31
|
+
raise VagrantPlugins::AWS::Errors::FogError, :message => "Error: EC2 Machine is not available" unless env[:machine].state.id == :running
|
|
32
|
+
|
|
33
|
+
begin
|
|
34
|
+
machine = env[:aws_compute].servers.get(env[:machine].id)
|
|
35
|
+
image_req = env[:aws_compute].create_image(machine.identity, machine.tags["Name"], machine.tags["Name"], false)
|
|
36
|
+
image = env[:aws_compute].images.get(image_req.body["imageId"])
|
|
37
|
+
env[:machine].ui.info "Creating AMI #{image.id}"
|
|
38
|
+
while not image.ready?
|
|
39
|
+
sleep 10
|
|
40
|
+
image = env[:aws_compute].images.get(image_req.body["imageId"])
|
|
41
|
+
end
|
|
42
|
+
env[:machine].ui.info("Done")
|
|
43
|
+
rescue Excon::Errors::BadRequest => e
|
|
44
|
+
doc = XMLSimple.xml_in(e.response.body)
|
|
45
|
+
code = doc['Response']['Errors']['Error']['Code'][0]
|
|
46
|
+
message = doc['Response']['Errors']['Error']['Message'][0]
|
|
47
|
+
raise VagrantPlugins::AWS::Errors::FogError, :message => "#{message}. Code: #{code}"
|
|
48
|
+
end
|
|
49
|
+
@app.call(env)
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
end
|
|
@@ -0,0 +1,53 @@
|
|
|
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
|
+
module Vagrant
|
|
18
|
+
module Openshift
|
|
19
|
+
module Action
|
|
20
|
+
class CreateBareRepoPlaceholders
|
|
21
|
+
include CommandHelper
|
|
22
|
+
|
|
23
|
+
def initialize(app, env)
|
|
24
|
+
@app = app
|
|
25
|
+
@env = env
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def call(env)
|
|
29
|
+
remote_write(env[:machine], "/root/.ssh/config", "root:root", "0600") {
|
|
30
|
+
%{Host github.com
|
|
31
|
+
StrictHostKeyChecking no
|
|
32
|
+
UserKnownHostsFile=/dev/null
|
|
33
|
+
}}
|
|
34
|
+
|
|
35
|
+
git_clone_commands = ""
|
|
36
|
+
Constants.repos.each do |repo_name, url|
|
|
37
|
+
bare_repo_name = repo_name + "-bare"
|
|
38
|
+
bare_repo_path = Constants.build_dir + bare_repo_name
|
|
39
|
+
|
|
40
|
+
git_clone_commands += "[ ! -d #{bare_repo_path} ] && git init --bare #{bare_repo_path};\n"
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
ssh_user = env[:machine].ssh_info[:username]
|
|
44
|
+
sudo(env[:machine], "mkdir -p #{Constants.build_dir}")
|
|
45
|
+
sudo(env[:machine], "mkdir -p #{Constants.build_dir + "builder"} && chown -R #{ssh_user}:#{ssh_user} #{Constants.build_dir}")
|
|
46
|
+
do_execute env[:machine], git_clone_commands
|
|
47
|
+
|
|
48
|
+
@app.call(env)
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
end
|
|
@@ -0,0 +1,84 @@
|
|
|
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
|
+
module Vagrant
|
|
18
|
+
module Openshift
|
|
19
|
+
module Action
|
|
20
|
+
class CreatePuppetFile
|
|
21
|
+
include CommandHelper
|
|
22
|
+
|
|
23
|
+
def initialize(app, env)
|
|
24
|
+
@app = app
|
|
25
|
+
@env = env
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def call(env)
|
|
29
|
+
hostname = env[:machine].config.vm.hostname
|
|
30
|
+
domain = env[:machine].config.openshift.cloud_domain
|
|
31
|
+
key,_ = sudo(env[:machine], "cat /var/named/K#{domain}.*.key")
|
|
32
|
+
key = key.first.strip.split(' ')
|
|
33
|
+
key = "#{key[6]}#{key[7]}"
|
|
34
|
+
|
|
35
|
+
links,_ = sudo(env[:machine], "ip link")
|
|
36
|
+
links = links.map!{ |l| l.split("\n") }.flatten
|
|
37
|
+
|
|
38
|
+
links.map! do |link|
|
|
39
|
+
m = link.match(/[0-9]+: ([a-z0-9]+):/)
|
|
40
|
+
m.nil?? "lo" : m[1]
|
|
41
|
+
end
|
|
42
|
+
links.delete "lo"
|
|
43
|
+
|
|
44
|
+
remote_write(env[:machine], "#{Constants.build_dir}/configure_origin.pp") {
|
|
45
|
+
config = "
|
|
46
|
+
class { 'openshift_origin' :
|
|
47
|
+
domain => '#{domain}',
|
|
48
|
+
broker_hostname => '#{hostname}',
|
|
49
|
+
node_hostname => '#{hostname}',
|
|
50
|
+
nameserver_hostname => '#{hostname}',
|
|
51
|
+
datastore_hostname => '#{hostname}',
|
|
52
|
+
msgserver_hostname => '#{hostname}',
|
|
53
|
+
openshift_user1 => 'admin',
|
|
54
|
+
openshift_password1 => 'admin',
|
|
55
|
+
bind_key => '#{key}',
|
|
56
|
+
override_install_repo => 'file://#{Constants.build_dir}/origin-rpms',
|
|
57
|
+
development_mode => true,
|
|
58
|
+
conf_node_external_eth_dev => '#{links.first}',
|
|
59
|
+
register_host_with_nameserver => true,
|
|
60
|
+
broker_auth_plugin => 'htpasswd',
|
|
61
|
+
conf_broker_auth_salt => 'salt salt salt',
|
|
62
|
+
conf_broker_multi_haproxy_per_node => true,
|
|
63
|
+
conf_valid_gear_sizes => ['small','medium'],
|
|
64
|
+
node_frontend_plugins => ['apache-mod-rewrite','nodejs-websocket','haproxy-sni-proxy'],
|
|
65
|
+
node_unmanaged_users => ['#{env[:machine].ssh_info[:username]}'],
|
|
66
|
+
node_container_plugin => '#{env[:machine].config.openshift.container}',"
|
|
67
|
+
env[:machine].config.openshift.advanced_puppet_values.each do |k,v|
|
|
68
|
+
config += %{ #{k} => '#{v}',\n}
|
|
69
|
+
end
|
|
70
|
+
config += "\n repos_base => '#{env[:machine].config.openshift.repos_base}'," unless env[:machine].config.openshift.repos_base.nil?
|
|
71
|
+
config += "\n os_repo => '#{env[:machine].config.openshift.os_repo}'," unless env[:machine].config.openshift.os_repo.nil?
|
|
72
|
+
config += "\n os_updates_repo => '#{env[:machine].config.openshift.os_updates_repo}'," unless env[:machine].config.openshift.os_updates_repo.nil?
|
|
73
|
+
config += "\n jenkins_repo_base => '#{env[:machine].config.openshift.jenkins_repo_base }'," unless env[:machine].config.openshift.jenkins_repo_base.nil?
|
|
74
|
+
config += "\n optional_repo => '#{env[:machine].config.openshift.optional_repo}'," unless env[:machine].config.openshift.optional_repo.nil?
|
|
75
|
+
config += "\n}\n"
|
|
76
|
+
config
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
@app.call(env)
|
|
80
|
+
end
|
|
81
|
+
end
|
|
82
|
+
end
|
|
83
|
+
end
|
|
84
|
+
end
|
|
@@ -0,0 +1,36 @@
|
|
|
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
|
+
module Vagrant
|
|
18
|
+
module Openshift
|
|
19
|
+
module Action
|
|
20
|
+
class CreateTestUsers
|
|
21
|
+
include CommandHelper
|
|
22
|
+
|
|
23
|
+
def initialize(app, env)
|
|
24
|
+
@app = app
|
|
25
|
+
@env = env
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def call(env)
|
|
29
|
+
is_fedora = env[:machine].communicate.test("test -e /etc/fedora-release")
|
|
30
|
+
sudo env[:machine], "cd #{Constants.build_dir}/builder; #{scl_wrapper(is_fedora,'rake create_test_users')}"
|
|
31
|
+
@app.call(env)
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
end
|