diff --git a/plugins/mezuro/lib/kalibro/configuration.rb b/plugins/mezuro/lib/kalibro/configuration.rb index f040dd1..5183634 100644 --- a/plugins/mezuro/lib/kalibro/configuration.rb +++ b/plugins/mezuro/lib/kalibro/configuration.rb @@ -22,10 +22,11 @@ class Kalibro::Configuration < Kalibro::Model new request("Configuration", :get_configuration, {:configuration_name => configuration_name})[:configuration] end - def self.create(content) - attributes = { - :name => content.name, - :description => content.description + def self.create(content, configuration) + attributes = { + :name => content.name, + :description => content.description, + :metric_configuration => configuration.to_hash[:metric_configuration] } super attributes end @@ -34,7 +35,13 @@ class Kalibro::Configuration < Kalibro::Model request("Configuration", :get_configuration_names)[:configuration_name] end - def destroy + def destroy self.class.request("Configuration", :remove_configuration, {:configuration_name => name}) end + + def update_attributes(attributes={}) + attributes.each { |field, value| send("#{field}=", value) if self.class.is_valid?(field) } + save + end + end diff --git a/plugins/mezuro/lib/mezuro_plugin/configuration_content.rb b/plugins/mezuro/lib/mezuro_plugin/configuration_content.rb index 7270971..5145484 100644 --- a/plugins/mezuro/lib/mezuro_plugin/configuration_content.rb +++ b/plugins/mezuro/lib/mezuro_plugin/configuration_content.rb @@ -9,7 +9,7 @@ class MezuroPlugin::ConfigurationContent < Article 'Sets of thresholds to interpret metrics' end - settings_items :description + settings_items :description, :clone_configuration_name include ActionView::Helpers::TagHelper def to_html(options = {}) @@ -20,21 +20,20 @@ class MezuroPlugin::ConfigurationContent < Article def configuration begin - configuration = Kalibro::Configuration.find_by_name(self.name) - configuration.description = self.description - configuration - rescue Exception - Kalibro::Configuration.new({ - :name => self.name, - :description => self.description - }) + @configuration ||= Kalibro::Configuration.find_by_name(self.name) + rescue Exception => error + errors.add_to_base(error.message) + nil end end - + def metric_configurations configuration.metric_configurations end - + + def configuration_names + ["None"] + Kalibro::Configuration.all_names.sort + end after_save :send_configuration_to_service after_destroy :remove_configuration_from_service @@ -42,8 +41,7 @@ class MezuroPlugin::ConfigurationContent < Article private def validate_kalibro_configuration_name - existing = Kalibro::Configuration.all_names - existing.each { |a| a.downcase!} + existing = configuration_names.map { |a| a.downcase} if existing.include?(name.downcase) errors.add_to_base("Configuration name already exists in Kalibro") @@ -51,11 +49,24 @@ class MezuroPlugin::ConfigurationContent < Article end def send_configuration_to_service - configuration.save + if configuration.nil? + begin + clone_configuration = Kalibro::Configuration.find_by_name(self.clone_configuration_name) + rescue Exception => error + clone_configuration = nil + end + Kalibro::Configuration.create(self, clone_configuration) + else + configuration.update_attributes({:description => description}) + end end def remove_configuration_from_service - configuration.destroy + begin + configuration.destroy + rescue Exception => error + errors.add_to_base(error.message) + end end end diff --git a/plugins/mezuro/test/unit/mezuro_plugin/configuration_content_test.rb b/plugins/mezuro/test/unit/mezuro_plugin/configuration_content_test.rb index 12d978c..91a3fa4 100644 --- a/plugins/mezuro/test/unit/mezuro_plugin/configuration_content_test.rb +++ b/plugins/mezuro/test/unit/mezuro_plugin/configuration_content_test.rb @@ -61,5 +61,5 @@ class ConfigurationContentTest < ActiveSupport::TestCase @configuration.expects(:destroy) @content.send :remove_configuration_from_service end - + end diff --git a/plugins/mezuro/views/cms/mezuro_plugin/_configuration_content.html.erb b/plugins/mezuro/views/cms/mezuro_plugin/_configuration_content.html.erb index 9846e46..df94a30 100644 --- a/plugins/mezuro/views/cms/mezuro_plugin/_configuration_content.html.erb +++ b/plugins/mezuro/views/cms/mezuro_plugin/_configuration_content.html.erb @@ -1,11 +1,11 @@

<%= _(MezuroPlugin::ConfigurationContent.short_description) %>

<% -begin - @configuration = @article.title.nil? ? nil : Kalibro::Configuration.find_by_name(@article.title) -rescue - @configuration = nil -end + begin + configuration = @article.title.nil? ? nil : @article.configuration + rescue + configuration = nil + end %> <%= error_messages_for 'kalibro_configuration' %> @@ -13,8 +13,20 @@ end <%= hidden_field_tag 'kalibro_configuration[profile_id]', profile.id %> <%= hidden_field_tag 'id', @article.id %> +<% configuration_names = @article.configuration_names %> + +<% selected = (configuration.nil? ? configuration_names[0] : @article.clone_configuration_name) %> + <%= required_fields_message %> -<%= required f.text_field(:name, :disabled => !(@configuration.nil? || @article.id.nil?)) %> +<%= required labelled_form_field _('Clone Configuration'), +if !configuration.nil? && !@article.id.nil? + f.select(:clone_configuration_name, configuration_names, {:selected => selected}, :disabled => 'true') +else + f.select(:clone_configuration_name, configuration_names, {:selected => selected}) +end %> +
+ +<%= required f.text_field(:name, :disabled => !(configuration.nil? || @article.id.nil?)) %> <%= f.text_field :description %>
diff --git a/plugins/mezuro/views/content_viewer/show_configuration.rhtml b/plugins/mezuro/views/content_viewer/show_configuration.rhtml index 0bf9121..b2da80e 100644 --- a/plugins/mezuro/views/content_viewer/show_configuration.rhtml +++ b/plugins/mezuro/views/content_viewer/show_configuration.rhtml @@ -1,5 +1,5 @@ <% @configuration_content = @page -@configuration = Kalibro::Configuration.find_by_name(@configuration_content.name) %> +@configuration = @page.configuration %> -- libgit2 0.21.2