[PATCH] adding audrey deployable compatibility test

Jan Provaznik jprovazn at redhat.com
Mon Jun 11 14:18:39 UTC 2012


On 06/08/2012 09:19 PM, Matt Wagner wrote:
> On Fri, Jun 08, 2012 at 03:17:17PM -0400, Dan Radez wrote:
>> ---
>>   src/app/models/deployable.rb |   38 ++++++++++++++++++++++++++++++++++++++
>>   src/config/locales/en.yml    |    1 +
>>   2 files changed, 39 insertions(+)
>>
>> diff --git a/src/app/models/deployable.rb b/src/app/models/deployable.rb
>> index 7659688..68e8c4b 100644
>> --- a/src/app/models/deployable.rb
>> +++ b/src/app/models/deployable.rb
>> @@ -192,6 +192,8 @@ class Deployable<  ActiveRecord::Base
>>           deployable_errors<<  "#{assembly_hash[:name]}: " + I18n.t('deployables.error.attribute_not_exist')
>>         end
>>         assemblies_array<<  assembly_hash
>> +      audrey_error = check_audrey_api_compatibility(image, assembly)
>> +      deployable_errors<<  "#{assembly_hash[:name]}: " + audrey_error if not audrey_error.nil?
>>       end
>>       [assemblies_array, images, missing_images, deployable_errors]
>>     end
>> @@ -245,6 +247,42 @@ class Deployable<  ActiveRecord::Base
>>       warnings
>>     end
>>
>> +  def check_audrey_api_compatibility(image, assembly)
>> +    # get icicle for agent
>> +    icicle_uuid = image.latest_pushed_or_unpushed_build.target_images.first.icicle rescue nil
>> +    icicle = Aeolus::Image::Warehouse::Icicle.find(icicle_uuid) if icicle_uuid
>> +    agent_v = icicle ? icicle.packages.find_all { |p| p =~ /aeolus-audrey-agent(.*)/ } : ""
>> +    agent_v = agent_v.first.split('-')[3] if agent_v.present?
>> +
>> +    # calculate audrey api version
>> +    audrey_api_v = if agent_v>= "0.5.0"

agent_v can be empty array, then this raises an exception:
undefined method `>=' for []:Array

>> +                      1..2
>> +                    elsif agent_v>= "0.4.0"
>> +                      1..1
>> +                    else 0
>> +                    end
>> +
>> +    # initalize compatibility
>> +    audrey_api_compat = 1
>> +
>> +    # do cs_compat
>> +    ## All agents are compatible with all Config Servers right now
>> +    ## so no need to check this right now
>> +    ## this check should call the cs passing the agent_v and validating
>> +    ## the response the CS sends back
>> +
>> +    # audrey api version 2 added service references, lets check for any
>> +    assembly.services.each do |service|
>> +      service.parameters.each do |param|
>> +        audrey_api_compat = 2 if param.reference_service
>> +      end
>> +    end
>> +
>> +    if audrey_api_v != 0
>> +      audrey_api_v.include?(audrey_api_compat) ? nil : I18n.t('deployables.error.audrey_api_incompatibility')
>> +    end
>> +  end
>> +
>>     private
>>
>>     def self.apply_search_filter(search)
>> diff --git a/src/config/locales/en.yml b/src/config/locales/en.yml
>> index 1a1c69e..6900522 100644
>> --- a/src/config/locales/en.yml
>> +++ b/src/config/locales/en.yml
>> @@ -1008,6 +1008,7 @@ en:
>>       error:
>>         attribute_not_exists: invalid
>>         hwp_not_exists: "Hardware profile %{name} specified in XML doesn't exist."
>> +      audrey_api_incompatibility: "The deployable uses features not supported by the audrey agent installed in the latest built image."
>>       properties:
>>         edit_deployable_xml: Edit Deployable XML
>>     name: Name
>> --
>> 1.7.10.2
>
> ACK! This fixes the issues I had seen in the earlier set, maintains test
> compatibility, and looks good.
>
> -- Matt

Hi,
I'm hitting an error with this patch (described inline).

Jan



More information about the aeolus-devel mailing list