summaryrefslogtreecommitdiffstats
path: root/install
diff options
context:
space:
mode:
authorPetr Voborník <pvoborni@redhat.com>2012-02-23 11:26:05 +0100
committerPetr Vobornik <pvoborni@redhat.com>2012-02-29 12:59:13 +0100
commitcf60e7e71e800bbbe5eb42039a375782af17c379 (patch)
treef22167fada58ed5bc75b7f1dfc73b7efc298ebff /install
parent525bf04da56829ac2b7b6e086a7a2d965727ce02 (diff)
downloadfreeipa-cf60e7e71e800bbbe5eb42039a375782af17c379.tar.gz
freeipa-cf60e7e71e800bbbe5eb42039a375782af17c379.tar.xz
freeipa-cf60e7e71e800bbbe5eb42039a375782af17c379.zip
Fixed DNS record add handling of 4304 error
Fixed hanling of 4304 error in DNS record add. Code which handled this error in host-add was generalized and moved to IPA. DNS record add both in adder dialog and dns record table are using this generalized version. https://fedorahosted.org/freeipa/ticket/2349
Diffstat (limited to 'install')
-rw-r--r--install/ui/dns.js19
-rw-r--r--install/ui/host.js33
-rw-r--r--install/ui/ipa.js40
3 files changed, 59 insertions, 33 deletions
diff --git a/install/ui/dns.js b/install/ui/dns.js
index ddd9da03b..42002192f 100644
--- a/install/ui/dns.js
+++ b/install/ui/dns.js
@@ -982,11 +982,14 @@ IPA.dns.record_entity = function(spec) {
IPA.dns.record_adder_dialog = function(spec) {
spec = spec || {};
+ spec.retry = spec.retry !== undefined ? spec.retry : false;
IPA.dns.record_prepare_spec(spec, IPA.dns.record_prepare_editor_for_type);
var that = IPA.entity_adder_dialog(spec);
+ that.on_error = IPA.create_4304_error_handler(that);
+
return that;
};
@@ -1621,6 +1624,7 @@ IPA.dns.record_type_table_widget = function(spec) {
entity: that.entity,
fields: [],
widgets: [],
+ retry: false,
title: title.replace('${entity}', label)
};
@@ -1635,6 +1639,8 @@ IPA.dns.record_type_table_widget = function(spec) {
var cancel_button = dialog.buttons.get('cancel');
dialog.buttons.empty();
+ dialog.on_error = IPA.create_4304_error_handler(dialog);
+
dialog.create_button({
name: 'add',
label: IPA.messages.buttons.add,
@@ -1642,7 +1648,12 @@ IPA.dns.record_type_table_widget = function(spec) {
dialog.hide_message();
dialog.add(
function(data, text_status, xhr) {
- that.reload_facet(data);
+
+ if (data.result.result.dnsrecords) {
+ that.reload_facet(data);
+ } else {
+ that.refresh_facet();
+ }
dialog.close();
},
dialog.on_error);
@@ -1661,7 +1672,11 @@ IPA.dns.record_type_table_widget = function(spec) {
message = message.replace('${entity}', label);
dialog.show_message(message);
- that.reload_facet(data);
+ if (data.result.result.dnsrecords) {
+ that.reload_facet(data);
+ } else {
+ that.refresh_facet();
+ }
dialog.reset();
},
dialog.on_error);
diff --git a/install/ui/host.js b/install/ui/host.js
index f2b845290..6f9e35776 100644
--- a/install/ui/host.js
+++ b/install/ui/host.js
@@ -347,7 +347,7 @@ IPA.widget_factories['host_fqdn'] = IPA.host_fqdn_widget;
IPA.host_adder_dialog = function(spec) {
spec = spec || {};
- spec.retry = typeof spec.retry !== 'undefined' ? spec.retry : false;
+ spec.retry = spec.retry !== undefined ? spec.retry : false;
var that = IPA.entity_adder_dialog(spec);
@@ -356,36 +356,7 @@ IPA.host_adder_dialog = function(spec) {
that.container.addClass('host-adder-dialog');
};
- that.on_error = function(xhr, text_status, error_thrown) {
- var ajax = this;
- var command = that.command;
- var data = error_thrown.data;
- var dialog = null;
-
- if(data && data.error && data.error.code === 4304) {
- dialog = IPA.message_dialog({
- message: data.error.message,
- title: spec.title,
- on_ok: function() {
- data.result = {
- result: {
- fqdn: command.args[0]
- }
- };
- command.on_success.call(ajax, data, text_status, xhr);
- }
- });
- } else {
- dialog = IPA.error_dialog({
- xhr: xhr,
- text_status: text_status,
- error_thrown: error_thrown,
- command: command
- });
- }
-
- dialog.open(that.container);
- };
+ that.on_error = IPA.create_4304_error_handler(that);
return that;
};
diff --git a/install/ui/ipa.js b/install/ui/ipa.js
index 441e6468d..d1bb04210 100644
--- a/install/ui/ipa.js
+++ b/install/ui/ipa.js
@@ -1178,6 +1178,46 @@ IPA.error_list = function() {
return that;
};
+IPA.create_4304_error_handler = function(adder_dialog) {
+
+ var set_pkey = function(result) {
+
+ var pkey_name = adder_dialog.entity.metadata.primary_key;
+ var args = adder_dialog.command.args;
+ var pkey = args[args.length-1];
+ result[pkey_name] = pkey;
+ };
+
+ return function (xhr, text_status, error_thrown) {
+
+ var ajax = this;
+ var command = adder_dialog.command;
+ var data = error_thrown.data;
+ var dialog = null;
+
+ if (data && data.error && data.error.code === 4304) {
+ dialog = IPA.message_dialog({
+ message: data.error.message,
+ title: adder_dialog.title,
+ on_ok: function() {
+ data.result = { result: {} };
+ set_pkey(data.result.result);
+ command.on_success.call(ajax, data, text_status, xhr);
+ }
+ });
+ } else {
+ dialog = IPA.error_dialog({
+ xhr: xhr,
+ text_status: text_status,
+ error_thrown: error_thrown,
+ command: command
+ });
+ }
+
+ dialog.open(adder_dialog.container);
+ };
+};
+
IPA.limit_text = function(value, max_length) {
if (!value) return '';