bringing it more inline w/ how puppet normally works
---
 recipes/deltacloud_recipe/deltacloud_recipe.pp     |   27 +-
 recipes/deltacloud_recipe/deltacloud_uninstall.pp  |   19 +-
 recipes/deltacloud_recipe/manifests/aggregator.pp  |  187 ++++++++++
 recipes/deltacloud_recipe/manifests/core.pp        |   33 ++
 recipes/deltacloud_recipe/manifests/deltacloud.pp  |  368 +-------------------
 .../deltacloud_recipe/manifests/image-factory.pp   |   80 +++++
 recipes/deltacloud_recipe/manifests/iwhd.pp        |   40 +++
 7 files changed, 360 insertions(+), 394 deletions(-)
 create mode 100644 recipes/deltacloud_recipe/manifests/aggregator.pp
 create mode 100644 recipes/deltacloud_recipe/manifests/core.pp
 create mode 100644 recipes/deltacloud_recipe/manifests/image-factory.pp
 create mode 100644 recipes/deltacloud_recipe/manifests/iwhd.pp

diff --git a/recipes/deltacloud_recipe/deltacloud_recipe.pp 
b/recipes/deltacloud_recipe/deltacloud_recipe.pp
index d7e8765..83c8037 100644
--- a/recipes/deltacloud_recipe/deltacloud_recipe.pp
+++ b/recipes/deltacloud_recipe/deltacloud_recipe.pp
@@ -25,30 +25,17 @@
 # Modules used by the recipe
 import "deltacloud_recipe/deltacloud"
 
-# setup the deltacloud repositories
-dc::repos{"deltacloud":}
-
-# install deltacloud components
-dc::package::install{["aggregator", "core"]:
-                        require => Dc::Repos["deltacloud"]}
-
-# setup selinux
-dc::selinux{'deltacloud':}
-
-# setup the firewall
-dc::firewall{'deltacloud':}
-
-# setup deltacloud db
-dc::db{"postgres":}
-
-# start deltacloud services
-dc::service::start{["aggregator", "core", 'iwhd', 'image-factory']:}
+# include the various deltacloud components
+include deltacloud::aggregator
+include deltacloud::core
+include deltacloud::image-factory
+include deltacloud::iwhd
 
 # create bucket in image warehouse
-dc::create_bucket{"deltacloud":}
+deltacloud::create_bucket{"deltacloud":}
 
 # Create dcuser aggregator web user
