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.
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