vagrant-openshift 1.0.9

Sign up to get free protection for your applications and to get access to all the features.
Files changed (96) hide show
  1. checksums.yaml +7 -0
  2. data/.gitattributes +1 -0
  3. data/.gitignore +24 -0
  4. data/Gemfile +11 -0
  5. data/LICENSE.txt +13 -0
  6. data/README.asciidoc +379 -0
  7. data/Rakefile +53 -0
  8. data/lib/vagrant-openshift/action/build_geard.rb +41 -0
  9. data/lib/vagrant-openshift/action/build_geard_broker.rb +59 -0
  10. data/lib/vagrant-openshift/action/build_geard_console.rb +55 -0
  11. data/lib/vagrant-openshift/action/build_geard_images.rb +54 -0
  12. data/lib/vagrant-openshift/action/build_sources.rb +39 -0
  13. data/lib/vagrant-openshift/action/checkout_repositories.rb +72 -0
  14. data/lib/vagrant-openshift/action/checkout_tests.rb +57 -0
  15. data/lib/vagrant-openshift/action/clean.rb +51 -0
  16. data/lib/vagrant-openshift/action/clean_network_setup.rb +52 -0
  17. data/lib/vagrant-openshift/action/clone_upstream_repositories.rb +65 -0
  18. data/lib/vagrant-openshift/action/create_ami.rb +54 -0
  19. data/lib/vagrant-openshift/action/create_bare_repo_placeholders.rb +53 -0
  20. data/lib/vagrant-openshift/action/create_puppet_file.rb +84 -0
  21. data/lib/vagrant-openshift/action/create_test_users.rb +36 -0
  22. data/lib/vagrant-openshift/action/create_yum_repositories.rb +121 -0
  23. data/lib/vagrant-openshift/action/download_artifacts.rb +70 -0
  24. data/lib/vagrant-openshift/action/generate_template.rb +89 -0
  25. data/lib/vagrant-openshift/action/idle_all_gears.rb +36 -0
  26. data/lib/vagrant-openshift/action/install_build_dependencies.rb +48 -0
  27. data/lib/vagrant-openshift/action/install_geard.rb +76 -0
  28. data/lib/vagrant-openshift/action/install_geard_base_dependencies.rb +72 -0
  29. data/lib/vagrant-openshift/action/install_geard_broker.rb +39 -0
  30. data/lib/vagrant-openshift/action/install_geard_images.rb +51 -0
  31. data/lib/vagrant-openshift/action/install_open_shift_dependencies.rb +50 -0
  32. data/lib/vagrant-openshift/action/install_rhc.rb +42 -0
  33. data/lib/vagrant-openshift/action/local_geard_checkout.rb +58 -0
  34. data/lib/vagrant-openshift/action/local_repo_checkout.rb +47 -0
  35. data/lib/vagrant-openshift/action/modify_ami.rb +54 -0
  36. data/lib/vagrant-openshift/action/modify_instance.rb +71 -0
  37. data/lib/vagrant-openshift/action/prepare_ssh_config.rb +89 -0
  38. data/lib/vagrant-openshift/action/preserve_mcollective_logs.rb +48 -0
  39. data/lib/vagrant-openshift/action/restart_geard.rb +39 -0
  40. data/lib/vagrant-openshift/action/restart_geard_broker.rb +43 -0
  41. data/lib/vagrant-openshift/action/restart_geard_console.rb +43 -0
  42. data/lib/vagrant-openshift/action/run_geard_tests.rb +57 -0
  43. data/lib/vagrant-openshift/action/run_tests.rb +47 -0
  44. data/lib/vagrant-openshift/action/set_host_name.rb +43 -0
  45. data/lib/vagrant-openshift/action/setup_bind_dns_key.rb +38 -0
  46. data/lib/vagrant-openshift/action/setup_bind_host.rb +141 -0
  47. data/lib/vagrant-openshift/action/setup_builder_files.rb +57 -0
  48. data/lib/vagrant-openshift/action/setup_geard_broker.rb +71 -0
  49. data/lib/vagrant-openshift/action/sync_local_repository.rb +115 -0
  50. data/lib/vagrant-openshift/action/sync_upstream_repository.rb +71 -0
  51. data/lib/vagrant-openshift/action/test_exit_code.rb +36 -0
  52. data/lib/vagrant-openshift/action/uninstall_openshift_rpms.rb +37 -0
  53. data/lib/vagrant-openshift/action/yum_update.rb +67 -0
  54. data/lib/vagrant-openshift/action.rb +308 -0
  55. data/lib/vagrant-openshift/command/build_geard.rb +51 -0
  56. data/lib/vagrant-openshift/command/build_geard_base.rb +51 -0
  57. data/lib/vagrant-openshift/command/build_geard_broker.rb +59 -0
  58. data/lib/vagrant-openshift/command/build_geard_console.rb +59 -0
  59. data/lib/vagrant-openshift/command/build_geard_images.rb +68 -0
  60. data/lib/vagrant-openshift/command/build_origin_base.rb +51 -0
  61. data/lib/vagrant-openshift/command/checkout_repositories.rb +55 -0
  62. data/lib/vagrant-openshift/command/clone_upstream_repositories.rb +54 -0
  63. data/lib/vagrant-openshift/command/create_ami.rb +49 -0
  64. data/lib/vagrant-openshift/command/install_geard.rb +51 -0
  65. data/lib/vagrant-openshift/command/install_geard_broker.rb +51 -0
  66. data/lib/vagrant-openshift/command/install_rhc.rb +49 -0
  67. data/lib/vagrant-openshift/command/local_geard_setup.rb +62 -0
  68. data/lib/vagrant-openshift/command/local_repo_setup.rb +62 -0
  69. data/lib/vagrant-openshift/command/modify_ami.rb +54 -0
  70. data/lib/vagrant-openshift/command/modify_instance.rb +63 -0
  71. data/lib/vagrant-openshift/command/openshift_init.rb +83 -0
  72. data/lib/vagrant-openshift/command/repo_sync.rb +73 -0
  73. data/lib/vagrant-openshift/command/repo_sync_geard.rb +78 -0
  74. data/lib/vagrant-openshift/command/restart_geard.rb +51 -0
  75. data/lib/vagrant-openshift/command/restart_geard_broker.rb +51 -0
  76. data/lib/vagrant-openshift/command/restart_geard_console.rb +51 -0
  77. data/lib/vagrant-openshift/command/setup_geard_broker.rb +49 -0
  78. data/lib/vagrant-openshift/command/test.rb +108 -0
  79. data/lib/vagrant-openshift/command/test_geard.rb +59 -0
  80. data/lib/vagrant-openshift/command/test_geard_image.rb +147 -0
  81. data/lib/vagrant-openshift/config.rb +56 -0
  82. data/lib/vagrant-openshift/constants.rb +111 -0
  83. data/lib/vagrant-openshift/helper/command_helper.rb +213 -0
  84. data/lib/vagrant-openshift/plugin.rb +171 -0
  85. data/lib/vagrant-openshift/provisioner.rb +82 -0
  86. data/lib/vagrant-openshift/templates/builder/Rakefile +231 -0
  87. data/lib/vagrant-openshift/templates/builder/lib/.gitkeep +0 -0
  88. data/lib/vagrant-openshift/templates/builder/lib/rpm.rb +248 -0
  89. data/lib/vagrant-openshift/templates/builder/lib/test.rb +432 -0
  90. data/lib/vagrant-openshift/templates/builder/yum-listbuilddep +124 -0
  91. data/lib/vagrant-openshift/templates/command/init-openshift/Vagrantfile.erb +175 -0
  92. data/lib/vagrant-openshift/templates/command/init-openshift/box_info.yaml +152 -0
  93. data/lib/vagrant-openshift/version.rb +21 -0
  94. data/lib/vagrant-openshift.rb +34 -0
  95. data/vagrant-openshift.gemspec +43 -0
  96. metadata +234 -0
