---
src/lib/tasks/devel.rake | 80 ++++++++++++++++++++++++++++++++++++++++++++++
util/check_services | 36 ++++++++++++++++++++
2 files changed, 116 insertions(+), 0 deletions(-)
create mode 100644 src/lib/tasks/devel.rake
create mode 100755 util/check_services
diff --git a/src/lib/tasks/devel.rake b/src/lib/tasks/devel.rake
new file mode 100644
index 0000000..511eb22
--- /dev/null
+++ b/src/lib/tasks/devel.rake
@@ -0,0 +1,80 @@
+namespace :devel do
+
+ desc "Setup and run cucumber and rspec"
+ task :tests => [:verify_environment, :restart_mock, :restart_solr, :cucumber, :spec]
do |t|
+ end
+
+ # This seems hackish, but I'm not sure of a better way
+ desc "Restart mock driver"
+ task :restart_mock do |t|
+ # Might want to look into doing this:
http://www.neeraj.name/2009/11/20/running-rake-task-in-background-and-not...
+ puts "=== Starting deltacloudd ==="
+ system "pkill -f '/usr/bin/ruby /usr/bin/deltacloudd -i mock -p
3001'"
+ system "nohup deltacloudd -i mock -p 3001 &"
+ puts system "lsof -i :3001"
+ end
+
+ desc "Restart sunspot/solr"
+ task :restart_solr do |t|
+ # If we can't stop Sunspot, that's probably because it's not running; so
rescue true and hope it wasn't bad.
+ puts "=== Restarting Solr ==="
+ Rake::Task['sunspot:solr:stop'].invoke rescue true
+ Rake::Task['sunspot:solr:start'].invoke
+ end
+
+ desc "Validate that essential services are running"
+ # We require root for some actions, and others are just not safe / not expected, so
only do checks:
+ task :verify_environment => :environment do |t|
+ Rails.env.test? ? true : raise("*** Not in test environment (currently
#{Rails.env}); invoke with RAILS_ENV=test")
+ `/etc/init.d/iwhd status`.to_s.include?('is running') ? true :
raise("*** iwhd is stopped")
+ end
+
+ desc "Populate mock provider account and template"
+ task :populate => [:create_mock_provider_account, :create_template] do |t|
+ end
+
+ desc "Add a mock provider account"
+ task :create_mock_provider_account => :environment do |t|
+ provider = Provider.find_by_name('mock')
+ raise "No mock provider in the #{Rails.env} environment" unless provider
+ creds = {
+ 'username' => 'mockuser',
+ 'password' => 'mockpassword'
+ }
+ ProviderAccount.create!({
+ :label => 'Mockery',
+ :provider_id => provider.id,
+ :credentials_hash => creds
+ })
+ end
+
+ desc "Add a basic template"
+ task :create_template => [:environment] do |t|
+ puts "=== Env: #{Rails.env}"
+ Template.create!({
+ :name => "sample-#{Time.now.to_i}",
+ :platform_version => 14,
+ :platform => 'fedora14',
+ :architecture => "x86_64"
+ })
+ end
+
+ desc "Generate PDF of models"
+ # This requires the railroad gem and graphviz (dot)
+ task :model_pdf do |t|
+ system "railroad -a --hide-magic -ij -o project.dot -M"
+ system "dot -Tpdf project.dot -o project.pdf"
+ end
+
+ desc "Print a list of roles"
+ task :roles => :environment do |t|
+ Role.all(:include => :privileges, :order => 'name asc').each do |role|
+ puts "#{role.name} #{role.assign_to_owner? ? '(assign_to_owner)' :
''}"
+ role.privileges.each do |priv|
+ puts " #{priv.action.ljust(12)} #{priv.target_type}"
+ end
+ puts "\n"
+ end
+ end
+
+end
diff --git a/util/check_services b/util/check_services
new file mode 100755
index 0000000..3da3127
--- /dev/null
+++ b/util/check_services
@@ -0,0 +1,36 @@
+#!/usr/bin/ruby
+#
+# A quick script to check that vital services are running.
+# Expects to be run as root, or some services return incorrect data.
+#
+init_scripts=%w(aeolus-conductor aeolus-connector condor conductor-condor_refreshd
conductor-dbomatic conductor-delayed_job conductor-warehouse_sync deltacloud-ec2-us-east-1
deltacloud-ec2-us-west-1 deltacloud-mock httpd imagefactory iwhd libvirtd mongod ntpd
postgresql qpidd)
+
+init_scripts.each do |script|
+ puts "\nChecking #{script} ..."
+ cmd = "/etc/init.d/#{script} status"
+ out = `#{cmd}`
+ if $?.to_i == 0
+ puts " \e[1;32mSuccess:\e[0m #{out.strip}"
+ else
+ puts " \e[1;31mFAILURE:\e[0m #{out.strip}"
+ end
+end
+
+# Other checks
+commands = [
+ {:name => 'development solr', :command => 'lsof -i :8981'},
+ {:name => 'production solr', :command => 'lsof -i :8983'},
+ {:name => 'connector', :command => 'lsof -i :2003'},
+ {:name => 'condor_q', :command => 'condor_q'},
+ {:name => 'condor_status', :command => 'condor_status'}
+]
+commands.each do |cmd|
+ puts "\nChecking #{cmd[:name]} ..."
+ cmd = "#{cmd[:command]}"
+ out = `#{cmd}`
+ if $?.to_i == 0
+ puts " \e[1;32mSuccess:\e[0m #{out.strip}"
+ else
+ puts " \e[1;31mFAILURE:\e[0m #{out.strip}"
+ end
+end
--
1.7.4.4