summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPavel Vomacka <pvomacka@redhat.com>2016-08-16 10:03:36 +0200
committerMartin Basti <mbasti@redhat.com>2016-08-17 13:54:57 +0200
commitd45b0efe5d5f718791d34a3e57ea723dcae8fd59 (patch)
treecd6a2ffc057629b94886e3da74a7c0321ad2de43
parent8ad03259fe770b222e70286fd00c3416b4ed197d (diff)
downloadfreeipa-d45b0efe5d5f718791d34a3e57ea723dcae8fd59.tar.gz
freeipa-d45b0efe5d5f718791d34a3e57ea723dcae8fd59.tar.xz
freeipa-d45b0efe5d5f718791d34a3e57ea723dcae8fd59.zip
Add warning about only one existing CA server
It is not safe to have only one CA server in topology. Therefore there is a check and in case that there is only one CA server a warning is shown. The warning is shown after each refreshing of servers facet. https://fedorahosted.org/freeipa/ticket/5828 Reviewed-By: Tomas Krizek <tkrizek@redhat.com>
-rw-r--r--install/ui/src/freeipa/topology.js73
-rw-r--r--install/ui/test/data/ipa_init.json2
-rw-r--r--ipaserver/plugins/internal.py2
3 files changed, 76 insertions, 1 deletions
diff --git a/install/ui/src/freeipa/topology.js b/install/ui/src/freeipa/topology.js
index 7e501eb35..c33adba9a 100644
--- a/install/ui/src/freeipa/topology.js
+++ b/install/ui/src/freeipa/topology.js
@@ -28,13 +28,14 @@ define([
'./facets/Facet',
'./topology_graph',
'./navigation',
+ './widget',
// plain imports
'./search',
'./entity'],
function(lang, declare, Evented, Stateful, Deferred, on, all, when,
builder, IPA, $, menu, metadata_provider, phases, reg, rpc,
text, mod_details, mod_facet, mod_field, ActionMixin,
- HeaderMixin, Facet, topology_graph, navigation) {
+ HeaderMixin, Facet, topology_graph, navigation, widget_mod) {
/**
* Topology module
* @class
@@ -206,6 +207,7 @@ return {
facets: [
{
$type: 'search',
+ $factory: topology.servers_search_facet,
no_update: true,
disable_facet_tabs: false,
tabs_in_sidebar: true,
@@ -483,6 +485,75 @@ topology.location_adapter = declare([mod_field.Adapter], {
}
});
+topology.servers_search_facet = function(spec, no_init) {
+ spec = spec || {};
+
+ var that = IPA.search_facet(spec);
+
+ that.create_get_records_command = function(pkeys, on_success, on_error) {
+
+ var on_success_extended = function(data, text_status, xhr) {
+ // Call original on_success handler
+ on_success(data, text_status, xhr);
+
+ var result = data.result.results;
+ var counter = 0;
+
+ for (var i=0, l=result.length; i<l; i++) {
+ var current = result[i];
+ var roles = current.result.enabled_role_servrole;
+ for (var k=0, m=roles.length; k<m; k++) {
+ if (roles[k] === 'CA server') counter++;
+ }
+ }
+
+ // Create dialog and show it only when there is only one CA server
+ if (counter != 1) return;
+
+ var message = text.get('@i18n:objects.servers.ca_warning_message');
+ var dialog = IPA.dialog({
+ name: 'ca_warning',
+ title: '@i18n:objects.servers.ca_warning_title',
+ sections: [
+ {
+ show_header: false,
+ layout:
+ {
+ $factory: widget_mod.fluid_layout,
+ widget_cls: "col-sm-12 controls",
+ label_cls: "hide"
+ },
+ fields: [
+ {
+ field: false,
+ $type: 'html',
+ html: message
+ }
+ ]
+ }
+ ]
+ });
+
+ dialog.create_button({
+ name: 'ok',
+ label: '@i18n:buttons.ok',
+ click: function() {
+ dialog.close();
+ }
+ });
+
+ dialog.open();
+ };
+
+ var batch = that.table_facet_create_get_records_command(pkeys,
+ on_success_extended, on_error);
+
+ return batch;
+ };
+
+ return that;
+};
+
topology.servers_facet = function(spec, no_init) {
spec = spec || {};
diff --git a/install/ui/test/data/ipa_init.json b/install/ui/test/data/ipa_init.json
index 77d6fce4e..efaf6b649 100644
--- a/install/ui/test/data/ipa_init.json
+++ b/install/ui/test/data/ipa_init.json
@@ -552,6 +552,8 @@
"label_singular": "Server Role",
},
"servers": {
+ "ca_warning_message": "It is strongly recommended to keep the CA services installed on more than one server.",
+ "ca_warning_title": "Warning: Only One CA Server Detected",
"remove_server": "Delete Server",
"remove_server_msg": "Deleting a server removes it permanently from the topology. Note that this is a non-reversible action."
},
diff --git a/ipaserver/plugins/internal.py b/ipaserver/plugins/internal.py
index ff2926218..8af0af76c 100644
--- a/ipaserver/plugins/internal.py
+++ b/ipaserver/plugins/internal.py
@@ -704,6 +704,8 @@ class i18n_messages(Command):
"label_singular": _("Server Role"),
},
"servers": {
+ "ca_warning_message": _("It is strongly recommended to keep the CA services installed on more than one server."),
+ "ca_warning_title": _("Warning: Only One CA Server Detected"),
"remove_server": _("Delete Server"),
"remove_server_msg": _("Deleting a server removes it permanently from the topology. Note that this is a non-reversible action.")
},