@@ -0,0 +1,56 @@
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
+ class Config < Vagrant.plugin(2, :config)
20
+ attr_accessor :cloud_domain, :ignore_packages, :additional_services, :container,
21
+ :advanced_puppet_values, :repos_base, :os_repo, :os_updates_repo,
22
+ :jenkins_repo_base, :optional_repo, :os_extras_repo, :os_scl_repo
23
+
24
+ def initialize
25
+ super
26
+
27
+ @ignore_packages = UNSET_VALUE
28
+ @cloud_domain = UNSET_VALUE
29
+ @additional_services = UNSET_VALUE
30
+ @container = UNSET_VALUE
31
+ @repos_base = UNSET_VALUE
32
+ @os_repo = nil
33
+ @os_updates_repo = nil
34
+ @os_extras_repo = nil
35
+ @jenkins_repo_base = UNSET_VALUE
36
+ @optional_repo = nil
37
+ @os_scl_repo = nil
38
+
39
+ @advanced_puppet_values = UNSET_VALUE
40
+ end
41
+
42
+ def finalize!
43
+ super
44
+
45
+ @ignore_packages = [] if @ignore_packages == UNSET_VALUE
46
+ @cloud_domain = "example.com" if @cloud_domain == UNSET_VALUE
47
+ @additional_services = [] if @additional_services == UNSET_VALUE
48
+ @container = "selinux" if @container == UNSET_VALUE
49
+ @advanced_puppet_values = {} if @advanced_puppet_values == UNSET_VALUE
50
+ @repos_base = nil if @repos_base == UNSET_VALUE
51
+ @jenkins_repo_base = "http://pkg.jenkins-ci.org/redhat/" if @jenkins_repo_base == UNSET_VALUE
52
+ end
53
+ end
54
+ end
55
+ end
56
+
@@ -0,0 +1,111 @@
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 'pathname'
17
+
18
+ module Vagrant
19
+ module Openshift
20
+ class Constants
21
+
22
+ FILTER_BROKER="broker"
23
+ FILTER_CONSOLE="console"
24
+ FILTER_IMAGES="images"
25
+ FILTER_RHC="rhc"
26
+ FILTER_GEARD="geard"
27
+
28
+ def self.repos
29
+ {
30
+ 'origin-server' => 'https://github.com/openshift/origin-server.git',
31
+ 'rhc' => 'https://github.com/openshift/rhc.git',
32
+ 'puppet-openshift_origin' => 'https://github.com/openshift/puppet-openshift_origin.git',
33
+ 'geard' => 'https://github.com/openshift/geard.git',
34
+
35
+ }.merge(geard_images)
36
+ end
37
+
38
+ def self.geard_images
39
+ {
40
+ 'wildfly-8-centos' => 'https://github.com/openshift/wildfly-8-centos.git',
41
+ 'ruby-19-centos' => 'https://github.com/openshift/ruby-19-centos.git'
42
+ }
43
+ end
44
+
45
+ def self.images
46
+ [
47
+ 'centos'
48
+ ] + geard_images.map { |c, _| "openshift/#{c}" }
49
+ end
50
+
51
+ def self.git_branch_current
52
+ "$(git rev-parse --abbrev-ref HEAD)"
53
+ end
54
+
55
+ def self.plugins_conf_dir
56
+ Pathname.new "/plugins"
57
+ end
58
+
59
+ def self.sync_dir
60
+ Pathname.new "~/sync"
61
+ end
62
+
63
+ def self.build_dir
64
+ Pathname.new "/data/src/github.com/openshift/"
65
+ end
66
+
67
+ def self.deps_marker
68
+ Pathname.new "/.origin_deps_installed"
69
+ end
70
+
71
+ def self.git_ssh
72
+ ""
73
+ end
74
+
75
+ def self.restart_services_cmd(is_fedora)
76
+ services = [ 'mongod', 'activemq', 'cgconfig', 'cgred', 'named',
77
+ 'openshift-broker', 'openshift-console',
78
+ 'openshift-node-web-proxy', 'openshift-watchman',
79
+ 'sshd', 'httpd' ]
80
+
81
+ if(is_fedora)
82
+ services << 'mcollective'
83
+ else
84
+ services << 'ruby193-mcollective'
85
+ end
86
+
87
+ cmd = []
88
+ cmd += services.map do |service|
89
+ "/sbin/service #{service} stop;"
90
+ end
91
+ cmd << "rm -f /var/www/openshift/broker/httpd/run/httpd.pid;"
92
+ cmd << "rm -f /var/www/openshift/console/httpd/run/httpd.pid;"
93
+ cmd += services.map do |service|
94
+ "/sbin/service #{service} start;"
95
+ end
96
+ cmd << "rm -rf /var/www/openshift/broker/tmp/cache/*;"
97
+ cmd << "/etc/cron.minutely/openshift-facts;"
98
+ cmd << "/sbin/service openshift-tc start || /sbin/service openshift-tc reload;"
99
+ if(is_fedora)
100
+ cmd << "/sbin/service network reload;"
101
+ else
102
+ cmd << "/sbin/service network restart;"
103
+ end
104
+ cmd << "/sbin/service messagebus restart;"
105
+ cmd << "/sbin/service oddjobd restart;"
106
+
107
+ cmd
108
+ end
109
+ end
110
+ end
111
+ end
@@ -0,0 +1,213 @@
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 "tempfile"
17
+ require "timeout"
18
+
19
+ module Vagrant
20
+ module Openshift
21
+ module CommandHelper
22
+ def scl_wrapper(is_fedora, command)
23
+ is_fedora ? command : %{scl enable ruby193 "#{command}"}
24
+ end
25
+
26
+ def sudo(machine, command, options={})
27
+ stdout = []
28
+ stderr = []
29
+ rc = -1
30
+ options[:timeout] = 60*10 unless options.has_key? :timeout
31
+ options[:retries] = 1 unless options.has_key? :retries
32
+ options[:fail_on_error] = true unless options.has_key? :fail_on_error
33
+
34
+ (1..options[:retries]).each do |retry_count|
35
+ begin
36
+ machine.env.ui.info "Running ssh/sudo command '#{command}' with timeout #{options[:timeout]}. Attempt ##{retry_count}"
37
+ Timeout::timeout(options[:timeout]) do
38
+ rc = machine.communicate.sudo(command) do |type, data|
39
+ if [:stderr, :stdout].include?(type)
40
+ if type == :stdout
41
+ color = :green
42
+ stdout << data
43
+ else
44
+ color = :red
45
+ stderr << data
46
+ end
47
+ machine.env.ui.info(data, :color => color, :new_line => false, :prefix => false) unless options[:buffered_output] == true
48
+ end
49
+ end
50
+ end
51
+ rescue Timeout::Error
52
+ machine.env.ui.warn "Timeout occurred while running ssh/sudo command: #{command}"
53
+ rc = -1
54
+ rescue Exception => e
55
+ machine.env.ui.warn "Error while running ssh/sudo command: #{command}"
56
+ rc ||= -1
57
+ end
58
+
59
+ break if rc == 0
60
+ end
61
+ exit rc if options[:fail_on_error] && rc != 0
62
+
63
+ [stdout, stderr, rc]
64
+ end
65
+
66
+ def do_execute(machine, command)
67
+ stdout = []
68
+ stderr = []
69
+ rc = -1
70
+
71
+ machine.env.ui.info "Running command '#{command}'"
72
+ rc = machine.communicate.execute(command) do |type, data|
73
+ if [:stderr, :stdout].include?(type)
74
+ if type == :stdout
75
+ color = :green
76
+ stdout << data
77
+ else
78
+ color = :red
79
+ stderr << data
80
+ end
81
+ machine.env.ui.info(data, :color => color, :new_line => false, :prefix => false)
82
+ end
83
+ end
84
+
85
+ [stdout, stderr, rc]
86
+ end
87
+
88
+ def remote_write(machine, dest, owner="root", perms="0644", &block)
89
+ file = Tempfile.new('file')
90
+ begin
91
+ file.write(block.yield)
92
+ file.flush
93
+ file.close
94
+ machine.communicate.upload(file.path, "/tmp/#{File.basename(file)}")
95
+ dest_dir = File.dirname(dest)
96
+ sudo(machine,
97
+ %{mkdir -p #{dest_dir};
98
+ mv /tmp/#{File.basename(file)} #{dest} &&
99
+ chown #{owner} #{dest} &&
100
+ chmod #{perms} #{dest}})
101
+ ensure
102
+ file.unlink
103
+ end
104
+ end
105
+
106
+ def sync_bash_command(repo_name, build_cmd, file_path="", branch_name=Vagrant::Openshift::Constants.git_branch_current, sync_path=Vagrant::Openshift::Constants.sync_dir, commit_id_path="#{sync_path}/#{repo_name}")
107
+ refname = branch_name
108
+ refname = "#{refname}:#{file_path}" if !file_path.empty?
109
+ git_status_cmd = "git status --porcelain"
110
+ git_status_cmd = "#{git_status_cmd} | grep #{file_path}" if !file_path.empty?
111
+ cmd = %{
112
+ pushd /data/src/github.com/openshift/#{repo_name}
113
+ commit_id=`git rev-parse #{refname}`
114
+ git_status=$(#{git_status_cmd})
115
+ if [ -f #{commit_id_path} ]
116
+ then
117
+ previous_commit_id=$(cat #{commit_id_path})
118
+ fi
119
+ if [ "$previous_commit_id" != "$commit_id" ] || [ -n "$git_status" ]
120
+ then
121
+ #{build_cmd}
122
+ else
123
+ echo "No update for #{repo_name}, #{refname}"
124
+ fi
125
+ mkdir -p #{sync_path}
126
+ echo -n $commit_id > #{commit_id_path}
127
+ popd
128
+ }
129
+
130
+ end
131
+
132
+ def sync_bash_command_on_dockerfile(repo_name, dockerfile_build_path, build_cmd)
133
+ file_path = "#{dockerfile_build_path}/Dockerfile"
134
+ branch_name=Vagrant::Openshift::Constants.git_branch_current
135
+ sync_path = "#{Vagrant::Openshift::Constants.sync_dir}/dockerfile/#{repo_name}/#{dockerfile_build_path}"
136
+ commit_id_path = "#{sync_path}/Dockerfile"
137
+ sync_bash_command(repo_name, build_cmd, file_path, branch_name, sync_path, commit_id_path)
138
+ end
139
+
140
+ def repo_checkout_bash_command(repo, url)
141
+ repo_path = File.expand_path(repo)
142
+ command = ""
143
+ if Pathname.new(repo_path).exist?
144
+ if @options[:replace]
145
+ command += %{
146
+ echo 'Replacing: #{repo_path}'
147
+ rm -rf #{repo_path}
148
+ }
149
+ else
150
+ command += "echo 'Already cloned: #{repo}'\n"
151
+ end
152
+ end
153
+
154
+ command += %{
155
+ cloned=false
156
+ echo 'Cloning #{repo} ...'
157
+ }
158
+
159
+ if @options[:user]
160
+ user_repo_url="git@github.com:#{@options[:user]}/#{repo}"
161
+ command += %{
162
+ echo 'Cloning #{user_repo_url}'
163
+ git clone --quiet #{user_repo_url}
164
+ if [ $? -eq 0 ]; then
165
+ cloned=true
166
+ (cd #{repo} && git remote add upstream #{url} && git fetch upstream)
167
+ else
168
+ echo 'Fork of repo #{repo} not found. Cloning read-only copy from upstream'
169
+ fi
170
+ }
171
+
172
+ end
173
+ command += %{
174
+ [ $cloned != true ] && git clone --quiet #{url}
175
+ ( cd #{repo} && git checkout #{@options[:branch]} &>/dev/null)
176
+ }
177
+
178
+ command
179
+ end
180
+
181
+ def bash_systemd_polling_functions
182
+ command = %{
183
+ function wait_for_success {
184
+ local retries=1
185
+ local cmd=$1
186
+ until [ $retries -ge 21 ]; do
187
+ /bin/sh -c $cmd
188
+ [ $? == 0 ] && return 0
189
+ echo "Command '$cmd' failed ($?). Retry \#${retries}" && sleep 1
190
+ retries=$[$retries+1]
191
+ done
192
+ }
193
+
194
+ function wait_for_activate {
195
+ local retries=0
196
+ local unit="$1"
197
+ until [ $retries -ge 20 ]; do
198
+ state=$(systemctl is-active ctr-${unit}-1.service)
199
+ [ "$state" == "active" ] && return 0
200
+ [ "$state" == "failed" ] && break
201
+ echo "Waiting for ${unit} to become active (${state})" && sleep 1
202
+ retries=$[$retries+1]
203
+ done
204
+ echo "The unit ctr-${unit}-1.service failed to activate."
205
+ return 1
206
+ }
207
+ }
208
+ return command
209
+ end
210
+
211
+ end
212
+ end
213
+ end
@@ -0,0 +1,171 @@
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
+ class Plugin < Vagrant.plugin("2")
20
+ name "OpenShift"
21
+ description %{
22
+ Plugin to build and manage OpenShift Origin environments
23
+ }
24
+
25
+ config "openshift" do
26
+ require_relative "config"
27
+ Config
28
+ end
29
+
30
+ config(:openshift, :provisioner) do
31
+ require_relative "config"
32
+ Config
33
+ end
34
+
35
+ command "sync" do
36
+ require_relative "command/repo_sync"
37
+ Commands::RepoSync
38
+ end
39
+
40
+ command "sync-geard" do
41
+ require_relative "command/repo_sync_geard"
42
+ Commands::RepoSyncGeard
43
+ end
44
+
45
+ command "origin-build-base" do
46
+ require_relative "command/build_origin_base"
47
+ Commands::BuildOriginBase
48
+ end
49
+
50
+ command "build-geard-base" do
51
+ require_relative "command/build_geard_base"
52
+ Commands::BuildGeardBase
53
+ end
54
+
55
+ command "build-geard" do
56
+ require_relative "command/build_geard"
57
+ Commands::BuildGeard
58
+ end
59
+
60
+ command "install-geard" do
61
+ require_relative "command/install_geard"
62
+ Commands::InstallGeard
63
+ end
64
+
65
+ command "install-geard-broker" do
66
+ require_relative "command/install_geard_broker"
67
+ Commands::InstallGeardBroker
68
+ end
69
+
70
+ command "restart-geard" do
71
+ require_relative "command/restart_geard"
72
+ Commands::RestartGeard
73
+ end
74
+
75
+ command "restart-geard-broker" do
76
+ require_relative "command/restart_geard_broker"
77
+ Commands::RestartGeardBroker
78
+ end
79
+
80
+ command "build-geard-broker" do
81
+ require_relative "command/build_geard_broker"
82
+ Commands::BuildGeardBroker
83
+ end
84
+
85
+ command "restart-geard-console" do
86
+ require_relative "command/restart_geard_console"
87
+ Commands::RestartGeardConsole
88
+ end
89
+
90
+ command "build-geard-console" do
91
+ require_relative "command/build_geard_console"
92
+ Commands::BuildGeardConsole
93
+ end
94
+
95
+ command "build-geard-images" do
96
+ require_relative "command/build_geard_images"
97
+ Commands::BuildGeardImages
98
+ end
99
+
100
+ command "origin-init" do
101
+ require_relative "command/openshift_init"
102
+ Commands::OpenshiftInit
103
+ end
104
+
105
+ command "origin-local-checkout" do
106
+ require_relative "command/local_repo_setup"
107
+ Commands::LocalRepoSetup
108
+ end
109
+
110
+ command "geard-local-checkout" do
111
+ require_relative "command/local_geard_setup"
112
+ Commands::LocalGeardSetup
113
+ end
114
+
115
+ command "test" do
116
+ require_relative "command/test"
117
+ Commands::Test
118
+ end
119
+
120
+ command "test-geard" do
121
+ require_relative "command/test_geard"
122
+ Commands::TestGeard
123
+ end
124
+
125
+ command "create-ami" do
126
+ require_relative "command/create_ami"
127
+ Commands::CreateAMI
128
+ end
129
+
130
+ command "modify-ami" do
131
+ require_relative "command/modify_ami"
132
+ Commands::ModifyAMI
133
+ end
134
+
135
+ command "modify-instance" do
136
+ require_relative "command/modify_instance"
137
+ Commands::ModifyInstance
138
+ end
139
+
140
+ command "clone-upstream-repos" do
141
+ require_relative "command/clone_upstream_repositories"
142
+ Commands::CloneUpstreamRepositories
143
+ end
144
+
145
+ command "checkout-repos" do
146
+ require_relative "command/checkout_repositories"
147
+ Commands::CheckoutRepositories
148
+ end
149
+
150
+ command "install-rhc" do
151
+ require_relative "command/install_rhc"
152
+ Commands::InstallRhc
153
+ end
154
+
155
+ command "setup-geard-broker" do
156
+ require_relative "command/setup_geard_broker"
157
+ Commands::SetupGeardBroker
158
+ end
159
+
160
+ command "test-geard-image" do
161
+ require_relative "command/test_geard_image"
162
+ Commands::TestGeardImage
163
+ end
164
+
165
+ provisioner(:openshift) do
166
+ require_relative "provisioner"
167
+ Provisioner
168
+ end
169
+ end
170
+ end
171
+ end
@@ -0,0 +1,82 @@
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
+ class Provisioner < Vagrant.plugin(2, :provisioner)
20
+ include CommandHelper
21
+
22
+ # Called with the root configuration of the machine so the provisioner
23
+ # can add some configuration on top of the machine.
24
+ #
25
+ # During this step, and this step only, the provisioner should modify
26
+ # the root machine configuration to add any additional features it
27
+ # may need. Examples include sharing folders, networking, and so on.
28
+ # This step is guaranteed to be called before any of those steps are
29
+ # done so the provisioner may do that.
30
+ #
31
+ # No return value is expected.
32
+ def configure(root_config)
33
+
34
+ end
35
+
36
+ # This is the method called when the actual provisioning should be
37
+ # done. The communicator is guaranteed to be ready at this point,
38
+ # and any shared folders or networks are already setup.
39
+ #
40
+ # No return value is expected.
41
+ def provision
42
+ #check if OpenShift has been installed
43
+ #reapply puppet configuration so that IPs and ifcfg-* file is correct
44
+ if @machine.communicate.test("test -d /etc/openshift")
45
+ @machine.ui.info("Reapplying puppet script to update changed IP values")
46
+ hostname = @machine.config.vm.hostname
47
+ sudo(machine,"echo #{hostname} > /proc/sys/kernel/hostname")
48
+ sudo(machine,"puppet apply --verbose #{Vagrant::Openshift::Constants.build_dir + 'configure_origin.pp'}", {timeout: 60*20})
49
+ is_fedora = @machine.communicate.test("test -e /etc/fedora-release")
50
+
51
+ sudo(machine,Constants.restart_services_cmd(is_fedora).join("\n"))
52
+ if @machine.config.openshift.additional_services.size > 0
53
+ cmd = ""
54
+ @machine.config.openshift.additional_services.each do |service|
55
+ cmd += "service #{service} restart;"
56
+ end
57
+ sudo(machine,cmd)
58
+ end
59
+
60
+ # TODO: Replace this temporary fix with a complete post-install routine
61
+ sudo(machine,"oo-admin-ctl-cartridge -c import-node --activate --obsolete && RAILS_ENV=test oo-admin-ctl-cartridge -c import-node --activate --obsolete")
62
+ else
63
+ #TODO is_fedora is a temporary fix for the new environment
64
+ is_fedora = @machine.communicate.test("test -e /etc/fedora-release")
65
+ if is_fedora
66
+ ssh_user = machine.ssh_info[:username]
67
+ sync_dir = Vagrant::Openshift::Constants.sync_dir
68
+ ## pause to stabilize environment to try to correct odd sudo error on aws
69
+ sleep 2
70
+ sudo(machine, "mkdir -p #{sync_dir} && chown -R #{ssh_user}:#{ssh_user} #{sync_dir}")
71
+ end
72
+ unless is_fedora || @machine.communicate.test("test -f #{Vagrant::Openshift::Constants.deps_marker}")
73
+ @machine.ui.info("Preparing base environment")
74
+ require_relative "command/build_origin_base"
75
+ Vagrant::Openshift::Commands::BuildOriginBase.new([], @machine.env).execute
76
+ @machine.communicate.sudo("touch #{Vagrant::Openshift::Constants.deps_marker}")
77
+ end
78
+ end
79
+ end
80
+ end
81
+ end
82
+ end