From: Scott Seago sseago@redhat.com Subject: [PATCH conductor 0/8] revised patchset In-Reply-To:
1) was having compilation errors 2) we don't use it anymore --- src/app/stylesheets/_base.scss | 2 -- src/app/stylesheets/text.scss | 30 ------------------------------ 2 files changed, 0 insertions(+), 32 deletions(-) delete mode 100644 src/app/stylesheets/text.scss
diff --git a/src/app/stylesheets/_base.scss b/src/app/stylesheets/_base.scss index 3ac43c6..096ec46 100644 --- a/src/app/stylesheets/_base.scss +++ b/src/app/stylesheets/_base.scss @@ -26,8 +26,6 @@ $goodcl: #bfcc29; $okcl: #f6a20a; $badcl: #cb292b;
-@import "text"; - @mixin border-radius($radius) { border-radius: $radius; -moz-border-radius: $radius; diff --git a/src/app/stylesheets/text.scss b/src/app/stylesheets/text.scss deleted file mode 100644 index b6819c3..0000000 --- a/src/app/stylesheets/text.scss +++ /dev/null @@ -1,30 +0,0 @@ -/* 960 Grid System ~ Text CSS. - * Learn more ~ http://960.gs/ - * * - * Licensed under GPL and MIT. */ - -@import "960/text"; - -@include text; - -/* Need to solve licensing first */ -@font-face { - font-family: 'Roadgeek E'; - src: local('Roadgeek E'), local('RoadgeekE'), - url(../../fonts/RoadgeekE.otf); -} - -/* Headline Font based on Highway Gothic/FHWA to preserve RH identity on the web unachievable with Interstate */ -@font-face { - font-family: 'FreeWay Bold'; - src: local('FreeWay Bold'), local('FreeWayBold'), - url(../../fonts/FreeWay-Bold.ttf); -} - -body { - font: 12px/1.5 $screenfont; -} - -h1,h2,h3,h4,h5 { - font-family: $headlinefont; -}
--- src/dutils/active_record_env.rb | 4 ++++ 1 files changed, 4 insertions(+), 0 deletions(-)
diff --git a/src/dutils/active_record_env.rb b/src/dutils/active_record_env.rb index cee3b62..6ed41ab 100644 --- a/src/dutils/active_record_env.rb +++ b/src/dutils/active_record_env.rb @@ -21,11 +21,15 @@ $: << File.join(File.dirname(__FILE__), "../app") $: << File.join(File.dirname(__FILE__), "..")
require 'rubygems' +require 'compass'
$LOAD_PATH << File.expand_path(File.dirname(__FILE__))
ENV['RAILS_ENV'] = 'development' unless ENV['RAILS_ENV']
+# Don't recompile sass, even in dev for dbomatic +Compass.configuration.sass_options = { :never_update => true } + require File.dirname(__FILE__) + '/../config/boot' require File.dirname(__FILE__) + '/../config/environment'
From: Jason Guiditta jguiditt@redhat.com
See if this makes it actually stick. --- src/config/environments/production.rb | 9 ++++++--- 1 files changed, 6 insertions(+), 3 deletions(-)
diff --git a/src/config/environments/production.rb b/src/config/environments/production.rb index 3bb1785..90f3e04 100644 --- a/src/config/environments/production.rb +++ b/src/config/environments/production.rb @@ -65,7 +65,10 @@ Conductor::Application.configure do
# Send deprecation notices to registered listeners config.active_support.deprecation = :notify -end
-# Disable stylesheet updates on production -Compass.configuration.sass_options = { :never_update => true } + config.before_initialize do + # Disable stylesheet updates on production + Compass.configuration.sass_options = { :never_update => true } + end + +end
--- src/app/controllers/providers_controller.rb | 6 +++--- src/app/models/provider_account.rb | 2 +- src/app/models/provider_account_observer.rb | 2 +- src/app/models/provider_type.rb | 4 ++-- src/app/views/provider_accounts/_list.xml.haml | 2 +- .../provider_accounts/_provider_selection.haml | 2 +- src/app/views/provider_types/_list.xml.haml | 2 +- src/app/views/providers/_list.xml.haml | 2 +- ...20110804215000_rename_provider_type_codename.rb | 9 +++++++++ src/db/seeds.rb | 20 ++++++++++---------- src/features/provider_type.feature | 18 +++++++++--------- .../step_definitions/provider_type_steps.rb | 6 +++--- src/spec/factories/credential.rb | 14 +++++++------- src/spec/factories/provider.rb | 6 +++--- src/spec/factories/provider_type.rb | 6 +++--- src/spec/models/provider_spec.rb | 2 +- 16 files changed, 56 insertions(+), 47 deletions(-) create mode 100644 src/db/migrate/20110804215000_rename_provider_type_codename.rb
diff --git a/src/app/controllers/providers_controller.rb b/src/app/controllers/providers_controller.rb index 2971e21..32d698b 100644 --- a/src/app/controllers/providers_controller.rb +++ b/src/app/controllers/providers_controller.rb @@ -57,9 +57,9 @@ class ProvidersController < ApplicationController
def create require_privilege(Privilege::CREATE, Provider) - if params[:provider].has_key?(:provider_type_codename) - provider_type = params[:provider].delete(:provider_type_codename) - provider_type = ProviderType.find_by_codename(provider_type) + if params[:provider].has_key?(:provider_type_deltacloud_driver) + provider_type = params[:provider].delete(:provider_type_deltacloud_driver) + provider_type = ProviderType.find_by_deltacloud_driver(provider_type) params[:provider][:provider_type_id] = provider_type.id end @provider = Provider.new(params[:provider]) diff --git a/src/app/models/provider_account.rb b/src/app/models/provider_account.rb index 7fd508f..6079a55 100644 --- a/src/app/models/provider_account.rb +++ b/src/app/models/provider_account.rb @@ -177,7 +177,7 @@ class ProviderAccount < ActiveRecord::Base doc.root = Nokogiri::XML::Node.new('provider_credentials', doc) root = doc.root.at_xpath('/provider_credentials')
- credential_node_name = provider.provider_type.codename + '_credentials' + credential_node_name = provider.provider_type.deltacloud_driver + '_credentials' credential_node = Nokogiri::XML::Node.new(credential_node_name, doc) root << credential_node
diff --git a/src/app/models/provider_account_observer.rb b/src/app/models/provider_account_observer.rb index e4b8288..9dbd9bb 100644 --- a/src/app/models/provider_account_observer.rb +++ b/src/app/models/provider_account_observer.rb @@ -3,7 +3,7 @@ class ProviderAccountObserver < ActiveRecord::Observer # FIXME: new boxgrinder doesn't create bucket for amis automatically, # for now we create bucket from conductor # remove this hotfix when fixed on boxgrinder side - if account.provider.provider_type_id == ProviderType.find_by_codename("ec2").id + if account.provider.provider_type_id == ProviderType.find_by_deltacloud_driver("ec2").id create_bucket(account) end account.populate_hardware_profiles diff --git a/src/app/models/provider_type.rb b/src/app/models/provider_type.rb index 5d9832a..1b5ce3f 100644 --- a/src/app/models/provider_type.rb +++ b/src/app/models/provider_type.rb @@ -19,7 +19,7 @@ class ProviderType < ActiveRecord::Base
validates_presence_of :name validates_uniqueness_of :name - validates_presence_of :codename - validates_uniqueness_of :codename + validates_presence_of :deltacloud_driver + validates_uniqueness_of :deltacloud_driver
end diff --git a/src/app/views/provider_accounts/_list.xml.haml b/src/app/views/provider_accounts/_list.xml.haml index f271154..09ee543 100644 --- a/src/app/views/provider_accounts/_list.xml.haml +++ b/src/app/views/provider_accounts/_list.xml.haml @@ -4,5 +4,5 @@ %provider_account %name= account.name %provider= account.provider.name - %provider_type= account.provider.provider_type.codename + %provider_type= account.provider.provider_type.deltacloud_driver = account.build_credentials.root.xpath('/provider_credentials').to_s.html_safe diff --git a/src/app/views/provider_accounts/_provider_selection.haml b/src/app/views/provider_accounts/_provider_selection.haml index 0dee71e..fc7e225 100644 --- a/src/app/views/provider_accounts/_provider_selection.haml +++ b/src/app/views/provider_accounts/_provider_selection.haml @@ -6,7 +6,7 @@ %p = label_tag "Cloud type: " = @selected_provider.provider_type.name - - unless @selected_provider.provider_type.codename.nil? + - unless @selected_provider.provider_type.deltacloud_driver.nil? = render :partial => "provider_form", :locals => { :provider_type => @selected_provider.provider_type} - else = flash.now[:warning] = "You don't have any provider yet" diff --git a/src/app/views/provider_types/_list.xml.haml b/src/app/views/provider_types/_list.xml.haml index c0fc65c..d612421 100644 --- a/src/app/views/provider_types/_list.xml.haml +++ b/src/app/views/provider_types/_list.xml.haml @@ -3,4 +3,4 @@ - @provider_types.each do |p| %provider_type %name= p.name - %codename= p.codename + %deltacloud_driver= p.deltacloud_driver diff --git a/src/app/views/providers/_list.xml.haml b/src/app/views/providers/_list.xml.haml index 53f06a0..3e4c1bb 100644 --- a/src/app/views/providers/_list.xml.haml +++ b/src/app/views/providers/_list.xml.haml @@ -4,4 +4,4 @@ %provider %name= p.name %url= p.url - %provider_type= p.provider_type.codename + %provider_type= p.provider_type.deltacloud_driver diff --git a/src/db/migrate/20110804215000_rename_provider_type_codename.rb b/src/db/migrate/20110804215000_rename_provider_type_codename.rb new file mode 100644 index 0000000..8968672 --- /dev/null +++ b/src/db/migrate/20110804215000_rename_provider_type_codename.rb @@ -0,0 +1,9 @@ +class RenameProviderTypeCodename < ActiveRecord::Migration + def self.up + rename_column :provider_types, :codename, :deltacloud_driver + end + + def self.down + rename_column :provider_types, :deltacloud_driver, :codename + end +end diff --git a/src/db/seeds.rb b/src/db/seeds.rb index eb9219d..4e4f694 100644 --- a/src/db/seeds.rb +++ b/src/db/seeds.rb @@ -121,27 +121,27 @@ end
# Provider types actually supported if ProviderType.all.empty? - ProviderType.create!(:name => "Mock", :codename =>"mock") - ProviderType.create!(:name => "Amazon EC2", :codename =>"ec2", :ssh_user => "root", :home_dir => "/root") - ProviderType.create!(:name => "GoGrid", :codename =>"gogrid") - ProviderType.create!(:name => "Rackspace", :codename =>"rackspace") - ProviderType.create!(:name => "RHEV-M", :codename =>"rhevm") - ProviderType.create!(:name => "OpenNebula", :codename =>"opennebula") - ProviderType.create!(:name => "Condor Cloud", :codename =>"condorcloud") - ProviderType.create!(:name => "VMware vSphere", :codename =>"vsphere") + ProviderType.create!(:name => "Mock", :deltacloud_driver =>"mock") + ProviderType.create!(:name => "Amazon EC2", :deltacloud_driver =>"ec2", :ssh_user => "root", :home_dir => "/root") + ProviderType.create!(:name => "GoGrid", :deltacloud_driver =>"gogrid") + ProviderType.create!(:name => "Rackspace", :deltacloud_driver =>"rackspace") + ProviderType.create!(:name => "RHEV-M", :deltacloud_driver =>"rhevm") + ProviderType.create!(:name => "OpenNebula", :deltacloud_driver =>"opennebula") + ProviderType.create!(:name => "Condor Cloud", :deltacloud_driver =>"condorcloud") + ProviderType.create!(:name => "VMware vSphere", :deltacloud_driver =>"vsphere") end
# fill table CredentialDefinitions by default values if CredentialDefinition.all.empty? ProviderType.all.each do |provider_type| - unless provider_type.codename == 'ec2' + unless provider_type.deltacloud_driver == 'ec2' CredentialDefinition.create!(:name => 'username', :label => 'Username', :input_type => 'text', :provider_type_id => provider_type.id) CredentialDefinition.create!(:name => 'password', :label => 'Password', :input_type => 'password', :provider_type_id => provider_type.id) end end
#for ec2 provider type - ec2 = ProviderType.find_by_codename 'ec2' + ec2 = ProviderType.find_by_deltacloud_driver 'ec2' CredentialDefinition.create!(:name => 'username', :label => 'Access Key', :input_type => 'text', :provider_type_id => ec2.id) CredentialDefinition.create!(:name => 'password', :label => 'Secret Access Key', :input_type => 'password', :provider_type_id => ec2.id) CredentialDefinition.create!(:name => 'account_id', :label => 'Account Number', :input_type => 'text', :provider_type_id => ec2.id) diff --git a/src/features/provider_type.feature b/src/features/provider_type.feature index 32e2f49..5d1f33c 100644 --- a/src/features/provider_type.feature +++ b/src/features/provider_type.feature @@ -12,12 +12,12 @@ Feature: Manage Providers When I go to the provider types page Then I should get a XML document And there should be these provider types: - | name | codename | - | Mock | mock | - | GoGrid | gogrid | - | Rackspace | rackspace | - | OpenNebula | opennebula | - | Amazon EC2 | ec2 | - | RHEV-M | rhevm | - | Condor Cloud | condorcloud | - | VMware vSphere | vsphere | \ No newline at end of file + | name | deltacloud_driver | + | Mock | mock | + | GoGrid | gogrid | + | Rackspace | rackspace | + | OpenNebula | opennebula | + | Amazon EC2 | ec2 | + | RHEV-M | rhevm | + | Condor Cloud | condorcloud | + | VMware vSphere | vsphere | \ No newline at end of file diff --git a/src/features/step_definitions/provider_type_steps.rb b/src/features/step_definitions/provider_type_steps.rb index e65e78a..aa3ffa2 100644 --- a/src/features/step_definitions/provider_type_steps.rb +++ b/src/features/step_definitions/provider_type_steps.rb @@ -1,11 +1,11 @@ Then /^there should be these provider types:$/ do |table| types = @xml_response.root.xpath('/provider_types/provider_type').map do |n| - {:name => n.xpath('name').text, - :codename => n.xpath('codename').text} + {:name => n.xpath('name').text, + :deltacloud_driver => n.xpath('deltacloud_driver').text} end table.hashes.each do |hash| p = types.find {|n| n[:name] == hash[:name]} p.should_not be_nil - p[:codename].should == hash[:codename] + p[:deltacloud_driver].should == hash[:deltacloud_driver] end end diff --git a/src/spec/factories/credential.rb b/src/spec/factories/credential.rb index ae4aa02..b7061be 100644 --- a/src/spec/factories/credential.rb +++ b/src/spec/factories/credential.rb @@ -8,38 +8,38 @@ FactoryGirl.define do # EC2 credentials factory :ec2_username_credential, :parent => :credential do value "mockuser" - credential_definition { CredentialDefinition.find_by_name('username',:conditions => {:provider_type_id => ProviderType.find_by_codename('ec2')})} + credential_definition { CredentialDefinition.find_by_name('username',:conditions => {:provider_type_id => ProviderType.find_by_deltacloud_driver('ec2')})} end
factory :ec2_password_credential, :parent => :credential do value "mockpassword" - credential_definition { CredentialDefinition.find_by_name('password',:conditions => {:provider_type_id => ProviderType.find_by_codename('ec2')})} + credential_definition { CredentialDefinition.find_by_name('password',:conditions => {:provider_type_id => ProviderType.find_by_deltacloud_driver('ec2')})} end
factory :ec2_account_id_credential, :parent => :credential do value "3141" - credential_definition { CredentialDefinition.find_by_name('account_id',:conditions => {:provider_type_id => ProviderType.find_by_codename('ec2')})} + credential_definition { CredentialDefinition.find_by_name('account_id',:conditions => {:provider_type_id => ProviderType.find_by_deltacloud_driver('ec2')})} end
factory :ec2_x509private_credential, :parent => :credential do value "x509 private key" - credential_definition { CredentialDefinition.find_by_name('x509private',:conditions => {:provider_type_id => ProviderType.find_by_codename('ec2')})} + credential_definition { CredentialDefinition.find_by_name('x509private',:conditions => {:provider_type_id => ProviderType.find_by_deltacloud_driver('ec2')})} end
factory :ec2_x509public_credential, :parent => :credential do value "x509 public key" - credential_definition { CredentialDefinition.find_by_name('x509public',:conditions => {:provider_type_id => ProviderType.find_by_codename('ec2')})} + credential_definition { CredentialDefinition.find_by_name('x509public',:conditions => {:provider_type_id => ProviderType.find_by_deltacloud_driver('ec2')})} end
#Mock & Others credentials factory :username_credential, :parent => :credential do value "mockuser" - credential_definition { CredentialDefinition.find_by_name('username',:conditions => {:provider_type_id => ProviderType.find_by_codename('mock')})} + credential_definition { CredentialDefinition.find_by_name('username',:conditions => {:provider_type_id => ProviderType.find_by_deltacloud_driver('mock')})} end
factory :password_credential, :parent => :credential do value "mockpassword" - credential_definition { CredentialDefinition.find_by_name('password',:conditions => {:provider_type_id => ProviderType.find_by_codename('mock')})} + credential_definition { CredentialDefinition.find_by_name('password',:conditions => {:provider_type_id => ProviderType.find_by_deltacloud_driver('mock')})} end
end diff --git a/src/spec/factories/provider.rb b/src/spec/factories/provider.rb index e62afcc..df0d3f1 100644 --- a/src/spec/factories/provider.rb +++ b/src/spec/factories/provider.rb @@ -7,7 +7,7 @@ FactoryGirl.define do end
factory :mock_provider, :parent => :provider do - provider_type {ProviderType.find_by_codename("mock")} + provider_type {ProviderType.find_by_deltacloud_driver("mock")} url 'http://localhost:3002/api' hardware_profiles { |hp| [hp.association(:mock_hwp1), hp.association(:mock_hwp2)] } after_create { |p| p.realms << FactoryGirl.create(:realm1, :provider => p) << FactoryGirl.create(:realm2, :provider => p) } @@ -15,14 +15,14 @@ FactoryGirl.define do
factory :mock_provider2, :parent => :provider do name 'mock2' - provider_type { ProviderType.find_by_codename("mock") } + provider_type { ProviderType.find_by_deltacloud_driver("mock") } url 'http://localhost:3002/api' after_create { |p| p.realms << FactoryGirl.create(:realm3, :provider => p) } end
factory :ec2_provider, :parent => :provider do name 'amazon-ec2' - provider_type { ProviderType.find_by_codename("ec2") } + provider_type { ProviderType.find_by_deltacloud_driver("ec2") } url 'http://localhost:3002/api' hardware_profiles { |hp| [hp.association(:ec2_hwp1)] } after_create { |p| p.realms << FactoryGirl.create(:realm4, :provider => p) } diff --git a/src/spec/factories/provider_type.rb b/src/spec/factories/provider_type.rb index b329e6c..d33d618 100644 --- a/src/spec/factories/provider_type.rb +++ b/src/spec/factories/provider_type.rb @@ -2,17 +2,17 @@ FactoryGirl.define do
factory :provider_type do sequence(:name) { |n| "name#{n}" } - sequence(:codename) { |n| "codename#{n}" } + sequence(:deltacloud_driver) { |n| "deltacloud_driver#{n}" } end
factory :mock_provider_type, :parent => :provider_type do name 'Mock' - codename 'mock' + deltacloud_driver 'mock' end
factory :ec2_provider_type, :parent => :provider_type do name 'Amazon EC2' - codename 'ec2' + deltacloud_driver 'ec2' end
end diff --git a/src/spec/models/provider_spec.rb b/src/spec/models/provider_spec.rb index 0cb52bc..a13ff00 100644 --- a/src/spec/models/provider_spec.rb +++ b/src/spec/models/provider_spec.rb @@ -65,7 +65,7 @@ describe Provider do it "should set valid cloud type" do @client.driver_name = @provider.provider_type @provider.provider_type = nil - @provider.provider_type = ProviderType.find_by_codename "mock" + @provider.provider_type = ProviderType.find_by_deltacloud_driver "mock" @provider.should be_valid end
On Fri, Aug 19, 2011 at 03:46:45PM -0400, Scott Seago wrote:
src/app/controllers/providers_controller.rb | 6 +++--- src/app/models/provider_account.rb | 2 +- src/app/models/provider_account_observer.rb | 2 +- src/app/models/provider_type.rb | 4 ++-- src/app/views/provider_accounts/_list.xml.haml | 2 +- .../provider_accounts/_provider_selection.haml | 2 +- src/app/views/provider_types/_list.xml.haml | 2 +- src/app/views/providers/_list.xml.haml | 2 +- ...20110804215000_rename_provider_type_codename.rb | 9 +++++++++ src/db/seeds.rb | 20 ++++++++++---------- src/features/provider_type.feature | 18 +++++++++--------- .../step_definitions/provider_type_steps.rb | 6 +++--- src/spec/factories/credential.rb | 14 +++++++------- src/spec/factories/provider.rb | 6 +++--- src/spec/factories/provider_type.rb | 6 +++--- src/spec/models/provider_spec.rb | 2 +- 16 files changed, 56 insertions(+), 47 deletions(-) create mode 100644 src/db/migrate/20110804215000_rename_provider_type_codename.rb
I happened to test this on a fresh system where I hadn't yet run dc:setup in the development environment.
In that scenario (which will be the case for new users), db:migrate fails with this:
== AddProviderTypeIdToProvider: migrating ==================================== rake aborted! An error has occurred, this and all later migrations canceled:
undefined method `deltacloud_driver' for #ProviderType:0x7f1ab5e70be0
I've worked around this for now by doing dc:setup from an older checkout and then running migrations, but this will need fixing before we can push it. I'm not sure the best way solve this problem, though -- I think what's happening is that the validations require deltacloud_driver be present, but the column doesn't yet exist. Maybe you can bypass validation at this point in the migration?
-- Matt
--- .../migrate/20110811091500_rename_condorcloud.rb | 17 +++++++++++++++++ src/db/seeds.rb | 2 +- src/features/provider_type.feature | 2 +- 3 files changed, 19 insertions(+), 2 deletions(-) create mode 100644 src/db/migrate/20110811091500_rename_condorcloud.rb
diff --git a/src/db/migrate/20110811091500_rename_condorcloud.rb b/src/db/migrate/20110811091500_rename_condorcloud.rb new file mode 100644 index 0000000..332eef5 --- /dev/null +++ b/src/db/migrate/20110811091500_rename_condorcloud.rb @@ -0,0 +1,17 @@ +class RenameCondorcloud < ActiveRecord::Migration + def self.up + condorcloud_type = ProviderType.find_by_deltacloud_driver('condorcloud') + if condorcloud_type + condorcloud_type.deltacloud_driver = "condor" + condorcloud_type.save! + end + end + + def self.down + condor_type = ProviderType.find_by_deltacloud_driver('condor') + if condor_type + condor_type.deltacloud_driver = "condorcloud" + condor_type.save! + end + end +end diff --git a/src/db/seeds.rb b/src/db/seeds.rb index 4e4f694..6df8654 100644 --- a/src/db/seeds.rb +++ b/src/db/seeds.rb @@ -127,7 +127,7 @@ if ProviderType.all.empty? ProviderType.create!(:name => "Rackspace", :deltacloud_driver =>"rackspace") ProviderType.create!(:name => "RHEV-M", :deltacloud_driver =>"rhevm") ProviderType.create!(:name => "OpenNebula", :deltacloud_driver =>"opennebula") - ProviderType.create!(:name => "Condor Cloud", :deltacloud_driver =>"condorcloud") + ProviderType.create!(:name => "Condor Cloud", :deltacloud_driver =>"condor") ProviderType.create!(:name => "VMware vSphere", :deltacloud_driver =>"vsphere") end
diff --git a/src/features/provider_type.feature b/src/features/provider_type.feature index 5d1f33c..096638b 100644 --- a/src/features/provider_type.feature +++ b/src/features/provider_type.feature @@ -19,5 +19,5 @@ Feature: Manage Providers | OpenNebula | opennebula | | Amazon EC2 | ec2 | | RHEV-M | rhevm | - | Condor Cloud | condorcloud | + | Condor Cloud | condor | | VMware vSphere | vsphere | \ No newline at end of file
--- src/app/controllers/providers_controller.rb | 2 ++ src/app/views/providers/_form.haml | 3 +++ src/app/views/providers/_list.haml | 2 ++ src/app/views/providers/_list.xml.haml | 1 + src/app/views/providers/_properties.haml | 10 ++++++++++ src/config/locales/en.yml | 2 ++ ...11141500_add_deltacloud_provider_to_provider.rb | 9 +++++++++ src/spec/factories/provider.rb | 2 ++ 8 files changed, 31 insertions(+), 0 deletions(-) create mode 100644 src/db/migrate/20110811141500_add_deltacloud_provider_to_provider.rb
diff --git a/src/app/controllers/providers_controller.rb b/src/app/controllers/providers_controller.rb index 32d698b..6119f96 100644 --- a/src/app/controllers/providers_controller.rb +++ b/src/app/controllers/providers_controller.rb @@ -145,6 +145,8 @@ class ProvidersController < ApplicationController {:name => t("providers.index.provider_name"), :sort_attr => :name}, {:name => t("providers.index.provider_url"), :sort_attr => :name}, {:name => t("providers.index.provider_type"), :sort_attr => :name}, + {:name => t("providers.index.x_deltacloud_driver"), :sort_attr => :name}, + {:name => t("providers.index.x_deltacloud_provider"), :sort_attr => :name}, ] end
diff --git a/src/app/views/providers/_form.haml b/src/app/views/providers/_form.haml index f07ed24..835df22 100644 --- a/src/app/views/providers/_form.haml +++ b/src/app/views/providers/_form.haml @@ -9,6 +9,9 @@ %p = form.label :provider_type = form.select(:provider_type_id, ProviderType.all.collect {|provider_type| [provider_type.name,provider_type.id] }, :prompt => "Select type of provider") + %p + = form.label :url, 'X-Deltacloud-Provider:' + = form.text_field :deltacloud_provider, :title => 'deltacloud_provider', :value => @provider.deltacloud_provider, :class => 'long'
%fieldset.options = form.submit "Save", :class => "submit button" diff --git a/src/app/views/providers/_list.haml b/src/app/views/providers/_list.haml index 14da47a..c832ef8 100644 --- a/src/app/views/providers/_list.haml +++ b/src/app/views/providers/_list.haml @@ -15,3 +15,5 @@ %td= link_to provider.name, provider_path(provider) %td= provider.url %td= provider.provider_type.name + %td= provider.provider_type.deltacloud_driver + %td= provider.deltacloud_provider diff --git a/src/app/views/providers/_list.xml.haml b/src/app/views/providers/_list.xml.haml index 3e4c1bb..bec069b 100644 --- a/src/app/views/providers/_list.xml.haml +++ b/src/app/views/providers/_list.xml.haml @@ -5,3 +5,4 @@ %name= p.name %url= p.url %provider_type= p.provider_type.deltacloud_driver + %deltacloud_provider= p.deltacloud_provider diff --git a/src/app/views/providers/_properties.haml b/src/app/views/providers/_properties.haml index ace0998..ee8a768 100644 --- a/src/app/views/providers/_properties.haml +++ b/src/app/views/providers/_properties.haml @@ -21,3 +21,13 @@ %label Provider Type %td = @provider.provider_type.name + %tr + %td + %label X-Deltacloud-Driver + %td + = @provider.provider_type.deltacloud_driver + %tr + %td + %label X-Deltacloud-Provider + %td + = @provider.deltacloud_provider diff --git a/src/config/locales/en.yml b/src/config/locales/en.yml index 26e6887..0333da0 100644 --- a/src/config/locales/en.yml +++ b/src/config/locales/en.yml @@ -211,6 +211,8 @@ en: provider_name: Provider Name provider_url: Provider URL provider_type: Provider Type + x_deltacloud_driver: X-Deltacloud-Driver + x_deltacloud_provider: X-Deltacloud-Provider form: provider_name: Provider Name provider_url: Provider URL diff --git a/src/db/migrate/20110811141500_add_deltacloud_provider_to_provider.rb b/src/db/migrate/20110811141500_add_deltacloud_provider_to_provider.rb new file mode 100644 index 0000000..fd11ac3 --- /dev/null +++ b/src/db/migrate/20110811141500_add_deltacloud_provider_to_provider.rb @@ -0,0 +1,9 @@ +class AddDeltacloudProviderToProvider < ActiveRecord::Migration + def self.up + add_column :providers, :deltacloud_provider, :string + end + + def self.down + remove_column :providers, :deltacloud_provider + end +end diff --git a/src/spec/factories/provider.rb b/src/spec/factories/provider.rb index df0d3f1..f599d57 100644 --- a/src/spec/factories/provider.rb +++ b/src/spec/factories/provider.rb @@ -17,6 +17,7 @@ FactoryGirl.define do name 'mock2' provider_type { ProviderType.find_by_deltacloud_driver("mock") } url 'http://localhost:3002/api' + deltacloud_provider 'mock' after_create { |p| p.realms << FactoryGirl.create(:realm3, :provider => p) } end
@@ -24,6 +25,7 @@ FactoryGirl.define do name 'amazon-ec2' provider_type { ProviderType.find_by_deltacloud_driver("ec2") } url 'http://localhost:3002/api' + deltacloud_provider 'ec2-us-east-1' hardware_profiles { |hp| [hp.association(:ec2_hwp1)] } after_create { |p| p.realms << FactoryGirl.create(:realm4, :provider => p) } end
With the change to a single deltacloud-core provider in -configure (not yet in place), we want to default the url parameter for new providers to this value. A user adding a new provider won't have to know where this is -- it's filled in by default in the form. The user can change it, of course. --- aeolus-conductor.spec.in | 2 ++ src/app/controllers/providers_controller.rb | 1 + src/app/models/provider.rb | 5 +++++ src/config/settings.yml | 1 + 4 files changed, 9 insertions(+), 0 deletions(-) create mode 100644 src/config/settings.yml
diff --git a/aeolus-conductor.spec.in b/aeolus-conductor.spec.in index a6f500d..f749d1e 100644 --- a/aeolus-conductor.spec.in +++ b/aeolus-conductor.spec.in @@ -230,6 +230,7 @@ touch %{buildroot}%{_localstatedir}/run/%{name}/event_log_position %{__ln_s} -f %{app_root}/config/environments/production.rb %{_sysconfdir}/%{name} %{__ln_s} -f %{app_root}/config/environments/test.rb %{_sysconfdir}/%{name} %{__ln_s} -f %{app_root}/config/database.yml %{_sysconfdir}/%{name} +%{__ln_s} -f %{app_root}/config/settings.yml %{_sysconfdir}/%{name}
%postun # kind of a weird construct. There are two cases where postun gets called; @@ -243,6 +244,7 @@ if [ ! -d %{app_root}/app ]; then rm -f %{_sysconfdir}/%{name}/production.rb rm -f %{_sysconfdir}/%{name}/test.rb rm -f %{_sysconfdir}/%{name}/database.yml + rm -f %{_sysconfdir}/%{name}/settings.yml fi
%post daemons diff --git a/src/app/controllers/providers_controller.rb b/src/app/controllers/providers_controller.rb index 6119f96..1f471d7 100644 --- a/src/app/controllers/providers_controller.rb +++ b/src/app/controllers/providers_controller.rb @@ -21,6 +21,7 @@ class ProvidersController < ApplicationController def new require_privilege(Privilege::CREATE, Provider) @provider = Provider.new + @provider.url = Provider::DEFAULT_DELTACLOUD_URL end
def edit diff --git a/src/app/models/provider.rb b/src/app/models/provider.rb index 8eca2b5..a099c56 100644 --- a/src/app/models/provider.rb +++ b/src/app/models/provider.rb @@ -37,6 +37,11 @@ class Provider < ActiveRecord::Base require 'util/conductor' include PermissionedObject
+ # once we're using settings.yml for other things we should move this + # to a more general location + SETTINGS_CONFIG = YAML.load_file("#{::Rails.root.to_s}/config/settings.yml") + DEFAULT_DELTACLOUD_URL = SETTINGS_CONFIG['default_deltacloud_url'] + has_many :provider_accounts, :dependent => :destroy has_many :hardware_profiles, :dependent => :destroy has_many :realms, :dependent => :destroy diff --git a/src/config/settings.yml b/src/config/settings.yml new file mode 100644 index 0000000..336df68 --- /dev/null +++ b/src/config/settings.yml @@ -0,0 +1 @@ +default_deltacloud_url: http://localhost:3002/api
--- src/app/models/provider.rb | 14 ++++++++++++-- src/app/models/provider_account.rb | 16 ++++++++++++++-- src/app/util/condormatic.rb | 2 +- 3 files changed, 27 insertions(+), 5 deletions(-)
diff --git a/src/app/models/provider.rb b/src/app/models/provider.rb index a099c56..c5f64f1 100644 --- a/src/app/models/provider.rb +++ b/src/app/models/provider.rb @@ -64,6 +64,11 @@ class Provider < ActiveRecord::Base
before_destroy :destroyable?
+ def encoded_url_with_driver_and_provider + unencoded = ";driver=#{provider_type.deltacloud_driver}" + unencoded += ";provider=#{deltacloud_provider}" if deltacloud_provider + return url + CGI::escape(unencoded) + end # there is a destroy dependency for a cloud accounts association, # but a cloud account is silently not destroyed when there is # an instance for the cloud account @@ -81,7 +86,12 @@ class Provider < ActiveRecord::Base
def connect begin - return DeltaCloud.new(nil, nil, url) + opts = {:username => nil, + :password => nil, + :driver => provider_type.deltacloud_driver } + opts[:provider] = deltacloud_provider if deltacloud_provider + client = DeltaCloud.new(nil, nil, url) + return client.with_config(opts) rescue Exception => e logger.error("Error connecting to framework: #{e.message}") logger.error("Backtrace: #{e.backtrace.join("\n")}") @@ -112,4 +122,4 @@ class Provider < ActiveRecord::Base connect.nil? ? false : true end
-end \ No newline at end of file +end diff --git a/src/app/models/provider_account.rb b/src/app/models/provider_account.rb index 6079a55..b6b0994 100644 --- a/src/app/models/provider_account.rb +++ b/src/app/models/provider_account.rb @@ -125,7 +125,14 @@ class ProviderAccount < ActiveRecord::Base
def connect begin - return DeltaCloud.new(credentials_hash['username'], credentials_hash['password'], provider.url) + opts = {:username => credentials_hash['username'], + :password => credentials_hash['password'], + :driver => provider.provider_type.deltacloud_driver } + opts[:provider] = provider.deltacloud_provider if provider.deltacloud_provider + client = DeltaCloud.new(credentials_hash['username'], + credentials_hash['password'], + provider.url) + return client.with_config(opts) rescue Exception => e logger.error("Error connecting to framework: #{e.message}") logger.error("Backtrace: #{e.backtrace.join("\n")}") @@ -169,7 +176,12 @@ class ProviderAccount < ActiveRecord::Base if credentials_hash['username'].blank? || credentials_hash['password'].blank? return false end - DeltaCloud::valid_credentials?(credentials_hash['username'].to_s, credentials_hash['password'].to_s, provider.url) + opts = {:driver => provider.provider_type.deltacloud_driver } + opts[:provider] = provider.deltacloud_provider if provider.deltacloud_provider + DeltaCloud::valid_credentials?(credentials_hash['username'].to_s, + credentials_hash['password'].to_s, + provider.url, + opts) end
def build_credentials diff --git a/src/app/util/condormatic.rb b/src/app/util/condormatic.rb index 431697a..c35afe1 100644 --- a/src/app/util/condormatic.rb +++ b/src/app/util/condormatic.rb @@ -89,7 +89,7 @@ def condormatic_instance_create(task) pipe_and_log(pipe, "executable = #{job_name}\n")
pipe_and_log(pipe, - "grid_resource = deltacloud #{found.account.provider.url}\n") + "grid_resource = deltacloud #{found.account.provider.encoded_url_with_driver_and_provider};\n") pipe_and_log(pipe, "DeltacloudUsername = #{found.account.credentials_hash['username']}\n") pipe_and_log(pipe, "DeltacloudPasswordFile = #{pwfilename}") pipe_and_log(pipe, "DeltacloudImageId = #{found.provider_image.target_identifier}\n")
On 08/19/2011 09:46 PM, Scott Seago wrote:
src/app/models/provider.rb | 14 ++++++++++++-- src/app/models/provider_account.rb | 16 ++++++++++++++-- src/app/util/condormatic.rb | 2 +- 3 files changed, 27 insertions(+), 5 deletions(-)
diff --git a/src/app/models/provider.rb b/src/app/models/provider.rb index a099c56..c5f64f1 100644 --- a/src/app/models/provider.rb +++ b/src/app/models/provider.rb @@ -64,6 +64,11 @@ class Provider< ActiveRecord::Base
before_destroy :destroyable?
- def encoded_url_with_driver_and_provider
- unencoded = ";driver=#{provider_type.deltacloud_driver}"
- unencoded += ";provider=#{deltacloud_provider}" if deltacloud_provider
- return url + CGI::escape(unencoded)
Escaped URL doesn't work for me - condor log: 08/25/11 15:37:07 [4589] BaseResource::DoBatchStatus for http://localhost:3002/api%3Bdriver%3Dmock%3Bprovider%3D; skipped for 30 seconds because the resource is down.
W/o escaping (url + unencoded) it works for me.
- end # there is a destroy dependency for a cloud accounts association, # but a cloud account is silently not destroyed when there is # an instance for the cloud account
@@ -81,7 +86,12 @@ class Provider< ActiveRecord::Base
def connect begin
return DeltaCloud.new(nil, nil, url)
opts = {:username => nil,
:password => nil,
:driver => provider_type.deltacloud_driver }
opts[:provider] = deltacloud_provider if deltacloud_provider
client = DeltaCloud.new(nil, nil, url)
return client.with_config(opts) rescue Exception => e logger.error("Error connecting to framework: #{e.message}") logger.error("Backtrace: #{e.backtrace.join("\n")}")
@@ -112,4 +122,4 @@ class Provider< ActiveRecord::Base connect.nil? ? false : true end
-end \ No newline at end of file +end diff --git a/src/app/models/provider_account.rb b/src/app/models/provider_account.rb index 6079a55..b6b0994 100644 --- a/src/app/models/provider_account.rb +++ b/src/app/models/provider_account.rb @@ -125,7 +125,14 @@ class ProviderAccount< ActiveRecord::Base
def connect begin
return DeltaCloud.new(credentials_hash['username'], credentials_hash['password'], provider.url)
opts = {:username => credentials_hash['username'],
:password => credentials_hash['password'],
:driver => provider.provider_type.deltacloud_driver }
opts[:provider] = provider.deltacloud_provider if provider.deltacloud_provider
client = DeltaCloud.new(credentials_hash['username'],
credentials_hash['password'],
provider.url)
return client.with_config(opts) rescue Exception => e logger.error("Error connecting to framework: #{e.message}") logger.error("Backtrace: #{e.backtrace.join("\n")}")
@@ -169,7 +176,12 @@ class ProviderAccount< ActiveRecord::Base if credentials_hash['username'].blank? || credentials_hash['password'].blank? return false end
- DeltaCloud::valid_credentials?(credentials_hash['username'].to_s, credentials_hash['password'].to_s, provider.url)
opts = {:driver => provider.provider_type.deltacloud_driver }
opts[:provider] = provider.deltacloud_provider if provider.deltacloud_provider
DeltaCloud::valid_credentials?(credentials_hash['username'].to_s,
credentials_hash['password'].to_s,
provider.url,
opts)
end
def build_credentials
diff --git a/src/app/util/condormatic.rb b/src/app/util/condormatic.rb index 431697a..c35afe1 100644 --- a/src/app/util/condormatic.rb +++ b/src/app/util/condormatic.rb @@ -89,7 +89,7 @@ def condormatic_instance_create(task) pipe_and_log(pipe, "executable = #{job_name}\n")
pipe_and_log(pipe,
"grid_resource = deltacloud #{found.account.provider.url}\n")
"grid_resource = deltacloud #{found.account.provider.encoded_url_with_driver_and_provider};\n") pipe_and_log(pipe, "DeltacloudUsername = #{found.account.credentials_hash['username']}\n") pipe_and_log(pipe, "DeltacloudPasswordFile = #{pwfilename}") pipe_and_log(pipe, "DeltacloudImageId = #{found.provider_image.target_identifier}\n")
On 08/25/2011 09:40 AM, Jan Provaznik wrote:
On 08/19/2011 09:46 PM, Scott Seago wrote:
src/app/models/provider.rb | 14 ++++++++++++-- src/app/models/provider_account.rb | 16 ++++++++++++++-- src/app/util/condormatic.rb | 2 +- 3 files changed, 27 insertions(+), 5 deletions(-)
diff --git a/src/app/models/provider.rb b/src/app/models/provider.rb index a099c56..c5f64f1 100644 --- a/src/app/models/provider.rb +++ b/src/app/models/provider.rb @@ -64,6 +64,11 @@ class Provider< ActiveRecord::Base
before_destroy :destroyable?
- def encoded_url_with_driver_and_provider
- unencoded = ";driver=#{provider_type.deltacloud_driver}"
- unencoded += ";provider=#{deltacloud_provider}" if
deltacloud_provider
- return url + CGI::escape(unencoded)
Escaped URL doesn't work for me - condor log: 08/25/11 15:37:07 [4589] BaseResource::DoBatchStatus for http://localhost:3002/api%3Bdriver%3Dmock%3Bprovider%3D; skipped for 30 seconds because the resource is down.
W/o escaping (url + unencoded) it works for me.
Ahh, yeah it's escaping the ";driver=" bit too -- I just want to escape deltacloud_provider, I think. I'll resend this patch with that change.
Scott
On Fri, 2011-08-19 at 15:46 -0400, Scott Seago wrote:
From: Scott Seago sseago@redhat.com Subject: [PATCH conductor 0/8] revised patchset In-Reply-To:
I'll keep poking at this on monday, but I cannot even get the app started to test this properly (keep getting bit by the Gemfile.lock not matching what was installed via rpm, and my 'no bundler' hack doesnt seem to be working any more). I am starting to dislike bundler at this point.
-j
On Fri, Aug 19, 2011 at 03:46:41PM -0400, Scott Seago wrote:
From: Scott Seago sseago@redhat.com Subject: [PATCH conductor 0/8] revised patchset In-Reply-To:
I'm unable to add provider accounts, but I can't rule out the possibility of it being a local error.
I applied your 8 patches, started deltacloud-core on :3002, and modified the auto-created mock provider to include an 'X-Deltacloud-Driver' value of 'mock'. It saved properly, but I am unable to add a provider account.
When I try, I get this flash message: "Account Mockery could not be added:" with no further error text.
/var/log/deltacloud-core/ec2.log shows this:
RuntimeError - Please set either the DELTACLOUD_MOCK_STORAGE or USER environment variable: ././lib/deltacloud/drivers/mock/mock_driver.rb:97:in `initialize' ././lib/drivers.rb:62:in `new' ././lib/drivers.rb:62:in `driver' ././server.rb:89:in `GET /api/?'
It's entirely possible that this issue is unrelated to your patch, but in any case, it prevents me from testing further.
-- Matt
aeolus-devel@lists.fedorahosted.org