[PATCH] Moving the service parameter type attr off the parameter tag onto the value tag because the type only applys when we collect a value.
Dan Radez
dradez at redhat.com
Fri May 25 12:24:45 UTC 2012
---
src/app/controllers/deployables_controller.rb | 17 +++++++++++++++++
src/app/controllers/deployments_controller.rb | 8 ++++++++
src/app/models/deployable.rb | 17 +++++++++++++++++
src/app/util/deployable-rng.xml | 19 ++++++++++++++++++-
src/app/util/deployable_xml.rb | 6 ++++++
src/app/views/layouts/_new_notification.html.haml | 6 +++++-
src/config/locales/en.yml | 1 +
7 files changed, 72 insertions(+), 2 deletions(-)
diff --git a/src/app/controllers/deployables_controller.rb b/src/app/controllers/deployables_controller.rb
index 543cb53..434a41e 100644
--- a/src/app/controllers/deployables_controller.rb
+++ b/src/app/controllers/deployables_controller.rb
@@ -152,6 +152,14 @@ class DeployablesController < ApplicationController
redirect_to catalog_path(@selected_catalogs.first)
end
end
+
+ # check that type attrs on service params are used properly
+ if warnings = @deployable.check_service_params_types
+ flash[:warning] = [] if not flash[:warning]
+ flash[:warning] = Array flash[:warning] if flash[:warning].class == String
+ flash[:warning] = flash[:warning] + warnings
+ end
+
rescue => e
if @deployable.errors.empty?
logger.error e.message
@@ -184,6 +192,13 @@ class DeployablesController < ApplicationController
params[:deployable].delete(:owner_id) if params[:deployable]
if @deployable.update_attributes(params[:deployable])
+ # check that type attrs on service params are used properly
+ if warnings = @deployable.check_service_params_types
+ flash[:warning] = [] if not flash[:warning]
+ flash[:warning] = Array flash[:warning] if flash[:warning].class == String
+ flash[:warning] = flash[:warning] + warnings
+ end
+
flash[:notice] = t"catalog_entries.flash.notice.updated"
redirect_to polymorphic_path([@catalog, @deployable])
else
@@ -285,4 +300,6 @@ class DeployablesController < ApplicationController
nil
end
end
+
+
end
diff --git a/src/app/controllers/deployments_controller.rb b/src/app/controllers/deployments_controller.rb
index 169b1b6..dcabb79 100644
--- a/src/app/controllers/deployments_controller.rb
+++ b/src/app/controllers/deployments_controller.rb
@@ -86,6 +86,14 @@ class DeploymentsController < ApplicationController
@additional_quota = count_additional_quota(@deployment)
render 'overview' and return
end
+
+ # check that type attrs on service params are used properly
+ if warnings = @deployable.check_service_params_types
+ flash[:warning] = [] if not flash[:warning]
+ flash[:warning] = Array flash[:warning] if flash[:warning].class == String
+ flash[:warning] = flash[:warning] + warnings
+ end
+
end
def overview
diff --git a/src/app/models/deployable.rb b/src/app/models/deployable.rb
index 201123f..02ad25f 100644
--- a/src/app/models/deployable.rb
+++ b/src/app/models/deployable.rb
@@ -216,6 +216,23 @@ class Deployable < ActiveRecord::Base
self[:pool_family_id] = catalogs.first.pool_family_id
end
+
+ def check_service_params_types
+ warnings = []
+ deployable_xml = DeployableXML.new(xml)
+ deployable_xml.assemblies.each do |assembly|
+ assembly.services.each do |service|
+ service.parameters.each do |param|
+ if param.type_warning
+ warnings << I18n.translate("deployables.flash.warning.param_type_attr",
+ :service_name => service.name,
+ :param_name => param.name)
+ end
+ end
+ end
+ end
+ end
+
private
def self.apply_search_filter(search)
diff --git a/src/app/util/deployable-rng.xml b/src/app/util/deployable-rng.xml
index a8b01db..01e62f7 100644
--- a/src/app/util/deployable-rng.xml
+++ b/src/app/util/deployable-rng.xml
@@ -131,6 +131,9 @@
<define name="configuration-parameter-definition">
<element name="parameter">
<attribute name="name"><text/></attribute>
+ <!-- type is depricated here, it's proper use is on the value
+ tag. it can be removed is 1.2 -->
+ <optional>
<attribute name="type">
<choice>
<!-- only supporting scalar and password types for now -->
@@ -140,9 +143,23 @@
<value>password</value>
</choice>
</attribute>
+ </optional>
<choice>
<empty/>
- <element name="value"><text/></element>
+ <element name="value">
+ <text/>
+ <optional>
+ <attribute name="type">
+ <choice>
+ <!-- only supporting scalar and password types for now -->
+ <value>scalar</value>
+ <!-- password types simply indicate that the UI collecting the
+ value should obscure the input field's value -->
+ <value>password</value>
+ </choice>
+ </attribute>
+ </optional>
+ </element>
<element name="reference">
<attribute name="assembly"><text/></attribute>
<choice>
diff --git a/src/app/util/deployable_xml.rb b/src/app/util/deployable_xml.rb
index 568e8c6..b299ba2 100644
--- a/src/app/util/deployable_xml.rb
+++ b/src/app/util/deployable_xml.rb
@@ -30,6 +30,12 @@ class ParameterXML
end
def type
+ value_node['type'] || @root['type']
+ end
+
+ def type_warning
+ # providing a place to see the old placement of the type
+ # attr directly so we can check it and throw warnings.
@root['type']
end
diff --git a/src/app/views/layouts/_new_notification.html.haml b/src/app/views/layouts/_new_notification.html.haml
index 0244d2b..d807020 100644
--- a/src/app/views/layouts/_new_notification.html.haml
+++ b/src/app/views/layouts/_new_notification.html.haml
@@ -27,7 +27,11 @@
%div.heading
=image_tag 'flash_warning_icon.png', :alt => 'Warnings'
%ul.flashes
- %li= flash[:warning]
+ -if flash[:warning].kind_of?(Array)
+ - flash[:warning].each do |k, v|
+ %li= [k, v.present? ? ": #{v}" : '']
+ -else
+ %li= flash[:warning]
-if flash[:error]
-if flash[:error].kind_of?(String)
diff --git a/src/config/locales/en.yml b/src/config/locales/en.yml
index 64e7012..dc2fac7 100644
--- a/src/config/locales/en.yml
+++ b/src/config/locales/en.yml
@@ -992,6 +992,7 @@ en:
wrong_environment: "The deployable '%{deployable}' contains an image (UUID %{uuid}) in the wrong environment ('%{wrong_env}' should be '%{environment}') and cannot be used."
warning:
failed: "Deployable was not created: %{message}"
+ param_type_attr: "Deprecation Warning: Parameter '%{param_name}' in service '%{service_name}' has a type attribute. Remove the type attribute or move it to a child value tag."
notice:
deleted:
one: "Deployable %{deleted} removed successfully!"
--
1.7.10.1
More information about the aeolus-devel
mailing list