--- recipes/deltacloud_recipe/manifests/aggregator.pp | 28 ++++++++++++++++++- .../deltacloud_recipe/manifests/image-factory.pp | 2 +- recipes/deltacloud_recipe/manifests/rails.pp | 7 +++++ 3 files changed, 34 insertions(+), 3 deletions(-)
diff --git a/recipes/deltacloud_recipe/manifests/aggregator.pp b/recipes/deltacloud_recipe/manifests/aggregator.pp index 1a4c6cb..716d28c 100644 --- a/recipes/deltacloud_recipe/manifests/aggregator.pp +++ b/recipes/deltacloud_recipe/manifests/aggregator.pp @@ -35,7 +35,7 @@ class deltacloud::aggregator inherits deltacloud { enable => true, hasstatus => true, require => [Package['deltacloud-aggregator-daemons'], - Rails::Migrate::Db[migrate_deltacloud_database], + Rails::Seed::Db[seed_deltacloud_database], Service[condor]] }
### Initialize and start the deltacloud database @@ -60,6 +60,23 @@ class deltacloud::aggregator inherits deltacloud { cwd => "/usr/share/deltacloud-aggregator", rails_env => "production", require => Rails::Create::Db[create_deltacloud_database]} + rails::seed::db{"seed_deltacloud_database": + cwd => "/usr/share/deltacloud-aggregator", + rails_env => "production", + require => Rails::Migrate::Db[migrate_deltacloud_database]} + + + ### Setup/start solr search service + exec{"start_solr": + cwd => "/usr/share/deltacloud-aggregator", + command => "/usr/bin/rake sunspot:solr:start", + environment => "RAILS_ENV=production", + require => Package['deltacloud-aggregator']} + exec{"build_solr_index": + cwd => "/usr/share/deltacloud-aggregator", + command => "/usr/bin/rake sunspot:reindex", + environment => "RAILS_ENV=production", + require => Exec['start_solr']} }
class deltacloud::aggregator::disabled { @@ -108,6 +125,13 @@ class deltacloud::aggregator::disabled { postgres::user{"dcloud": ensure => 'dropped', require => Rails::Drop::Db["drop_deltacloud_database"]} + + ### stop solr search service + exec{"stop_solr": + cwd => "/usr/share/deltacloud-aggregator", + command => "/usr/bin/rake sunspot:solr:stop", + environment => "RAILS_ENV=production", + require => Service['deltacloud-aggregator']} }
# Create a new site admin aggregator web user @@ -117,7 +141,7 @@ define deltacloud::site_admin($email="", $password="", $first_name="", $last_nam environment => "RAILS_ENV=production", command => "/usr/bin/rake dc:create_user[${name}] email=${email} password=${password} first_name=${first_name} last_name=${last_name}", unless => "/usr/bin/test `psql dcloud dcloud -P tuples_only -c "select count(*) from users where login = '${name}';"` = "1"", - require => Rails::Migrate::Db["migrate_deltacloud_database"]} + require => Rails::Seed::Db["seed_deltacloud_database"]} exec{"grant_site_admin_privs": cwd => '/usr/share/deltacloud-aggregator', environment => "RAILS_ENV=production", diff --git a/recipes/deltacloud_recipe/manifests/image-factory.pp b/recipes/deltacloud_recipe/manifests/image-factory.pp index 036c0e7..c584d5a 100644 --- a/recipes/deltacloud_recipe/manifests/image-factory.pp +++ b/recipes/deltacloud_recipe/manifests/image-factory.pp @@ -57,7 +57,7 @@ class deltacloud::image-factory inherits deltacloud { Package['deltacloud-aggregator-daemons'], File['/etc/imagefactory.yml'], Service[qpidd], - Rails::Migrate::Db[migrate_deltacloud_database], + Rails::Seed::Db[seed_deltacloud_database], Notify['boxgrinder_configured']] service { 'imagefactoryd': ensure => 'running', diff --git a/recipes/deltacloud_recipe/manifests/rails.pp b/recipes/deltacloud_recipe/manifests/rails.pp index 438a209..701abe3 100644 --- a/recipes/deltacloud_recipe/manifests/rails.pp +++ b/recipes/deltacloud_recipe/manifests/rails.pp @@ -15,6 +15,13 @@ define rails::migrate::db($cwd="", $rails_env=""){ command => "/usr/bin/rake db:migrate"} }
+define rails::seed::db($cwd="", $rails_env=""){ + exec{"seed_rails_database": + cwd => $cwd, + environment => "RAILS_ENV=${rails_env}", + command => "/usr/bin/rake db:seed"} +} + define rails::drop::db($cwd="", $rails_env=""){ exec{"drop_rails_database": cwd => $cwd,
This is a rebased version of mmorsi's original patch with some additional functionality added to allow multiple runs of deltacloud-configure.
On 02/02/2011 12:39 PM, Mike Orazi wrote:
This is a rebased version of mmorsi's original patch with some additional functionality added to allow multiple runs of deltacloud-configure.
aeolus-devel mailing list aeolus-devel@lists.fedorahosted.org https://fedorahosted.org/mailman/listinfo/aeolus-devel
ACK to the set with a few minor comments below. Note for these to work we need updated aggregator rpms in the repo containing the rsolr / sunspot / sunspot_rails dependencies and rake tasks to interface with those. A configure rpm with this patch should not be pushed until those updated aggregator rpms make it in.
Also please consider bumping the configure rpm spec release with this patchset.
-Mo
From: Mohammed Morsi mmorsi@redhat.com
--- recipes/deltacloud_recipe/manifests/aggregator.pp | 28 ++++++++++++++++++- .../deltacloud_recipe/manifests/image-factory.pp | 2 +- recipes/deltacloud_recipe/manifests/rails.pp | 7 +++++ 3 files changed, 34 insertions(+), 3 deletions(-)
diff --git a/recipes/deltacloud_recipe/manifests/aggregator.pp b/recipes/deltacloud_recipe/manifests/aggregator.pp index 1a4c6cb..716d28c 100644 --- a/recipes/deltacloud_recipe/manifests/aggregator.pp +++ b/recipes/deltacloud_recipe/manifests/aggregator.pp @@ -35,7 +35,7 @@ class deltacloud::aggregator inherits deltacloud { enable => true, hasstatus => true, require => [Package['deltacloud-aggregator-daemons'], - Rails::Migrate::Db[migrate_deltacloud_database], + Rails::Seed::Db[seed_deltacloud_database], Service[condor]] }
### Initialize and start the deltacloud database @@ -60,6 +60,23 @@ class deltacloud::aggregator inherits deltacloud { cwd => "/usr/share/deltacloud-aggregator", rails_env => "production", require => Rails::Create::Db[create_deltacloud_database]} + rails::seed::db{"seed_deltacloud_database": + cwd => "/usr/share/deltacloud-aggregator", + rails_env => "production", + require => Rails::Migrate::Db[migrate_deltacloud_database]} + + + ### Setup/start solr search service + exec{"start_solr": + cwd => "/usr/share/deltacloud-aggregator", + command => "/usr/bin/rake sunspot:solr:start", + environment => "RAILS_ENV=production", + require => Package['deltacloud-aggregator']} + exec{"build_solr_index": + cwd => "/usr/share/deltacloud-aggregator", + command => "/usr/bin/rake sunspot:reindex", + environment => "RAILS_ENV=production", + require => Exec['start_solr']} }
class deltacloud::aggregator::disabled { @@ -108,6 +125,13 @@ class deltacloud::aggregator::disabled { postgres::user{"dcloud": ensure => 'dropped', require => Rails::Drop::Db["drop_deltacloud_database"]} + + ### stop solr search service + exec{"stop_solr": + cwd => "/usr/share/deltacloud-aggregator", + command => "/usr/bin/rake sunspot:solr:stop", + environment => "RAILS_ENV=production", + require => Service['deltacloud-aggregator']} }
# Create a new site admin aggregator web user @@ -117,7 +141,7 @@ define deltacloud::site_admin($email="", $password="", $first_name="", $last_nam environment => "RAILS_ENV=production", command => "/usr/bin/rake dc:create_user[${name}] email=${email} password=${password} first_name=${first_name} last_name=${last_name}", unless => "/usr/bin/test `psql dcloud dcloud -P tuples_only -c "select count(*) from users where login = '${name}';"` = "1"", - require => Rails::Migrate::Db["migrate_deltacloud_database"]} + require => Rails::Seed::Db["seed_deltacloud_database"]} exec{"grant_site_admin_privs": cwd => '/usr/share/deltacloud-aggregator', environment => "RAILS_ENV=production", diff --git a/recipes/deltacloud_recipe/manifests/image-factory.pp b/recipes/deltacloud_recipe/manifests/image-factory.pp index 036c0e7..c584d5a 100644 --- a/recipes/deltacloud_recipe/manifests/image-factory.pp +++ b/recipes/deltacloud_recipe/manifests/image-factory.pp @@ -57,7 +57,7 @@ class deltacloud::image-factory inherits deltacloud { Package['deltacloud-aggregator-daemons'], File['/etc/imagefactory.yml'], Service[qpidd], - Rails::Migrate::Db[migrate_deltacloud_database], + Rails::Seed::Db[seed_deltacloud_database], Notify['boxgrinder_configured']] service { 'imagefactoryd': ensure => 'running', diff --git a/recipes/deltacloud_recipe/manifests/rails.pp b/recipes/deltacloud_recipe/manifests/rails.pp index 438a209..701abe3 100644 --- a/recipes/deltacloud_recipe/manifests/rails.pp +++ b/recipes/deltacloud_recipe/manifests/rails.pp @@ -15,6 +15,13 @@ define rails::migrate::db($cwd="", $rails_env=""){ command => "/usr/bin/rake db:migrate"} }
+define rails::seed::db($cwd="", $rails_env=""){ + exec{"seed_rails_database": + cwd => $cwd, + environment => "RAILS_ENV=${rails_env}", + command => "/usr/bin/rake db:seed"} +} + define rails::drop::db($cwd="", $rails_env=""){ exec{"drop_rails_database": cwd => $cwd,
Seeds aren't set up to be idempotent, so we use puppet to ensure seeds are only run once per environment. This should potentially revisited if seeds become more tolerant of re-runs. --- recipes/deltacloud_recipe/manifests/aggregator.pp | 8 ++++++++ recipes/deltacloud_recipe/manifests/rails.pp | 10 +++++++++- 2 files changed, 17 insertions(+), 1 deletions(-)
diff --git a/recipes/deltacloud_recipe/manifests/aggregator.pp b/recipes/deltacloud_recipe/manifests/aggregator.pp index 716d28c..506f1b8 100644 --- a/recipes/deltacloud_recipe/manifests/aggregator.pp +++ b/recipes/deltacloud_recipe/manifests/aggregator.pp @@ -14,6 +14,9 @@ class deltacloud::aggregator inherits deltacloud { 'rubygem-deltacloud-image-builder-agent', 'iwhd']}
+ file {"/var/lib/deltacloud-aggregator": + ensure => directory, + } ### Setup selinux for deltacloud selinux::mode{"permissive":}
@@ -96,6 +99,11 @@ class deltacloud::aggregator::disabled { 'deltacloud-aggregator-doc'], Rails::Drop::Db["drop_deltacloud_database"]] }
+ file {"/var/lib/deltacloud-aggregator": + ensure => absent, + force => true + } + package { 'rubygem-deltacloud-client': provider => 'yum', ensure => 'absent', require => Package['deltacloud-aggregator']} diff --git a/recipes/deltacloud_recipe/manifests/rails.pp b/recipes/deltacloud_recipe/manifests/rails.pp index 701abe3..cc91726 100644 --- a/recipes/deltacloud_recipe/manifests/rails.pp +++ b/recipes/deltacloud_recipe/manifests/rails.pp @@ -19,7 +19,14 @@ define rails::seed::db($cwd="", $rails_env=""){ exec{"seed_rails_database": cwd => $cwd, environment => "RAILS_ENV=${rails_env}", - command => "/usr/bin/rake db:seed"} + command => "/usr/bin/rake db:seed", + creates => "/var/lib/deltacloud-aggregator/${rails_env}.seed" + } + + file{"/var/lib/deltacloud-aggregator/${rails_env}.seed": + ensure => present, + recurse => true + } }
define rails::drop::db($cwd="", $rails_env=""){ @@ -29,3 +36,4 @@ define rails::drop::db($cwd="", $rails_env=""){ environment => "RAILS_ENV=${rails_env}", command => "/usr/bin/rake db:drop:all"} } +
This prevents puppet from trying to start solr multiple times and failing on any subsequent invocation. --- recipes/deltacloud_recipe/manifests/aggregator.pp | 31 +++++++++++++------- 1 files changed, 20 insertions(+), 11 deletions(-)
diff --git a/recipes/deltacloud_recipe/manifests/aggregator.pp b/recipes/deltacloud_recipe/manifests/aggregator.pp index 506f1b8..59ca9df 100644 --- a/recipes/deltacloud_recipe/manifests/aggregator.pp +++ b/recipes/deltacloud_recipe/manifests/aggregator.pp @@ -70,16 +70,23 @@ class deltacloud::aggregator inherits deltacloud {
### Setup/start solr search service - exec{"start_solr": - cwd => "/usr/share/deltacloud-aggregator", - command => "/usr/bin/rake sunspot:solr:start", - environment => "RAILS_ENV=production", - require => Package['deltacloud-aggregator']} + service{"solr": + start => "cd /usr/share/deltacloud-aggregator; RAILS_ENV=production /usr/bin/rake sunspot:solr:start", + stop => "cd /usr/share/deltacloud-aggregator; RAILS_ENV=production /usr/bin/rake sunspot:solr:stop", + hasstatus => "false", + pattern => "solr", + ensure => 'running', + require => Package['deltacloud-aggregator']} + + # XXX ugly hack but solr might take some time to come up + exec{"solr_startup_pause": + command => "/bin/sleep 4", + require => Service['solr']} exec{"build_solr_index": cwd => "/usr/share/deltacloud-aggregator", command => "/usr/bin/rake sunspot:reindex", environment => "RAILS_ENV=production", - require => Exec['start_solr']} + require => Exec['solr_startup_pause']} }
class deltacloud::aggregator::disabled { @@ -97,6 +104,7 @@ class deltacloud::aggregator::disabled { provider => 'yum', ensure => 'absent', require => [Package['deltacloud-aggregator-daemons', 'deltacloud-aggregator-doc'], + Service['solr'], Rails::Drop::Db["drop_deltacloud_database"]] }
file {"/var/lib/deltacloud-aggregator": @@ -135,11 +143,12 @@ class deltacloud::aggregator::disabled { require => Rails::Drop::Db["drop_deltacloud_database"]}
### stop solr search service - exec{"stop_solr": - cwd => "/usr/share/deltacloud-aggregator", - command => "/usr/bin/rake sunspot:solr:stop", - environment => "RAILS_ENV=production", - require => Service['deltacloud-aggregator']} + service{"solr": + hasstatus => false, + stop => "cd /usr/share/deltacloud-aggregator;RAILS_ENV=production /usr/bin/rake sunspot:solr:stop", + pattern => "solr", + ensure => 'stopped', + require => Service['deltacloud-aggregator']} }
# Create a new site admin aggregator web user
--- recipes/deltacloud_recipe/manifests/aggregator.pp | 10 +++------- 1 files changed, 3 insertions(+), 7 deletions(-)
diff --git a/recipes/deltacloud_recipe/manifests/aggregator.pp b/recipes/deltacloud_recipe/manifests/aggregator.pp index 59ca9df..538b7f1 100644 --- a/recipes/deltacloud_recipe/manifests/aggregator.pp +++ b/recipes/deltacloud_recipe/manifests/aggregator.pp @@ -62,7 +62,7 @@ class deltacloud::aggregator inherits deltacloud { rails::migrate::db{"migrate_deltacloud_database": cwd => "/usr/share/deltacloud-aggregator", rails_env => "production", - require => Rails::Create::Db[create_deltacloud_database]} + require => [Rails::Create::Db[create_deltacloud_database], Service['solr']]} rails::seed::db{"seed_deltacloud_database": cwd => "/usr/share/deltacloud-aggregator", rails_env => "production", @@ -76,17 +76,13 @@ class deltacloud::aggregator inherits deltacloud { hasstatus => "false", pattern => "solr", ensure => 'running', - require => Package['deltacloud-aggregator']} + require => [Package['deltacloud-aggregator'], Rails::Create::Db['create_deltacloud_database']]}
- # XXX ugly hack but solr might take some time to come up - exec{"solr_startup_pause": - command => "/bin/sleep 4", - require => Service['solr']} exec{"build_solr_index": cwd => "/usr/share/deltacloud-aggregator", command => "/usr/bin/rake sunspot:reindex", environment => "RAILS_ENV=production", - require => Exec['solr_startup_pause']} + require => Rails::Migrate::Db['migrate_deltacloud_database']} }
class deltacloud::aggregator::disabled {
aeolus-devel@lists.fedorahosted.org