-dc::site_admin{"admin":
+deltacloud::site_admin{"admin":
      email           => '[email protected]',
      password        => 'password',
      first_name      => 'deltacloud',
diff --git a/recipes/deltacloud_recipe/deltacloud_uninstall.pp 
b/recipes/deltacloud_recipe/deltacloud_uninstall.pp
index b39d423..013f669 100644
--- a/recipes/deltacloud_recipe/deltacloud_uninstall.pp
+++ b/recipes/deltacloud_recipe/deltacloud_uninstall.pp
@@ -25,17 +25,8 @@
 # Modules used by the recipe
 import "deltacloud_recipe/deltacloud"
 
-$packages = ["aggregator", "core"]
-
-# stop deltacloud services
-dc::service::stop{["aggregator", "core", 'iwhd', 'image-factory']:}
-
-# destroy deltacloud db
-dc::db::destroy{"postgres":
-                require => Dc::Service::Stop['aggregator']}
-
-# install deltacloud components
-dc::package::uninstall{$packages:
-                        require => Dc::Db::Destroy['postgres']}
-
-dc::cleanup{"deltacloud": require => Dc::Package::Uninstall[$packages]}
+# disable the various deltacloud components
+include deltacloud::aggregator::disabled
+include deltacloud::core::disabled
+include deltacloud::iwhd::disabled
+include deltacloud::image-factory::disabled
diff --git a/recipes/deltacloud_recipe/manifests/aggregator.pp 
b/recipes/deltacloud_recipe/manifests/aggregator.pp
new file mode 100644
index 0000000..0072a0f
--- /dev/null
+++ b/recipes/deltacloud_recipe/manifests/aggregator.pp
@@ -0,0 +1,187 @@
+# Deltacloud aggregator puppet definitions
+
+class deltacloud::aggregator inherits deltacloud {
+  ### Install the deltacloud components
+    # specific versions of these two packages are needed and we need to pull 
the third in
+    package { 'python-imgcreate':
+               provider => 'rpm', ensure => installed,
+               source   => 
'http://repos.fedorapeople.org/repos/deltacloud/appliance/fedora-13/x86_64/python-imgcreate-031-1.fc12.1.x86_64.rpm'}
+    package { 'livecd-tools':
+               provider => 'rpm', ensure => installed,
+               source   => 
'http://repos.fedorapeople.org/repos/deltacloud/appliance/fedora-13/x86_64/livecd-tools-031-1.fc12.1.x86_64.rpm',
+               require  => Package['python-imgcreate']}
+    package { 'appliance-tools':
+               provider => 'yum', ensure => installed,
+               require  => Package["livecd-tools", "python-imgcreate"]}
+
+    # TODO:  Fix me, find a better way to do this...
+    # We need to also install this rpm from amazon
+    package{"ec2-ami-tools":
+            provider => "rpm",
+            source => 
"http://s3.amazonaws.com/ec2-downloads/ec2-ami-tools.noarch.rpm";,
+            ensure => 'installed' }
+
+     package { 'rubygem-deltacloud-client':
+                 provider => 'yum', ensure => 'installed' }
+     package { 'rubygem-deltacloud-image-builder-agent':
+                 provider => 'yum', ensure => 'installed',
+                 require  => Package['appliance-tools', 'livecd-tools', 
'python-imgcreate', 'ec2-ami-tools']}
+     package { 'iwhd':
+                provider => 'yum', ensure => 'installed' }
+
+
+     package {['deltacloud-aggregator',
+               'deltacloud-aggregator-daemons',
+               'deltacloud-aggregator-doc']:
+               provider => 'yum', ensure => 'installed',
+               require  => Package['rubygem-deltacloud-client',
+                                   'rubygem-deltacloud-image-builder-agent',
+                                   'iwhd']}
+
+  ### Setup selinux for deltacloud
+    selinux::mode{"permissive":}
+
+  ### Setup firewall for deltacloud
+    firewall::rule{"http": destination_port => '80'}
+
+  ### Start the deltacloud services
+    file {"/var/lib/condor/condor_config.local":
+           source => "puppet:///modules/deltacloud_recipe/condor_config.local",
+           require => Package['deltacloud-aggregator-daemons'] }
+    service { ['condor', 'httpd']:
+      ensure  => 'running',
+      enable  => true,
+      require => File['/var/lib/condor/condor_config.local'] }
+    service { ['deltacloud-aggregator',
+               'deltacloud-condor_refreshd',
+               'deltacloud-dbomatic']:
+      ensure    => 'running',
+      enable    => true,
+      hasstatus => true,
+      require => [Package['deltacloud-aggregator-daemons'],
+                  Rails::Migrate::Db[migrate_deltacloud_database],
+                  Service[condor]] }
+
+  ### Initialize and start the deltacloud database
+    # Right now we configure and start postgres, at some point I want
+    # to make the db that gets setup configurable
+    include postgres::server
+    file { "/var/lib/pgsql/data/pg_hba.conf":
+             source => "puppet:///modules/deltacloud_recipe/pg_hba.conf",
+             require => Exec["pginitdb"] }
+    postgres::user{"dcloud":
+                     password => "v23zj59an",
+                     roles    => "CREATEDB",
+                     require  => Service["postgresql"]}
+
+
+    # Create deltacloud database
+    rails::create::db{"create_deltacloud_database":
+                cwd        => "/usr/share/deltacloud-aggregator",
+                rails_env  => "production",
+                require    => [Postgres::User[dcloud], 
Package['deltacloud-aggregator']]}
+    rails::migrate::db{"migrate_deltacloud_database":
+                cwd             => "/usr/share/deltacloud-aggregator",
+                rails_env       => "production",
+                require         => 
Rails::Create::Db[create_deltacloud_database]}
+}
+
+class deltacloud::aggregator::disabled {
+  ### Uninstall the deltacloud components
+    package {['deltacloud-aggregator-daemons',
+              'deltacloud-aggregator-doc']:
+              provider => 'yum', ensure => 'absent',
+              require  => Service['deltacloud-aggregator',
+                                  'deltacloud-condor_refreshd',
+                                  'deltacloud-dbomatic',
+                                  'imagefactoryd',
+                                  'deltacloud-image_builder_service']}
+
+    package {'deltacloud-aggregator':
+              provider => 'yum', ensure => 'absent',
+              require  => Package['deltacloud-aggregator-daemons',
+                                  'deltacloud-aggregator-doc'] }
+    package { 'rubygem-deltacloud-client':
+                provider => 'yum', ensure => 'absent',
+                require  => Package['deltacloud-aggregator']}
+    package { 'rubygem-deltacloud-image-builder-agent':
+                provider => 'yum', ensure => 'absent',
+                require  => Package['deltacloud-aggregator']}
+    package { 'iwhd':
+                provider => 'yum', ensure => 'absent',
+                require  => [Package['deltacloud-aggregator'], 
Service['iwhd']]}
+
+    # FIXME these lingering dependencies, pulled in for
+    # rubygem-deltacloud-image-builder-agent, need to be removed as
+    # ec2-ami-tools and appliance-tools depend on them and using
+    # 'absent' in the context of the 'yum' provider dispatches
+    # to 'rpm -e' instead of 'yum erase'
+    package { ['rubygem-boxgrinder-build-ec2-platform-plugin',
+               'rubygem-boxgrinder-build-centos-os-plugin',
+               'rubygem-boxgrinder-build-fedora-os-plugin']:
+               provider => "yum", ensure => 'absent',
+               require  => Package['rubygem-deltacloud-image-builder-agent']}
+    package { 'rubygem-boxgrinder-build-rhel-os-plugin':
+               provider => "yum", ensure => 'absent',
+               require  => 
Package['rubygem-boxgrinder-build-centos-os-plugin']}
+    package { 'rubygem-boxgrinder-build-rpm-based-os-plugin':
+               provider => "yum", ensure => 'absent',
+               require  => Package['rubygem-boxgrinder-build-rhel-os-plugin',
+                                   
'rubygem-boxgrinder-build-fedora-os-plugin']}
+
+    package { 'ec2-ami-tools':
+               provider => "yum", ensure => 'absent',
+               require  => 
Package['rubygem-boxgrinder-build-ec2-platform-plugin']}
+    package { 'appliance-tools':
+               provider => 'yum', ensure => 'absent',
+               require  => 
Package['rubygem-boxgrinder-build-rpm-based-os-plugin']}
+    package { 'livecd-tools':
+               provider => 'yum', ensure => 'absent',
+               require  => Package['appliance-tools']}
+    package { 'python-imgcreate':
+               provider => 'yum', ensure => 'absent',
+               require  => Package['appliance-tools', 'livecd-tools']}
+
+
+  ### Stop the deltacloud services
+    service { ['condor', 'httpd']:
+      ensure  => 'stopped',
+      enable  => false,
+      require => Service['deltacloud-aggregator',
+                         'deltacloud-condor_refreshd',
+                         'deltacloud-dbomatic'] }
+    service { ['deltacloud-aggregator',
+               'deltacloud-condor_refreshd',
+               'deltacloud-dbomatic']:
+      ensure => 'stopped',
+      enable => false,
+      hasstatus => true }
+
+  ### Destroy the deltacloud database
+    rails::drop::db{"drop_deltacloud_database":
+                cwd        => "/usr/share/deltacloud-aggregator",
+                rails_env  => "production",
+                require    => Service["deltacloud-aggregator",
+                                      "deltacloud-condor_refreshd",
+                                      "deltacloud-dbomatic",
+                                      "deltacloud-image_builder_service"]}
+    postgres::user{"dcloud":
+                    ensure => 'dropped',
+                    require => Rails::Drop::Db["drop_deltacloud_database"]}
+}
+
+# Create a new site admin aggregator web user
+define deltacloud::site_admin($email="", $password="", $first_name="", 
$last_name=""){
+  exec{"create_site_admin_user":
+         cwd         => '/usr/share/deltacloud-aggregator',
+         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"]}
+  exec{"grant_site_admin_privs":
+         cwd         => '/usr/share/deltacloud-aggregator',
+         environment => "RAILS_ENV=production",
+         command     => "/usr/bin/rake dc:site_admin[${name}]",
+         unless      => "/usr/bin/test `psql dcloud dcloud -P tuples_only -c 
\"select count(*) FROM roles INNER JOIN permissions ON (roles.id = 
permissions.role_id) INNER JOIN users ON (permissions.user_id = users.id) where 
roles.name = 'Administrator' AND users.login = '${name}';\"` = \"1\"",
+         require     => Exec[create_site_admin_user]}
+}
diff --git a/recipes/deltacloud_recipe/manifests/core.pp 
b/recipes/deltacloud_recipe/manifests/core.pp
new file mode 100644
index 0000000..381e76f
--- /dev/null
+++ b/recipes/deltacloud_recipe/manifests/core.pp
@@ -0,0 +1,33 @@
+# Deltacloud core puppet definitions
+
+class deltacloud::core inherits deltacloud {
+  ### Install the deltacloud components
+    package { 'rubygem-deltacloud-core':
+                provider => 'yum', ensure => 'installed'}
+    file { "/var/log/deltacloud-core": ensure => 'directory' }
+
+  ### we need to sync time to communicate w/ cloud providers
+    include ntp::client
+
+  ### Start the deltacloud services
+    file {"/etc/init.d/deltacloud-core":
+           source => "puppet:///modules/deltacloud_recipe/deltacloud-core",
+           mode   => 755 }
+    service { 'deltacloud-core':
+       ensure  => 'running',
+       enable  => true,
+       require => [Package['rubygem-deltacloud-core'],
+                   File['/etc/init.d/deltacloud-core']] }
+}
+
+class deltacloud::core::disabled {
+  ### Uninstall the deltacloud components
+    package { 'rubygem-deltacloud-core':
+                provider => 'yum', ensure => 'absent',
+                require  => Service['deltacloud-core']}
+
+  ### Stop the deltacloud services
+    service { 'deltacloud-core':
+      ensure  => 'stopped',
+      enable  => false}
+}
diff --git a/recipes/deltacloud_recipe/manifests/deltacloud.pp 
b/recipes/deltacloud_recipe/manifests/deltacloud.pp
index 2d791a2..5746ccd 100644
--- a/recipes/deltacloud_recipe/manifests/deltacloud.pp
+++ b/recipes/deltacloud_recipe/manifests/deltacloud.pp
@@ -6,8 +6,14 @@ import "rails"
 import "selinux"
 import "ntp"
 
-# Setup repos which to pull deltacloud components
-define dc::repos(){
+import "aggregator"
+import "core"
+import "iwhd"
+import "image-factory"
+
+# Base deltacloud class
+class deltacloud {
+  # Setup repos which to pull deltacloud components
   yumrepo{"${name}_arch":
             name     => "${name}_arch",
             baseurl  => 
'http://repos.fedorapeople.org/repos/deltacloud/appliance/fedora-$releasever/$basearch',
@@ -21,361 +27,3 @@ define dc::repos(){
             baseurl  => 
'http://repos.fedorapeople.org/repos/pulp/pulp/fedora-13/$basearch/',
             enabled  => 1, gpgcheck => 0}
 }
-
-# Install the deltacloud components
-define dc::package::install(){
-  case $name {
-    'aggregator':  {
-       # specific versions of these two packages are needed and we need to 
pull the third in
-       package { 'python-imgcreate':
-                  provider => 'rpm', ensure => installed,
-                  source   => 
'http://repos.fedorapeople.org/repos/deltacloud/appliance/fedora-13/x86_64/python-imgcreate-031-1.fc12.1.x86_64.rpm'}
-       package { 'livecd-tools':
-                  provider => 'rpm', ensure => installed,
-                  source   => 
'http://repos.fedorapeople.org/repos/deltacloud/appliance/fedora-13/x86_64/livecd-tools-031-1.fc12.1.x86_64.rpm',
-                  require  => Package['python-imgcreate']}
-       package { 'appliance-tools':
-                  provider => 'yum', ensure => installed,
-                  require  => Package["livecd-tools", "python-imgcreate"] }
-
-      # TODO:  Fix me, find a better way to do this...
-      # We need to also install this rpm from amazon
-      package{"ec2-ami-tools":
-              provider => "rpm",
-              source => 
"http://s3.amazonaws.com/ec2-downloads/ec2-ami-tools.noarch.rpm";,
-              ensure => 'installed' }
-
-       package { 'rubygem-deltacloud-client':
-                   provider => 'yum', ensure => 'installed' }
-       package { 'rubygem-deltacloud-image-builder-agent':
-                   provider => 'yum', ensure => 'installed',
-                   require  => Package['appliance-tools', 'livecd-tools', 
'python-imgcreate', 'ec2-ami-tools']}
-       package { 'iwhd':
-                  provider => 'yum', ensure => 'installed' }
-
-
-       package {['deltacloud-aggregator',
-                 'deltacloud-aggregator-daemons',
-                 'deltacloud-aggregator-doc']:
-                 provider => 'yum', ensure => 'installed',
-                 require  => Package['rubygem-deltacloud-client',
-                                     'rubygem-deltacloud-image-builder-agent',
-                                     'iwhd']}
-    }
-
-    'core': {
-      package { 'rubygem-deltacloud-core':
-                  provider => 'yum', ensure => 'installed'}
-      file { "/var/log/deltacloud-core": ensure => 'directory' }
-    }
-  }
-}
-
-# Uninstall the deltacloud components
-define dc::package::uninstall(){
-  case $name {
-    'aggregator':  {
-       package {['deltacloud-aggregator-daemons',
-                 'deltacloud-aggregator-doc']:
-                 provider => 'yum', ensure => 'absent',
-                 require  => Service['deltacloud-aggregator',
-                                     'deltacloud-condor_refreshd',
-                                     'deltacloud-dbomatic',
-                                     'imagefactoryd',
-                                     'deltacloud-image_builder_service']}
-
-       package {'deltacloud-aggregator':
-                 provider => 'yum', ensure => 'absent',
-                 require  => Package['deltacloud-aggregator-daemons',
-                                     'deltacloud-aggregator-doc'] }
-       package { 'rubygem-deltacloud-client':
-                   provider => 'yum', ensure => 'absent',
-                   require  => Package['deltacloud-aggregator']}
-       package { 'rubygem-deltacloud-image-builder-agent':
-                   provider => 'yum', ensure => 'absent',
-                   require  => Package['deltacloud-aggregator']}
-       package { 'iwhd':
-                   provider => 'yum', ensure => 'absent',
-                   require  => [Package['deltacloud-aggregator'], 
Service['iwhd']]}
-
-       # FIXME these lingering dependencies, pulled in for
-       # rubygem-deltacloud-image-builder-agent, need to be removed as
-       # ec2-ami-tools and appliance-tools depend on them and using
-       # 'absent' in the context of the 'yum' provider dispatches
-       # to 'rpm -e' instead of 'yum erase'
-       package { ['rubygem-boxgrinder-build-ec2-platform-plugin',
-                  'rubygem-boxgrinder-build-centos-os-plugin',
-                  'rubygem-boxgrinder-build-fedora-os-plugin']:
-                  provider => "yum", ensure => 'absent',
-                  require  => 
Package['rubygem-deltacloud-image-builder-agent']}
-       package { 'rubygem-boxgrinder-build-rhel-os-plugin':
-                  provider => "yum", ensure => 'absent',
-                  require  => 
Package['rubygem-boxgrinder-build-centos-os-plugin']}
-       package { 'rubygem-boxgrinder-build-rpm-based-os-plugin':
-                  provider => "yum", ensure => 'absent',
-                  require  => 
Package['rubygem-boxgrinder-build-rhel-os-plugin',
-                                      
'rubygem-boxgrinder-build-fedora-os-plugin']}
-
-       package { 'ec2-ami-tools':
-                  provider => "yum", ensure => 'absent',
-                  require  => 
Package['rubygem-boxgrinder-build-ec2-platform-plugin']}
-       package { 'appliance-tools':
-                  provider => 'yum', ensure => 'absent',
-                  require  => 
Package['rubygem-boxgrinder-build-rpm-based-os-plugin']}
-       package { 'livecd-tools':
-                  provider => 'yum', ensure => 'absent',
-                  require  => Package['appliance-tools']}
-       package { 'python-imgcreate':
-                  provider => 'yum', ensure => 'absent',
-                  require  => Package['appliance-tools', 'livecd-tools']}
-
-    }
-
-    'core': {
-      package { 'rubygem-deltacloud-core':
-                  provider => 'yum', ensure => 'absent',
-                  require  => Service['deltacloud-core']}
-    }
-  }
-}
-
-# Setup selinux for deltacloud
-define dc::selinux(){
-  selinux::mode{"permissive":}
-}
-
-# Setup firewall for deltacloud
-define dc::firewall(){
-  firewall::rule{"http": destination_port => '80'}
-}
-
-# TODO disable selinux until we're sure everything works w/ it enabled
-
-# Start the deltacloud services
-define dc::service::start(){
-  case $name {
-    'aggregator':  {
-      file {"/var/lib/condor/condor_config.local":
-             source => 
"puppet:///modules/deltacloud_recipe/condor_config.local",
-             require => Package['deltacloud-aggregator-daemons'] }
-      service { ['condor', 'httpd']:
-        ensure  => 'running',
-        enable  => true,
-        require => File['/var/lib/condor/condor_config.local'] }
-      service { ['deltacloud-aggregator',
-                 'deltacloud-condor_refreshd',
-                 'deltacloud-dbomatic']:
-        ensure    => 'running',
-        enable    => true,
-        hasstatus => true,
-        require => [Package['deltacloud-aggregator-daemons'],
-                    Rails::Migrate::Db[migrate_deltacloud_database],
-                    Service[condor]] }
-    }
-
-    'core':  {
-      include ntp::client # we need to sync time to communicate w/ cloud 
providers
-      file {"/etc/init.d/deltacloud-core":
-            source => "puppet:///modules/deltacloud_recipe/deltacloud-core",
-            mode   => 755 }
-     service { 'deltacloud-core':
-        ensure  => 'running',
-        enable  => true,
-        require => [Package['rubygem-deltacloud-core'],
-                    File['/etc/init.d/deltacloud-core']] }
-    }
-
-    'iwhd':  {
-      file { "/data":    ensure => 'directory' }
-      file { "/data/db": ensure => 'directory' }
-      service { 'mongod':
-        ensure  => 'running',
-        enable  => true,
-        require => [Package['iwhd'], File["/data/db"]]}
-      service { 'iwhd':
-        ensure  => 'running',
-        enable  => true,
-        require => [Package['iwhd'],
-                    Service[mongod]]}
-    }
-
-    'image-factory':  {
-      dc::configure_boxgrinder{'conf_bxg':}
-      file { "/etc/qpidd.conf":
-                 source => "puppet:///modules/deltacloud_recipe/qpidd.conf",
-                 mode   => 644 }
-      service {'qpidd':
-                 ensure  => 'running',
-                 enable  => true,
-                 require => [File['/etc/qpidd.conf'],
-                             Package['deltacloud-aggregator-daemons']]}
-      file { "/etc/imagefactory.yml":
-                 source => 
"puppet:///modules/deltacloud_recipe/imagefactory.yml",
-                 mode   => 644 }
-      $requires = [Package['rubygem-deltacloud-image-builder-agent'],
-                   Package['deltacloud-aggregator-daemons'],
-                   File['/etc/imagefactory.yml'],
-                   Service[qpidd],
-                   Rails::Migrate::Db[migrate_deltacloud_database],
-                   Dc::Configure_boxgrinder['conf_bxg']]
-      service { 'imagefactoryd':
-        ensure  => 'running',
-        enable  => true,
-        require => $requires}
-      service { 'deltacloud-image_builder_service':
-        ensure    => 'running',
-        enable    => true,
-        hasstatus => true,
-        require   => $requires}
-    }
-  }
-}
-
-# Stop the deltacloud services
-define dc::service::stop(){
-  case $name {
-    'aggregator':  {
-      service { ['condor', 'httpd']:
-        ensure  => 'stopped',
-        enable  => false,
-        require => Service['deltacloud-aggregator',
-                           'deltacloud-condor_refreshd',
-                           'deltacloud-dbomatic'] }
-      service { ['deltacloud-aggregator',
-                 'deltacloud-condor_refreshd',
-                 'deltacloud-dbomatic']:
-        ensure => 'stopped',
-        enable => false,
-        hasstatus => true }
-    }
-
-    'core':  {
-      service { 'deltacloud-core':
-        ensure  => 'stopped',
-        enable  => false}
-    }
-
-    'iwhd':  {
-      service { 'mongod':
-        ensure  => 'stopped',
-        enable  => false,
-        require => Service[iwhd]}
-      service { 'iwhd':
-        ensure  => 'stopped',
-        enable  => false}
-    }
-
-    'image-factory':  {
-      service {'qpidd':
-                 ensure  => 'stopped',
-                 enable  => false,
-                 require => Service['imagefactoryd', 
'deltacloud-image_builder_service']}
-
-      service { 'imagefactoryd':
-        ensure  => 'stopped',
-        enable  => false}
-
-      service { 'deltacloud-image_builder_service':
-          ensure  => 'stopped',
-          hasstatus => true,
-          enable  => false}
-    }
-  }
-}
-
-# Configure boxgrinder, this should go into the boxgrinder rpms eventually
-define dc::configure_boxgrinder(){
-  file { "/boxgrinder": ensure => "directory"}
-  file { "/boxgrinder/appliances":
-            ensure => "directory",
-            require => File["/boxgrinder"]}
-  file { "/boxgrinder/packaged_builders":
-            ensure => "directory",
-            require => File["/boxgrinder"]}
-  file { "/root/.boxgrinder": ensure => "directory"}
-  file { "/root/.boxgrinder/plugins":
-            ensure => "directory",
-            require => File["/root/.boxgrinder"]}
-  file { "/root/.boxgrinder/plugins/local":
-              source => 
"puppet:///modules/deltacloud_recipe/root-boxgrinder-plugins-local",
-              mode   => 644 }
-}
-
-# Configure pulp to fetch from Fedora
-# TODO uncomment when factory/warehouse uses pulp
-#exec{"pulp_fedora_config":
-#      command => "/usr/bin/pulp-admin -u admin -p admin repo create 
--id=fedora-repo --feed 
yum:http://download.fedora.redhat.com/pub/fedora/linux/updates/13/x86_64/";
-#}
-
-# Create a named bucket in iwhd
-define dc::create_bucket(){
-  package{'curl': ensure => 'installed'}
-  # XXX ugly hack but iwhd might take some time to come up
-  exec{"iwhd_startup_pause":
-              command => "/bin/sleep 2",
-              require => Service[iwhd]}
-  exec{"create-bucket-${name}":
-         command => "/usr/bin/curl -X PUT http://localhost:9090/templates";,
-         require => [Exec['iwhd_startup_pause'], Package[curl]] }
-}
-
-# Initialize and start the deltacloud database
-define dc::db(){
-  # Right now we configure and start postgres, at some point I want
-  # to make the db that gets setup configurable
-  file { "/var/lib/pgsql/data/pg_hba.conf":
-           source => "puppet:///modules/deltacloud_recipe/pg_hba.conf",
-           require => Exec["pginitdb"] }
-  include postgres::server
-  postgres::user{"dcloud":
-                   password => "v23zj59an",
-                   roles    => "CREATEDB",
-                   require  => Service["postgresql"]}
-
-
-  # Create deltacloud database
-  rails::create::db{"create_deltacloud_database":
-              cwd        => "/usr/share/deltacloud-aggregator",
-              rails_env  => "production",
-              require    => [Postgres::User[dcloud], 
Package['deltacloud-aggregator']]}
-  rails::migrate::db{"migrate_deltacloud_database":
-              cwd             => "/usr/share/deltacloud-aggregator",
-              rails_env       => "production",
-              require         => Rails::Create::Db[create_deltacloud_database]}
-}
-
-# Destroy the deltacloud database
-define dc::db::destroy(){
-  rails::drop::db{"drop_deltacloud_database":
-              cwd        => "/usr/share/deltacloud-aggregator",
-              rails_env  => "production",
-              require    => Service["deltacloud-aggregator",
-                                    "deltacloud-condor_refreshd",
-                                    "deltacloud-dbomatic",
-                                    "deltacloud-image_builder_service"]}
-  postgres::user{"dcloud":
-                  ensure => 'dropped',
-                  require => Rails::Drop::Db["drop_deltacloud_database"]}
-}
-
-# Create a new site admin aggregator web user
-define dc::site_admin($email="", $password="", $first_name="", $last_name=""){
-  exec{"create_site_admin_user":
-         cwd         => '/usr/share/deltacloud-aggregator',
-         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"]}
-  exec{"grant_site_admin_privs":
-         cwd         => '/usr/share/deltacloud-aggregator',
-         environment => "RAILS_ENV=production",
-         command     => "/usr/bin/rake dc:site_admin[${name}]",
-         unless      => "/usr/bin/test `psql dcloud dcloud -P tuples_only -c 
\"select count(*) FROM roles INNER JOIN permissions ON (roles.id = 
permissions.role_id) INNER JOIN users ON (permissions.user_id = users.id) where 
roles.name = 'Administrator' AND users.login = '${name}';\"` = \"1\"",
-         require     => Exec[create_site_admin_user]}
-}
-
-# Destroy and cleanup deltacloud artifacts
-define dc::cleanup(){
-  exec{"remove_deltacloud_templates": command => "/bin/rm -rf /templates"}
-  exec{"remove_boxgrinder_dir":       command => "/bin/rm -rf /boxgrinder"}
-}
diff --git a/recipes/deltacloud_recipe/manifests/image-factory.pp 
b/recipes/deltacloud_recipe/manifests/image-factory.pp
new file mode 100644
index 0000000..0888dd8
--- /dev/null
+++ b/recipes/deltacloud_recipe/manifests/image-factory.pp
@@ -0,0 +1,80 @@
+# Deltacloud image factory puppet definitions
+
+class deltacloud::image-factory inherits deltacloud {
+  ### Configure boxgrinder, this should go into the boxgrinder rpms eventually
+    file { "/boxgrinder": ensure => "directory"}
+    file { "/boxgrinder/appliances":
+              ensure => "directory",
+              require => File["/boxgrinder"]}
+    file { "/boxgrinder/packaged_builders":
+              ensure => "directory",
+              require => File["/boxgrinder"]}
+    file { "/root/.boxgrinder": ensure => "directory"}
+    file { "/root/.boxgrinder/plugins":
+              ensure => "directory",
+              require => File["/root/.boxgrinder"]}
+    file { "/root/.boxgrinder/plugins/local":
+                source => 
"puppet:///modules/deltacloud_recipe/root-boxgrinder-plugins-local",
+                mode   => 644,
+                require => File["/root/.boxgrinder/plugins"]}
+    notify { 'boxgrinder_configured':
+                message => 'boxgrinder successfully configured',
+                require => File['/root/.boxgrinder/plugins/local',
+                                '/boxgrinder/packaged_builders',
+                                '/boxgrinder/appliances'] }
+
+  ### Configure pulp to fetch from Fedora
+    # TODO uncomment when factory/warehouse uses pulp
+    #exec{"pulp_fedora_config":
+    #      command => "/usr/bin/pulp-admin -u admin -p admin repo create 
--id=fedora-repo --feed 
yum:http://download.fedora.redhat.com/pub/fedora/linux/updates/13/x86_64/";
+    #}
+
+  ### Start the deltacloud services
+    file { "/etc/qpidd.conf":
+               source => "puppet:///modules/deltacloud_recipe/qpidd.conf",
+               mode   => 644 }
+    service {'qpidd':
+               ensure  => 'running',
+               enable  => true,
+               require => [File['/etc/qpidd.conf'],
+                           Package['deltacloud-aggregator-daemons']]}
+    file { "/etc/imagefactory.yml":
+               source => 
"puppet:///modules/deltacloud_recipe/imagefactory.yml",
+               mode   => 644 }
+    $requires = [Package['rubygem-deltacloud-image-builder-agent'],
+                 Package['deltacloud-aggregator-daemons'],
+                 File['/etc/imagefactory.yml'],
+                 Service[qpidd],
+                 Rails::Migrate::Db[migrate_deltacloud_database],
+                 Notify['boxgrinder_configured']]
+    service { 'imagefactoryd':
+      ensure  => 'running',
+      enable  => true,
+      require => $requires}
+    service { 'deltacloud-image_builder_service':
+      ensure    => 'running',
+      enable    => true,
+      hasstatus => true,
+      require   => $requires}
+}
+
+class deltacloud::image-factory::disabled {
+  ### Stop the deltacloud services
+    service {'qpidd':
+               ensure  => 'stopped',
+               enable  => false,
+               require => Service['imagefactoryd', 
'deltacloud-image_builder_service']}
+
+    service { 'imagefactoryd':
+      ensure  => 'stopped',
+      enable  => false}
+
+    service { 'deltacloud-image_builder_service':
+        ensure  => 'stopped',
+        hasstatus => true,
+        enable  => false}
+
+  ### Destroy and cleanup deltacloud artifacts
+    exec{"remove_deltacloud_templates": command => "/bin/rm -rf /templates"}
+    exec{"remove_boxgrinder_dir":       command => "/bin/rm -rf /boxgrinder"}
+}
diff --git a/recipes/deltacloud_recipe/manifests/iwhd.pp 
b/recipes/deltacloud_recipe/manifests/iwhd.pp
new file mode 100644
index 0000000..9711b75
--- /dev/null
+++ b/recipes/deltacloud_recipe/manifests/iwhd.pp
@@ -0,0 +1,40 @@
+# Deltacloud iwhd puppet definitions
+
+class deltacloud::iwhd inherits deltacloud {
+  ### Start the deltacloud services
+    file { "/data":    ensure => 'directory' }
+    file { "/data/db": ensure => 'directory' }
+    service { 'mongod':
+      ensure  => 'running',
+      enable  => true,
+      require => [Package['iwhd'], File["/data/db"]]}
+    service { 'iwhd':
+      ensure  => 'running',
+      enable  => true,
+      require => [Package['iwhd'],
+                  Service[mongod]]}
+}
+
+class deltacloud::iwhd::disabled {
+  ### Stop the deltacloud services
+    service { 'mongod':
+      ensure  => 'stopped',
+      enable  => false,
+      require => Service[iwhd]}
+    service { 'iwhd':
+      ensure  => 'stopped',
+      enable  => false,
+      hasstatus => true}
+}
+
+# Create a named bucket in iwhd
+define deltacloud::create_bucket(){
+  package{'curl': ensure => 'installed'}
+  # XXX ugly hack but iwhd might take some time to come up
+  exec{"iwhd_startup_pause":
+              command => "/bin/sleep 2",
+              require => Service[iwhd]}
+  exec{"create-bucket-${name}":
+         command => "/usr/bin/curl -X PUT http://localhost:9090/templates";,
+         require => [Exec['iwhd_startup_pause'], Package[curl]] }
+}
-- 
1.7.2.3

_______________________________________________
deltacloud-devel mailing list
[email protected]
https://fedorahosted.org/mailman/listinfo/deltacloud-devel

Reply via email to