[PATCH] Added delayed_job service
by Jan Provazník
From: Jan Provaznik <jprovazn(a)redhat.com>
---
recipes/deltacloud_recipe/manifests/aggregator.pp | 24 ++++++++++++++++++++-
1 files changed, 23 insertions(+), 1 deletions(-)
diff --git a/recipes/deltacloud_recipe/manifests/aggregator.pp b/recipes/deltacloud_recipe/manifests/aggregator.pp
index 538b7f1..3bd27a0 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], Service['solr']]}
+ require => [Rails::Create::Db[create_deltacloud_database], Service['solr'], Service['delayed_job']]}
rails::seed::db{"seed_deltacloud_database":
cwd => "/usr/share/deltacloud-aggregator",
rails_env => "production",
@@ -83,6 +83,17 @@ class deltacloud::aggregator inherits deltacloud {
command => "/usr/bin/rake sunspot:reindex",
environment => "RAILS_ENV=production",
require => Rails::Migrate::Db['migrate_deltacloud_database']}
+
+ ### Start delayed_job service
+ service{"delayed_job":
+ start => "RAILS_ENV=production /usr/share/deltacloud-aggregator/script/delayed_job start",
+ stop => "RAILS_ENV=production /usr/share/deltacloud-aggregator/script/delayed_job stop",
+ hasstatus => "false",
+ pattern => "delayed_job",
+ ensure => 'running',
+ require => [Package['deltacloud-aggregator'], Rails::Create::Db['create_deltacloud_database']]}
+
+
}
class deltacloud::aggregator::disabled {
@@ -101,6 +112,7 @@ class deltacloud::aggregator::disabled {
require => [Package['deltacloud-aggregator-daemons',
'deltacloud-aggregator-doc'],
Service['solr'],
+ Service['delayed_job'],
Rails::Drop::Db["drop_deltacloud_database"]] }
file {"/var/lib/deltacloud-aggregator":
@@ -145,6 +157,16 @@ class deltacloud::aggregator::disabled {
pattern => "solr",
ensure => 'stopped',
require => Service['deltacloud-aggregator']}
+
+ ### stop delayed_job service
+ service{"delayed_job":
+ stop => "RAILS_ENV=production /usr/share/deltacloud-aggregator/script/delayed_job stop",
+ hasstatus => "false",
+ pattern => "delayed_job",
+ ensure => 'running',
+ require => [Package['deltacloud-aggregator']]}
+
+
}
# Create a new site admin aggregator web user
--
1.7.3.5
13 years, 2 months
[PATCH conductor] added delayed_job script
by Jan Provazník
From: Jan Provaznik <jprovazn(a)redhat.com>
need this script to be able manage delayed_job process (start/stop) from init
service/puppet
---
src/script/delayed_job | 5 +++++
1 files changed, 5 insertions(+), 0 deletions(-)
create mode 100755 src/script/delayed_job
diff --git a/src/script/delayed_job b/src/script/delayed_job
new file mode 100755
index 0000000..edf1959
--- /dev/null
+++ b/src/script/delayed_job
@@ -0,0 +1,5 @@
+#!/usr/bin/env ruby
+
+require File.expand_path(File.join(File.dirname(__FILE__), '..', 'config', 'environment'))
+require 'delayed/command'
+Delayed::Command.new(ARGV).daemonize
--
1.7.3.5
13 years, 2 months
[PATCH configure] add flag toggling package installation / removal
by Mo Morsi
Sets the default settings to ensure packages exist in deltacloud-configure
but leave installed packages as is in deltacloud-cleanup
---
bin/deltacloud-cleanup | 1 +
bin/deltacloud-configure | 1 +
.../lib/puppet/parser/functions/return_if.rb | 7 ++
recipes/deltacloud_recipe/manifests/aggregator.pp | 70 ++++++++-------
recipes/deltacloud_recipe/manifests/core.pp | 16 ++--
recipes/deltacloud_recipe/manifests/deltacloud.pp | 6 ++
.../deltacloud_recipe/manifests/image-factory.pp | 92 ++++++++++---------
recipes/deltacloud_recipe/manifests/iwhd.pp | 22 +++--
8 files changed, 124 insertions(+), 91 deletions(-)
create mode 100644 recipes/deltacloud_recipe/lib/puppet/parser/functions/return_if.rb
diff --git a/bin/deltacloud-cleanup b/bin/deltacloud-cleanup
index a359fce..6401683 100755
--- a/bin/deltacloud-cleanup
+++ b/bin/deltacloud-cleanup
@@ -1,4 +1,5 @@
#!/bin/sh
+export FACTER_AEOLUS_ENABLE_PACKAGES=false
puppet /usr/share/deltacloud-configure/deltacloud_uninstall.pp \
--modulepath=/usr/share/deltacloud-configure/modules/
diff --git a/bin/deltacloud-configure b/bin/deltacloud-configure
index c034d4c..2c2f6bb 100755
--- a/bin/deltacloud-configure
+++ b/bin/deltacloud-configure
@@ -1,4 +1,5 @@
#!/bin/sh
+export FACTER_AEOLUS_ENABLE_PACKAGES=true
puppet /usr/share/deltacloud-configure/deltacloud_recipe.pp \
--modulepath=/usr/share/deltacloud-configure/modules/
diff --git a/recipes/deltacloud_recipe/lib/puppet/parser/functions/return_if.rb b/recipes/deltacloud_recipe/lib/puppet/parser/functions/return_if.rb
new file mode 100644
index 0000000..0e943ea
--- /dev/null
+++ b/recipes/deltacloud_recipe/lib/puppet/parser/functions/return_if.rb
@@ -0,0 +1,7 @@
+module Puppet::Parser::Functions
+ newfunction(:return_if, :type => :rvalue) do |args|
+ condition = args[0]
+ value = args[1]
+ condition ? value : []
+ end
+end
diff --git a/recipes/deltacloud_recipe/manifests/aggregator.pp b/recipes/deltacloud_recipe/manifests/aggregator.pp
index 538b7f1..b329f68 100644
--- a/recipes/deltacloud_recipe/manifests/aggregator.pp
+++ b/recipes/deltacloud_recipe/manifests/aggregator.pp
@@ -3,16 +3,18 @@
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 { 'rubygem-deltacloud-client':
- provider => 'yum', ensure => 'installed', require => Yumrepo['deltacloud_arch', 'deltacloud_noarch'] }
-
- package {['deltacloud-aggregator',
- 'deltacloud-aggregator-daemons',
- 'deltacloud-aggregator-doc']:
- provider => 'yum', ensure => 'installed',
- require => Package['rubygem-deltacloud-client',
- 'rubygem-deltacloud-image-builder-agent',
- 'iwhd']}
+ if $enable_packages {
+ package { 'rubygem-deltacloud-client':
+ provider => 'yum', ensure => 'installed', require => Yumrepo['deltacloud_arch', 'deltacloud_noarch'] }
+
+ package {['deltacloud-aggregator',
+ 'deltacloud-aggregator-daemons',
+ 'deltacloud-aggregator-doc']:
+ provider => 'yum', ensure => 'installed',
+ require => Package['rubygem-deltacloud-client',
+ 'rubygem-deltacloud-image-builder-agent',
+ 'iwhd']}
+ }
file {"/var/lib/deltacloud-aggregator":
ensure => directory,
@@ -26,7 +28,7 @@ class deltacloud::aggregator inherits deltacloud {
### Start the deltacloud services
file {"/var/lib/condor/condor_config.local":
source => "puppet:///modules/deltacloud_recipe/condor_config.local",
- require => Package['deltacloud-aggregator-daemons'] }
+ require => return_if($enable_packages, Package['deltacloud-aggregator-daemons']) }
service { ['condor', 'httpd']:
ensure => 'running',
enable => true,
@@ -37,7 +39,7 @@ class deltacloud::aggregator inherits deltacloud {
ensure => 'running',
enable => true,
hasstatus => true,
- require => [Package['deltacloud-aggregator-daemons'],
+ require => [return_if($enable_packages, Package['deltacloud-aggregator-daemons']),
Rails::Seed::Db[seed_deltacloud_database],
Service[condor]] }
@@ -58,7 +60,7 @@ class deltacloud::aggregator inherits deltacloud {
rails::create::db{"create_deltacloud_database":
cwd => "/usr/share/deltacloud-aggregator",
rails_env => "production",
- require => [Postgres::User[dcloud], Package['deltacloud-aggregator']]}
+ require => [Postgres::User[dcloud], return_if($enable_packages, Package['deltacloud-aggregator'])] }
rails::migrate::db{"migrate_deltacloud_database":
cwd => "/usr/share/deltacloud-aggregator",
rails_env => "production",
@@ -76,7 +78,7 @@ class deltacloud::aggregator inherits deltacloud {
hasstatus => "false",
pattern => "solr",
ensure => 'running',
- require => [Package['deltacloud-aggregator'], Rails::Create::Db['create_deltacloud_database']]}
+ require => [return_if($enable_packages, Package['deltacloud-aggregator']), Rails::Create::Db['create_deltacloud_database']]}
exec{"build_solr_index":
cwd => "/usr/share/deltacloud-aggregator",
@@ -87,30 +89,34 @@ class deltacloud::aggregator inherits deltacloud {
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'],
- Service['solr'],
- Rails::Drop::Db["drop_deltacloud_database"]] }
+ if $enable_packages {
+ 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'],
+ Service['solr'],
+ 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']}
+ if $enable_packages {
+ package { 'rubygem-deltacloud-client':
+ provider => 'yum', ensure => 'absent',
+ require => Package['deltacloud-aggregator']}
+ }
### Stop the deltacloud services
service { ['condor', 'httpd']:
diff --git a/recipes/deltacloud_recipe/manifests/core.pp b/recipes/deltacloud_recipe/manifests/core.pp
index 443268d..0c649d5 100644
--- a/recipes/deltacloud_recipe/manifests/core.pp
+++ b/recipes/deltacloud_recipe/manifests/core.pp
@@ -2,8 +2,10 @@
class deltacloud::core inherits deltacloud {
### Install the deltacloud components
- package { 'rubygem-deltacloud-core':
- provider => 'yum', ensure => 'installed', require => Yumrepo['deltacloud_arch', 'deltacloud_noarch']}
+ if $enable_packages {
+ package { 'rubygem-deltacloud-core':
+ provider => 'yum', ensure => 'installed', require => Yumrepo['deltacloud_arch', 'deltacloud_noarch']}
+ }
file { "/var/log/deltacloud-core": ensure => 'directory' }
### we need to sync time to communicate w/ cloud providers
@@ -16,15 +18,17 @@ class deltacloud::core inherits deltacloud {
service { 'deltacloud-core':
ensure => 'running',
enable => true,
- require => [Package['rubygem-deltacloud-core'],
+ require => [return_if($enable_packages, 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']}
+ if $enable_packages {
+ package { 'rubygem-deltacloud-core':
+ provider => 'yum', ensure => 'absent',
+ require => Service['deltacloud-core']}
+ }
### Stop the deltacloud services
service { 'deltacloud-core':
diff --git a/recipes/deltacloud_recipe/manifests/deltacloud.pp b/recipes/deltacloud_recipe/manifests/deltacloud.pp
index 1362f62..3de32f0 100644
--- a/recipes/deltacloud_recipe/manifests/deltacloud.pp
+++ b/recipes/deltacloud_recipe/manifests/deltacloud.pp
@@ -12,6 +12,12 @@ import "core"
import "iwhd"
import "image-factory"
+if $aeolus_enable_packages == "true" or $aeolus_enable_packages == "1" {
+ $enable_packages = true
+} else {
+ $enable_packages = false
+}
+
# Base deltacloud class
class deltacloud {
# Setup repos which to pull deltacloud components
diff --git a/recipes/deltacloud_recipe/manifests/image-factory.pp b/recipes/deltacloud_recipe/manifests/image-factory.pp
index c584d5a..6d4be23 100644
--- a/recipes/deltacloud_recipe/manifests/image-factory.pp
+++ b/recipes/deltacloud_recipe/manifests/image-factory.pp
@@ -3,14 +3,16 @@
class deltacloud::image-factory inherits deltacloud {
# 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' }
+ if $enable_packages {
+ package{"ec2-ami-tools":
+ provider => "rpm",
+ source => "http://s3.amazonaws.com/ec2-downloads/ec2-ami-tools.noarch.rpm",
+ ensure => 'installed' }
- package { 'rubygem-deltacloud-image-builder-agent':
- provider => 'yum', ensure => 'installed',
- require => [Package['ec2-ami-tools'], Yumrepo['deltacloud_arch', 'deltacloud_noarch']]}
+ package { 'rubygem-deltacloud-image-builder-agent':
+ provider => 'yum', ensure => 'installed',
+ require => [Package['ec2-ami-tools'], Yumrepo['deltacloud_arch', 'deltacloud_noarch']]}
+ }
### Configure boxgrinder, this should go into the boxgrinder rpms eventually
@@ -49,12 +51,12 @@ class deltacloud::image-factory inherits deltacloud {
ensure => 'running',
enable => true,
require => [File['/etc/qpidd.conf'],
- Package['deltacloud-aggregator-daemons']]}
+ return_if($enable_packages, 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'],
+ $requires = [return_if($enable_packages, Package['rubygem-deltacloud-image-builder-agent']),
+ return_if($enable_packages, Package['deltacloud-aggregator-daemons']),
File['/etc/imagefactory.yml'],
Service[qpidd],
Rails::Seed::Db[seed_deltacloud_database],
@@ -88,40 +90,42 @@ class deltacloud::image-factory::disabled {
### Uninstall the deltacloud components
- package { 'rubygem-deltacloud-image-builder-agent':
- provider => 'yum', ensure => 'absent',
- require => Package['deltacloud-aggregator']}
-
- # 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']}
+ if $enable_packages {
+ package { 'rubygem-deltacloud-image-builder-agent':
+ provider => 'yum', ensure => 'absent',
+ require => Package['deltacloud-aggregator']}
+
+ # 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']}
+ }
### Destroy and cleanup deltacloud artifacts
diff --git a/recipes/deltacloud_recipe/manifests/iwhd.pp b/recipes/deltacloud_recipe/manifests/iwhd.pp
index ed5bd7a..e8eae12 100644
--- a/recipes/deltacloud_recipe/manifests/iwhd.pp
+++ b/recipes/deltacloud_recipe/manifests/iwhd.pp
@@ -2,10 +2,12 @@
class deltacloud::iwhd inherits deltacloud {
### Install the deltacloud components
- package { 'iwhd':
- provider => 'yum', ensure => 'installed',
- require => Yumrepo['deltacloud_arch', 'deltacloud_noarch']
- }
+ if $enable_packages{
+ package { 'iwhd':
+ provider => 'yum', ensure => 'installed',
+ require => Yumrepo['deltacloud_arch', 'deltacloud_noarch']
+ }
+ }
### Start the deltacloud services
file { "/data": ensure => 'directory' }
@@ -23,13 +25,13 @@ class deltacloud::iwhd inherits deltacloud {
service { 'mongod':
ensure => 'running',
enable => true,
- require => [Package['iwhd'], File["/data/db"]]}
+ require => [return_if($enable_package, Package['iwhd']), File["/data/db"]]}
service { 'iwhd':
ensure => 'running',
enable => true,
hasstatus => true,
require => [File['/etc/rc.d/init.d/iwhd', '/etc/iwhd/conf.js'],
- Package['iwhd'],
+ return_if($enable_package, Package['iwhd']),
Service[mongod]]}
# XXX ugly hack but iwhd might take some time to come up
@@ -52,9 +54,11 @@ class deltacloud::iwhd::disabled {
### Uninstall the deltacloud components
- package { 'iwhd':
- provider => 'yum', ensure => 'absent',
- require => [Package['deltacloud-aggregator'], Service['iwhd']]}
+ if $enable_packages {
+ package { 'iwhd':
+ provider => 'yum', ensure => 'absent',
+ require => [Package['deltacloud-aggregator'], Service['iwhd']]}
+ }
}
# Create a named bucket in iwhd
--
1.7.2.3
13 years, 2 months
[PATCH] Use REST API for quota check
by Ian Main
This patch makes the classad plugin use the REST API. This introduces
a requirement on librest so you will now have to have rest-devel,
glib2-devel, libsoup-devel, and libxml2-devel installed to build.
Signed-off-by: Ian Main <imain(a)redhat.com>
---
configure.ac | 6 +
deltacloud-aggregator.spec.in | 8 ++
src/app/util/condormatic.rb | 11 +-
src/classad_plugin/Makefile.am | 12 +-
src/classad_plugin/classad_plugin.rb | 79 -------------
src/classad_plugin/deltacloud_classad_plugin.cpp | 128 +++++++++++----------
6 files changed, 92 insertions(+), 152 deletions(-)
delete mode 100644 src/classad_plugin/classad_plugin.rb
diff --git a/configure.ac b/configure.ac
index 9598925..c597a74 100644
--- a/configure.ac
+++ b/configure.ac
@@ -33,6 +33,12 @@ elif test "x$with_classads" = "x"; then
fi
fi
+PKG_CHECK_MODULES(GLIB, glib-2.0 >= 2.18)
+PKG_CHECK_MODULES(SOUP, libsoup-2.4)
+PKG_CHECK_MODULES(XML, libxml-2.0)
+PKG_CHECK_MODULES(GTHREAD, gthread-2.0)
+PKG_CHECK_MODULES(REST, rest-0.6)
+
# If using gcc and default CFLAGS, enable some warnings.
test x"$ac_ct_CC:$CFLAGS" = 'xgcc:-g -O2' \
&& CFLAGS="$CFLAGS -Wshadow -Wall -Werror"
diff --git a/deltacloud-aggregator.spec.in b/deltacloud-aggregator.spec.in
index 0632f79..c7d6a7b 100644
--- a/deltacloud-aggregator.spec.in
+++ b/deltacloud-aggregator.spec.in
@@ -38,6 +38,10 @@ Requires: postgresql-server
Requires: ruby-postgres
Requires: ruby-RMagick
Requires: classads >= 1.0
+Requires: libsoup >= 2.0
+Requires: glib2 >= 2.0
+Requires: libxml2 >= 2.6
+Requires: rest >= 0.6
Requires: condor >= 7.5.5-10dcloud
Requires: iwhd
Requires: deltacloud-configure
@@ -45,6 +49,10 @@ Requires: deltacloud-configure
BuildRequires: ruby
BuildRequires: ruby-devel
BuildRequires: classads-devel >= 1.0
+BuildRequires: libsoup-devel >= 2.0
+BuildRequires: glib2-devel >= 2.0
+BuildRequires: libxml2-devel >= 2.6
+BuildRequires: rest-devel >= 0.6
%package daemons
Summary: Deltacloud Aggregator daemons config
diff --git a/src/app/util/condormatic.rb b/src/app/util/condormatic.rb
index 8b4e224..1d52d21 100644
--- a/src/app/util/condormatic.rb
+++ b/src/app/util/condormatic.rb
@@ -57,13 +57,10 @@ def condormatic_instance_create(task)
requirements = "requirements = hardwareprofile == \"#{instance.hardware_profile.id}\" && image == \"#{instance.template.id}\""
requirements += " && realm == \"#{realm.id}\"" if realm != nil
- # We may need to add some stuff to the provider classads like pool id, provider id etc. This is mostly just
- # to test and make sure this works for now.
- #
- # This is currently broken as the condor plugin loads models without initializing rails.
- # However, recent changes have required that rails be initialized in order to load the
- # pool and quota models.
- #requirements += " && deltacloud_quota_check(\"#{job_name}\", other.cloud_account_id)"
+ # Call into the deltacloud quota plugin. This uses a REST API to call back into the
+ # conductor to check quotas as the last thing in the logical AND to match a provider
+ # account.
+ requirements += " && deltacloud_quota_check(#{instance.id}, other.cloud_account_id)"
requirements += "\n"
pipe.puts requirements
diff --git a/src/classad_plugin/Makefile.am b/src/classad_plugin/Makefile.am
index 9334f5f..5d40240 100644
--- a/src/classad_plugin/Makefile.am
+++ b/src/classad_plugin/Makefile.am
@@ -1,12 +1,14 @@
-AM_CPPFLAGS=-I`ruby -e "require 'rbconfig' ; puts Config::CONFIG['archdir']"` \
- -DDELTACLOUD_INSTALL_DIR=\"$(DELTACLOUD_INSTALL_DIR)\" -DLOGFILE=\"/var/log/condor/deltacloud_condor_plugin.log\"
+AM_CPPFLAGS= $(GLIB_CFLAGS) $(GTHREAD_CFLAGS) \
+ $(SOUP_CFLAGS) $(SOUP_GNOME_CFLAGS) \
+ $(XML_CFLAGS) $(REST_CFLAGS) \
+ -DLOGFILE=\"/var/log/condor/deltacloud_condor_plugin.log\"
classadplugindir=$(pkgdatadir)/classad_plugin
classadplugin_LTLIBRARIES = deltacloud_classad_plugin.la
deltacloud_classad_plugin_la_SOURCES = deltacloud_classad_plugin.cpp
-deltacloud_classad_plugin_la_LIBADD = -lclassad -lruby
+deltacloud_classad_plugin_la_LIBADD = $(GLIB_LIBS) $(GTHREAD_LIBS) \
+ $(SOUP_LIBS) $(SOUP_GNOME_LIBS) $(XML_LIBS) $(REST_LIBS)\
+ -lclassad
deltacloud_classad_plugin_la_LDFLAGS = -module -avoid-version -shared
-
-classadplugin_DATA = classad_plugin.rb
diff --git a/src/classad_plugin/classad_plugin.rb b/src/classad_plugin/classad_plugin.rb
deleted file mode 100644
index 2aabfb9..0000000
--- a/src/classad_plugin/classad_plugin.rb
+++ /dev/null
@@ -1,79 +0,0 @@
-require 'rubygems'
-require 'active_record'
-require 'search_filter'
-require 'permissioned_object'
-require 'authlogic'
-require 'user'
-require 'instance'
-require 'cloud_account'
-require 'pool'
-require 'quota'
-
-class BashParser
- def initialize(filename)
- @config = {}
-
- f = File.open(filename, 'r')
- while (line = f.gets)
- strip = line.strip.gsub(/#.*/, '').gsub(/^export /, '')
- if strip.length == 0
- next
- end
-
- x = strip.split('=')
- if x.length != 2
- next
- end
-
- @config[x[0]] = x[1]
- end
-
- f.close
- end
-
- def get_value(name)
- @config[name]
- end
-end
-
-def classad_plugin(logf, conf_path, instance_key, account_id)
- rails_env = "development"
-
- begin
- config = BashParser.new('/etc/sysconfig/deltacloud-rails')
- env = config.get_value('RAILS_ENV')
- if not env.nil?
- rails_env = env
- end
- rescue
- # if any of this failed, then just assume the development database and
- # hope for the best
- end
-
- logf.puts "loading db config from #{conf_path}, using environment #{rails_env}"
- conf = YAML::load(File.open(conf_path))
- ActiveRecord::Base.establish_connection(conf[rails_env])
-
- # I left the puts in here because you can run condor_negotiator -f from the
- # command line and it will print this stuff out. Very nice for debugging.
- logf.puts "getting instance from key #{instance_key}"
- instance = Instance.find(:first,
- :conditions => [ "condor_job_id = ?", instance_key ])
- logf.puts "getting cloud account from id #{account_id}"
- cloud_account = CloudAccount.find(:first,
- :conditions => [ "id = ?", account_id ])
-
- logf.puts "instance is: #{instance}, cloud account is #{cloud_account}"
-
- return false if instance.nil?
- return false if cloud_account.nil?
-
- logf.puts "checking quota.."
- ret = Quota.can_start_instance?(instance, cloud_account)
- logf.puts "After checking quota, ret is #{ret}"
-
- logf.puts "Disconnecting from the database"
- ActiveRecord::Base.connection.disconnect!
-
- return ret
-end
diff --git a/src/classad_plugin/deltacloud_classad_plugin.cpp b/src/classad_plugin/deltacloud_classad_plugin.cpp
index 74d6023..cfd52c8 100644
--- a/src/classad_plugin/deltacloud_classad_plugin.cpp
+++ b/src/classad_plugin/deltacloud_classad_plugin.cpp
@@ -1,4 +1,3 @@
-#include <ruby.h>
#include <stdio.h>
#include <iostream>
@@ -7,6 +6,9 @@
#include "classad/classad_distribution.h"
#include "classad/fnCall.h"
+#include <rest/rest-proxy.h>
+#include <rest/rest-xml-parser.h>
+
using namespace std;
#ifdef WANT_CLASSAD_NAMESPACE
using namespace classad;
@@ -70,6 +72,26 @@ static void _print_value(FILE *fp, Value val, const char *name)
fprintf(fp, "%s\n", sstr.str().c_str());
}
+static RestXmlNode *
+get_xml (RestProxyCall *call)
+{
+ RestXmlParser *parser;
+ RestXmlNode *root;
+ GError *error = NULL;
+
+ parser = rest_xml_parser_new ();
+
+ root = rest_xml_parser_parse_from_data (parser,
+ rest_proxy_call_get_payload (call),
+ rest_proxy_call_get_payload_length (call));
+
+ g_object_unref (call);
+ g_object_unref (parser);
+
+ return root;
+}
+
+
/*
* Perform our quota check against the deltacloud aggregator database.
* This function expects:
@@ -87,14 +109,18 @@ bool
deltacloud_quota_check(const char *name, const ArgumentList &arglist,
EvalState &state, Value &result)
{
- Value instance_key;
+ Value instance_id;
Value account_id;
FILE *fp;
- VALUE res;
bool val = false;
- char *ruby_string;
- std::stringstream method_args;
- int rc;
+ RestProxy *proxy;
+ RestProxyCall *call;
+ RestXmlNode *root;
+ std::stringstream rest_call;
+ GError *err = NULL;
+
+ g_thread_init (NULL);
+ g_type_init ();
result.SetBooleanValue(false);
@@ -106,22 +132,22 @@ deltacloud_quota_check(const char *name, const ArgumentList &arglist,
goto do_ret;
}
- if (!arglist[0]->Evaluate(state, instance_key)) {
+ if (!arglist[0]->Evaluate(state, instance_id)) {
result.SetErrorValue();
- fprintf(fp, "Could not evaluate argument 0 to instance key\n");
+ fprintf(fp, "Could not evaluate argument 0 to instance id\n");
goto do_ret;
}
if (!arglist[1]->Evaluate(state, account_id)) {
result.SetErrorValue();
- fprintf(fp, "Could not evaluate argument 1 to account_id\n");
+ fprintf(fp, "Could not evaluate argument 1 to account id\n");
goto do_ret;
}
- print_type(fp, instance_key);
- print_value(fp, instance_key);
- if (instance_key.GetType() != Value::STRING_VALUE) {
+ print_type(fp, instance_id);
+ print_value(fp, instance_id);
+ if (instance_id.GetType() != Value::INTEGER_VALUE) {
result.SetErrorValue();
- fprintf(fp, "Instance type was not a string\n");
+ fprintf(fp, "Instance id type was not an integer\n");
goto do_ret;
}
@@ -133,56 +159,36 @@ deltacloud_quota_check(const char *name, const ArgumentList &arglist,
goto do_ret;
}
- ruby_init();
- ruby_init_loadpath();
-
- method_args << "'" << DELTACLOUD_INSTALL_DIR << "/config/database.yml', '"
- << instance_key << "', " << account_id;
-
- rc = asprintf(&ruby_string,
- "$: << '%s/classad_plugin'\n"
- "$: << '%s/app/models'\n"
- "logf = File.new('%s', 'a')\n"
- "logf.puts \"Loading ruby support file from %s/classad_plugin\"\n"
- "begin\n"
- " require 'classad_plugin.rb'\n"
- " ret = classad_plugin(logf, %s)\n"
- "rescue Exception => ex\n"
- " logf.puts \"Error running classad plugin: #{ex.message}\"\n"
- " logf.puts ex.backtrace\n"
- " ret = false\n"
- "end\n"
- "logf.close\n"
- "ret",
- DELTACLOUD_INSTALL_DIR,
- DELTACLOUD_INSTALL_DIR,
- LOGFILE,
- DELTACLOUD_INSTALL_DIR,
- method_args.str().c_str());
-
- if (rc < 0) {
- fprintf(fp, "Failed to allocate memory for asprintf\n");
- goto do_ret;
+ rest_call << "resources/instances/" << instance_id << "/can_start/" << account_id;
+
+ // Call rest API to get answer on quota..
+ proxy = rest_proxy_new ("http://localhost:3000/deltacloud", FALSE);
+ call = rest_proxy_new_call (proxy);
+ rest_proxy_call_set_function (call, rest_call.str().c_str());
+
+ fprintf(fp, "Calling REST API with %s\n", rest_call.str().c_str());
+ rest_proxy_call_sync (call, &err);
+
+ if (err != NULL) {
+ fprintf (fp, "Error calling REST API: %s\n", err->message);
+ } else {
+ root = get_xml (call);
+ if (root) {
+ RestXmlNode *node;
+ gchar *value;
+
+ node = rest_xml_node_find (root, "value");
+ value = node->content;
+
+ fprintf (fp, "return value is %s\n", value);
+ if (strncmp(value, "true", 4) == 0) {
+ result.SetBooleanValue(true);
+ val = true;
+ }
+ }
}
- fprintf(fp, "ruby string is %s\n", ruby_string);
- fflush(fp);
-
- res = rb_eval_string(ruby_string);
- free(ruby_string);
-
- /* FIXME: I'd like to call ruby_finalize here, but it spews weird errors:
- *
- * Error running classad plugin: wrong argument type Mutex (expected Data)
- */
- //ruby_finalize();
-
- fprintf(fp, "Returned result from ruby code was %s\n", (res == Qtrue) ? "true" : "false");
-
- if (res == Qtrue) {
- result.SetBooleanValue(true);
- val = true;
- }
+ g_object_unref (proxy);
do_ret:
fclose(fp);
--
1.7.4
13 years, 2 months
[PATCH aeolus] Renamed ReplicatedImage to ProviderImage
by Martyn Taylor
From: Martyn Taylor <mtaylor(a)redhat.com>
---
.../controllers/resources/instances_controller.rb | 4 ++--
src/app/models/image.rb | 10 +++++-----
src/app/models/provider.rb | 2 +-
src/app/models/provider_image.rb | 7 +++++++
src/app/models/replicated_image.rb | 7 -------
src/app/models/template.rb | 2 +-
src/app/util/condormatic.rb | 14 +++++++-------
...31_rename_replicated_image_to_provider_image.rb | 9 +++++++++
src/features/provider.feature | 4 ++--
src/features/step_definitions/instance_steps.rb | 2 +-
src/features/step_definitions/provider_steps.rb | 8 ++++----
src/image_builder_service/image_builder_service | 4 ++--
src/spec/controllers/builds_controller_spec.rb | 4 ++--
src/spec/factories/provider_image.rb | 11 +++++++++++
src/spec/factories/replicated_image.rb | 11 -----------
src/spec/models/image_spec.rb | 4 ++--
src/spec/models/template_spec.rb | 2 +-
17 files changed, 57 insertions(+), 48 deletions(-)
create mode 100644 src/app/models/provider_image.rb
delete mode 100644 src/app/models/replicated_image.rb
create mode 100644 src/db/migrate/20110207110131_rename_replicated_image_to_provider_image.rb
create mode 100644 src/spec/factories/provider_image.rb
delete mode 100644 src/spec/factories/replicated_image.rb
diff --git a/src/app/controllers/resources/instances_controller.rb b/src/app/controllers/resources/instances_controller.rb
index bf5e021..d1be6a5 100644
--- a/src/app/controllers/resources/instances_controller.rb
+++ b/src/app/controllers/resources/instances_controller.rb
@@ -34,8 +34,8 @@ class Resources::InstancesController < ApplicationController
# => TODO: add TEMPLATE_* permissions
@templates = Template.paginate(
:page => params[:page] || 1,
- :include => {:images => :replicated_images},
- :conditions => "replicated_images.uploaded = 't'"
+ :include => {:images => :provider_images},
+ :conditions => "provider_images.uploaded = 't'"
)
end
diff --git a/src/app/models/image.rb b/src/app/models/image.rb
index 8962bf1..2cb15b7 100644
--- a/src/app/models/image.rb
+++ b/src/app/models/image.rb
@@ -30,8 +30,8 @@ class Image < ActiveRecord::Base
@@per_page = 15
belongs_to :template, :counter_cache => true
- has_many :replicated_images, :dependent => :destroy
- has_many :providers, :through => :replicated_images
+ has_many :provider_images, :dependent => :destroy
+ has_many :providers, :through => :provider_images
validates_presence_of :name
validates_length_of :name, :maximum => 1024
@@ -78,7 +78,7 @@ class Image < ActiveRecord::Base
:template_id => template.id,
:status => Image::STATE_QUEUED
)
- ReplicatedImage.create!(
+ ProviderImage.create!(
:image_id => img.id,
:provider_id => provider
)
@@ -108,7 +108,7 @@ class Image < ActiveRecord::Base
raise "There is no image with '#{image_id}' id"
end
- if ReplicatedImage.find_by_provider_id_and_provider_image_key(account.provider.id, image_id)
+ if ProviderImage.find_by_provider_id_and_provider_image_key(account.provider.id, image_id)
raise "Image '#{image_id}' is already imported"
end
@@ -134,7 +134,7 @@ class Image < ActiveRecord::Base
)
image.save!
- rep = ReplicatedImage.new(
+ rep = ProviderImage.new(
:image_id => image.id,
:provider_id => account.provider.id,
:provider_image_key => image_id,
diff --git a/src/app/models/provider.rb b/src/app/models/provider.rb
index 1e89958..31eb7bb 100644
--- a/src/app/models/provider.rb
+++ b/src/app/models/provider.rb
@@ -31,7 +31,7 @@ class Provider < ActiveRecord::Base
has_many :cloud_accounts, :dependent => :destroy
has_many :hardware_profiles, :dependent => :destroy
- has_many :replicated_images, :dependent => :destroy
+ has_many :provider_images, :dependent => :destroy
has_many :realms, :dependent => :destroy
validates_presence_of :name
diff --git a/src/app/models/provider_image.rb b/src/app/models/provider_image.rb
new file mode 100644
index 0000000..054972a
--- /dev/null
+++ b/src/app/models/provider_image.rb
@@ -0,0 +1,7 @@
+class ProviderImage < ActiveRecord::Base
+ belongs_to :provider
+ belongs_to :image
+
+ validates_presence_of :provider_id
+ validates_presence_of :image_id
+end
diff --git a/src/app/models/replicated_image.rb b/src/app/models/replicated_image.rb
deleted file mode 100644
index ace66fc..0000000
--- a/src/app/models/replicated_image.rb
+++ /dev/null
@@ -1,7 +0,0 @@
-class ReplicatedImage < ActiveRecord::Base
- belongs_to :provider
- belongs_to :image
-
- validates_presence_of :provider_id
- validates_presence_of :image_id
-end
diff --git a/src/app/models/template.rb b/src/app/models/template.rb
index b2ef852..4e8ad27 100644
--- a/src/app/models/template.rb
+++ b/src/app/models/template.rb
@@ -71,7 +71,7 @@ class Template < ActiveRecord::Base
def providers
# TODO: rewrite cleanly
- ReplicatedImage.all(
+ ProviderImage.all(
:include => [:image, :provider],
:conditions => {:images => {:template_id => self.id}}
).map {|p| p.provider}
diff --git a/src/app/util/condormatic.rb b/src/app/util/condormatic.rb
index 8b4e224..57ad075 100644
--- a/src/app/util/condormatic.rb
+++ b/src/app/util/condormatic.rb
@@ -210,24 +210,24 @@ def condormatic_classads_sync
Rails.logger.info "Syncing classads.."
ads = []
providers.each { |provider|
- # The replicated image entry gets put in the database as soon as we ask
+ # The provider image entry gets put in the database as soon as we ask
# to have the image built, so we only want to generate classads for it if
# it is ready to be used. When ready it will have an image key assigned
# to it.
- replicated_images = provider.replicated_images.find(:all,
+ provider_images = provider.provider_images.find(:all,
:conditions => ['provider_image_key IS NOT NULL'])
accounts = provider.cloud_accounts
hardware_profiles = provider.hardware_profiles
realms = provider.realms
accounts.each { |account|
- replicated_images.each { |replicated_img|
+ provider_images.each { |provider_img|
hardware_profiles.each { |hwp|
ads += realms.collect { |realm|
- [account, replicated_img, hwp, realm] } } } }
+ [account, provider_img, hwp, realm] } } } }
}
ads.each { |ad|
- account, replicated_image, hwp, realm = *ad
+ account, provider_image, hwp, realm = *ad
pipe = IO.popen("condor_advertise UPDATE_STARTD_AD 2>&1", "w+")
@@ -236,10 +236,10 @@ def condormatic_classads_sync
pipe.puts 'Requirements=true'
pipe.puts "\n# Stuff needed to match:"
pipe.puts "hardwareprofile=\"#{hwp.aggregator_hardware_profiles[0].id}\""
- pipe.puts "image=\"#{replicated_image.image.template.id}\""
+ pipe.puts "image=\"#{provider_image.image.template.id}\""
pipe.puts "realm=\"#{realm.frontend_realms[0].id}\""
pipe.puts "\n# Backend info to complete this job:"
- pipe.puts "image_key=\"#{replicated_image.provider_image_key}\""
+ pipe.puts "image_key=\"#{provider_image.provider_image_key}\""
pipe.puts "hardwareprofile_key=\"#{hwp.external_key}\""
pipe.puts "realm_key=\"#{realm.external_key}\""
pipe.puts "provider_url=\"#{account.provider.url}\""
diff --git a/src/db/migrate/20110207110131_rename_replicated_image_to_provider_image.rb b/src/db/migrate/20110207110131_rename_replicated_image_to_provider_image.rb
new file mode 100644
index 0000000..0e3f60c
--- /dev/null
+++ b/src/db/migrate/20110207110131_rename_replicated_image_to_provider_image.rb
@@ -0,0 +1,9 @@
+class RenameReplicatedImageToProviderImage < ActiveRecord::Migration
+ def self.up
+ rename_table :replicated_images, :provider_images
+ end
+
+ def self.down
+ rename_table :provider_images, :replicated_images
+ end
+end
diff --git a/src/features/provider.feature b/src/features/provider.feature
index c2f6da5..2cdc80b 100644
--- a/src/features/provider.feature
+++ b/src/features/provider.feature
@@ -60,7 +60,7 @@ Feature: Manage Providers
Scenario: Delete a provider
Given I am on the homepage
And there is a provider named "provider1"
- And this provider has 5 replicated images
+ And this provider has 5 provider images
And this provider has 5 hardware profiles
And this provider has a realm
And this provider has a cloud account
@@ -68,7 +68,7 @@ Feature: Manage Providers
And I check "provider1" provider
And I press "Delete"
And there should not exist a provider named "provider1"
- And there should not be any replicated images
+ And there should not be any provider images
And there should not be any hardware profiles
And there should not be a cloud account
And there should not be a realm
diff --git a/src/features/step_definitions/instance_steps.rb b/src/features/step_definitions/instance_steps.rb
index 4324891..956d3de 100644
--- a/src/features/step_definitions/instance_steps.rb
+++ b/src/features/step_definitions/instance_steps.rb
@@ -48,7 +48,7 @@ Given /^there is a "([^"]*)" running instance$/ do |name|
end
Given /^there is an uploaded image for a template$/ do
- Factory :replicated_image
+ Factory :provider_image
end
Given /^there is "([^"]*)" aggregator hardware profile$/ do |name|
diff --git a/src/features/step_definitions/provider_steps.rb b/src/features/step_definitions/provider_steps.rb
index bc56276..927fb33 100644
--- a/src/features/step_definitions/provider_steps.rb
+++ b/src/features/step_definitions/provider_steps.rb
@@ -36,8 +36,8 @@ Given /^there are these providers:$/ do |table|
end
end
-Given /^this provider has (\d+) replicated images$/ do |number|
- number.to_i.times { |i| Factory(:replicated_image, :provider => @provider) }
+Given /^this provider has (\d+) provider images$/ do |number|
+ number.to_i.times { |i| Factory(:provider_image, :provider => @provider) }
end
Given /^this provider has (\d+) hardware profiles$/ do |number|
@@ -53,8 +53,8 @@ Given /^this provider has a cloud account$/ do
Factory(:mock_cloud_account, :provider => @provider)
end
-Then /^there should not be any replicated images$/ do
- ReplicatedImage.find(:all, :conditions => { :provider_id => @provider.id} ).size.should == 0
+Then /^there should not be any provider images$/ do
+ ProviderImage.find(:all, :conditions => { :provider_id => @provider.id} ).size.should == 0
end
Then /^there should not be any hardware profiles$/ do
diff --git a/src/image_builder_service/image_builder_service b/src/image_builder_service/image_builder_service
index 0ffb74d..c5e4822 100755
--- a/src/image_builder_service/image_builder_service
+++ b/src/image_builder_service/image_builder_service
@@ -121,7 +121,7 @@ class ImageBuilderService
# FIXME: this should be contained elsewhere (probably Image model) so we
# can keep logic out of here. Also, this currently only handles one
# account, we will need to be able to specify at some point.
- creds = image.replicated_images.first.provider.cloud_accounts.first.build_credentials
+ creds = image.provider_images.first.provider.cloud_accounts.first.build_credentials
#TODO: switch this back to uri once ActiveBuild retrieves it properly
ab = @console.build_image(image.template.xml.to_xml, image.target, image.uuid, creds)
if ab
@@ -176,7 +176,7 @@ class ImageBuilderService
@log.debug "========================================"
image.status = new_status
if new_status == 'complete'
- ri = image.replicated_images.first
+ ri = image.provider_images.first
ri.provider_image_key = obj[:build].finished_image
ri.uploaded =true
ri.registered=true
diff --git a/src/spec/controllers/builds_controller_spec.rb b/src/spec/controllers/builds_controller_spec.rb
index 31b47f5..560290b 100644
--- a/src/spec/controllers/builds_controller_spec.rb
+++ b/src/spec/controllers/builds_controller_spec.rb
@@ -28,10 +28,10 @@ describe ImageFactory::BuildsController do
end.should change(Image, :count).by(1)
end
- it "should create a new ReplicatedImage" do
+ it "should create a new ProviderImage" do
lambda do
post :create, :template_id => @template.id, :targets => ["mock"]
- end.should change(ReplicatedImage, :count).by(1)
+ end.should change(ProviderImage, :count).by(1)
end
end
end
diff --git a/src/spec/factories/provider_image.rb b/src/spec/factories/provider_image.rb
new file mode 100644
index 0000000..55c2281
--- /dev/null
+++ b/src/spec/factories/provider_image.rb
@@ -0,0 +1,11 @@
+Factory.define :provider_image do |ri|
+ ri.association :image
+ ri.association :provider
+ ri.sequence(:provider_image_key) { |n| "provider_image_key#(n)" }
+ ri.uploaded true
+ ri.registered true
+end
+
+Factory.define :mock_provider_image, :parent => :provider_image do |i|
+ i.provider { |p| p.association(:mock_provider) }
+end
diff --git a/src/spec/factories/replicated_image.rb b/src/spec/factories/replicated_image.rb
deleted file mode 100644
index fa3f662..0000000
--- a/src/spec/factories/replicated_image.rb
+++ /dev/null
@@ -1,11 +0,0 @@
-Factory.define :replicated_image do |ri|
- ri.association :image
- ri.association :provider
- ri.sequence(:provider_image_key) { |n| "provider_image_key#(n)" }
- ri.uploaded true
- ri.registered true
-end
-
-Factory.define :mock_replicated_image, :parent => :replicated_image do |i|
- i.provider { |p| p.association(:mock_provider) }
-end
diff --git a/src/spec/models/image_spec.rb b/src/spec/models/image_spec.rb
index dbd5ba8..e16d43f 100644
--- a/src/spec/models/image_spec.rb
+++ b/src/spec/models/image_spec.rb
@@ -49,7 +49,7 @@ describe Image do
tpl.save!
img = Image.build(tpl, 'mock')
Image.find(img).should == img
- ReplicatedImage.find_by_image_id(img.id).should_not be_nil
+ ProviderImage.find_by_image_id(img.id).should_not be_nil
end
it "should import image" do
@@ -73,6 +73,6 @@ describe Image do
img.template.uploaded.should be_true
end.should change(Image, :count).by(1)
end.should change(Template, :count).by(1)
- end.should change(ReplicatedImage, :count).by(1)
+ end.should change(ProviderImage, :count).by(1)
end
end
diff --git a/src/spec/models/template_spec.rb b/src/spec/models/template_spec.rb
index 4a42996..2249bf3 100644
--- a/src/spec/models/template_spec.rb
+++ b/src/spec/models/template_spec.rb
@@ -9,7 +9,7 @@ describe Template do
end
it "should return list of providers who provides images built from this template" do
- rimg = Factory.build(:mock_replicated_image)
+ rimg = Factory.build(:mock_provider_image)
rimg.save!
rimg.image.template.providers.size.should eql(1)
end
--
1.7.3.4
13 years, 2 months
[PATCH aeolus] Task #270 - Template deletion fails w/ undefined local variable
by jzigmund@redhat.com
From: Jozef Zigmund <jzigmund(a)redhat.com>
Also I found a bug when you want to go to template like user w/o privileges, you've got sql error, so for now I've added require_privilege for Template::VIEW
---
.../image_factory/templates_controller.rb | 36 ++++----------------
1 files changed, 7 insertions(+), 29 deletions(-)
diff --git a/src/app/controllers/image_factory/templates_controller.rb b/src/app/controllers/image_factory/templates_controller.rb
index c2221aa..16ea629 100644
--- a/src/app/controllers/image_factory/templates_controller.rb
+++ b/src/app/controllers/image_factory/templates_controller.rb
@@ -5,6 +5,7 @@ class ImageFactory::TemplatesController < ApplicationController
before_filter :set_view_vars, :only => [:index, :show]
def index
+ require_privilege(Privilege::VIEW, Template)
@params = params
@search_term = params[:q]
if @search_term.blank?
@@ -156,29 +157,6 @@ class ImageFactory::TemplatesController < ApplicationController
render :layout => false
end
- def destroy_multiple
- ids = params[:ids].to_a
- if ids.empty?
- flash[:notice] = "No Template Selected"
- else
- errs = {}
- Template.find(ids).each do |t|
- if check_permission(Privilege::MODIFY, t)
- t.destroy
- errs[t.name] = t.errors.full_messages.join(". ") unless t.destroyed?
- else
- errs[t.name] = "You don't have permission to delete #{t.name}"
- end
- end
- if errs.empty?
- flash[:notice] = 'Template deleted'
- else
- flash_error('Error while deleting template', errs)
- end
- end
- redirect_to image_factory_templates_path
- end
-
def assembly
# FIXME: do we need perm check here?
end
@@ -204,12 +182,12 @@ class ImageFactory::TemplatesController < ApplicationController
end
def multi_destroy
- @tpl = Template.find(params[:selected])
- if check_edit_permission
- @tpl.destroy
- errs[(a)tpl.name] = @tpl.errors.full_messages.join(". ") unless @tpl.destroyed?
- else
- errs[(a)tpl.name] = "You don't have permission to delete #{(a)tpl.name}"
+ Template.find(params[:selected]).each do |template|
+ if check_privilege(Privilege::MODIFY, template)
+ template.destroy
+ else
+ flash[:error] = "You don't have a permission to delete."
+ end
end
redirect_to image_factory_templates_url
end
--
1.7.4
13 years, 2 months
[PATCH conductor] Added sleep to dbomatic and condor_refresh scripts
by Jan Provazník
From: Jan Provaznik <jprovazn(a)redhat.com>
While-true loop w/o any sleep eats all system resources.
---
src/condor_refreshd/condor_refreshd | 1 +
src/dbomatic/dbomatic | 1 +
2 files changed, 2 insertions(+), 0 deletions(-)
diff --git a/src/condor_refreshd/condor_refreshd b/src/condor_refreshd/condor_refreshd
index 4f1b93c..a12e3ae 100755
--- a/src/condor_refreshd/condor_refreshd
+++ b/src/condor_refreshd/condor_refreshd
@@ -114,6 +114,7 @@ begin
e.backtrace.each do |step|
logger.error "\tfrom #{step}"
end
+ sleep 5
end
end
rescue => e
diff --git a/src/dbomatic/dbomatic b/src/dbomatic/dbomatic
index 8a3e968..de9ce1b 100755
--- a/src/dbomatic/dbomatic
+++ b/src/dbomatic/dbomatic
@@ -312,6 +312,7 @@ begin
e.backtrace.each do |step|
logger.error "\tfrom #{step}"
end
+ sleep 5
end
end
--
1.7.3.5
13 years, 2 months