From: Tomas Sedovic tsedovic@redhat.com
The update to the build_credentials method broke a lot of tests. --- src/app/models/provider_account.rb | 12 ++++++------ src/app/models/provider_account_observer.rb | 2 +- src/app/models/push_job.rb | 2 +- src/app/services/data_service_active_record.rb | 2 +- src/app/util/condormatic.rb | 4 ++-- src/app/views/admin/provider_accounts/_list.haml | 2 +- src/dbomatic/dbomatic | 2 +- src/features/provider_account.feature | 8 ++++---- .../provider_accounts_controller_spec.rb | 6 +++--- src/spec/factories/credential.rb | 14 +++++++------- src/spec/models/provider_account_spec.rb | 20 ++++++++++---------- .../services/data_service_active_record_spec.rb | 6 +++--- 12 files changed, 40 insertions(+), 40 deletions(-)
diff --git a/src/app/models/provider_account.rb b/src/app/models/provider_account.rb index c6f0079..5477d92 100644 --- a/src/app/models/provider_account.rb +++ b/src/app/models/provider_account.rb @@ -41,7 +41,7 @@ class ProviderAccount < ActiveRecord::Base
searchable do text :name, :as => :code_substring - text(:username, :as => :code_substring) { credentials_hash['username'] } + text(:username, :as => :code_substring) { credentials_hash['access_key'] } end
# Relations @@ -83,7 +83,7 @@ class ProviderAccount < ActiveRecord::Base
def validate_unique_username cid = CredentialDefinition.find_by_name('username', :conditions => {:provider_type_id => provider.provider_type.id}) - Credential.all(:conditions => {:value => credentials_hash['username'], :credential_definition_id => cid}).each do |c| + Credential.all(:conditions => {:value => credentials_hash['access_key'], :credential_definition_id => cid}).each do |c| if c.provider_account.provider == self.provider && c.provider_account_id != self.id errors.add(:base, "Username has already been taken") return false @@ -122,7 +122,7 @@ class ProviderAccount < ActiveRecord::Base
def connect begin - return DeltaCloud.new(credentials_hash['username'], credentials_hash['password'], provider.url) + return DeltaCloud.new(credentials_hash['access_key'], credentials_hash['secret_access_key'], provider.url) rescue Exception => e logger.error("Error connecting to framework: #{e.message}") logger.error("Backtrace: #{e.backtrace.join("\n")}") @@ -138,7 +138,7 @@ class ProviderAccount < ActiveRecord::Base end
def name - label.blank? ? credentials_hash['username'] : label + label.blank? ? credentials_hash['access_key'] : label end
# FIXME: for already-mapped accounts, update rather than add new @@ -163,10 +163,10 @@ class ProviderAccount < ActiveRecord::Base end
def valid_credentials? - if credentials_hash['username'].blank? || credentials_hash['password'].blank? + if credentials_hash['access_key'].blank? || credentials_hash['secret_access_key'].blank? return false end - DeltaCloud::valid_credentials?(credentials_hash['username'].to_s, credentials_hash['password'].to_s, provider.url) + DeltaCloud::valid_credentials?(credentials_hash['access_key'].to_s, credentials_hash['secret_access_key'].to_s, provider.url) end
def build_credentials diff --git a/src/app/models/provider_account_observer.rb b/src/app/models/provider_account_observer.rb index 0f76ee4..b57f38e 100644 --- a/src/app/models/provider_account_observer.rb +++ b/src/app/models/provider_account_observer.rb @@ -15,7 +15,7 @@ class ProviderAccountObserver < ActiveRecord::Observer
def create_bucket(account) client = account.connect - bucket_name = "#{account.credentials_hash['account_id']}-imagefactory-amis" + bucket_name = "#{account.credentials_hash['account_number']}-imagefactory-amis" # TODO (jprovazn): getting particular bucket takes long time (core fetches all # buckets from provider), so we call directly create_bucket, if bucket exists, # exception should be thrown (actually existing bucket is returned - this diff --git a/src/app/models/push_job.rb b/src/app/models/push_job.rb index 9983953..e028b84 100644 --- a/src/app/models/push_job.rb +++ b/src/app/models/push_job.rb @@ -28,7 +28,7 @@ class PushJob < Struct.new(:provider_image_id, :hydra) # TODO: what if a provider has multiple accounts # for now pick first account provider_account = provider_image.provider.provider_accounts.first - cred_block = provider_account.build_credentials.to_xml.html_safe + cred_block = provider_account.build_credentials.html_safe response = RestClient.post(YAML.load_file("#{RAILS_ROOT}/config/image_factory_console.yml")['pushurl'], :image_id => provider_image.image.uuid, :provider => provider_image.provider.name, :credentials => cred_block diff --git a/src/app/services/data_service_active_record.rb b/src/app/services/data_service_active_record.rb index 0eb6ddd..6257977 100644 --- a/src/app/services/data_service_active_record.rb +++ b/src/app/services/data_service_active_record.rb @@ -69,7 +69,7 @@ class DataServiceActiveRecord provider_accounts.each do |provider_account| quota = provider_account.quota if quota - data_points << TotalQuotaUsagePoint.new(provider_account.credentials_hash['username'], quota.total_instances) + data_points << TotalQuotaUsagePoint.new(provider_account.credentials_hash['access_key'], quota.total_instances) free_instances += (quota.maximum_total_instances - quota.total_instances) end end diff --git a/src/app/util/condormatic.rb b/src/app/util/condormatic.rb index c095ff5..bb5c1dc 100644 --- a/src/app/util/condormatic.rb +++ b/src/app/util/condormatic.rb @@ -270,8 +270,8 @@ def condormatic_classads_sync pipe.puts "hardware_profile_cpu="#{overrides[:cpu]}"" pipe.puts "realm_key="#{realm ? realm.external_key : ''}"" pipe.puts "provider_url="#{account.provider.url}"" - pipe.puts "username="#{account.credentials_hash['username']}"" - pipe.puts "password="#{account.credentials_hash['password']}"" + pipe.puts "username="#{account.credentials_hash['access_key']}"" + pipe.puts "password="#{account.credentials_hash['secret_access_key']}"" pipe.puts "provider_account_id="#{account.id}"" pipe.puts "keypair="#{account.instance_key ? account.instance_key.name : ''}"" rescue Exception => ex diff --git a/src/app/views/admin/provider_accounts/_list.haml b/src/app/views/admin/provider_accounts/_list.haml index b431f9b..86a1561 100644 --- a/src/app/views/admin/provider_accounts/_list.haml +++ b/src/app/views/admin/provider_accounts/_list.haml @@ -15,6 +15,6 @@ %input{:name => 'accounts_selected[]', :type => 'checkbox', :value => account.id, :id => "account_checkbox_#{account.id}", :checked => selected } = link_to account.name, admin_provider_account_path(account) %td - =account.credentials_hash['username'] + =account.credentials_hash['access_key'] %td =account.provider.provider_type.name diff --git a/src/dbomatic/dbomatic b/src/dbomatic/dbomatic index e7f29b0..9128efa 100755 --- a/src/dbomatic/dbomatic +++ b/src/dbomatic/dbomatic @@ -207,7 +207,7 @@ class CondorEventLog < Nokogiri::XML::SAX::Document return end
- provider_account = provider.provider_accounts.detect {|a| a.credentials_hash['username'] == @username} + provider_account = provider.provider_accounts.detect {|a| a.credentials_hash['access_key'] == @username} if provider_account.nil? @logger.error "Could not find the cloud account corresponding to #{link} - #{@username}, skipping cloud id update" return diff --git a/src/features/provider_account.feature b/src/features/provider_account.feature index 6a06d32..c15f353 100644 --- a/src/features/provider_account.feature +++ b/src/features/provider_account.feature @@ -24,8 +24,8 @@ Feature: Manage Provider Accounts And I should see "New Account" When I select "testprovider" from "provider_account_provider_id" And I fill in "provider_account[label]" with "testaccount" - And I fill in "provider_account[credentials_hash][username]" with "mockuser" - And I fill in "provider_account[credentials_hash][password]" with "mockpassword" + And I fill in "provider_account[credentials_hash][access_key]" with "mockuser" + And I fill in "provider_account[credentials_hash][secret_access_key]" with "mockpassword" And I fill in "quota[maximum_running_instances]" with "13" And I press "Add" Then I should be on testaccount's provider account page @@ -43,8 +43,8 @@ Feature: Manage Provider Accounts And I should see "New Account" When I select "testprovider" from "provider_account_provider_id" And I fill in "provider_account[label]" with "testaccount" - When I fill in "provider_account[credentials_hash][username]" with "mockuser" - And I fill in "provider_account[credentials_hash][password]" with "wrongpassword" + When I fill in "provider_account[credentials_hash][access_key]" with "mockuser" + And I fill in "provider_account[credentials_hash][secret_access_key]" with "wrongpassword" And I fill in "quota[maximum_running_instances]" with "13" And I press "Add" Then I should see "Credentials are invalid!" diff --git a/src/spec/controllers/provider_accounts_controller_spec.rb b/src/spec/controllers/provider_accounts_controller_spec.rb index c6887cf..9216fd9 100644 --- a/src/spec/controllers/provider_accounts_controller_spec.rb +++ b/src/spec/controllers/provider_accounts_controller_spec.rb @@ -38,13 +38,13 @@ describe Admin::ProviderAccountsController do
it "should allow users with account modify password to update a cloud account" do UserSession.create(@admin) - @provider_account.credentials_hash = {:username => 'mockuser2', :password => "foobar"} + @provider_account.credentials_hash = {:access_key => 'mockuser2', :secret_access_key => "foobar"} @provider_account.stub!(:valid_credentials?).and_return(true) @provider_account.quota = Quota.new @provider_account.save.should be_true - post :update, :id => @provider_account.id, :provider_account => { :credentials_hash => {:username => 'mockuser', :password => 'mockpassword'} } + post :update, :id => @provider_account.id, :provider_account => { :credentials_hash => {:access_key => 'mockuser', :secret_access_key => 'mockpassword'} } response.should redirect_to admin_provider_account_path(@provider_account) - ProviderAccount.find(@provider_account.id).credentials_hash['password'].should == "mockpassword" + ProviderAccount.find(@provider_account.id).credentials_hash['secret_access_key'].should == "mockpassword" end
it "should allow users with account modify permission to delete a cloud account" do diff --git a/src/spec/factories/credential.rb b/src/spec/factories/credential.rb index 8cde3f8..81175a8 100644 --- a/src/spec/factories/credential.rb +++ b/src/spec/factories/credential.rb @@ -6,36 +6,36 @@ end # EC2 credentials Factory.define :ec2_username_credential, :parent => :credential do |c| c.value "mockuser" - c.credential_definition { CredentialDefinition.find_by_name('username',:conditions => {:provider_type_id => ProviderType.find_by_codename('ec2')})} + c.credential_definition { CredentialDefinition.find_by_name('access_key',:conditions => {:provider_type_id => ProviderType.find_by_codename('ec2')})} end
Factory.define :ec2_password_credential, :parent => :credential do |c| c.value "mockpassword" - c.credential_definition { CredentialDefinition.find_by_name('password',:conditions => {:provider_type_id => ProviderType.find_by_codename('ec2')})} + c.credential_definition { CredentialDefinition.find_by_name('secret_access_key',:conditions => {:provider_type_id => ProviderType.find_by_codename('ec2')})} end
Factory.define :ec2_account_id_credential, :parent => :credential do |c| c.value "3141" - c.credential_definition { CredentialDefinition.find_by_name('account_id',:conditions => {:provider_type_id => ProviderType.find_by_codename('ec2')})} + c.credential_definition { CredentialDefinition.find_by_name('account_number',:conditions => {:provider_type_id => ProviderType.find_by_codename('ec2')})} end
Factory.define :ec2_x509private_credential, :parent => :credential do |c| c.value "x509 private key" - c.credential_definition { CredentialDefinition.find_by_name('x509private',:conditions => {:provider_type_id => ProviderType.find_by_codename('ec2')})} + c.credential_definition { CredentialDefinition.find_by_name('key',:conditions => {:provider_type_id => ProviderType.find_by_codename('ec2')})} end
Factory.define :ec2_x509public_credential, :parent => :credential do |c| c.value "x509 public key" - c.credential_definition { CredentialDefinition.find_by_name('x509public',:conditions => {:provider_type_id => ProviderType.find_by_codename('ec2')})} + c.credential_definition { CredentialDefinition.find_by_name('certificate',:conditions => {:provider_type_id => ProviderType.find_by_codename('ec2')})} end
#Mock & Others credentials Factory.define :username_credential, :parent => :credential do |c| c.value "mockuser" - c.credential_definition { CredentialDefinition.find_by_name('username',:conditions => {:provider_type_id => ProviderType.find_by_codename('mock')})} + c.credential_definition { CredentialDefinition.find_by_name('access_key',:conditions => {:provider_type_id => ProviderType.find_by_codename('mock')})} end
Factory.define :password_credential, :parent => :credential do |c| c.value "mockpassword" - c.credential_definition { CredentialDefinition.find_by_name('password',:conditions => {:provider_type_id => ProviderType.find_by_codename('mock')})} + c.credential_definition { CredentialDefinition.find_by_name('secret_access_key',:conditions => {:provider_type_id => ProviderType.find_by_codename('mock')})} end diff --git a/src/spec/models/provider_account_spec.rb b/src/spec/models/provider_account_spec.rb index df49708..27af5dd 100644 --- a/src/spec/models/provider_account_spec.rb +++ b/src/spec/models/provider_account_spec.rb @@ -20,12 +20,12 @@ describe ProviderAccount do mock_provider = Factory :mock_provider
invalid_provider_account = Factory.build(:mock_provider_account, :provider => mock_provider) - invalid_provider_account.credentials_hash = {'username' => "wrong_username", 'password' => "wrong_password"} + invalid_provider_account.credentials_hash = {'access_key' => "wrong_username", 'secret_access_key' => "wrong_password"} invalid_provider_account.should_not be_valid
ec2_provider = Factory :ec2_provider invalid_ec2_provider_account = Factory.build(:ec2_provider_account, :provider => ec2_provider) - invalid_ec2_provider_account.credentials_hash = {'username' => "", 'password' => nil} + invalid_ec2_provider_account.credentials_hash = {'access_key' => "", 'secret_access_key' => nil} invalid_ec2_provider_account.valid_credentials?.should == false invalid_ec2_provider_account.should_not be_valid
@@ -35,7 +35,7 @@ describe ProviderAccount do
it "should fail to create a cloud account if the provider credentials are invalid" do provider_account = Factory.build(:mock_provider_account) - provider_account.credentials_hash = {'password' => "wrong_password"} + provider_account.credentials_hash = {'secret_access_key' => "wrong_password"} provider_account.save.should == false end
@@ -68,21 +68,21 @@ describe ProviderAccount do <?xml version="1.0"?> <provider_credentials> <ec2_credentials> - <account_number>1234</account_number> <access_key>user</access_key> - <secret_access_key>pass</secret_access_key> + <account_number>1234</account_number> <certificate>cert</certificate> <key>priv_key</key> + <secret_access_key>pass</secret_access_key> </ec2_credentials> </provider_credentials> EOT provider_account = Factory.build(:ec2_provider_account) provider_account.credentials_hash = { - 'username' => 'user', - 'password' => 'pass', - 'account_id' => '1234', - 'x509private' => 'priv_key', - 'x509public' => 'cert' + 'access_key' => 'user', + 'secret_access_key' => 'pass', + 'account_number' => '1234', + 'key' => 'priv_key', + 'certificate' => 'cert' } provider_account.build_credentials.to_s.should eql(expected_xml) end diff --git a/src/spec/services/data_service_active_record_spec.rb b/src/spec/services/data_service_active_record_spec.rb index d108e01..b1510ed 100644 --- a/src/spec/services/data_service_active_record_spec.rb +++ b/src/spec/services/data_service_active_record_spec.rb @@ -13,7 +13,7 @@ describe DataServiceActiveRecord do for i in 0..2 quota = Factory(:quota, :maximum_total_instances => data[i][0], :total_instances => data[i][1]) provider_account = Factory.build(:provider_account, :provider => provider, :quota => quota) - provider_account.credentials_hash = {:username => "username" + i.to_s, :password => 'mockpassword'} + provider_account.credentials_hash = {:access_key => "username" + i.to_s, :secret_access_key => 'mockpassword'} provider_account.stub!(:valid_credentials?).and_return(true) provider_account.save!
@@ -42,7 +42,7 @@ describe DataServiceActiveRecord do :total_instances => 20)
provider_account = Factory.build(:provider_account, :provider => provider, :quota => quota) - provider_account.credentials_hash = {:username => 'test', :password =>'test'} + provider_account.credentials_hash = {:access_key => 'test', :secret_access_key =>'test'} provider_account.stub!(:valid_credentials?).and_return(true) provider_account.save!
@@ -129,7 +129,7 @@ describe DataServiceActiveRecord do provider_accounts = [] expected_averages.each do |expected_average| provider_account = Factory.build(:provider_account, :provider => provider) - provider_account.credentials_hash = { :username => "username" + expected_average[0].to_s, :password => 'mockpassword' } + provider_account.credentials_hash = { :access_key => "username" + expected_average[0].to_s, :secret_access_key => 'mockpassword' } provider_account.stub!(:valid_credentials?).and_return(true) provider_account.save!