summaryrefslogtreecommitdiffstats
path: root/install/ui/test
diff options
context:
space:
mode:
Diffstat (limited to 'install/ui/test')
-rwxr-xr-xinstall/ui/test/README1
-rwxr-xr-xinstall/ui/test/aci_tests.html33
-rw-r--r--install/ui/test/aci_tests.js81
-rw-r--r--install/ui/test/all_tests.html36
-rw-r--r--install/ui/test/association_tests.html23
-rw-r--r--install/ui/test/association_tests.js127
-rwxr-xr-xinstall/ui/test/certificate_tests.html26
-rwxr-xr-xinstall/ui/test/certificate_tests.js81
-rw-r--r--install/ui/test/data/aci_find.json63
-rw-r--r--install/ui/test/data/automountlocation_find.json17
-rw-r--r--install/ui/test/data/automountlocation_show.json14
-rw-r--r--install/ui/test/data/cert_remove_hold.json9
-rw-r--r--install/ui/test/data/cert_request.json17
-rw-r--r--install/ui/test/data/cert_revoke.json9
-rw-r--r--install/ui/test/data/cert_show.json16
-rw-r--r--install/ui/test/data/config_show.json99
-rw-r--r--install/ui/test/data/delegation_find.json35
-rw-r--r--install/ui/test/data/delegation_list.json35
-rw-r--r--install/ui/test/data/delegation_mod.json21
-rw-r--r--install/ui/test/data/delegation_show.json20
-rw-r--r--install/ui/test/data/dns_find.json101
-rw-r--r--install/ui/test/data/dns_find_rr.json110
-rw-r--r--install/ui/test/data/dns_show.json38
-rw-r--r--install/ui/test/data/dnsrecord_add.json21
-rw-r--r--install/ui/test/data/dnsrecord_del.json10
-rw-r--r--install/ui/test/data/dnsrecord_find.json110
-rw-r--r--install/ui/test/data/dnszone_add.json46
-rw-r--r--install/ui/test/data/dnszone_find.json137
-rw-r--r--install/ui/test/data/dnszone_show.json90
-rw-r--r--install/ui/test/data/group_add.json31
-rw-r--r--install/ui/test/data/group_add_member.json25
-rw-r--r--install/ui/test/data/group_find.json75
-rw-r--r--install/ui/test/data/group_member_user.json149
-rw-r--r--install/ui/test/data/group_remove_member.json44
-rw-r--r--install/ui/test/data/group_show.json38
-rw-r--r--install/ui/test/data/hbacrule_add.json27
-rw-r--r--install/ui/test/data/hbacrule_add_accesstime.json7
-rw-r--r--install/ui/test/data/hbacrule_add_host.json56
-rw-r--r--install/ui/test/data/hbacrule_add_service.json56
-rw-r--r--install/ui/test/data/hbacrule_add_sourcehost.json56
-rw-r--r--install/ui/test/data/hbacrule_add_user.json56
-rw-r--r--install/ui/test/data/hbacrule_del.json9
-rw-r--r--install/ui/test/data/hbacrule_find.json54
-rw-r--r--install/ui/test/data/hbacrule_mod.json60
-rw-r--r--install/ui/test/data/hbacrule_remove_accesstime.json7
-rw-r--r--install/ui/test/data/hbacrule_remove_host.json50
-rw-r--r--install/ui/test/data/hbacrule_remove_service.json49
-rw-r--r--install/ui/test/data/hbacrule_remove_sourcehost.json50
-rw-r--r--install/ui/test/data/hbacrule_remove_user.json48
-rw-r--r--install/ui/test/data/hbacrule_show.json76
-rw-r--r--install/ui/test/data/hbacsvc_add.json24
-rw-r--r--install/ui/test/data/hbacsvc_del.json9
-rw-r--r--install/ui/test/data/hbacsvc_find.json101
-rw-r--r--install/ui/test/data/hbacsvc_mod.json31
-rw-r--r--install/ui/test/data/hbacsvc_show.json35
-rw-r--r--install/ui/test/data/hbacsvcgroup_add.json26
-rw-r--r--install/ui/test/data/hbacsvcgroup_add_member.json24
-rw-r--r--install/ui/test/data/hbacsvcgroup_del.json9
-rw-r--r--install/ui/test/data/hbacsvcgroup_find.json24
-rw-r--r--install/ui/test/data/hbacsvcgroup_member_hbacsvc.json57
-rw-r--r--install/ui/test/data/hbacsvcgroup_mod.json39
-rw-r--r--install/ui/test/data/hbacsvcgroup_remove_member.json21
-rw-r--r--install/ui/test/data/hbacsvcgroup_show.json46
-rw-r--r--install/ui/test/data/host_add.json40
-rw-r--r--install/ui/test/data/host_disable_dev.example.com.json9
-rw-r--r--install/ui/test/data/host_find.json91
-rw-r--r--install/ui/test/data/host_mod.json75
-rw-r--r--install/ui/test/data/host_show.json80
-rw-r--r--install/ui/test/data/host_show_dev.example.com.json98
-rw-r--r--install/ui/test/data/host_show_test.example.com.json80
-rw-r--r--install/ui/test/data/hostgroup_add.json27
-rw-r--r--install/ui/test/data/hostgroup_add_member.json37
-rw-r--r--install/ui/test/data/hostgroup_find.json33
-rw-r--r--install/ui/test/data/hostgroup_member_host.json70
-rw-r--r--install/ui/test/data/hostgroup_show.json22
-rw-r--r--install/ui/test/data/i18n_messages.json37
-rw-r--r--install/ui/test/data/ipa_init.json7884
-rw-r--r--install/ui/test/data/json_metadata.json4097
-rw-r--r--install/ui/test/data/krbtpolicy_show.json78
-rw-r--r--install/ui/test/data/netgroup_add.json28
-rw-r--r--install/ui/test/data/netgroup_add_member.json40
-rw-r--r--install/ui/test/data/netgroup_find.json56
-rw-r--r--install/ui/test/data/netgroup_show.json38
-rw-r--r--install/ui/test/data/permission_add.json26
-rw-r--r--install/ui/test/data/permission_del9
-rw-r--r--install/ui/test/data/permission_find.json887
-rw-r--r--install/ui/test/data/permission_show.json41
-rw-r--r--install/ui/test/data/privilege_find.json215
-rw-r--r--install/ui/test/data/privilege_show.json39
-rw-r--r--install/ui/test/data/pwpolicy_find.json72
-rw-r--r--install/ui/test/data/pwpolicy_mod.json56
-rw-r--r--install/ui/test/data/pwpolicy_show.json57
-rw-r--r--install/ui/test/data/role_find.json20
-rw-r--r--install/ui/test/data/role_show.json36
-rw-r--r--install/ui/test/data/rolegroup_add.json22
-rw-r--r--install/ui/test/data/rolegroup_add_member.json27
-rw-r--r--install/ui/test/data/rolegroup_del.json9
-rw-r--r--install/ui/test/data/rolegroup_find.json185
-rw-r--r--install/ui/test/data/rolegroup_remove_member.json24
-rw-r--r--install/ui/test/data/rolegroup_show.json20
-rw-r--r--install/ui/test/data/selfservice_find.json24
-rw-r--r--install/ui/test/data/selfservice_show.json21
-rw-r--r--install/ui/test/data/service_add.json29
-rw-r--r--install/ui/test/data/service_add_host.json21
-rw-r--r--install/ui/test/data/service_del.json9
-rw-r--r--install/ui/test/data/service_disable.json9
-rw-r--r--install/ui/test/data/service_find.json48
-rw-r--r--install/ui/test/data/service_managedby_host.json110
-rw-r--r--install/ui/test/data/service_mod.json21
-rw-r--r--install/ui/test/data/service_remove_host.sh18
-rw-r--r--install/ui/test/data/service_show.json74
-rw-r--r--install/ui/test/data/sudocmd_add.json21
-rw-r--r--install/ui/test/data/sudocmd_del.json9
-rw-r--r--install/ui/test/data/sudocmd_find.json23
-rw-r--r--install/ui/test/data/sudocmd_memberof_add.json53
-rw-r--r--install/ui/test/data/sudocmd_memberof_remove.json50
-rw-r--r--install/ui/test/data/sudocmd_memberof_show.json61
-rw-r--r--install/ui/test/data/sudocmd_mod.json31
-rw-r--r--install/ui/test/data/sudocmd_show.json33
-rw-r--r--install/ui/test/data/sudocmdgroup_add.json26
-rw-r--r--install/ui/test/data/sudocmdgroup_add_member.json26
-rw-r--r--install/ui/test/data/sudocmdgroup_del.json9
-rw-r--r--install/ui/test/data/sudocmdgroup_find.json33
-rw-r--r--install/ui/test/data/sudocmdgroup_member_sudocmd.json57
-rw-r--r--install/ui/test/data/sudocmdgroup_mod.json39
-rw-r--r--install/ui/test/data/sudocmdgroup_remove_member.json22
-rw-r--r--install/ui/test/data/sudocmdgroup_show.json44
-rw-r--r--install/ui/test/data/sudorule_add.json24
-rw-r--r--install/ui/test/data/sudorule_del.json9
-rw-r--r--install/ui/test/data/sudorule_find.json17
-rw-r--r--install/ui/test/data/sudorule_mod.json51
-rw-r--r--install/ui/test/data/sudorule_show.json84
-rw-r--r--install/ui/test/data/taskgroup_find.json554
-rw-r--r--install/ui/test/data/user_add.json49
-rw-r--r--install/ui/test/data/user_disable.json9
-rw-r--r--install/ui/test/data/user_enable.json9
-rw-r--r--install/ui/test/data/user_find.json243
-rw-r--r--install/ui/test/data/user_memberof_group.json64
-rw-r--r--install/ui/test/data/user_mod.json162
-rw-r--r--install/ui/test/data/user_show.json163
-rw-r--r--install/ui/test/data/whoami.json7
-rw-r--r--install/ui/test/details_tests.html25
-rw-r--r--install/ui/test/details_tests.js327
-rw-r--r--install/ui/test/entity_tests.html27
-rw-r--r--install/ui/test/entity_tests.js171
-rw-r--r--install/ui/test/index.html43
-rw-r--r--install/ui/test/ipa_tests.html23
-rw-r--r--install/ui/test/ipa_tests.js297
-rw-r--r--install/ui/test/navigation_tests.html23
-rw-r--r--install/ui/test/navigation_tests.js163
-rw-r--r--install/ui/test/qunit.css155
-rw-r--r--install/ui/test/qunit.js1261
152 files changed, 22441 insertions, 0 deletions
diff --git a/install/ui/test/README b/install/ui/test/README
new file mode 100755
index 000000000..96e7f9e80
--- /dev/null
+++ b/install/ui/test/README
@@ -0,0 +1 @@
+http://www.freeipa.org/page/UI_Unit_Tests
diff --git a/install/ui/test/aci_tests.html b/install/ui/test/aci_tests.html
new file mode 100755
index 000000000..7cdbeffa3
--- /dev/null
+++ b/install/ui/test/aci_tests.html
@@ -0,0 +1,33 @@
+<!DOCTYPE html>
+<html>
+<head>
+ <title>Access Control Interface Test Suite</title>
+ <link rel="stylesheet" href="qunit.css" type="text/css" media="screen">
+ <script type="text/javascript" src="qunit.js"></script>
+
+
+
+ <script type="text/javascript" src="../jquery.js"></script>
+ <script type="text/javascript" src="../jquery.ba-bbq.js"></script>
+ <script type="text/javascript" src="../jquery-ui.js"></script>
+ <script type="text/javascript" src="../ipa.js"></script>
+ <script type="text/javascript" src="../widget.js"></script>
+ <script type="text/javascript" src="../details.js"></script>
+ <script type="text/javascript" src="../search.js"></script>
+ <script type="text/javascript" src="../add.js"></script>
+ <script type="text/javascript" src="../entity.js"></script>
+ <script type="text/javascript" src="../associate.js"></script>
+ <script type="text/javascript" src="../navigation.js"></script>
+ <script type="text/javascript" src="../aci.js"></script>
+
+ <script type="text/javascript" src="aci_tests.js"></script>
+</head>
+<body>
+ <h1 id="qunit-header">Certificate Test Suite</h1>
+ <h2 id="qunit-banner"></h2>
+ <div id="qunit-testrunner-toolbar"></div>
+ <h2 id="qunit-userAgent"></h2>
+ <ol id="qunit-tests"></ol>
+ <div id="qunit-fixture"></div>
+</body>
+</html>
diff --git a/install/ui/test/aci_tests.js b/install/ui/test/aci_tests.js
new file mode 100644
index 000000000..c51b556dc
--- /dev/null
+++ b/install/ui/test/aci_tests.js
@@ -0,0 +1,81 @@
+/* Authors:
+ * Adam Young <ayoung@redhat.com>
+ *
+ * Copyright (C) 2010 Red Hat
+ * see file 'COPYING' for use and warranty information
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; version 2 only
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+
+var target_section;
+var aci_container;
+
+module('aci',{
+ setup: function() {
+ IPA.ajax_options.async = false;
+ IPA.init(
+ "data",
+ true,
+ function(data, text_status, xhr) {
+ ok(true, "ipa_init() succeeded.");
+ },
+ function(xhr, text_status, error_thrown) {
+ ok(false, "ipa_init() failed: "+error_thrown);
+ }
+ );
+ aci_container = $('<div id="aci"/>').appendTo(document.body);
+ target_section = IPA.target_section();
+ target_section.create(aci_container);
+ },
+ teardown: function() {
+ aci_container.remove();
+ }}
+);
+
+
+test("Testing aci grouptarget.", function() {
+ var sample_data_filter_only = {"targetgroup":"ipausers"};
+ target_section.load(sample_data_filter_only);
+ ok($('#aci_by_group')[0].checked, 'aci_by_group control selected');
+ ok ($('#aci_target_group_select option').length > 2,'group select populated');
+
+});
+
+
+
+test("Testing aci object type.", function() {
+ var sample_data_filter_only = {"type":"hostgroup"};
+ target_section.load(sample_data_filter_only);
+ ok($('.aci-attribute', aci_container).length > 4);
+ ok($('#aci_by_type')[0].checked, 'aci_by_type control selected');
+
+});
+
+
+test("Testing aci filter only.", function() {
+
+ var sample_data_filter_only = {"filter":"somevalue"};
+
+ target_section.load(sample_data_filter_only);
+
+ var filter_radio = $('#aci_by_filter');
+
+ ok(filter_radio.length,'find "filter_only_radio" control');
+ ok(filter_radio[0].checked,'filter_only_radio control is checked');
+
+});
+
+
+
diff --git a/install/ui/test/all_tests.html b/install/ui/test/all_tests.html
new file mode 100644
index 000000000..6a29daffa
--- /dev/null
+++ b/install/ui/test/all_tests.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<html>
+<head>
+ <title>Complete Test Suite</title>
+ <link rel="stylesheet" href="qunit.css" type="text/css" media="screen">
+ <script type="text/javascript" src="qunit.js"></script>
+ <script type="text/javascript" src="../jquery.js"></script>
+ <script type="text/javascript" src="../jquery.ba-bbq.js"></script>
+ <script type="text/javascript" src="../jquery-ui.js"></script>
+ <script type="text/javascript" src="../ipa.js"></script>
+ <script type="text/javascript" src="../widget.js"></script>
+ <script type="text/javascript" src="../details.js"></script>
+ <script type="text/javascript" src="../search.js"></script>
+ <script type="text/javascript" src="../add.js"></script>
+ <script type="text/javascript" src="../entity.js"></script>
+ <script type="text/javascript" src="../associate.js"></script>
+ <script type="text/javascript" src="../navigation.js"></script>
+ <script type="text/javascript" src="../certificate.js"></script>
+ <script type="text/javascript" src="../aci.js"></script>
+ <script type="text/javascript" src="ipa_tests.js"></script>
+ <script type="text/javascript" src="details_tests.js"></script>
+ <script type="text/javascript" src="entity_tests.js"></script>
+ <script type="text/javascript" src="association_tests.js"></script>
+ <script type="text/javascript" src="navigation_tests.js"></script>
+ <script type="text/javascript" src="certificate_tests.js"></script>
+ <script type="text/javascript" src="aci_tests.js"></script>
+</head>
+<body>
+ <h1 id="qunit-header">Complete Test Suite</h1>
+ <h2 id="qunit-banner"></h2>
+ <div id="qunit-testrunner-toolbar"></div>
+ <h2 id="qunit-userAgent"></h2>
+ <ol id="qunit-tests"></ol>
+ <div id="qunit-fixture"></div>
+</body>
+</html>
diff --git a/install/ui/test/association_tests.html b/install/ui/test/association_tests.html
new file mode 100644
index 000000000..40b3c208d
--- /dev/null
+++ b/install/ui/test/association_tests.html
@@ -0,0 +1,23 @@
+<!DOCTYPE html>
+<html>
+<head>
+ <title>Association Test Suite</title>
+ <link rel="stylesheet" href="qunit.css" type="text/css" media="screen">
+ <script type="text/javascript" src="qunit.js"></script>
+ <script type="text/javascript" src="../jquery.js"></script>
+ <script type="text/javascript" src="../ipa.js"></script>
+ <script type="text/javascript" src="../details.js"></script>
+ <script type="text/javascript" src="../search.js"></script>
+ <script type="text/javascript" src="../add.js"></script>
+ <script type="text/javascript" src="../associate.js"></script>
+ <script type="text/javascript" src="association_tests.js"></script>
+</head>
+<body>
+ <h1 id="qunit-header">Association Test Suite</h1>
+ <h2 id="qunit-banner"></h2>
+ <div id="qunit-testrunner-toolbar"></div>
+ <h2 id="qunit-userAgent"></h2>
+ <ol id="qunit-tests"></ol>
+ <div id="qunit-fixture"></div>
+</body>
+</html>
diff --git a/install/ui/test/association_tests.js b/install/ui/test/association_tests.js
new file mode 100644
index 000000000..a65678a7f
--- /dev/null
+++ b/install/ui/test/association_tests.js
@@ -0,0 +1,127 @@
+/* Authors:
+ * Endi Sukma Dewata <edewata@redhat.com>
+ *
+ * Copyright (C) 2010 Red Hat
+ * see file 'COPYING' for use and warranty information
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+module('associate');
+
+
+test("Testing serial_associator().", function() {
+
+ expect(10);
+
+ var orig_ipa_cmd = IPA.cmd;
+
+ var counter = 0;
+
+ var params = {
+ method: "add_member",
+ pkey: "test",
+ entity_name: "user",
+ other_entity: "group"
+ };
+
+ params.values = ['user1', 'user2', 'user3'];
+
+ IPA.cmd = function(name, args, options, win_callback, fail_callback, objname) {
+ counter++;
+
+ equals(
+ name, params.method,
+ "Checking IPA.cmd() parameter: method"
+ );
+
+ equals(
+ objname, params.other_entity,
+ "Checking IPA.cmd() parameter: object name"
+ );
+
+ equals(
+ args[0], "user"+counter,
+ "Checking IPA.cmd() parameter: primary key"
+ );
+
+ var response = {};
+ win_callback(response);
+ return 0;
+ };
+
+ params.on_success = function() {
+ ok(true, "on_success() is invoked.");
+ };
+
+ var associator = serial_associator(params);
+ associator.execute();
+
+ IPA.cmd = orig_ipa_cmd;
+});
+
+test("Testing bulk_associator().", function() {
+
+ expect(5);
+
+ var orig_ipa_cmd = IPA.cmd;
+
+ var counter = 0;
+
+ var params = {
+ method: "add_member",
+ pkey: "test",
+ entity_name: "user",
+ other_entity: "group"
+ };
+
+ params.values = ['user1', 'user2', 'user3'];
+
+ IPA.cmd = function(name, args, options, win_callback, fail_callback, objname) {
+ counter++;
+
+ equals(
+ name, params.method,
+ "Checking IPA.cmd() parameter: method"
+ );
+
+ equals(
+ objname, params.entity_name,
+ "Checking IPA.cmd() parameter: object name"
+ );
+
+ equals(
+ args[0], params.pkey,
+ "Checking IPA.cmd() parameter: primary key"
+ );
+
+ equals(
+ options[params.other_entity], "user1,user2,user3",
+ "Checking IPA.cmd() parameter: options[\""+params.other_entity+"\"]"
+ );
+
+ var response = {};
+ win_callback(response);
+ return 0;
+ };
+
+ params.on_success = function() {
+ ok(true, "on_success() is invoked.");
+ };
+
+ var associator = bulk_associator(params);
+ associator.execute();
+
+ IPA.cmd = orig_ipa_cmd;
+});
diff --git a/install/ui/test/certificate_tests.html b/install/ui/test/certificate_tests.html
new file mode 100755
index 000000000..5b411ff13
--- /dev/null
+++ b/install/ui/test/certificate_tests.html
@@ -0,0 +1,26 @@
+<!DOCTYPE html>
+<html>
+<head>
+ <title>Certificate Test Suite</title>
+ <link rel="stylesheet" href="qunit.css" type="text/css" media="screen">
+ <script type="text/javascript" src="qunit.js"></script>
+ <script type="text/javascript" src="../jquery.js"></script>
+ <script type="text/javascript" src="../jquery.ba-bbq.js"></script>
+ <script type="text/javascript" src="../jquery-ui.js"></script>
+ <script type="text/javascript" src="../ipa.js"></script>
+ <script type="text/javascript" src="../details.js"></script>
+ <script type="text/javascript" src="../search.js"></script>
+ <script type="text/javascript" src="../add.js"></script>
+ <script type="text/javascript" src="../navigation.js"></script>
+ <script type="text/javascript" src="../certificate.js"></script>
+ <script type="text/javascript" src="certificate_tests.js"></script>
+</head>
+<body>
+ <h1 id="qunit-header">Certificate Test Suite</h1>
+ <h2 id="qunit-banner"></h2>
+ <div id="qunit-testrunner-toolbar"></div>
+ <h2 id="qunit-userAgent"></h2>
+ <ol id="qunit-tests"></ol>
+ <div id="qunit-fixture"></div>
+</body>
+</html>
diff --git a/install/ui/test/certificate_tests.js b/install/ui/test/certificate_tests.js
new file mode 100755
index 000000000..c50ec1867
--- /dev/null
+++ b/install/ui/test/certificate_tests.js
@@ -0,0 +1,81 @@
+/* Authors:
+ * Endi Sukma Dewata <edewata@redhat.com>
+ *
+ * Copyright (C) 2010 Red Hat
+ * see file 'COPYING' for use and warranty information
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+module('certificate');
+
+test("Testing certificate_parse_dn().", function() {
+
+ same(
+ certificate_parse_dn(), {},
+ "Checking certificate_parse_dn()"
+ );
+
+ same(
+ certificate_parse_dn(''), {},
+ "Checking certificate_parse_dn('')"
+ );
+
+ same(
+ certificate_parse_dn('c=US'), {'c': 'US'},
+ "Checking certificate_parse_dn('c=US')"
+ );
+
+ same(
+ certificate_parse_dn('st=TX,c=US'), {'st': 'TX','c': 'US'},
+ "Checking certificate_parse_dn('st=TX,c=US')"
+ );
+
+ same(
+ certificate_parse_dn('c=US,st=TX'), {'st': 'TX','c': 'US'},
+ "Checking certificate_parse_dn('c=US,st=TX')"
+ );
+
+ same(
+ certificate_parse_dn(' st = New Mexico , c = US '), {'st': 'New Mexico','c': 'US'},
+ "Checking certificate_parse_dn(' st = New Mexico , c = US ')"
+ );
+
+ same(
+ certificate_parse_dn('ST=TX,C=US'), {'st': 'TX','c': 'US'},
+ "Checking certificate_parse_dn('ST=TX,C=US')"
+ );
+
+ same(
+ certificate_parse_dn('cn=dev.example.com,ou=Engineering,o=Example,l=Austin,ST=TX,C=US'),
+ { 'cn': 'dev.example.com',
+ 'ou': 'Engineering',
+ 'o': 'Example',
+ 'l': 'Austin',
+ 'st': 'TX',
+ 'c': 'US'
+ },
+ "Checking certificate_parse_dn('cn=dev.example.com,ou=Engineering,o=Example,l=Austin,ST=TX,C=US')"
+ );
+
+ same(
+ certificate_parse_dn('cn=John Smith,ou=Developers,ou=Users,dc=example,dc=com'),
+ {
+ 'cn': 'John Smith',
+ 'ou': ['Developers','Users'],
+ 'dc': ['example', 'com']
+ },
+ "Checking certificate_parse_dn('cn=John Smith,ou=Developers,ou=Users,dc=example,dc=com')"
+ );
+});
diff --git a/install/ui/test/data/aci_find.json b/install/ui/test/data/aci_find.json
new file mode 100644
index 000000000..00682ffd2
--- /dev/null
+++ b/install/ui/test/data/aci_find.json
@@ -0,0 +1,63 @@
+{
+ "error": null,
+ "id": 6,
+ "result": {
+ "count": 53,
+ "result": [
+ "(targetattr != \"userPassword || krbPrincipalKey || sambaLMPassword || sambaNTPassword || passwordHistory || krbMKey\")(version 3.0;acl \"Enable Anonymous access\";allow (read,search,compare) userdn = \"ldap:///anyone\";)",
+ "(targetattr != \"userPassword || krbPrincipalKey || sambaLMPassword || sambaNTPassword || passwordHistory || krbMKey || ipaUniqueId || memberOf || serverHostName || enrolledBy\")(version 3.0;acl \"Admin can manage any entry\";allow (all) groupdn = \"ldap:///cn=admins,cn=groups,cn=accounts,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com\";)",
+ "(targetattr = \"userPassword || krbPrincipalKey || sambaLMPassword || sambaNTPassword\")(version 3.0;acl \"Self can write own password\";allow (write) userdn = \"ldap:///self\";)",
+ "(targetattr = \"userPassword || krbPrincipalKey || sambaLMPassword || sambaNTPassword || passwordHistory\")(version 3.0;acl \"Admins can write passwords\";allow (add,delete,write) groupdn = \"ldap:///cn=admins,cn=groups,cn=accounts,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com\";)",
+ "(targetattr = \"userPassword || krbPrincipalKey || sambaLMPassword || sambaNTPassword || passwordHistory\")(version 3.0;acl \"Password change service can read/write passwords\";allow (read,write) userdn = \"ldap:///krbprincipalname=kadmin/changepw@AYOUNG.BOSTON.DEVEL.REDHAT.COM,cn=AYOUNG.BOSTON.DEVEL.REDHAT.COM,cn=kerberos,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com\";)",
+ "(targetattr = \"userPassword || krbPrincipalKey || krbPasswordExpiration || sambaLMPassword || sambaNTPassword || passwordHistory\")(version 3.0;acl \"KDC System Account can access passwords\";allow (all) userdn = \"ldap:///uid=kdc,cn=sysaccounts,cn=etc,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com\";)",
+ "(targetattr = \"krbLastSuccessfulAuth || krbLastFailedAuth || krbLoginFailedCount\")(version 3.0;acl \"KDC System Account can update some fields\";allow (write) userdn = \"ldap:///uid=kdc,cn=sysaccounts,cn=etc,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com\";)",
+ "(targetattr = \"krbPrincipalName || krbCanonicalName || krbUPEnabled || krbMKey || krbTicketPolicyReference || krbPrincipalExpiration || krbPasswordExpiration || krbPwdPolicyReference || krbPrincipalType || krbPwdHistory || krbLastPwdChange || krbPrincipalAliases || krbExtraData || krbLastSuccessfulAuth || krbLastFailedAuth || krbLoginFailedCount\")(version 3.0;acl \"Only the KDC System Account has access to kerberos material\";allow (read,search,compare) userdn = \"ldap:///uid=kdc,cn=sysaccounts,cn=etc,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com\";)",
+ "(targetattr = \"krbMaxPwdLife || krbMinPwdLife || krbPwdMinDiffChars || krbPwdMinLength || krbPwdHistoryLength\")(targetfilter = \"(objectClass=krbPwdPolicy)\")(version 3.0;acl \"Admins can write password policies\";allow (read,search,compare,write) groupdn = \"ldap:///cn=admins,cn=groups,cn=accounts,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com\";)",
+ "(targetattr = \"givenName || sn || cn || displayName || title || initials || loginShell || gecos || homePhone || mobile || pager || facsimileTelephoneNumber || telephoneNumber || street || roomNumber || l || st || postalCode || manager || secretary || description || carLicense || labeledURI || inetUserHTTPURL || seeAlso || employeeType || businessCategory || ou\")(version 3.0;acl \"Self service\";allow (write) userdn = \"ldap:///self\";)",
+ "(targetattr = \"objectClass\")(target = \"ldap:///cn=certificate status,cn=virtual operations,cn=etc,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com\")(version 3.0;acl \"Get Certificates status from the CA\";allow (write) groupdn = \"ldap:///cn=certificate_status,cn=taskgroups,cn=accounts,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com\";)",
+ "(target = \"ldap:///uid=*,cn=users,cn=accounts,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com\")(version 3.0;acl \"Remove Users\";allow (delete) groupdn = \"ldap:///cn=removeusers,cn=taskgroups,cn=accounts,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com\";)",
+ "(targetattr = \"member\")(target = \"ldap:///cn=*,cn=groups,cn=accounts,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com\")(version 3.0;acl \"Modify group membership\";allow (write) groupdn = \"ldap:///cn=modifygroupmembership,cn=taskgroups,cn=accounts,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com\";)",
+ "(target = \"ldap:///krbprincipalname=*,cn=services,cn=accounts,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com\")(version 3.0;acl \"Add Services\";allow (add) groupdn = \"ldap:///cn=addservices,cn=taskgroups,cn=accounts,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com\";)",
+ "(targetattr = \"userPassword || krbPrincipalKey || sambaLMPassword || sambaNTPassword || passwordHistory\")(version 3.0;acl \"change_password\";allow (write) groupdn = \"ldap:///cn=change_password,cn=taskgroups,cn=accounts,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com\";)",
+ "(target = \"ldap:///cn=*,cn=groups,cn=accounts,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com\")(version 3.0;acl \"Add Groups\";allow (add) groupdn = \"ldap:///cn=addgroups,cn=taskgroups,cn=accounts,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com\";)",
+ "(targetattr = \"cn || description\")(target = \"ldap:///cn=*,cn=hostgroups,cn=accounts,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com\")(version 3.0;acl \"Modify Hostgroups\";allow (write) groupdn = \"ldap:///cn=modifyhostgroups,cn=taskgroups,cn=accounts,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com\";)",
+ "(targetattr = \"cn || description\")(target = \"ldap:///cn=*,cn=rolegroups,cn=accounts,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com\")(version 3.0;acl \"Modify Roles\";allow (write) groupdn = \"ldap:///cn=modifyroles,cn=taskgroups,cn=accounts,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com\";)",
+ "(targetattr = \"memberhost || externalhost || memberuser || member\")(target = \"ldap:///ipauniqueid=*,cn=ng,cn=alt,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com\")(version 3.0;acl \"Modify netgroup membership\";allow (write) groupdn = \"ldap:///cn=modifynetgroupmembership,cn=taskgroups,cn=accounts,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com\";)",
+ "(targetattr = \"userCertificate\")(target = \"ldap:///krbprincipalname=*,cn=services,cn=accounts,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com\")(version 3.0;acl \"Modify Services\";allow (write) groupdn = \"ldap:///cn=modifyservices,cn=taskgroups,cn=accounts,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com\";)",
+ "(target = \"ldap:///cn=*,cn=hostgroups,cn=accounts,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com\")(version 3.0;acl \"Add Hostgroups\";allow (add) groupdn = \"ldap:///cn=addhostgroups,cn=taskgroups,cn=accounts,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com\";)",
+ "(target = \"ldap:///automountmapname=*,cn=automount,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com\")(version 3.0;acl \"Remove automount maps\";allow (delete) groupdn = \"ldap:///cn=removeautomount,cn=taskgroups,cn=accounts,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com\";)",
+ "(target = \"ldap:///automountkey=*,automountmapname=*,cn=automount,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com\")(version 3.0;acl \"Remove automount keys\";allow (delete) groupdn = \"ldap:///cn=removeautomount,cn=taskgroups,cn=accounts,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com\";)",
+ "(target = \"ldap:///krbprincipalname=*,cn=services,cn=accounts,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com\")(version 3.0;acl \"Remove Services\";allow (delete) groupdn = \"ldap:///cn=removeservices,cn=taskgroups,cn=accounts,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com\";)",
+ "(target = \"ldap:///uid=*,cn=users,cn=accounts,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com\")(version 3.0;acl \"Add Users\";allow (add) groupdn = \"ldap:///cn=addusers,cn=taskgroups,cn=accounts,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com\";)",
+ "(targetattr = \"cn || description || l || location || nshardwareplatform || nsosversion\")(target = \"ldap:///fqdn=*,cn=computers,cn=accounts,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com\")(version 3.0;acl \"Modify Hosts\";allow (write) groupdn = \"ldap:///cn=modifyhosts,cn=taskgroups,cn=accounts,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com\";)",
+ "(targetattr = \"member\")(target = \"ldap:///cn=ipausers,cn=groups,cn=accounts,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com\")(version 3.0;acl \"Add user to default group\";allow (write) groupdn = \"ldap:///cn=add_user_to_default_group,cn=taskgroups,cn=accounts,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com\";)",
+ "(target = \"ldap:///cn=*,cn=hostgroups,cn=accounts,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com\")(version 3.0;acl \"Remove Hostgroups\";allow (delete) groupdn = \"ldap:///cn=removehostgroups,cn=taskgroups,cn=accounts,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com\";)",
+ "(target = \"ldap:///ipauniqueid=*,cn=entitlements,cn=etc,dc=greyoak,dc=com\")(version 3.0;acl \"Remove entitlement entries\";allow (delete) groupdn = \"ldap:///cn=removeentitlements,cn=taskgroups,cn=accounts,dc=greyoak,dc=com\";)",
+ "(targetattr = \"krbPrincipalName || enrolledBy || objectClass\")(target = \"ldap:///fqdn=*,cn=computers,cn=accounts,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com\")(version 3.0;acl \"Enroll a host\";allow (write) groupdn = \"ldap:///cn=enroll_host,cn=taskgroups, cn=accounts,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com\";)",
+ "(target = \"ldap:///fqdn=*,cn=computers,cn=accounts,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com\")(version 3.0;acl \"Add Hosts\";allow (add) groupdn = \"ldap:///cn=addhosts,cn=taskgroups,cn=accounts,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com\";)",
+ "(target = \"ldap:///ipauniqueid=*,cn=ng,cn=alt,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com\")(version 3.0;acl \"Remove netgroups\";allow (delete) groupdn = \"ldap:///cn=removenetgroups,cn=taskgroups,cn=accounts,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com\";)",
+ "(targetattr = \"description\")(target = \"ldap:///ipauniqueid=*,cn=ng,cn=alt,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com\")(version 3.0;acl \"Modify netgroups\";allow (write) groupdn = \"ldap:///cn=modifynetgroups,cn=taskgroups,cn=accounts,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com\";)",
+ "(targetattr = \"member\")(target = \"ldap:///cn=*,cn=rolegroups,cn=accounts,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com\")(version 3.0;acl \"Modify role group membership\";allow (write) groupdn = \"ldap:///cn=modifyrolegroupmembership,cn=taskgroups,cn=accounts,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com\";)",
+ "(targetattr = \"objectClass\")(target = \"ldap:///cn=request certificate,cn=virtual operations,cn=etc,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com\")(version 3.0;acl \"Request Certificates from the CA\";allow (write) groupdn = \"ldap:///cn=request_certs,cn=taskgroups,cn=accounts,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com\";)",
+ "(targetattr = \"userCertificate\")(target = \"ldap:///ipauniqueid=*,cn=entitlements,cn=etc,dc=greyoak,dc=com\")(version 3.0;acl \"Modify entitlements\";allow (write) groupdn = \"ldap:///cn=modifyentitlements,cn=taskgroups,cn=accounts,dc=greyoak,dc=com\";)",
+ "(targetattr = \"member\")(target = \"ldap:///cn=*,cn=taskgroups,cn=accounts,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com\")(version 3.0;acl \"Modify task group membership\";allow (write) groupdn = \"ldap:///cn=modifytaskgroupmembership,cn=taskgroups,cn=accounts,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com\";)",
+ "(target = \"ldap:///cn=*,cn=rolegroups,cn=accounts,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com\")(version 3.0;acl \"Add Roles\";allow (add) groupdn = \"ldap:///cn=addroles,cn=taskgroups,cn=accounts,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com\";)",
+ "(targetattr = \"objectClass\")(target = \"ldap:///cn=certificate remove hold,cn=virtual operations,cn=etc,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com\")(version 3.0;acl \"Certificate Remove Hold\";allow (write) groupdn = \"ldap:///cn=certificate_remove_hold,cn=taskgroups,cn=accounts,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com\";)",
+ "(target = \"ldap:///cn=*,cn=rolegroups,cn=accounts,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com\")(version 3.0;acl \"Remove Roles\";allow (delete) groupdn = \"ldap:///cn=removeroles,cn=taskgroups,cn=accounts,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com\";)",
+ "(target = \"ldap:///automountmapname=*,cn=automount,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com\")(version 3.0;acl \"Add automount maps\";allow (add) groupdn = \"ldap:///cn=addautomount,cn=taskgroups,cn=accounts,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com\";)",
+ "(targetattr = \"givenName || sn || cn || displayName || title || initials || loginShell || gecos || homePhone || mobile || pager || facsimileTelephoneNumber || telephoneNumber || street || roomNumber || l || st || postalCode || manager || secretary || description || carLicense || labeledURI || inetUserHTTPURL || seeAlso || employeeType || businessCategory || ou || mepManagedEntry || objectclass\")(target = \"ldap:///uid=*,cn=users,cn=accounts,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com\")(version 3.0;acl \"Modify Users\";allow (write) groupdn = \"ldap:///cn=modifyusers,cn=taskgroups,cn=accounts,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com\";)",
+ "(target = \"ldap:///ipauniqueid=*,cn=ng,cn=alt,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com\")(version 3.0;acl \"Add netgroups\";allow (add) groupdn = \"ldap:///cn=addnetgroups,cn=taskgroups,cn=accounts,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com\";)",
+ "(target = \"ldap:///fqdn=*,cn=computers,cn=accounts,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com\")(version 3.0;acl \"Remove Hosts\";allow (delete) groupdn = \"ldap:///cn=removehosts,cn=taskgroups,cn=accounts,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com\";)",
+ "(target = \"ldap:///ipauniqueid=*,cn=entitlements,cn=etc,dc=greyoak,dc=com\")(version 3.0;acl \"Add entitlements\";allow (add) groupdn = \"ldap:///cn=addentitlements,cn=taskgroups,cn=accounts,dc=greyoak,dc=com\";)",
+ "(target = \"ldap:///automountkey=*,automountmapname=*,cn=automount,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com\")(version 3.0;acl \"Add automount keys\";allow (add) groupdn = \"ldap:///cn=addautomount,cn=taskgroups,cn=accounts,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com\";)",
+ "(target = \"ldap:///cn=*,cn=groups,cn=accounts,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com\")(version 3.0;acl \"Remove Groups\";allow (delete) groupdn = \"ldap:///cn=removegroups,cn=taskgroups,cn=accounts,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com\";)",
+ "(targetattr = \"objectClass\")(target = \"ldap:///cn=retrieve certificate,cn=virtual operations,cn=etc,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com\")(version 3.0;acl \"Retrieve Certificates from the CA\";allow (write) groupdn = \"ldap:///cn=retrieve_certs,cn=taskgroups,cn=accounts,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com\";)",
+ "(targetattr = \"objectClass\")(target = \"ldap:///cn=revoke certificate,cn=virtual operations,cn=etc,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com\")(version 3.0;acl \"Revoke Certificate\";allow (write) groupdn = \"ldap:///cn=revoke_certificate,cn=taskgroups,cn=accounts,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com\";)",
+ "(targetattr = \"krbPrincipalKey || krbLastPwdChange\")(target = \"ldap:///fqdn=*,cn=computers,cn=accounts,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com\")(version 3.0;acl \"Manage host keytab\";allow (write) groupdn = \"ldap:///cn=manage_host_keytab,cn=taskgroups, cn=accounts,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com\";)",
+ "(targetattr = \"cn || description || gidnumber || objectclass || mepManagedBy\")(target = \"ldap:///cn=*,cn=groups,cn=accounts,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com\")(version 3.0;acl \"Modify Groups\";allow (write) groupdn = \"ldap:///cn=modifygroups,cn=taskgroups,cn=accounts,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com\";)",
+ "(targetattr = \"member\")(target = \"ldap:///cn=*,cn=hostgroups,cn=accounts,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com\")(version 3.0;acl \"Modify host group membership\";allow (write) groupdn = \"ldap:///cn=modifyhostgroupmembership,cn=taskgroups,cn=accounts,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com\";)",
+ "(targetattr = \"objectClass\")(target = \"ldap:///cn=request certificate different host,cn=virtual operations,cn=etc,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com\")(version 3.0;acl \"Request Certificates from a different host\";allow (write) groupdn = \"ldap:///cn=request_cert_different_host,cn=taskgroups,cn=accounts,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com\";)"
+ ],
+ "summary": "53 ACIs matched"
+ }
+}
diff --git a/install/ui/test/data/automountlocation_find.json b/install/ui/test/data/automountlocation_find.json
new file mode 100644
index 000000000..ea1a54e83
--- /dev/null
+++ b/install/ui/test/data/automountlocation_find.json
@@ -0,0 +1,17 @@
+{
+ "error": null,
+ "id": 6,
+ "result": {
+ "count": 1,
+ "result": [
+ {
+ "cn": [
+ "default"
+ ],
+ "dn": "cn=default,cn=automount,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com"
+ }
+ ],
+ "summary": null,
+ "truncated": false
+ }
+} \ No newline at end of file
diff --git a/install/ui/test/data/automountlocation_show.json b/install/ui/test/data/automountlocation_show.json
new file mode 100644
index 000000000..97ce2624f
--- /dev/null
+++ b/install/ui/test/data/automountlocation_show.json
@@ -0,0 +1,14 @@
+{
+ "error": null,
+ "id": 6,
+ "result": {
+ "result": {
+ "cn": [
+ "default"
+ ],
+ "dn": "cn=default,cn=automount,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com"
+ },
+ "summary": null,
+ "value": "default"
+ }
+} \ No newline at end of file
diff --git a/install/ui/test/data/cert_remove_hold.json b/install/ui/test/data/cert_remove_hold.json
new file mode 100644
index 000000000..12548cb20
--- /dev/null
+++ b/install/ui/test/data/cert_remove_hold.json
@@ -0,0 +1,9 @@
+{
+ "error": null,
+ "id": 0,
+ "result": {
+ "result": {
+ "unrevoked": true
+ }
+ }
+}
diff --git a/install/ui/test/data/cert_request.json b/install/ui/test/data/cert_request.json
new file mode 100644
index 000000000..c4410729a
--- /dev/null
+++ b/install/ui/test/data/cert_request.json
@@ -0,0 +1,17 @@
+{
+ "error": null,
+ "id": 0,
+ "result": {
+ "result": {
+ "certificate": "MIICAjCCAWugAwIBAgICBAswDQYJKoZIhvcNAQEFBQAwKTEnMCUGA1UEAxMeSVBBIFRlc3QgQ2VydGlmaWNhdGUgQXV0aG9yaXR5MB4XDTEwMTAwNzIzMzk0NFoXDTE1MTAwNzIzMzk0NFowKDEMMAoGA1UECgwDSVBBMRgwFgYDVQQDDA9kZXYuZXhhbXBsZS5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAOTXyj8grVB7Rj95RFawgdwn9OYZ03LWHZ+HMYggu2/xCCrUrdThP14YBlVqZumjVJSclj6T4ACjjdPJq9JTTmx7gMizDTReus7IPlS6fCxb5v5whQJZsEksXL04OxUMl25euPRFkYcTK1rdW47+AkG10j1qeNW+B6CpdQGR6eM/AgMBAAGjOjA4MBEGCWCGSAGG+EIBAQQEAwIGQDATBgNVHSUEDDAKBggrBgEFBQcDATAOBgNVHQ8BAf8EBAMCBPAwDQYJKoZIhvcNAQEFBQADgYEASIhq723VL5xP0q51MYXFlGU1boD7pPD1pIQspD/MjCIEupcbH2kAo4wf+EiKsXR0rs+WZkaSgvFqaM4OQ2kWSFTiqmFXFDBEi6EFr68yLg7IpQpNTzVBXERd8B4GwNL9wrRw60jPXlUK29DPBsdGq8fDgX18l39wKkWXv7p1to4=",
+ "issuer": "CN=Certificate Authority,O=IPA",
+ "md5_fingerprint": "08:86:a9:f9:87:af:0d:d7:42:01:e0:5f:12:9b:32:7f",
+ "request_id": "1",
+ "serial_number": "1",
+ "sha1_fingerprint": "b8:4c:4b:79:4f:13:03:79:47:08:fa:6b:52:63:3d:f9:15:8e:7e:dc",
+ "subject": "CN=dev.example.com,O=IPA",
+ "valid_not_after": "Tue Oct 13 01:59:32 2015 UTC",
+ "valid_not_before": "Wed Oct 13 01:59:32 2010 UTC"
+ }
+ }
+}
diff --git a/install/ui/test/data/cert_revoke.json b/install/ui/test/data/cert_revoke.json
new file mode 100644
index 000000000..3fca1ee64
--- /dev/null
+++ b/install/ui/test/data/cert_revoke.json
@@ -0,0 +1,9 @@
+{
+ "error": null,
+ "id": 0,
+ "result": {
+ "result": {
+ "revoked": true
+ }
+ }
+}
diff --git a/install/ui/test/data/cert_show.json b/install/ui/test/data/cert_show.json
new file mode 100644
index 000000000..71d895f05
--- /dev/null
+++ b/install/ui/test/data/cert_show.json
@@ -0,0 +1,16 @@
+{
+ "error": null,
+ "id": 0,
+ "result": {
+ "result": {
+ "certificate": "MIICAjCCAWugAwIBAgICBAswDQYJKoZIhvcNAQEFBQAwKTEnMCUGA1UEAxMeSVBBIFRlc3QgQ2VydGlmaWNhdGUgQXV0aG9yaXR5MB4XDTEwMTAwNzIzMzk0NFoXDTE1MTAwNzIzMzk0NFowKDEMMAoGA1UECgwDSVBBMRgwFgYDVQQDDA9kZXYuZXhhbXBsZS5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAOTXyj8grVB7Rj95RFawgdwn9OYZ03LWHZ+HMYggu2/xCCrUrdThP14YBlVqZumjVJSclj6T4ACjjdPJq9JTTmx7gMizDTReus7IPlS6fCxb5v5whQJZsEksXL04OxUMl25euPRFkYcTK1rdW47+AkG10j1qeNW+B6CpdQGR6eM/AgMBAAGjOjA4MBEGCWCGSAGG+EIBAQQEAwIGQDATBgNVHSUEDDAKBggrBgEFBQcDATAOBgNVHQ8BAf8EBAMCBPAwDQYJKoZIhvcNAQEFBQADgYEASIhq723VL5xP0q51MYXFlGU1boD7pPD1pIQspD/MjCIEupcbH2kAo4wf+EiKsXR0rs+WZkaSgvFqaM4OQ2kWSFTiqmFXFDBEi6EFr68yLg7IpQpNTzVBXERd8B4GwNL9wrRw60jPXlUK29DPBsdGq8fDgX18l39wKkWXv7p1to4=",
+ "issuer": "CN=Certificate Authority,O=IPA",
+ "md5_fingerprint": "08:86:a9:f9:87:af:0d:d7:42:01:e0:5f:12:9b:32:7f",
+ "serial_number": "1",
+ "sha1_fingerprint": "b8:4c:4b:79:4f:13:03:79:47:08:fa:6b:52:63:3d:f9:15:8e:7e:dc",
+ "subject": "CN=dev.example.com,O=IPA",
+ "valid_not_after": "Tue Oct 13 01:59:32 2015 UTC",
+ "valid_not_before": "Wed Oct 13 01:59:32 2010 UTC"
+ }
+ }
+}
diff --git a/install/ui/test/data/config_show.json b/install/ui/test/data/config_show.json
new file mode 100644
index 000000000..e3b6154b9
--- /dev/null
+++ b/install/ui/test/data/config_show.json
@@ -0,0 +1,99 @@
+{
+ "error": null,
+ "id": 4,
+ "result": {
+ "result": {
+ "attributelevelrights": {
+ "aci": "rscwo",
+ "cn": "rscwo",
+ "ipacertificatesubjectbase": "rscwo",
+ "ipaconfigstring": "rscwo",
+ "ipacustomfields": "rscwo",
+ "ipadefaultemaildomain": "rscwo",
+ "ipadefaultloginshell": "rscwo",
+ "ipadefaultprimarygroup": "rscwo",
+ "ipagroupobjectclasses": "rscwo",
+ "ipagroupsearchfields": "rscwo",
+ "ipahomesrootdir": "rscwo",
+ "ipamaxusernamelength": "rscwo",
+ "ipamigrationenabled": "rscwo",
+ "ipapwdexpadvnotify": "rscwo",
+ "ipasearchrecordslimit": "rscwo",
+ "ipasearchtimelimit": "rscwo",
+ "ipauserobjectclasses": "rscwo",
+ "ipausersearchfields": "rscwo",
+ "nsaccountlock": "rscwo",
+ "objectclass": "rscwo"
+ },
+ "cn": [
+ "ipaConfig"
+ ],
+ "dn": "cn=ipaconfig,cn=etc,dc=ipa14,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com",
+ "ipacertificatesubjectbase": [
+ "O=IPA14.AYOUNG.BOSTON.DEVEL.REDHAT.COM"
+ ],
+ "ipaconfigstring": [
+ "AllowNThash"
+ ],
+ "ipadefaultemaildomain": [
+ "ayoung.boston.devel.redhat.com"
+ ],
+ "ipadefaultloginshell": [
+ "/bin/sh"
+ ],
+ "ipadefaultprimarygroup": [
+ "ipausers"
+ ],
+ "ipagroupobjectclasses": [
+ "top",
+ "groupofnames",
+ "nestedgroup",
+ "ipausergroup",
+ "ipaobject"
+ ],
+ "ipagroupsearchfields": [
+ "cn,description"
+ ],
+ "ipahomesrootdir": [
+ "/home"
+ ],
+ "ipamaxusernamelength": [
+ "32"
+ ],
+ "ipamigrationenabled": [
+ "FALSE"
+ ],
+ "ipapwdexpadvnotify": [
+ "4"
+ ],
+ "ipasearchrecordslimit": [
+ "100"
+ ],
+ "ipasearchtimelimit": [
+ "2"
+ ],
+ "ipauserobjectclasses": [
+ "top",
+ "person",
+ "organizationalperson",
+ "inetorgperson",
+ "inetuser",
+ "posixaccount",
+ "krbprincipalaux",
+ "krbticketpolicyaux",
+ "ipaobject"
+ ],
+ "ipausersearchfields": [
+ "uid,givenname,sn,telephonenumber,ou,title"
+ ],
+ "objectclass": [
+ "nsContainer",
+ "top",
+ "ipaGuiConfig",
+ "ipaConfigObject"
+ ]
+ },
+ "summary": null,
+ "value": ""
+ }
+} \ No newline at end of file
diff --git a/install/ui/test/data/delegation_find.json b/install/ui/test/data/delegation_find.json
new file mode 100644
index 000000000..82b31fc58
--- /dev/null
+++ b/install/ui/test/data/delegation_find.json
@@ -0,0 +1,35 @@
+{
+ "error": null,
+ "id": 0,
+ "result": {
+ "count": 2,
+ "result": [
+ {
+ "aciname": "delegme",
+ "attrs": [
+ "cn"
+ ],
+ "filter": "(memberOf=cn=ipausers,cn=groups,cn=accounts,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com)",
+ "group": "muppets",
+ "membergroup": "cn=ipausers,cn=groups,cn=accounts,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com",
+ "permissions": [
+ "write"
+ ]
+ },
+ {
+ "aciname": "m2m",
+ "attrs": [
+ "title"
+ ],
+ "filter": "(memberOf=cn=monsters,cn=groups,cn=accounts,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com)",
+ "group": "muppets",
+ "membergroup": "cn=monsters,cn=groups,cn=accounts,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com",
+ "permissions": [
+ "write"
+ ]
+ }
+ ],
+ "summary": "2 delegations matched",
+ "truncated": false
+ }
+} \ No newline at end of file
diff --git a/install/ui/test/data/delegation_list.json b/install/ui/test/data/delegation_list.json
new file mode 100644
index 000000000..d4d9fc060
--- /dev/null
+++ b/install/ui/test/data/delegation_list.json
@@ -0,0 +1,35 @@
+{
+ "error": null,
+ "id": 0,
+ "result": {
+ "count": 2,
+ "result": [
+ {
+ "aciname": "delegme",
+ "attrs": [
+ "cn"
+ ],
+ "filter": "(memberOf=cn=ipausers,cn=groups,cn=accounts,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com)",
+ "group": "muppets",
+ "membergroup": "cn=ipausers,cn=groups,cn=accounts,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com",
+ "permissions": [
+ "write"
+ ]
+ },
+ {
+ "aciname": "m2m",
+ "attrs": [
+ "title"
+ ],
+ "filter": "(memberOf=cn=monsters,cn=groups,cn=accounts,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com)",
+ "group": "muppets",
+ "membergroup": "cn=monsters,cn=groups,cn=accounts,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com",
+ "permissions": [
+ "write"
+ ]
+ }
+ ],
+ "summary": "2 delegations matched",
+ "truncated": false
+ }
+} \ No newline at end of file
diff --git a/install/ui/test/data/delegation_mod.json b/install/ui/test/data/delegation_mod.json
new file mode 100644
index 000000000..9f7da68bf
--- /dev/null
+++ b/install/ui/test/data/delegation_mod.json
@@ -0,0 +1,21 @@
+{
+ "error": null,
+ "id": 0,
+ "result": {
+ "result": {
+ "aciname": "m2m",
+ "attrs": [
+ "title"
+ ],
+ "filter": "(memberOf=cn=monsters,cn=groups,cn=accounts,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com)",
+ "group": "muppets",
+ "membergroup": "cn=monsters,cn=groups,cn=accounts,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com",
+ "permissions": [
+ "add",
+ "delete"
+ ]
+ },
+ "summary": "Modified delegation \"m2m\"",
+ "value": "m2m"
+ }
+} \ No newline at end of file
diff --git a/install/ui/test/data/delegation_show.json b/install/ui/test/data/delegation_show.json
new file mode 100644
index 000000000..9444c8750
--- /dev/null
+++ b/install/ui/test/data/delegation_show.json
@@ -0,0 +1,20 @@
+{
+ "error": null,
+ "id": 0,
+ "result": {
+ "result": {
+ "aciname": "delegme",
+ "attrs": [
+ "cn"
+ ],
+ "filter": "(memberOf=cn=ipausers,cn=groups,cn=accounts,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com)",
+ "group": "muppets",
+ "membergroup": "cn=ipausers,cn=groups,cn=accounts,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com",
+ "permissions": [
+ "write"
+ ]
+ },
+ "summary": null,
+ "value": "delegme"
+ }
+} \ No newline at end of file
diff --git a/install/ui/test/data/dns_find.json b/install/ui/test/data/dns_find.json
new file mode 100644
index 000000000..c3b49f413
--- /dev/null
+++ b/install/ui/test/data/dns_find.json
@@ -0,0 +1,101 @@
+{
+ "error": null,
+ "id": 0,
+ "result": {
+ "count": 3,
+ "result": [
+ {
+ "dn": "idnsname=ayoung.boston.devel.redhat.com,cn=dns,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com",
+ "idnsname": [
+ "ayoung.boston.devel.redhat.com"
+ ],
+ "idnssoaexpire": [
+ "1209600"
+ ],
+ "idnssoaminimum": [
+ "3600"
+ ],
+ "idnssoamname": [
+ "ipa.ayoung.boston.devel.redhat.com."
+ ],
+ "idnssoarefresh": [
+ "3600"
+ ],
+ "idnssoaretry": [
+ "900"
+ ],
+ "idnssoarname": [
+ "root.ipa.ayoung.boston.devel.redhat.com."
+ ],
+ "idnssoaserial": [
+ "2010061001"
+ ],
+ "idnszoneactive": [
+ "TRUE"
+ ]
+ },
+ {
+ "dn": "idnsname=122.168.192.in-addr.arpa,cn=dns,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com",
+ "idnsname": [
+ "122.168.192.in-addr.arpa"
+ ],
+ "idnssoaexpire": [
+ "1209600"
+ ],
+ "idnssoaminimum": [
+ "3600"
+ ],
+ "idnssoamname": [
+ "ipa.ayoung.boston.devel.redhat.com."
+ ],
+ "idnssoarefresh": [
+ "3600"
+ ],
+ "idnssoaretry": [
+ "900"
+ ],
+ "idnssoarname": [
+ "root.122.168.192.in-addr.arpa."
+ ],
+ "idnssoaserial": [
+ "2010061001"
+ ],
+ "idnszoneactive": [
+ "TRUE"
+ ]
+ },
+ {
+ "dn": "idnsname=redhat.com,cn=dns,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com",
+ "idnsname": [
+ "redhat.com"
+ ],
+ "idnssoaexpire": [
+ "1209600"
+ ],
+ "idnssoaminimum": [
+ "3600"
+ ],
+ "idnssoamname": [
+ "127.0.0.1"
+ ],
+ "idnssoarefresh": [
+ "3600"
+ ],
+ "idnssoaretry": [
+ "900"
+ ],
+ "idnssoarname": [
+ "root.redhat.com."
+ ],
+ "idnssoaserial": [
+ "2010061001"
+ ],
+ "idnszoneactive": [
+ "TRUE"
+ ]
+ }
+ ],
+ "summary": null,
+ "truncated": false
+ }
+} \ No newline at end of file
diff --git a/install/ui/test/data/dns_find_rr.json b/install/ui/test/data/dns_find_rr.json
new file mode 100644
index 000000000..4183f703f
--- /dev/null
+++ b/install/ui/test/data/dns_find_rr.json
@@ -0,0 +1,110 @@
+{
+ "error": null,
+ "id": 6,
+ "result": {
+ "count": 11,
+ "result": [
+ {
+ "dn": "idnsname=ayoung.boston.devel.redhat.com,cn=dns,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com",
+ "idnsname": [
+ "ayoung.boston.devel.redhat.com"
+ ],
+ "nsrecord": [
+ "ipa.ayoung.boston.devel.redhat.com."
+ ]
+ },
+ {
+ "arecord": [
+ "192.168.122.81"
+ ],
+ "dn": "idnsname=ipa,idnsname=ayoung.boston.devel.redhat.com,cn=dns,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com",
+ "idnsname": [
+ "ipa"
+ ]
+ },
+ {
+ "dn": "idnsname=_ldap._tcp,idnsname=ayoung.boston.devel.redhat.com,cn=dns,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com",
+ "idnsname": [
+ "_ldap._tcp"
+ ],
+ "srvrecord": [
+ "0 100 389 ipa"
+ ]
+ },
+ {
+ "dn": "idnsname=_kerberos,idnsname=ayoung.boston.devel.redhat.com,cn=dns,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com",
+ "idnsname": [
+ "_kerberos"
+ ],
+ "txtrecord": [
+ "AYOUNG.BOSTON.DEVEL.REDHAT.COM"
+ ]
+ },
+ {
+ "dn": "idnsname=_kerberos._tcp,idnsname=ayoung.boston.devel.redhat.com,cn=dns,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com",
+ "idnsname": [
+ "_kerberos._tcp"
+ ],
+ "srvrecord": [
+ "0 100 88 ipa"
+ ]
+ },
+ {
+ "dn": "idnsname=_kerberos._udp,idnsname=ayoung.boston.devel.redhat.com,cn=dns,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com",
+ "idnsname": [
+ "_kerberos._udp"
+ ],
+ "srvrecord": [
+ "0 100 88 ipa"
+ ]
+ },
+ {
+ "dn": "idnsname=_kerberos-master._tcp,idnsname=ayoung.boston.devel.redhat.com,cn=dns,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com",
+ "idnsname": [
+ "_kerberos-master._tcp"
+ ],
+ "srvrecord": [
+ "0 100 88 ipa"
+ ]
+ },
+ {
+ "dn": "idnsname=_kerberos-master._udp,idnsname=ayoung.boston.devel.redhat.com,cn=dns,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com",
+ "idnsname": [
+ "_kerberos-master._udp"
+ ],
+ "srvrecord": [
+ "0 100 88 ipa"
+ ]
+ },
+ {
+ "dn": "idnsname=_kpasswd._tcp,idnsname=ayoung.boston.devel.redhat.com,cn=dns,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com",
+ "idnsname": [
+ "_kpasswd._tcp"
+ ],
+ "srvrecord": [
+ "0 100 464 ipa"
+ ]
+ },
+ {
+ "dn": "idnsname=_kpasswd._udp,idnsname=ayoung.boston.devel.redhat.com,cn=dns,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com",
+ "idnsname": [
+ "_kpasswd._udp"
+ ],
+ "srvrecord": [
+ "0 100 464 ipa"
+ ]
+ },
+ {
+ "dn": "idnsname=_ntp._udp,idnsname=ayoung.boston.devel.redhat.com,cn=dns,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com",
+ "idnsname": [
+ "_ntp._udp"
+ ],
+ "srvrecord": [
+ "0 100 123 ipa"
+ ]
+ }
+ ],
+ "summary": null,
+ "truncated": false
+ }
+} \ No newline at end of file
diff --git a/install/ui/test/data/dns_show.json b/install/ui/test/data/dns_show.json
new file mode 100644
index 000000000..3f3046a51
--- /dev/null
+++ b/install/ui/test/data/dns_show.json
@@ -0,0 +1,38 @@
+{
+ "error": null,
+ "id": 0,
+ "result": {
+ "result": {
+ "dn": "idnsname=ayoung.boston.devel.redhat.com,cn=dns,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com",
+ "idnsname": [
+ "ayoung.boston.devel.redhat.com"
+ ],
+ "idnssoaexpire": [
+ "1209600"
+ ],
+ "idnssoaminimum": [
+ "3600"
+ ],
+ "idnssoamname": [
+ "ipa.ayoung.boston.devel.redhat.com."
+ ],
+ "idnssoarefresh": [
+ "3600"
+ ],
+ "idnssoaretry": [
+ "900"
+ ],
+ "idnssoarname": [
+ "root.ipa.ayoung.boston.devel.redhat.com."
+ ],
+ "idnssoaserial": [
+ "2010061001"
+ ],
+ "idnszoneactive": [
+ "TRUE"
+ ]
+ },
+ "summary": null,
+ "value": "ayoung.boston.devel.redhat.com"
+ }
+} \ No newline at end of file
diff --git a/install/ui/test/data/dnsrecord_add.json b/install/ui/test/data/dnsrecord_add.json
new file mode 100644
index 000000000..968d3f606
--- /dev/null
+++ b/install/ui/test/data/dnsrecord_add.json
@@ -0,0 +1,21 @@
+{
+ "error": null,
+ "id": 12,
+ "result": {
+ "result": {
+ "arecord": [
+ "1.2.3.4"
+ ],
+ "dn": "idnsname=a4,idnsname=henson.ayoung.boston.devel.redhat.com,cn=dns,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com",
+ "idnsname": [
+ "a4"
+ ],
+ "objectclass": [
+ "top",
+ "idnsrecord"
+ ]
+ },
+ "summary": null,
+ "value": "a4"
+ }
+} \ No newline at end of file
diff --git a/install/ui/test/data/dnsrecord_del.json b/install/ui/test/data/dnsrecord_del.json
new file mode 100644
index 000000000..93a53627c
--- /dev/null
+++ b/install/ui/test/data/dnsrecord_del.json
@@ -0,0 +1,10 @@
+{
+ "error": null,
+ "result": {
+ "idnsname": [
+ "@"
+ ]
+ },
+ "summary": null,
+ "value": "@"
+ }
diff --git a/install/ui/test/data/dnsrecord_find.json b/install/ui/test/data/dnsrecord_find.json
new file mode 100644
index 000000000..1d64b3abb
--- /dev/null
+++ b/install/ui/test/data/dnsrecord_find.json
@@ -0,0 +1,110 @@
+{
+ "error": null,
+ "id": 10,
+ "result": {
+ "count": 11,
+ "result": [
+ {
+ "dn": "idnsname=ayoung.boston.devel.redhat.com,cn=dns,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com",
+ "idnsname": [
+ "@"
+ ],
+ "nsrecord": [
+ "ipa.ayoung.boston.devel.redhat.com."
+ ]
+ },
+ {
+ "arecord": [
+ "192.168.122.81"
+ ],
+ "dn": "idnsname=ipa,idnsname=ayoung.boston.devel.redhat.com,cn=dns,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com",
+ "idnsname": [
+ "ipa"
+ ]
+ },
+ {
+ "dn": "idnsname=_ldap._tcp,idnsname=ayoung.boston.devel.redhat.com,cn=dns,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com",
+ "idnsname": [
+ "_ldap._tcp"
+ ],
+ "srvrecord": [
+ "0 100 389 ipa"
+ ]
+ },
+ {
+ "dn": "idnsname=_kerberos,idnsname=ayoung.boston.devel.redhat.com,cn=dns,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com",
+ "idnsname": [
+ "_kerberos"
+ ],
+ "txtrecord": [
+ "AYOUNG.BOSTON.DEVEL.REDHAT.COM"
+ ]
+ },
+ {
+ "dn": "idnsname=_kerberos._tcp,idnsname=ayoung.boston.devel.redhat.com,cn=dns,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com",
+ "idnsname": [
+ "_kerberos._tcp"
+ ],
+ "srvrecord": [
+ "0 100 88 ipa"
+ ]
+ },
+ {
+ "dn": "idnsname=_kerberos._udp,idnsname=ayoung.boston.devel.redhat.com,cn=dns,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com",
+ "idnsname": [
+ "_kerberos._udp"
+ ],
+ "srvrecord": [
+ "0 100 88 ipa"
+ ]
+ },
+ {
+ "dn": "idnsname=_kerberos-master._tcp,idnsname=ayoung.boston.devel.redhat.com,cn=dns,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com",
+ "idnsname": [
+ "_kerberos-master._tcp"
+ ],
+ "srvrecord": [
+ "0 100 88 ipa"
+ ]
+ },
+ {
+ "dn": "idnsname=_kerberos-master._udp,idnsname=ayoung.boston.devel.redhat.com,cn=dns,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com",
+ "idnsname": [
+ "_kerberos-master._udp"
+ ],
+ "srvrecord": [
+ "0 100 88 ipa"
+ ]
+ },
+ {
+ "dn": "idnsname=_kpasswd._tcp,idnsname=ayoung.boston.devel.redhat.com,cn=dns,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com",
+ "idnsname": [
+ "_kpasswd._tcp"
+ ],
+ "srvrecord": [
+ "0 100 464 ipa"
+ ]
+ },
+ {
+ "dn": "idnsname=_kpasswd._udp,idnsname=ayoung.boston.devel.redhat.com,cn=dns,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com",
+ "idnsname": [
+ "_kpasswd._udp"
+ ],
+ "srvrecord": [
+ "0 100 464 ipa"
+ ]
+ },
+ {
+ "dn": "idnsname=_ntp._udp,idnsname=ayoung.boston.devel.redhat.com,cn=dns,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com",
+ "idnsname": [
+ "_ntp._udp"
+ ],
+ "srvrecord": [
+ "0 100 123 ipa"
+ ]
+ }
+ ],
+ "summary": null,
+ "truncated": false
+ }
+} \ No newline at end of file
diff --git a/install/ui/test/data/dnszone_add.json b/install/ui/test/data/dnszone_add.json
new file mode 100644
index 000000000..6870acc5b
--- /dev/null
+++ b/install/ui/test/data/dnszone_add.json
@@ -0,0 +1,46 @@
+{
+ "error": null,
+ "id": 3,
+ "result": {
+ "result": {
+ "dn": "idnsname=henson.ayoung.boston.devel.redhat.com,cn=dns,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com",
+ "idnsallowdynupdate": [
+ "FALSE"
+ ],
+ "idnsname": [
+ "henson.ayoung.boston.devel.redhat.com"
+ ],
+ "idnssoaexpire": [
+ "1209600"
+ ],
+ "idnssoaminimum": [
+ "3600"
+ ],
+ "idnssoamname": [
+ "ayoung.boston.devel.redhat.com"
+ ],
+ "idnssoarefresh": [
+ "3600"
+ ],
+ "idnssoaretry": [
+ "900"
+ ],
+ "idnssoarname": [
+ "root.henson.ayoung.boston.devel.redhat.com."
+ ],
+ "idnssoaserial": [
+ "2010021201"
+ ],
+ "idnszoneactive": [
+ "TRUE"
+ ],
+ "objectclass": [
+ "top",
+ "idnsrecord",
+ "idnszone"
+ ]
+ },
+ "summary": null,
+ "value": "henson.ayoung.boston.devel.redhat.com"
+ }
+} \ No newline at end of file
diff --git a/install/ui/test/data/dnszone_find.json b/install/ui/test/data/dnszone_find.json
new file mode 100644
index 000000000..b8f76d417
--- /dev/null
+++ b/install/ui/test/data/dnszone_find.json
@@ -0,0 +1,137 @@
+{
+ "error": null,
+ "id": 6,
+ "result": {
+ "count": 3,
+ "result": [
+ {
+ "dn": "idnsname=ayoung.boston.devel.redhat.com,cn=dns,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com",
+ "idnsallowdynupdate": [
+ "TRUE"
+ ],
+ "idnsname": [
+ "ayoung.boston.devel.redhat.com"
+ ],
+ "idnssoaexpire": [
+ "1209600"
+ ],
+ "idnssoaminimum": [
+ "3600"
+ ],
+ "idnssoamname": [
+ "ipa.ayoung.boston.devel.redhat.com."
+ ],
+ "idnssoarefresh": [
+ "3600"
+ ],
+ "idnssoaretry": [
+ "900"
+ ],
+ "idnssoarname": [
+ "root.ipa.ayoung.boston.devel.redhat.com."
+ ],
+ "idnssoaserial": [
+ "2010021201"
+ ],
+ "idnsupdatepolicy": [
+ "grant AYOUNG.BOSTON.DEVEL.REDHAT.COM krb5-self * A;"
+ ],
+ "idnszoneactive": [
+ "TRUE"
+ ],
+ "nsrecord": [
+ "ipa.ayoung.boston.devel.redhat.com."
+ ],
+ "objectclass": [
+ "top",
+ "idnsrecord",
+ "idnszone"
+ ]
+ },
+ {
+ "dn": "idnsname=122.168.192.in-addr.arpa,cn=dns,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com",
+ "idnsallowdynupdate": [
+ "TRUE"
+ ],
+ "idnsname": [
+ "122.168.192.in-addr.arpa"
+ ],
+ "idnssoaexpire": [
+ "1209600"
+ ],
+ "idnssoaminimum": [
+ "3600"
+ ],
+ "idnssoamname": [
+ "ipa.ayoung.boston.devel.redhat.com."
+ ],
+ "idnssoarefresh": [
+ "3600"
+ ],
+ "idnssoaretry": [
+ "900"
+ ],
+ "idnssoarname": [
+ "root.122.168.192.in-addr.arpa."
+ ],
+ "idnssoaserial": [
+ "2010021201"
+ ],
+ "idnsupdatepolicy": [
+ "grant AYOUNG.BOSTON.DEVEL.REDHAT.COM krb5-subdomain 122.168.192.in-addr.arpa. PTR;"
+ ],
+ "idnszoneactive": [
+ "TRUE"
+ ],
+ "nsrecord": [
+ "ipa.ayoung.boston.devel.redhat.com."
+ ],
+ "objectclass": [
+ "top",
+ "idnsrecord",
+ "idnszone"
+ ]
+ },
+ {
+ "dn": "idnsname=henson.ayoung.boston.devel.redhat.com,cn=dns,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com",
+ "idnsallowdynupdate": [
+ "FALSE"
+ ],
+ "idnsname": [
+ "henson.ayoung.boston.devel.redhat.com"
+ ],
+ "idnssoaexpire": [
+ "1209600"
+ ],
+ "idnssoaminimum": [
+ "3600"
+ ],
+ "idnssoamname": [
+ "ayoung.boston.devel.redhat.com"
+ ],
+ "idnssoarefresh": [
+ "3600"
+ ],
+ "idnssoaretry": [
+ "900"
+ ],
+ "idnssoarname": [
+ "root.henson.ayoung.boston.devel.redhat.com."
+ ],
+ "idnssoaserial": [
+ "2010021201"
+ ],
+ "idnszoneactive": [
+ "TRUE"
+ ],
+ "objectclass": [
+ "top",
+ "idnsrecord",
+ "idnszone"
+ ]
+ }
+ ],
+ "summary": null,
+ "truncated": false
+ }
+} \ No newline at end of file
diff --git a/install/ui/test/data/dnszone_show.json b/install/ui/test/data/dnszone_show.json
new file mode 100644
index 000000000..35e507627
--- /dev/null
+++ b/install/ui/test/data/dnszone_show.json
@@ -0,0 +1,90 @@
+{
+ "error": null,
+ "id": 7,
+ "result": {
+ "result": {
+ "attributelevelrights": {
+ "a6record": "rscwo",
+ "aaaarecord": "rscwo",
+ "aci": "rscwo",
+ "afsdbrecord": "rscwo",
+ "arecord": "rscwo",
+ "certrecord": "rscwo",
+ "cn": "rscwo",
+ "cnamerecord": "rscwo",
+ "dnamerecord": "rscwo",
+ "dnsclass": "rscwo",
+ "dnsttl": "rscwo",
+ "dsrecord": "rscwo",
+ "hinforecord": "rscwo",
+ "idnsallowdynupdate": "rscwo",
+ "idnsname": "rscwo",
+ "idnssoaexpire": "rscwo",
+ "idnssoaminimum": "rscwo",
+ "idnssoamname": "rscwo",
+ "idnssoarefresh": "rscwo",
+ "idnssoaretry": "rscwo",
+ "idnssoarname": "rscwo",
+ "idnssoaserial": "rscwo",
+ "idnsupdatepolicy": "rscwo",
+ "idnszoneactive": "rscwo",
+ "keyrecord": "rscwo",
+ "kxrecord": "rscwo",
+ "locrecord": "rscwo",
+ "mdrecord": "rscwo",
+ "minforecord": "rscwo",
+ "mxrecord": "rscwo",
+ "naptrrecord": "rscwo",
+ "nsaccountlock": "rscwo",
+ "nsecrecord": "rscwo",
+ "nsrecord": "rscwo",
+ "nxtrecord": "rscwo",
+ "objectclass": "rscwo",
+ "ptrrecord": "rscwo",
+ "rrsigrecord": "rscwo",
+ "sigrecord": "rscwo",
+ "srvrecord": "rscwo",
+ "sshfprecord": "rscwo",
+ "txtrecord": "rscwo"
+ },
+ "dn": "idnsname=henson.ayoung.boston.devel.redhat.com,cn=dns,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com",
+ "idnsallowdynupdate": [
+ "FALSE"
+ ],
+ "idnsname": [
+ "henson.ayoung.boston.devel.redhat.com"
+ ],
+ "idnssoaexpire": [
+ "1209600"
+ ],
+ "idnssoaminimum": [
+ "3600"
+ ],
+ "idnssoamname": [
+ "ayoung.boston.devel.redhat.com"
+ ],
+ "idnssoarefresh": [
+ "3600"
+ ],
+ "idnssoaretry": [
+ "900"
+ ],
+ "idnssoarname": [
+ "root.henson.ayoung.boston.devel.redhat.com."
+ ],
+ "idnssoaserial": [
+ "2010021201"
+ ],
+ "idnszoneactive": [
+ "TRUE"
+ ],
+ "objectclass": [
+ "top",
+ "idnsrecord",
+ "idnszone"
+ ]
+ },
+ "summary": null,
+ "value": "henson.ayoung.boston.devel.redhat.com"
+ }
+} \ No newline at end of file
diff --git a/install/ui/test/data/group_add.json b/install/ui/test/data/group_add.json
new file mode 100644
index 000000000..180f5f11c
--- /dev/null
+++ b/install/ui/test/data/group_add.json
@@ -0,0 +1,31 @@
+{
+ "error": null,
+ "id": 12,
+ "result": {
+ "result": {
+ "cn": [
+ "neighbors"
+ ],
+ "description": [
+ "The People in Your Neighborhood"
+ ],
+ "dn": "cn=neighbors,cn=groups,cn=accounts,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com",
+ "gidnumber": [
+ "123456"
+ ],
+ "ipauniqueid": [
+ "0dbae87a-b43a-11df-ac8e-525400674dcd"
+ ],
+ "objectclass": [
+ "top",
+ "groupofnames",
+ "nestedgroup",
+ "ipausergroup",
+ "ipaobject",
+ "posixgroup"
+ ]
+ },
+ "summary": null,
+ "value": "neighbors"
+ }
+} \ No newline at end of file
diff --git a/install/ui/test/data/group_add_member.json b/install/ui/test/data/group_add_member.json
new file mode 100644
index 000000000..7f10d1052
--- /dev/null
+++ b/install/ui/test/data/group_add_member.json
@@ -0,0 +1,25 @@
+{
+ "error": null,
+ "id": 0,
+ "result": {
+ "completed": 1,
+ "failed": {
+ "member": {
+ "group": [],
+ "user": []
+ }
+ },
+ "result": {
+ "cn": [
+ "testgroup"
+ ],
+ "description": [
+ "testgroup"
+ ],
+ "dn": "cn=testgroup,cn=groups,cn=accounts,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com",
+ "member_user": [
+ "kfrog"
+ ]
+ }
+ }
+} \ No newline at end of file
diff --git a/install/ui/test/data/group_find.json b/install/ui/test/data/group_find.json
new file mode 100644
index 000000000..902689a06
--- /dev/null
+++ b/install/ui/test/data/group_find.json
@@ -0,0 +1,75 @@
+{
+ "error": null,
+ "id": 0,
+ "result": {
+ "count": 5,
+ "result": [
+ {
+ "cn": [
+ "admins"
+ ],
+ "description": [
+ "Account administrators group"
+ ],
+ "dn": "cn=admins,cn=groups,cn=accounts,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com",
+ "gidnumber": [
+ "1948497956"
+ ],
+ "member_user": [
+ "admin"
+ ]
+ },
+ {
+ "cn": [
+ "ipausers"
+ ],
+ "description": [
+ "Default group for all users"
+ ],
+ "dn": "cn=ipausers,cn=groups,cn=accounts,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com",
+ "gidnumber": [
+ "1948497957"
+ ],
+ "member_user": [
+ "kfrog",
+ "moi"
+ ]
+ },
+ {
+ "cn": [
+ "editors"
+ ],
+ "description": [
+ "Limited admins who can edit other users"
+ ],
+ "dn": "cn=editors,cn=groups,cn=accounts,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com",
+ "gidnumber": [
+ "1948497958"
+ ]
+ },
+ {
+ "cn": [
+ "deleteme"
+ ],
+ "description": [
+ "This is a group that should go away."
+ ],
+ "dn": "cn=deleteme,cn=groups,cn=accounts,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com"
+ },
+ {
+ "cn": [
+ "testgroup"
+ ],
+ "description": [
+ "Detlete this if you see it"
+ ],
+ "dn": "cn=testgroup,cn=groups,cn=accounts,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com",
+ "gidnumber": [
+ "1948497959"
+ ]
+ }
+ ],
+ "summary": "5 groups matched",
+ "truncated": false
+ }
+} \ No newline at end of file
diff --git a/install/ui/test/data/group_member_user.json b/install/ui/test/data/group_member_user.json
new file mode 100644
index 000000000..971b13d44
--- /dev/null
+++ b/install/ui/test/data/group_member_user.json
@@ -0,0 +1,149 @@
+{
+ "error": null,
+ "id": 0,
+ "result": {
+ "count": 2,
+ "results": [
+ {
+ "error": null,
+ "result": {
+ "cn": [
+ "Administrator"
+ ],
+ "dn": "uid=admin,cn=users,cn=accounts,dc=dev,dc=example,dc=com",
+ "gecos": [
+ "Administrator"
+ ],
+ "gidnumber": [
+ "1662072955"
+ ],
+ "homedirectory": [
+ "/home/admin"
+ ],
+ "ipauniqueid": [
+ "ffb8d002-f46c-11df-8cc1-00163e72f2d9"
+ ],
+ "krblastpwdchange": [
+ "20101120061333Z"
+ ],
+ "krbpasswordexpiration": [
+ "20110218061333Z"
+ ],
+ "krbprincipalname": [
+ "admin@DEV.EXAMPLE.COM"
+ ],
+ "loginshell": [
+ "/bin/bash"
+ ],
+ "memberof_group": [
+ "admins",
+ "ipausers"
+ ],
+ "memberof_rolegroup": [
+ "replicaadmin"
+ ],
+ "memberof_taskgroup": [
+ "managereplica",
+ "deletereplica"
+ ],
+ "mepmanagedentry": [
+ "cn=admin,cn=groups,cn=accounts,dc=dev,dc=example,dc=com"
+ ],
+ "nsaccountlock": [
+ "False"
+ ],
+ "objectclass": [
+ "top",
+ "person",
+ "posixaccount",
+ "krbprincipalaux",
+ "krbticketpolicyaux",
+ "inetuser",
+ "ipaobject",
+ "mepOriginEntry"
+ ],
+ "sn": [
+ "Administrator"
+ ],
+ "uid": [
+ "admin"
+ ],
+ "uidnumber": [
+ "1662072955"
+ ]
+ },
+ "summary": null,
+ "value": "admin"
+ },
+ {
+ "error": null,
+ "result": {
+ "cn": [
+ "Test User"
+ ],
+ "dn": "uid=test,cn=users,cn=accounts,dc=dev,dc=example,dc=com",
+ "gecos": [
+ "test"
+ ],
+ "gidnumber": [
+ "1662072958"
+ ],
+ "givenname": [
+ "Test"
+ ],
+ "homedirectory": [
+ "/home/test"
+ ],
+ "ipauniqueid": [
+ "c0724e5e-f472-11df-8186-00163e72f2d9"
+ ],
+ "krbprincipalname": [
+ "test@DEV.EXAMPLE.COM"
+ ],
+ "krbpwdpolicyreference": [
+ "cn=global_policy,cn=DEV.EXAMPLE.COM,cn=kerberos,dc=dev,dc=example,dc=com"
+ ],
+ "loginshell": [
+ "/bin/sh"
+ ],
+ "mail": [
+ "test"
+ ],
+ "memberof_group": [
+ "ipausers",
+ "editors"
+ ],
+ "mepmanagedentry": [
+ "cn=test,cn=groups,cn=accounts,dc=dev,dc=example,dc=com"
+ ],
+ "nsaccountlock": [
+ "False"
+ ],
+ "objectclass": [
+ "top",
+ "person",
+ "organizationalperson",
+ "inetorgperson",
+ "inetuser",
+ "posixaccount",
+ "krbprincipalaux",
+ "krbticketpolicyaux",
+ "ipaobject",
+ "mepOriginEntry"
+ ],
+ "sn": [
+ "User"
+ ],
+ "uid": [
+ "test"
+ ],
+ "uidnumber": [
+ "1662072958"
+ ]
+ },
+ "summary": null,
+ "value": "test"
+ }
+ ]
+ }
+}
diff --git a/install/ui/test/data/group_remove_member.json b/install/ui/test/data/group_remove_member.json
new file mode 100644
index 000000000..0118438af
--- /dev/null
+++ b/install/ui/test/data/group_remove_member.json
@@ -0,0 +1,44 @@
+{
+ "error": null,
+ "id": 6,
+ "result": {
+ "completed": 0,
+ "failed": {
+ "member": {
+ "group": [],
+ "user": []
+ }
+ },
+ "result": {
+ "cn": [
+ "muppets"
+ ],
+ "description": [
+ "Muppets moonlighting for CTW"
+ ],
+ "dn": "cn=muppets,cn=groups,cn=accounts,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com",
+ "gidnumber": [
+ "1950316043"
+ ],
+ "ipauniqueid": [
+ "0ee0f096-e36c11df-96f18479-3e1281d2"
+ ],
+ "member_user": [
+ "admin",
+ "kfrog",
+ "count123",
+ "scram",
+ "zoe",
+ "pdawn"
+ ],
+ "objectclass": [
+ "top",
+ "groupofnames",
+ "nestedgroup",
+ "ipausergroup",
+ "ipaobject",
+ "posixgroup"
+ ]
+ }
+ }
+}
diff --git a/install/ui/test/data/group_show.json b/install/ui/test/data/group_show.json
new file mode 100644
index 000000000..536b120ca
--- /dev/null
+++ b/install/ui/test/data/group_show.json
@@ -0,0 +1,38 @@
+{
+ "error": null,
+ "id": 0,
+ "result": {
+ "result": {
+ "cn": [
+ "ipausers"
+ ],
+ "description": [
+ "Default group for all users"
+ ],
+ "dn": "cn=ipausers,cn=groups,cn=accounts,dc=idm,dc=lab,dc=bos,dc=redhat,dc=com",
+ "gidnumber": [
+ "1079249048"
+ ],
+ "member": [
+ "uid=gsmile,cn=users,cn=accounts,dc=idm,dc=lab,dc=bos,dc=redhat,dc=com",
+ "uid=kfrog,cn=users,cn=accounts,dc=idm,dc=lab,dc=bos,dc=redhat,dc=com",
+ "uid=count123,cn=users,cn=accounts,dc=idm,dc=lab,dc=bos,dc=redhat,dc=com"
+ ],
+ "member_user": [
+ "gsmile",
+ "kfrog",
+ "count123"
+ ],
+ "memberof": [],
+ "objectclass": [
+ "top",
+ "groupofnames",
+ "nestedgroup",
+ "ipausergroup",
+ "posixgroup"
+ ]
+ },
+ "summary": null,
+ "value": "ipausers"
+ }
+}
diff --git a/install/ui/test/data/hbacrule_add.json b/install/ui/test/data/hbacrule_add.json
new file mode 100644
index 000000000..2a5d251bf
--- /dev/null
+++ b/install/ui/test/data/hbacrule_add.json
@@ -0,0 +1,27 @@
+{
+ "error": null,
+ "id": 0,
+ "result": {
+ "result": {
+ "accessruletype": [
+ "allow"
+ ],
+ "cn": [
+ "test"
+ ],
+ "dn": "ipauniqueid=f3e69e82-e3b411df-bfde9b13-2b28c216,cn=hbac,dc=dev,dc=example,dc=com",
+ "ipaenabledflag": [
+ "TRUE"
+ ],
+ "ipauniqueid": [
+ "f3e69e82-e3b411df-bfde9b13-2b28c216"
+ ],
+ "objectclass": [
+ "ipaassociation",
+ "ipahbacrule"
+ ]
+ },
+ "summary": null,
+ "value": "test"
+ }
+} \ No newline at end of file
diff --git a/install/ui/test/data/hbacrule_add_accesstime.json b/install/ui/test/data/hbacrule_add_accesstime.json
new file mode 100644
index 000000000..3c631155b
--- /dev/null
+++ b/install/ui/test/data/hbacrule_add_accesstime.json
@@ -0,0 +1,7 @@
+{
+ "error": null,
+ "id": 0,
+ "result": {
+ "result": true
+ }
+}
diff --git a/install/ui/test/data/hbacrule_add_host.json b/install/ui/test/data/hbacrule_add_host.json
new file mode 100644
index 000000000..038d6aea4
--- /dev/null
+++ b/install/ui/test/data/hbacrule_add_host.json
@@ -0,0 +1,56 @@
+{
+ "error": null,
+ "id": 0,
+ "result": {
+ "completed": 2,
+ "failed": {
+ "memberhost": {
+ "host": [],
+ "hostgroup": []
+ }
+ },
+ "result": {
+ "accessruletype": [
+ "allow"
+ ],
+ "accesstime": [
+ "periodic daily 0800-1400",
+ "absolute 201012161032 ~ 201012161033"
+ ],
+ "cn": [
+ "test"
+ ],
+ "dn": "ipauniqueid=e8aca082-e64a11df-9864f2e0-e0578392,cn=hbac,dc=dev,dc=example,dc=com",
+ "ipaenabledflag": [
+ "TRUE"
+ ],
+ "memberhost_host": [
+ "dev.example.com"
+ ],
+ "memberhost_hostgroup": [
+ "production"
+ ],
+ "memberservice_hbacsvc": [
+ "ftp",
+ "sshd"
+ ],
+ "memberservice_hbacsvcgroup": [
+ "sudo"
+ ],
+ "memberuser_group": [
+ "admins",
+ "editors"
+ ],
+ "memberuser_user": [
+ "admin",
+ "test"
+ ],
+ "sourcehost_host": [
+ "dev.example.com"
+ ],
+ "sourcehost_hostgroup": [
+ "staging"
+ ]
+ }
+ }
+}
diff --git a/install/ui/test/data/hbacrule_add_service.json b/install/ui/test/data/hbacrule_add_service.json
new file mode 100644
index 000000000..c658fe8b5
--- /dev/null
+++ b/install/ui/test/data/hbacrule_add_service.json
@@ -0,0 +1,56 @@
+{
+ "error": null,
+ "id": 0,
+ "result": {
+ "completed": 3,
+ "failed": {
+ "memberservice": {
+ "hbacsvc": [],
+ "hbacsvcgroup": []
+ }
+ },
+ "result": {
+ "accessruletype": [
+ "allow"
+ ],
+ "accesstime": [
+ "periodic daily 0800-1400",
+ "absolute 201012161032 ~ 201012161033"
+ ],
+ "cn": [
+ "test"
+ ],
+ "dn": "ipauniqueid=e8aca082-e64a11df-9864f2e0-e0578392,cn=hbac,dc=dev,dc=example,dc=com",
+ "ipaenabledflag": [
+ "TRUE"
+ ],
+ "memberhost_host": [
+ "dev.example.com"
+ ],
+ "memberhost_hostgroup": [
+ "production"
+ ],
+ "memberservice_hbacsvc": [
+ "ftp",
+ "sshd"
+ ],
+ "memberservice_hbacsvcgroup": [
+ "sudo"
+ ],
+ "memberuser_group": [
+ "admins",
+ "editors"
+ ],
+ "memberuser_user": [
+ "admin",
+ "test"
+ ],
+ "sourcehost_host": [
+ "dev.example.com"
+ ],
+ "sourcehost_hostgroup": [
+ "staging"
+ ]
+ }
+ }
+}
diff --git a/install/ui/test/data/hbacrule_add_sourcehost.json b/install/ui/test/data/hbacrule_add_sourcehost.json
new file mode 100644
index 000000000..a657207f5
--- /dev/null
+++ b/install/ui/test/data/hbacrule_add_sourcehost.json
@@ -0,0 +1,56 @@
+{
+ "error": null,
+ "id": 0,
+ "result": {
+ "completed": 2,
+ "failed": {
+ "sourcehost": {
+ "host": [],
+ "hostgroup": []
+ }
+ },
+ "result": {
+ "accessruletype": [
+ "allow"
+ ],
+ "accesstime": [
+ "periodic daily 0800-1400",
+ "absolute 201012161032 ~ 201012161033"
+ ],
+ "cn": [
+ "test"
+ ],
+ "dn": "ipauniqueid=e8aca082-e64a11df-9864f2e0-e0578392,cn=hbac,dc=dev,dc=example,dc=com",
+ "ipaenabledflag": [
+ "TRUE"
+ ],
+ "memberhost_host": [
+ "dev.example.com"
+ ],
+ "memberhost_hostgroup": [
+ "production"
+ ],
+ "memberservice_hbacsvc": [
+ "ftp",
+ "sshd"
+ ],
+ "memberservice_hbacsvcgroup": [
+ "sudo"
+ ],
+ "memberuser_group": [
+ "admins",
+ "editors"
+ ],
+ "memberuser_user": [
+ "admin",
+ "test"
+ ],
+ "sourcehost_host": [
+ "dev.example.com"
+ ],
+ "sourcehost_hostgroup": [
+ "staging"
+ ]
+ }
+ }
+}
diff --git a/install/ui/test/data/hbacrule_add_user.json b/install/ui/test/data/hbacrule_add_user.json
new file mode 100644
index 000000000..0c4c976e4
--- /dev/null
+++ b/install/ui/test/data/hbacrule_add_user.json
@@ -0,0 +1,56 @@
+{
+ "error": null,
+ "id": 0,
+ "result": {
+ "completed": 3,
+ "failed": {
+ "memberuser": {
+ "group": [],
+ "user": []
+ }
+ },
+ "result": {
+ "accessruletype": [
+ "allow"
+ ],
+ "accesstime": [
+ "periodic daily 0800-1400",
+ "absolute 201012161032 ~ 201012161033"
+ ],
+ "cn": [
+ "test"
+ ],
+ "dn": "ipauniqueid=e8aca082-e64a11df-9864f2e0-e0578392,cn=hbac,dc=dev,dc=example,dc=com",
+ "ipaenabledflag": [
+ "TRUE"
+ ],
+ "memberhost_host": [
+ "dev.example.com"
+ ],
+ "memberhost_hostgroup": [
+ "production"
+ ],
+ "memberservice_hbacsvc": [
+ "ftp",
+ "sshd"
+ ],
+ "memberservice_hbacsvcgroup": [
+ "sudo"
+ ],
+ "memberuser_group": [
+ "admins",
+ "editors"
+ ],
+ "memberuser_user": [
+ "admin",
+ "test"
+ ],
+ "sourcehost_host": [
+ "dev.example.com"
+ ],
+ "sourcehost_hostgroup": [
+ "staging"
+ ]
+ }
+ }
+}
diff --git a/install/ui/test/data/hbacrule_del.json b/install/ui/test/data/hbacrule_del.json
new file mode 100644
index 000000000..2197a12c2
--- /dev/null
+++ b/install/ui/test/data/hbacrule_del.json
@@ -0,0 +1,9 @@
+{
+ "error": null,
+ "id": 0,
+ "result": {
+ "result": true,
+ "summary": null,
+ "value": "test"
+ }
+} \ No newline at end of file
diff --git a/install/ui/test/data/hbacrule_find.json b/install/ui/test/data/hbacrule_find.json
new file mode 100644
index 000000000..fd95d9f57
--- /dev/null
+++ b/install/ui/test/data/hbacrule_find.json
@@ -0,0 +1,54 @@
+{
+ "error": null,
+ "id": 0,
+ "result": {
+ "count": 2,
+ "result": [
+ {
+ "accessruletype": [
+ "allow"
+ ],
+ "cn": [
+ "allow_all"
+ ],
+ "description": [
+ "Allow all users to access any host from any host"
+ ],
+ "dn": "ipauniqueid=b7567b5a-e39311df-bfde9b13-2b28c216,cn=hbac,dc=dev,dc=example,dc=com",
+ "hostcategory": [
+ "all"
+ ],
+ "ipaenabledflag": [
+ "TRUE"
+ ],
+ "servicecategory": [
+ "all"
+ ],
+ "sourcehostcategory": [
+ "all"
+ ],
+ "usercategory": [
+ "all"
+ ]
+ },
+ {
+ "accessruletype": [
+ "allow"
+ ],
+ "accesstime": [
+ "periodic daily 0800-1400",
+ "absolute 201012161032 ~ 201012161033"
+ ],
+ "cn": [
+ "test"
+ ],
+ "dn": "ipauniqueid=3b6d2a82-e3b511df-bfde9b13-2b28c216,cn=hbac,dc=dev,dc=example,dc=com",
+ "ipaenabledflag": [
+ "TRUE"
+ ]
+ }
+ ],
+ "summary": null,
+ "truncated": false
+ }
+}
diff --git a/install/ui/test/data/hbacrule_mod.json b/install/ui/test/data/hbacrule_mod.json
new file mode 100644
index 000000000..ea2b4d1e8
--- /dev/null
+++ b/install/ui/test/data/hbacrule_mod.json
@@ -0,0 +1,60 @@
+{
+ "error": null,
+ "id": 0,
+ "result": {
+ "result": {
+ "accessruletype": [
+ "allow"
+ ],
+ "attributelevelrights": {
+ "accessruletype": "rscwo",
+ "accesstime": "rscwo",
+ "aci": "rscwo",
+ "cn": "rscwo",
+ "description": "rscwo",
+ "externalhost": "rscwo",
+ "hostcategory": "rscwo",
+ "ipaenabledflag": "rscwo",
+ "ipauniqueid": "rsc",
+ "memberhost": "rscwo",
+ "memberservice": "rscwo",
+ "memberuser": "rscwo",
+ "nsaccountlock": "rscwo",
+ "servicecategory": "rscwo",
+ "sourcehost": "rscwo",
+ "sourcehostcategory": "rscwo",
+ "usercategory": "rscwo"
+ },
+ "cn": [
+ "test"
+ ],
+ "description": [
+ "Test HBAC rule."
+ ],
+ "hostcategory": [
+ "all"
+ ],
+ "ipaenabledflag": [
+ "TRUE"
+ ],
+ "ipauniqueid": [
+ "4ed8b682-edf511df-b3f78f4b-11cc007b"
+ ],
+ "objectclass": [
+ "ipaassociation",
+ "ipahbacrule"
+ ],
+ "servicecategory": [
+ "all"
+ ],
+ "sourcehostcategory": [
+ "all"
+ ],
+ "usercategory": [
+ "all"
+ ]
+ },
+ "summary": null,
+ "value": "test"
+ }
+}
diff --git a/install/ui/test/data/hbacrule_remove_accesstime.json b/install/ui/test/data/hbacrule_remove_accesstime.json
new file mode 100644
index 000000000..3c631155b
--- /dev/null
+++ b/install/ui/test/data/hbacrule_remove_accesstime.json
@@ -0,0 +1,7 @@
+{
+ "error": null,
+ "id": 0,
+ "result": {
+ "result": true
+ }
+}
diff --git a/install/ui/test/data/hbacrule_remove_host.json b/install/ui/test/data/hbacrule_remove_host.json
new file mode 100644
index 000000000..02f56ecd6
--- /dev/null
+++ b/install/ui/test/data/hbacrule_remove_host.json
@@ -0,0 +1,50 @@
+{
+ "error": null,
+ "id": 0,
+ "result": {
+ "completed": 2,
+ "failed": {
+ "memberhost": {
+ "host": [],
+ "hostgroup": []
+ }
+ },
+ "result": {
+ "accessruletype": [
+ "allow"
+ ],
+ "accesstime": [
+ "periodic daily 0800-1400",
+ "absolute 201012161032 ~ 201012161033"
+ ],
+ "cn": [
+ "test"
+ ],
+ "dn": "ipauniqueid=e8aca082-e64a11df-9864f2e0-e0578392,cn=hbac,dc=dev,dc=example,dc=com",
+ "ipaenabledflag": [
+ "TRUE"
+ ],
+ "memberservice_hbacsvc": [
+ "ftp",
+ "sshd"
+ ],
+ "memberservice_hbacsvcgroup": [
+ "sudo"
+ ],
+ "memberuser_group": [
+ "admins",
+ "editors"
+ ],
+ "memberuser_user": [
+ "admin",
+ "test"
+ ],
+ "sourcehost_host": [
+ "dev.example.com"
+ ],
+ "sourcehost_hostgroup": [
+ "staging"
+ ]
+ }
+ }
+}
diff --git a/install/ui/test/data/hbacrule_remove_service.json b/install/ui/test/data/hbacrule_remove_service.json
new file mode 100644
index 000000000..f8b6b51a5
--- /dev/null
+++ b/install/ui/test/data/hbacrule_remove_service.json
@@ -0,0 +1,49 @@
+{
+ "error": null,
+ "id": 0,
+ "result": {
+ "completed": 3,
+ "failed": {
+ "memberservice": {
+ "hbacsvc": [],
+ "hbacsvcgroup": []
+ }
+ },
+ "result": {
+ "accessruletype": [
+ "allow"
+ ],
+ "accesstime": [
+ "periodic daily 0800-1400",
+ "absolute 201012161032 ~ 201012161033"
+ ],
+ "cn": [
+ "test"
+ ],
+ "dn": "ipauniqueid=e8aca082-e64a11df-9864f2e0-e0578392,cn=hbac,dc=dev,dc=example,dc=com",
+ "ipaenabledflag": [
+ "TRUE"
+ ],
+ "memberhost_host": [
+ "dev.example.com"
+ ],
+ "memberhost_hostgroup": [
+ "production"
+ ],
+ "memberuser_group": [
+ "admins",
+ "editors"
+ ],
+ "memberuser_user": [
+ "admin",
+ "test"
+ ],
+ "sourcehost_host": [
+ "dev.example.com"
+ ],
+ "sourcehost_hostgroup": [
+ "staging"
+ ]
+ }
+ }
+}
diff --git a/install/ui/test/data/hbacrule_remove_sourcehost.json b/install/ui/test/data/hbacrule_remove_sourcehost.json
new file mode 100644
index 000000000..da32f76e0
--- /dev/null
+++ b/install/ui/test/data/hbacrule_remove_sourcehost.json
@@ -0,0 +1,50 @@
+{
+ "error": null,
+ "id": 0,
+ "result": {
+ "completed": 2,
+ "failed": {
+ "sourcehost": {
+ "host": [],
+ "hostgroup": []
+ }
+ },
+ "result": {
+ "accessruletype": [
+ "allow"
+ ],
+ "accesstime": [
+ "periodic daily 0800-1400",
+ "absolute 201012161032 ~ 201012161033"
+ ],
+ "cn": [
+ "test"
+ ],
+ "dn": "ipauniqueid=e8aca082-e64a11df-9864f2e0-e0578392,cn=hbac,dc=dev,dc=example,dc=com",
+ "ipaenabledflag": [
+ "TRUE"
+ ],
+ "memberhost_host": [
+ "dev.example.com"
+ ],
+ "memberhost_hostgroup": [
+ "production"
+ ],
+ "memberservice_hbacsvc": [
+ "ftp",
+ "sshd"
+ ],
+ "memberservice_hbacsvcgroup": [
+ "sudo"
+ ],
+ "memberuser_group": [
+ "admins",
+ "editors"
+ ],
+ "memberuser_user": [
+ "admin",
+ "test"
+ ]
+ }
+ }
+}
diff --git a/install/ui/test/data/hbacrule_remove_user.json b/install/ui/test/data/hbacrule_remove_user.json
new file mode 100644
index 000000000..f25317e83
--- /dev/null
+++ b/install/ui/test/data/hbacrule_remove_user.json
@@ -0,0 +1,48 @@
+{
+ "error": null,
+ "id": 0,
+ "result": {
+ "completed": 3,
+ "failed": {
+ "memberuser": {
+ "group": [],
+ "user": []
+ }
+ },
+ "result": {
+ "accessruletype": [
+ "allow"
+ ],
+ "accesstime": [
+ "periodic daily 0800-1400",
+ "absolute 201012161032 ~ 201012161033"
+ ],
+ "cn": [
+ "test"
+ ],
+ "dn": "ipauniqueid=e8aca082-e64a11df-9864f2e0-e0578392,cn=hbac,dc=dev,dc=example,dc=com",
+ "ipaenabledflag": [
+ "TRUE"
+ ],
+ "memberhost_host": [
+ "dev.example.com"
+ ],
+ "memberhost_hostgroup": [
+ "production"
+ ],
+ "memberservice_hbacsvc": [
+ "ftp",
+ "sshd"
+ ],
+ "memberservice_hbacsvcgroup": [
+ "sudo"
+ ],
+ "sourcehost_host": [
+ "dev.example.com"
+ ],
+ "sourcehost_hostgroup": [
+ "staging"
+ ]
+ }
+ }
+}
diff --git a/install/ui/test/data/hbacrule_show.json b/install/ui/test/data/hbacrule_show.json
new file mode 100644
index 000000000..2c0b64b39
--- /dev/null
+++ b/install/ui/test/data/hbacrule_show.json
@@ -0,0 +1,76 @@
+{
+ "error": null,
+ "id": 0,
+ "result": {
+ "result": {
+ "accessruletype": [
+ "deny"
+ ],
+ "accesstime": [
+ "periodic daily 0800-1400",
+ "absolute 201012161032 ~ 201012161033"
+ ],
+ "attributelevelrights": {
+ "accessruletype": "rscwo",
+ "accesstime": "rscwo",
+ "aci": "rscwo",
+ "cn": "rscwo",
+ "description": "rscwo",
+ "externalhost": "rscwo",
+ "hostcategory": "rscwo",
+ "ipaenabledflag": "rscwo",
+ "ipauniqueid": "rsc",
+ "memberhost": "rscwo",
+ "memberservice": "rscwo",
+ "memberuser": "rscwo",
+ "nsaccountlock": "rscwo",
+ "servicecategory": "rscwo",
+ "sourcehost": "rscwo",
+ "sourcehostcategory": "rscwo",
+ "usercategory": "rscwo"
+ },
+ "cn": [
+ "test"
+ ],
+ "dn": "ipauniqueid=4ed8b682-edf511df-b3f78f4b-11cc007b,cn=hbac,dc=dev,dc=example,dc=com",
+ "ipaenabledflag": [
+ "TRUE"
+ ],
+ "ipauniqueid": [
+ "4ed8b682-edf511df-b3f78f4b-11cc007b"
+ ],
+ "memberhost_host": [
+ "dev.example.com"
+ ],
+ "memberhost_hostgroup": [
+ "production"
+ ],
+ "memberservice_hbacsvc": [
+ "ftp",
+ "sshd"
+ ],
+ "memberservice_hbacsvcgroup": [
+ "sudo"
+ ],
+ "memberuser_group": [
+ "editors"
+ ],
+ "memberuser_user": [
+ "admin",
+ "test"
+ ],
+ "objectclass": [
+ "ipaassociation",
+ "ipahbacrule"
+ ],
+ "sourcehost_host": [
+ "dev.example.com"
+ ],
+ "sourcehost_hostgroup": [
+ "staging"
+ ]
+ },
+ "summary": null,
+ "value": "test"
+ }
+}
diff --git a/install/ui/test/data/hbacsvc_add.json b/install/ui/test/data/hbacsvc_add.json
new file mode 100644
index 000000000..87eb51d78
--- /dev/null
+++ b/install/ui/test/data/hbacsvc_add.json
@@ -0,0 +1,24 @@
+{
+ "error": null,
+ "id": 0,
+ "result": {
+ "result": {
+ "cn": [
+ "test"
+ ],
+ "description": [
+ "Test Service"
+ ],
+ "dn": "cn=test,cn=hbacservices,cn=hbac,dc=dev,dc=example,dc=com",
+ "ipauniqueid": [
+ "c3302e82-ecfd11df-b3f78f4b-11cc007b"
+ ],
+ "objectclass": [
+ "ipaobject",
+ "ipahbacservice"
+ ]
+ },
+ "summary": "Added service \"test\"",
+ "value": "test"
+ }
+}
diff --git a/install/ui/test/data/hbacsvc_del.json b/install/ui/test/data/hbacsvc_del.json
new file mode 100644
index 000000000..fcfce6259
--- /dev/null
+++ b/install/ui/test/data/hbacsvc_del.json
@@ -0,0 +1,9 @@
+{
+ "error": null,
+ "id": 0,
+ "result": {
+ "result": true,
+ "summary": "Deleted service \"test\"",
+ "value": "test"
+ }
+}
diff --git a/install/ui/test/data/hbacsvc_find.json b/install/ui/test/data/hbacsvc_find.json
new file mode 100644
index 000000000..86a9bcaa5
--- /dev/null
+++ b/install/ui/test/data/hbacsvc_find.json
@@ -0,0 +1,101 @@
+{
+ "error": null,
+ "id": 0,
+ "result": {
+ "count": 10,
+ "result": [
+ {
+ "cn": [
+ "sshd"
+ ],
+ "description": [
+ "sshd"
+ ],
+ "dn": "cn=sshd,cn=hbacservices,cn=hbac,dc=dev,dc=example,dc=com"
+ },
+ {
+ "cn": [
+ "ftp"
+ ],
+ "description": [
+ "ftp"
+ ],
+ "dn": "cn=ftp,cn=hbacservices,cn=hbac,dc=dev,dc=example,dc=com"
+ },
+ {
+ "cn": [
+ "su"
+ ],
+ "description": [
+ "su"
+ ],
+ "dn": "cn=su,cn=hbacservices,cn=hbac,dc=dev,dc=example,dc=com"
+ },
+ {
+ "cn": [
+ "login"
+ ],
+ "description": [
+ "login"
+ ],
+ "dn": "cn=login,cn=hbacservices,cn=hbac,dc=dev,dc=example,dc=com"
+ },
+ {
+ "cn": [
+ "su-l"
+ ],
+ "description": [
+ "su with login shell"
+ ],
+ "dn": "cn=su-l,cn=hbacservices,cn=hbac,dc=dev,dc=example,dc=com"
+ },
+ {
+ "cn": [
+ "sudo"
+ ],
+ "description": [
+ "sudo"
+ ],
+ "dn": "cn=sudo,cn=hbacservices,cn=hbac,dc=dev,dc=example,dc=com"
+ },
+ {
+ "cn": [
+ "sudo-i"
+ ],
+ "description": [
+ "sudo-i"
+ ],
+ "dn": "cn=sudo-i,cn=hbacservices,cn=hbac,dc=dev,dc=example,dc=com"
+ },
+ {
+ "cn": [
+ "gdm"
+ ],
+ "description": [
+ "gdm"
+ ],
+ "dn": "cn=gdm,cn=hbacservices,cn=hbac,dc=dev,dc=example,dc=com"
+ },
+ {
+ "cn": [
+ "gdm-password"
+ ],
+ "description": [
+ "gdm-password"
+ ],
+ "dn": "cn=gdm-password,cn=hbacservices,cn=hbac,dc=dev,dc=example,dc=com"
+ },
+ {
+ "cn": [
+ "kdm"
+ ],
+ "description": [
+ "kdm"
+ ],
+ "dn": "cn=kdm,cn=hbacservices,cn=hbac,dc=dev,dc=example,dc=com"
+ }
+ ],
+ "summary": null,
+ "truncated": false
+ }
+}
diff --git a/install/ui/test/data/hbacsvc_mod.json b/install/ui/test/data/hbacsvc_mod.json
new file mode 100644
index 000000000..335009a98
--- /dev/null
+++ b/install/ui/test/data/hbacsvc_mod.json
@@ -0,0 +1,31 @@
+{
+ "error": null,
+ "id": 0,
+ "result": {
+ "result": {
+ "attributelevelrights": {
+ "aci": "rscwo",
+ "cn": "rscwo",
+ "description": "rscwo",
+ "ipauniqueid": "rsc",
+ "memberof": "rsc",
+ "nsaccountlock": "rscwo"
+ },
+ "cn": [
+ "test"
+ ],
+ "description": [
+ "Test"
+ ],
+ "ipauniqueid": [
+ "9e5aba82-edd411df-b3f78f4b-11cc007b"
+ ],
+ "objectclass": [
+ "ipaobject",
+ "ipahbacservice"
+ ]
+ },
+ "summary": null,
+ "value": "test"
+ }
+}
diff --git a/install/ui/test/data/hbacsvc_show.json b/install/ui/test/data/hbacsvc_show.json
new file mode 100644
index 000000000..8ebfbd7c1
--- /dev/null
+++ b/install/ui/test/data/hbacsvc_show.json
@@ -0,0 +1,35 @@
+{
+ "error": null,
+ "id": 0,
+ "result": {
+ "result": {
+ "attributelevelrights": {
+ "aci": "rscwo",
+ "cn": "rscwo",
+ "description": "rscwo",
+ "ipauniqueid": "rsc",
+ "memberof": "rsc",
+ "nsaccountlock": "rscwo"
+ },
+ "cn": [
+ "sudo"
+ ],
+ "description": [
+ "sudo"
+ ],
+ "dn": "cn=sudo,cn=hbacservices,cn=hbac,dc=dev,dc=example,dc=com",
+ "ipauniqueid": [
+ "676e92a1-ec7611df-b3f78f4b-11cc007b"
+ ],
+ "memberof": [
+ "cn=SUDO,cn=hbacservicegroups,cn=hbac,dc=dev,dc=example,dc=com"
+ ],
+ "objectclass": [
+ "ipahbacservice",
+ "ipaobject"
+ ]
+ },
+ "summary": null,
+ "value": "sudo"
+ }
+}
diff --git a/install/ui/test/data/hbacsvcgroup_add.json b/install/ui/test/data/hbacsvcgroup_add.json
new file mode 100644
index 000000000..0dd1e96fe
--- /dev/null
+++ b/install/ui/test/data/hbacsvcgroup_add.json
@@ -0,0 +1,26 @@
+{
+ "error": null,
+ "id": 0,
+ "result": {
+ "result": {
+ "cn": [
+ "test"
+ ],
+ "description": [
+ "Test Service Group"
+ ],
+ "dn": "cn=test,cn=hbacservicegroups,cn=hbac,dc=dev,dc=example,dc=com",
+ "ipauniqueid": [
+ "0ab6ba82-ecfe11df-b3f78f4b-11cc007b"
+ ],
+ "objectclass": [
+ "ipaobject",
+ "ipahbacservicegroup",
+ "groupOfNames",
+ "top"
+ ]
+ },
+ "summary": "Added HBAC Service group \"test\"",
+ "value": "test"
+ }
+}
diff --git a/install/ui/test/data/hbacsvcgroup_add_member.json b/install/ui/test/data/hbacsvcgroup_add_member.json
new file mode 100644
index 000000000..8526e1848
--- /dev/null
+++ b/install/ui/test/data/hbacsvcgroup_add_member.json
@@ -0,0 +1,24 @@
+{
+ "error": null,
+ "id": 0,
+ "result": {
+ "completed": 1,
+ "failed": {
+ "member": {
+ "hbacsvc": []
+ }
+ },
+ "result": {
+ "cn": [
+ "test"
+ ],
+ "description": [
+ "Test Service Group"
+ ],
+ "dn": "cn=test,cn=hbacservicegroups,cn=hbac,dc=dev,dc=example,dc=com",
+ "member_hbacsvc": [
+ "test"
+ ]
+ }
+ }
+}
diff --git a/install/ui/test/data/hbacsvcgroup_del.json b/install/ui/test/data/hbacsvcgroup_del.json
new file mode 100644
index 000000000..134f7417e
--- /dev/null
+++ b/install/ui/test/data/hbacsvcgroup_del.json
@@ -0,0 +1,9 @@
+{
+ "error": null,
+ "id": 0,
+ "result": {
+ "result": true,
+ "summary": "Deleted HBAC Service group \"test\"",
+ "value": "test"
+ }
+}
diff --git a/install/ui/test/data/hbacsvcgroup_find.json b/install/ui/test/data/hbacsvcgroup_find.json
new file mode 100644
index 000000000..797530e37
--- /dev/null
+++ b/install/ui/test/data/hbacsvcgroup_find.json
@@ -0,0 +1,24 @@
+{
+ "error": null,
+ "id": 0,
+ "result": {
+ "count": 1,
+ "result": [
+ {
+ "cn": [
+ "SUDO"
+ ],
+ "description": [
+ "Default group of SUDO related services"
+ ],
+ "dn": "cn=sudo,cn=hbacservicegroups,cn=hbac,dc=dev,dc=example,dc=com",
+ "member_hbacsvc": [
+ "sudo",
+ "sudo-i"
+ ]
+ }
+ ],
+ "summary": "1 group matched",
+ "truncated": false
+ }
+}
diff --git a/install/ui/test/data/hbacsvcgroup_member_hbacsvc.json b/install/ui/test/data/hbacsvcgroup_member_hbacsvc.json
new file mode 100644
index 000000000..a407a622f
--- /dev/null
+++ b/install/ui/test/data/hbacsvcgroup_member_hbacsvc.json
@@ -0,0 +1,57 @@
+{
+ "error": null,
+ "id": 0,
+ "result": {
+ "count": 2,
+ "results": [
+ {
+ "error": null,
+ "result": {
+ "cn": [
+ "sudo"
+ ],
+ "description": [
+ "sudo"
+ ],
+ "dn": "cn=sudo,cn=hbacservices,cn=hbac,dc=dev,dc=example,dc=com",
+ "ipauniqueid": [
+ "42927a86-f46d-11df-8cc1-00163e72f2d9"
+ ],
+ "memberof": [
+ "cn=SUDO,cn=hbacservicegroups,cn=hbac,dc=dev,dc=example,dc=com"
+ ],
+ "objectclass": [
+ "ipahbacservice",
+ "ipaobject"
+ ]
+ },
+ "summary": null,
+ "value": "sudo"
+ },
+ {
+ "error": null,
+ "result": {
+ "cn": [
+ "sudo-i"
+ ],
+ "description": [
+ "sudo-i"
+ ],
+ "dn": "cn=sudo-i,cn=hbacservices,cn=hbac,dc=dev,dc=example,dc=com",
+ "ipauniqueid": [
+ "42970a6a-f46d-11df-8cc1-00163e72f2d9"
+ ],
+ "memberof": [
+ "cn=SUDO,cn=hbacservicegroups,cn=hbac,dc=dev,dc=example,dc=com"
+ ],
+ "objectclass": [
+ "ipahbacservice",
+ "ipaobject"
+ ]
+ },
+ "summary": null,
+ "value": "sudo-i"
+ }
+ ]
+ }
+}
diff --git a/install/ui/test/data/hbacsvcgroup_mod.json b/install/ui/test/data/hbacsvcgroup_mod.json
new file mode 100644
index 000000000..e0ec916d3
--- /dev/null
+++ b/install/ui/test/data/hbacsvcgroup_mod.json
@@ -0,0 +1,39 @@
+{
+ "error": null,
+ "id": 0,
+ "result": {
+ "result": {
+ "attributelevelrights": {
+ "aci": "rscwo",
+ "businesscategory": "rscwo",
+ "cn": "rscwo",
+ "description": "rscwo",
+ "ipauniqueid": "rsc",
+ "member": "rscwo",
+ "nsaccountlock": "rscwo",
+ "o": "rscwo",
+ "objectclass": "rscwo",
+ "ou": "rscwo",
+ "owner": "rscwo",
+ "seealso": "rscwo"
+ },
+ "cn": [
+ "test"
+ ],
+ "description": [
+ "Test"
+ ],
+ "ipauniqueid": [
+ "2d67d284-edd511df-b3f78f4b-11cc007b"
+ ],
+ "objectclass": [
+ "ipaobject",
+ "ipahbacservicegroup",
+ "groupOfNames",
+ "top"
+ ]
+ },
+ "summary": "Modified HBAC Service group \"test\"",
+ "value": "test"
+ }
+}
diff --git a/install/ui/test/data/hbacsvcgroup_remove_member.json b/install/ui/test/data/hbacsvcgroup_remove_member.json
new file mode 100644
index 000000000..cdf413789
--- /dev/null
+++ b/install/ui/test/data/hbacsvcgroup_remove_member.json
@@ -0,0 +1,21 @@
+{
+ "error": null,
+ "id": 0,
+ "result": {
+ "completed": 1,
+ "failed": {
+ "member": {
+ "hbacsvc": []
+ }
+ },
+ "result": {
+ "cn": [
+ "test"
+ ],
+ "description": [
+ "Test Service Group"
+ ],
+ "dn": "cn=test,cn=hbacservicegroups,cn=hbac,dc=dev,dc=example,dc=com"
+ }
+ }
+}
diff --git a/install/ui/test/data/hbacsvcgroup_show.json b/install/ui/test/data/hbacsvcgroup_show.json
new file mode 100644
index 000000000..ad3c4253b
--- /dev/null
+++ b/install/ui/test/data/hbacsvcgroup_show.json
@@ -0,0 +1,46 @@
+{
+ "error": null,
+ "id": 0,
+ "result": {
+ "result": {
+ "attributelevelrights": {
+ "aci": "rscwo",
+ "businesscategory": "rscwo",
+ "cn": "rscwo",
+ "description": "rscwo",
+ "ipauniqueid": "rsc",
+ "member": "rscwo",
+ "memberof": "rsc",
+ "nsaccountlock": "rscwo",
+ "o": "rscwo",
+ "objectclass": "rscwo",
+ "ou": "rscwo",
+ "owner": "rscwo",
+ "seealso": "rscwo"
+ },
+ "cn": [
+ "SUDO"
+ ],
+ "description": [
+ "Default group of SUDO related services"
+ ],
+ "dn": "cn=sudo,cn=hbacservicegroups,cn=hbac,dc=dev,dc=example,dc=com",
+ "ipauniqueid": [
+ "676e92ab-ec7611df-b3f78f4b-11cc007b"
+ ],
+ "member_hbacsvc": [
+ "sudo",
+ "sudo-i"
+ ],
+ "objectclass": [
+ "ipaobject",
+ "ipahbacservicegroup",
+ "nestedGroup",
+ "groupOfNames",
+ "top"
+ ]
+ },
+ "summary": null,
+ "value": "sudo"
+ }
+}
diff --git a/install/ui/test/data/host_add.json b/install/ui/test/data/host_add.json
new file mode 100644
index 000000000..8b4d8b93a
--- /dev/null
+++ b/install/ui/test/data/host_add.json
@@ -0,0 +1,40 @@
+{
+ "error": null,
+ "id": 14,
+ "result": {
+ "result": {
+ "cn": [
+ "www.pbs.org"
+ ],
+ "dn": "fqdn=www.pbs.org,cn=computers,cn=accounts,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com",
+ "fqdn": [
+ "www.pbs.org"
+ ],
+ "has_keytab": false,
+ "ipauniqueid": [
+ "3ad2e63d-b43a-11df-8dd1-525400674dcd"
+ ],
+ "krbprincipalname": [
+ "host/www.pbs.org@AYOUNG.BOSTON.DEVEL.REDHAT.COM"
+ ],
+ "managedby": [
+ "fqdn=www.pbs.org,cn=computers,cn=accounts,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com"
+ ],
+ "objectclass": [
+ "ipaobject",
+ "nshost",
+ "ipahost",
+ "pkiuser",
+ "ipaservice",
+ "krbprincipalaux",
+ "krbprincipal",
+ "top"
+ ],
+ "serverhostname": [
+ "www"
+ ]
+ },
+ "summary": null,
+ "value": "www.pbs.org"
+ }
+} \ No newline at end of file
diff --git a/install/ui/test/data/host_disable_dev.example.com.json b/install/ui/test/data/host_disable_dev.example.com.json
new file mode 100644
index 000000000..06f5aaa99
--- /dev/null
+++ b/install/ui/test/data/host_disable_dev.example.com.json
@@ -0,0 +1,9 @@
+{
+ "error": null,
+ "id": 0,
+ "result": {
+ "result": true,
+ "summary": "Removed kerberos key from \"dev.example.com\"",
+ "value": "dev.example.com"
+ }
+}
diff --git a/install/ui/test/data/host_find.json b/install/ui/test/data/host_find.json
new file mode 100644
index 000000000..48b1fcb89
--- /dev/null
+++ b/install/ui/test/data/host_find.json
@@ -0,0 +1,91 @@
+{
+ "error": null,
+ "id": 0,
+ "result": {
+ "count": 2,
+ "result": [
+ {
+ "cn": [
+ "dev.example.com"
+ ],
+ "dn": "fqdn=dev.example.com,cn=computers,cn=accounts,dc=dev,dc=example,dc=com",
+ "fqdn": [
+ "dev.example.com"
+ ],
+ "ipauniqueid": [
+ "fc6a6d5a-f388-11df-9c01-00163e72f2d9"
+ ],
+ "krbextradata": [
+ {
+ "__base64__": "AAL+5+VMYWRtaW4vYWRtaW5AREVWLkVYQU1QTEUuQ09NAA=="
+ },
+ {
+ "__base64__": "AAgBAA=="
+ }
+ ],
+ "krblastpwdchange": [
+ "20101119025910Z"
+ ],
+ "krbpasswordexpiration": [
+ "19700101000000Z"
+ ],
+ "krbprincipalname": [
+ "host/dev.example.com@DEV.EXAMPLE.COM"
+ ],
+ "krbticketflags": [
+ "0"
+ ],
+ "managedby": [
+ "fqdn=dev.example.com,cn=computers,cn=accounts,dc=dev,dc=example,dc=com"
+ ],
+ "objectclass": [
+ "top",
+ "ipaobject",
+ "nshost",
+ "ipahost",
+ "ipaservice",
+ "pkiuser",
+ "krbprincipalaux",
+ "krbprincipal",
+ "krbticketpolicyaux"
+ ],
+ "serverhostname": [
+ "dev"
+ ]
+ },
+ {
+ "cn": [
+ "test.example.com"
+ ],
+ "dn": "fqdn=test.example.com,cn=computers,cn=accounts,dc=dev,dc=example,dc=com",
+ "fqdn": [
+ "test.example.com"
+ ],
+ "ipauniqueid": [
+ "ac28dca0-f3b5-11df-879f-00163e72f2d9"
+ ],
+ "krbprincipalname": [
+ "host/test.example.com@DEV.EXAMPLE.COM"
+ ],
+ "managedby": [
+ "fqdn=test.example.com,cn=computers,cn=accounts,dc=dev,dc=example,dc=com"
+ ],
+ "objectclass": [
+ "ipaobject",
+ "nshost",
+ "ipahost",
+ "pkiuser",
+ "ipaservice",
+ "krbprincipalaux",
+ "krbprincipal",
+ "top"
+ ],
+ "serverhostname": [
+ "test"
+ ]
+ }
+ ],
+ "summary": "2 hosts matched",
+ "truncated": false
+ }
+}
diff --git a/install/ui/test/data/host_mod.json b/install/ui/test/data/host_mod.json
new file mode 100644
index 000000000..3cb7d9ec5
--- /dev/null
+++ b/install/ui/test/data/host_mod.json
@@ -0,0 +1,75 @@
+{
+ "error": null,
+ "id": 0,
+ "result": {
+ "result": {
+ "attributelevelrights": {
+ "aci": "rscwo",
+ "cn": "rscwo",
+ "description": "rscwo",
+ "enrolledby": "rsc",
+ "fqdn": "rscwo",
+ "ipaclientversion": "rscwo",
+ "ipauniqueid": "rsc",
+ "krbcanonicalname": "rscwo",
+ "krbextradata": "rscwo",
+ "krblastfailedauth": "rscwo",
+ "krblastpwdchange": "rscwo",
+ "krblastsuccessfulauth": "rscwo",
+ "krbloginfailedcount": "rscwo",
+ "krbobjectreferences": "rscwo",
+ "krbpasswordexpiration": "rscwo",
+ "krbprincipalaliases": "rscwo",
+ "krbprincipalexpiration": "rscwo",
+ "krbprincipalkey": "wo",
+ "krbprincipalname": "rscwo",
+ "krbprincipaltype": "rscwo",
+ "krbpwdhistory": "rscwo",
+ "krbpwdpolicyreference": "rscwo",
+ "krbticketpolicyreference": "rscwo",
+ "krbupenabled": "rscwo",
+ "l": "rscwo",
+ "managedby": "rscwo",
+ "memberof": "rsc",
+ "nsaccountlock": "rscwo",
+ "nshardwareplatform": "rscwo",
+ "nshostlocation": "rscwo",
+ "nsosversion": "rscwo",
+ "objectclass": "rscwo",
+ "serverhostname": "rsc",
+ "usercertificate": "rscwo",
+ "userpassword": "wo"
+ },
+ "cn": [
+ "test.example.com"
+ ],
+ "fqdn": [
+ "test.example.com"
+ ],
+ "ipauniqueid": [
+ "ac28dca0-f3b5-11df-879f-00163e72f2d9"
+ ],
+ "krbprincipalname": [
+ "host/test.example.com@DEV.EXAMPLE.COM"
+ ],
+ "managedby": [
+ "fqdn=test.example.com,cn=computers,cn=accounts,dc=dev,dc=example,dc=com"
+ ],
+ "objectclass": [
+ "ipaobject",
+ "nshost",
+ "ipahost",
+ "pkiuser",
+ "ipaservice",
+ "krbprincipalaux",
+ "krbprincipal",
+ "top"
+ ],
+ "serverhostname": [
+ "test"
+ ]
+ },
+ "summary": "Modified host \"test.example.com\"",
+ "value": "test.example.com"
+ }
+}
diff --git a/install/ui/test/data/host_show.json b/install/ui/test/data/host_show.json
new file mode 100644
index 000000000..b87802310
--- /dev/null
+++ b/install/ui/test/data/host_show.json
@@ -0,0 +1,80 @@
+{
+ "error": null,
+ "id": 0,
+ "result": {
+ "result": {
+ "attributelevelrights": {
+ "aci": "rscwo",
+ "cn": "rscwo",
+ "description": "rscwo",
+ "enrolledby": "rsc",
+ "fqdn": "rscwo",
+ "ipaclientversion": "rscwo",
+ "ipauniqueid": "rsc",
+ "krbcanonicalname": "rsc",
+ "krbextradata": "rsc",
+ "krblastfailedauth": "rsc",
+ "krblastpwdchange": "rscwo",
+ "krblastsuccessfulauth": "rsc",
+ "krbloginfailedcount": "rsc",
+ "krbmaxrenewableage": "rscwo",
+ "krbmaxticketlife": "rscwo",
+ "krbobjectreferences": "rscwo",
+ "krbpasswordexpiration": "rsc",
+ "krbprincipalaliases": "rsc",
+ "krbprincipalexpiration": "rsc",
+ "krbprincipalkey": "wo",
+ "krbprincipalname": "rsc",
+ "krbprincipaltype": "rsc",
+ "krbpwdhistory": "rsc",
+ "krbpwdpolicyreference": "rsc",
+ "krbticketflags": "rsc",
+ "krbticketpolicyreference": "rsc",
+ "krbupenabled": "rsc",
+ "l": "rscwo",
+ "managedby": "rscwo",
+ "memberof": "rsc",
+ "nsaccountlock": "rscwo",
+ "nshardwareplatform": "rscwo",
+ "nshostlocation": "rscwo",
+ "nsosversion": "rscwo",
+ "objectclass": "rscwo",
+ "serverhostname": "rsc",
+ "usercertificate": "rscwo",
+ "userpassword": "wo"
+ },
+ "cn": [
+ "test.example.com"
+ ],
+ "dn": "fqdn=test.example.com,cn=computers,cn=accounts,dc=dev,dc=example,dc=com",
+ "fqdn": [
+ "test.example.com"
+ ],
+ "has_keytab": false,
+ "ipauniqueid": [
+ "ac28dca0-f3b5-11df-879f-00163e72f2d9"
+ ],
+ "krbprincipalname": [
+ "host/test.example.com@DEV.EXAMPLE.COM"
+ ],
+ "managedby": [
+ "fqdn=test.example.com,cn=computers,cn=accounts,dc=dev,dc=example,dc=com"
+ ],
+ "objectclass": [
+ "ipaobject",
+ "nshost",
+ "ipahost",
+ "pkiuser",
+ "ipaservice",
+ "krbprincipalaux",
+ "krbprincipal",
+ "top"
+ ],
+ "serverhostname": [
+ "test"
+ ]
+ },
+ "summary": null,
+ "value": "test.example.com"
+ }
+}
diff --git a/install/ui/test/data/host_show_dev.example.com.json b/install/ui/test/data/host_show_dev.example.com.json
new file mode 100644
index 000000000..1ee9f445f
--- /dev/null
+++ b/install/ui/test/data/host_show_dev.example.com.json
@@ -0,0 +1,98 @@
+{
+ "error": null,
+ "id": 0,
+ "result": {
+ "result": {
+ "attributelevelrights": {
+ "aci": "rscwo",
+ "cn": "rscwo",
+ "description": "rscwo",
+ "enrolledby": "rsc",
+ "fqdn": "rscwo",
+ "ipaclientversion": "rscwo",
+ "ipauniqueid": "rsc",
+ "krbcanonicalname": "rsc",
+ "krbextradata": "rsc",
+ "krblastfailedauth": "rsc",
+ "krblastpwdchange": "rscwo",
+ "krblastsuccessfulauth": "rsc",
+ "krbloginfailedcount": "rsc",
+ "krbmaxrenewableage": "rscwo",
+ "krbmaxticketlife": "rscwo",
+ "krbobjectreferences": "rscwo",
+ "krbpasswordexpiration": "rsc",
+ "krbprincipalaliases": "rsc",
+ "krbprincipalexpiration": "rsc",
+ "krbprincipalkey": "wo",
+ "krbprincipalname": "rsc",
+ "krbprincipaltype": "rsc",
+ "krbpwdhistory": "rsc",
+ "krbpwdpolicyreference": "rsc",
+ "krbticketflags": "rsc",
+ "krbticketpolicyreference": "rsc",
+ "krbupenabled": "rsc",
+ "l": "rscwo",
+ "managedby": "rscwo",
+ "memberof": "rsc",
+ "nsaccountlock": "rscwo",
+ "nshardwareplatform": "rscwo",
+ "nshostlocation": "rscwo",
+ "nsosversion": "rscwo",
+ "objectclass": "rscwo",
+ "serverhostname": "rsc",
+ "usercertificate": "rscwo",
+ "userpassword": "wo"
+ },
+ "cn": [
+ "dev.example.com"
+ ],
+ "dn": "fqdn=dev.example.com,cn=computers,cn=accounts,dc=dev,dc=example,dc=com",
+ "fqdn": [
+ "dev.example.com"
+ ],
+ "has_keytab": true,
+ "ipauniqueid": [
+ "fc6a6d5a-f388-11df-9c01-00163e72f2d9"
+ ],
+ "krbextradata": [
+ {
+ "__base64__": "AAL+5+VMYWRtaW4vYWRtaW5AREVWLkVYQU1QTEUuQ09NAA=="
+ },
+ {
+ "__base64__": "AAgBAA=="
+ }
+ ],
+ "krblastpwdchange": [
+ "20101119025910Z"
+ ],
+ "krbpasswordexpiration": [
+ "19700101000000Z"
+ ],
+ "krbprincipalname": [
+ "host/dev.example.com@DEV.EXAMPLE.COM"
+ ],
+ "krbticketflags": [
+ "0"
+ ],
+ "managedby": [
+ "fqdn=dev.example.com,cn=computers,cn=accounts,dc=dev,dc=example,dc=com"
+ ],
+ "objectclass": [
+ "top",
+ "ipaobject",
+ "nshost",
+ "ipahost",
+ "ipaservice",
+ "pkiuser",
+ "krbprincipalaux",
+ "krbprincipal",
+ "krbticketpolicyaux"
+ ],
+ "serverhostname": [
+ "dev"
+ ]
+ },
+ "summary": null,
+ "value": "dev.example.com"
+ }
+}
diff --git a/install/ui/test/data/host_show_test.example.com.json b/install/ui/test/data/host_show_test.example.com.json
new file mode 100644
index 000000000..b87802310
--- /dev/null
+++ b/install/ui/test/data/host_show_test.example.com.json
@@ -0,0 +1,80 @@
+{
+ "error": null,
+ "id": 0,
+ "result": {
+ "result": {
+ "attributelevelrights": {
+ "aci": "rscwo",
+ "cn": "rscwo",
+ "description": "rscwo",
+ "enrolledby": "rsc",
+ "fqdn": "rscwo",
+ "ipaclientversion": "rscwo",
+ "ipauniqueid": "rsc",
+ "krbcanonicalname": "rsc",
+ "krbextradata": "rsc",
+ "krblastfailedauth": "rsc",
+ "krblastpwdchange": "rscwo",
+ "krblastsuccessfulauth": "rsc",
+ "krbloginfailedcount": "rsc",
+ "krbmaxrenewableage": "rscwo",
+ "krbmaxticketlife": "rscwo",
+ "krbobjectreferences": "rscwo",
+ "krbpasswordexpiration": "rsc",
+ "krbprincipalaliases": "rsc",
+ "krbprincipalexpiration": "rsc",
+ "krbprincipalkey": "wo",
+ "krbprincipalname": "rsc",
+ "krbprincipaltype": "rsc",
+ "krbpwdhistory": "rsc",
+ "krbpwdpolicyreference": "rsc",
+ "krbticketflags": "rsc",
+ "krbticketpolicyreference": "rsc",
+ "krbupenabled": "rsc",
+ "l": "rscwo",
+ "managedby": "rscwo",
+ "memberof": "rsc",
+ "nsaccountlock": "rscwo",
+ "nshardwareplatform": "rscwo",
+ "nshostlocation": "rscwo",
+ "nsosversion": "rscwo",
+ "objectclass": "rscwo",
+ "serverhostname": "rsc",
+ "usercertificate": "rscwo",
+ "userpassword": "wo"
+ },
+ "cn": [
+ "test.example.com"
+ ],
+ "dn": "fqdn=test.example.com,cn=computers,cn=accounts,dc=dev,dc=example,dc=com",
+ "fqdn": [
+ "test.example.com"
+ ],
+ "has_keytab": false,
+ "ipauniqueid": [
+ "ac28dca0-f3b5-11df-879f-00163e72f2d9"
+ ],
+ "krbprincipalname": [
+ "host/test.example.com@DEV.EXAMPLE.COM"
+ ],
+ "managedby": [
+ "fqdn=test.example.com,cn=computers,cn=accounts,dc=dev,dc=example,dc=com"
+ ],
+ "objectclass": [
+ "ipaobject",
+ "nshost",
+ "ipahost",
+ "pkiuser",
+ "ipaservice",
+ "krbprincipalaux",
+ "krbprincipal",
+ "top"
+ ],
+ "serverhostname": [
+ "test"
+ ]
+ },
+ "summary": null,
+ "value": "test.example.com"
+ }
+}
diff --git a/install/ui/test/data/hostgroup_add.json b/install/ui/test/data/hostgroup_add.json
new file mode 100644
index 000000000..bc41ee7d8
--- /dev/null
+++ b/install/ui/test/data/hostgroup_add.json
@@ -0,0 +1,27 @@
+{
+ "error": null,
+ "id": 15,
+ "result": {
+ "result": {
+ "cn": [
+ "guest_hosts"
+ ],
+ "description": [
+ "Special Guest Stars"
+ ],
+ "dn": "cn=guest_hosts,cn=hostgroups,cn=accounts,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com",
+ "ipauniqueid": [
+ "7f8c57ae-b43a-11df-8016-525400674dcd"
+ ],
+ "objectclass": [
+ "ipaobject",
+ "ipahostgroup",
+ "nestedGroup",
+ "groupOfNames",
+ "top"
+ ]
+ },
+ "summary": "Added hostgroup \"guest_hosts\"",
+ "value": "guest_hosts"
+ }
+} \ No newline at end of file
diff --git a/install/ui/test/data/hostgroup_add_member.json b/install/ui/test/data/hostgroup_add_member.json
new file mode 100644
index 000000000..a92201751
--- /dev/null
+++ b/install/ui/test/data/hostgroup_add_member.json
@@ -0,0 +1,37 @@
+{
+ "error": null,
+ "id": 0,
+ "result": {
+ "completed": 3,
+ "failed": {
+ "member": {
+ "host": [],
+ "hostgroup": []
+ }
+ },
+ "result": {
+ "cn": [
+ "host-live"
+ ],
+ "description": [
+ "Live servers"
+ ],
+ "dn": "cn=host-live,cn=hostgroups,cn=accounts,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com",
+ "ipauniqueid": [
+ "1ba89342-b683-11df-8d5b-525400674dcd"
+ ],
+ "member_host": [
+ "live3.pbs.org",
+ "live2.pbs.org",
+ "live1.pbs.org"
+ ],
+ "objectclass": [
+ "ipaobject",
+ "ipahostgroup",
+ "nestedGroup",
+ "groupOfNames",
+ "top"
+ ]
+ }
+ }
+} \ No newline at end of file
diff --git a/install/ui/test/data/hostgroup_find.json b/install/ui/test/data/hostgroup_find.json
new file mode 100644
index 000000000..6732910c0
--- /dev/null
+++ b/install/ui/test/data/hostgroup_find.json
@@ -0,0 +1,33 @@
+{
+ "error": null,
+ "id": 0,
+ "result": {
+ "count": 2,
+ "result": [
+ {
+ "cn": [
+ "host-live"
+ ],
+ "description": [
+ "Live servers"
+ ],
+ "dn": "cn=host-live,cn=hostgroups,cn=accounts,dc=idm,dc=lab,dc=bos,dc=redhat,dc=com",
+ "member": [],
+ "memberof": []
+ },
+ {
+ "cn": [
+ "stage-live"
+ ],
+ "description": [
+ "Staging servers"
+ ],
+ "dn": "cn=stage-live,cn=hostgroups,cn=accounts,dc=idm,dc=lab,dc=bos,dc=redhat,dc=com",
+ "member": [],
+ "memberof": []
+ }
+ ],
+ "summary": "2 hostgroups matched",
+ "truncated": false
+ }
+} \ No newline at end of file
diff --git a/install/ui/test/data/hostgroup_member_host.json b/install/ui/test/data/hostgroup_member_host.json
new file mode 100644
index 000000000..c4c7dfa98
--- /dev/null
+++ b/install/ui/test/data/hostgroup_member_host.json
@@ -0,0 +1,70 @@
+{
+ "error": null,
+ "id": 0,
+ "result": {
+ "count": 1,
+ "results": [
+ {
+ "error": null,
+ "result": {
+ "cn": [
+ "dev.example.com"
+ ],
+ "description": [
+ "Development"
+ ],
+ "dn": "fqdn=dev.example.com,cn=computers,cn=accounts,dc=dev,dc=example,dc=com",
+ "fqdn": [
+ "dev.example.com"
+ ],
+ "has_keytab": true,
+ "ipauniqueid": [
+ "0568a298-f46d-11df-9ef8-00163e72f2d9"
+ ],
+ "krbextradata": [
+ {
+ "__base64__": "AAKTZudMYWRtaW4vYWRtaW5AREVWLkVYQU1QTEUuQ09NAA=="
+ },
+ {
+ "__base64__": "AAgBAA=="
+ }
+ ],
+ "krblastpwdchange": [
+ "20101120061131Z"
+ ],
+ "krbpasswordexpiration": [
+ "19700101000000Z"
+ ],
+ "krbprincipalname": [
+ "host/dev.example.com@DEV.EXAMPLE.COM"
+ ],
+ "krbticketflags": [
+ "0"
+ ],
+ "managedby_host": [
+ "dev.example.com"
+ ],
+ "memberof_hostgroup": [
+ "test"
+ ],
+ "objectclass": [
+ "top",
+ "ipaobject",
+ "nshost",
+ "ipahost",
+ "ipaservice",
+ "pkiuser",
+ "krbprincipalaux",
+ "krbprincipal",
+ "krbticketpolicyaux"
+ ],
+ "serverhostname": [
+ "dev"
+ ]
+ },
+ "summary": null,
+ "value": "dev.example.com"
+ }
+ ]
+ }
+}
diff --git a/install/ui/test/data/hostgroup_show.json b/install/ui/test/data/hostgroup_show.json
new file mode 100644
index 000000000..776d446dd
--- /dev/null
+++ b/install/ui/test/data/hostgroup_show.json
@@ -0,0 +1,22 @@
+{
+ "error": null,
+ "id": 0,
+ "result": {
+ "result": {
+ "cn": [
+ "host-live"
+ ],
+ "description": [
+ "Live servers"
+ ],
+ "dn": "cn=host-live,cn=hostgroups,cn=accounts,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com",
+ "member_host": [
+ "live3.pbs.org",
+ "live2.pbs.org",
+ "live1.pbs.org"
+ ]
+ },
+ "summary": null,
+ "value": "host-live"
+ }
+} \ No newline at end of file
diff --git a/install/ui/test/data/i18n_messages.json b/install/ui/test/data/i18n_messages.json
new file mode 100644
index 000000000..6dfb1c645
--- /dev/null
+++ b/install/ui/test/data/i18n_messages.json
@@ -0,0 +1,37 @@
+{
+ "error": null,
+ "id": 0,
+ "result": {
+ "messages": {
+ "ajax": {
+ "401": "Your kerberos ticket no longer valid.Please run KInit and then click 'retry'If this is your first time running the IPA Web UI<a href='/ipa/errors/ssbrowser.html'> Follow these directions</a> to configure your browser."
+ },
+ "button": {
+ "add": "Add",
+ "enroll": "Enroll",
+ "find": "Find",
+ "remove": "Delete",
+ "reset": "Reset",
+ "update": "Update"
+ },
+ "details": {
+ "account": "Account Details",
+ "contact": "Contact Details",
+ "employee": " Employee Information",
+ "identity": "Identity Details",
+ "mailing": "Mailing Address",
+ "misc": "Misc. Information",
+ "to_top": "Back to Top"
+ },
+ "login": {
+ "header": "Logged In As"
+ },
+ "search": {
+ "delete_confirm": "Do you really want to delete the selected entries?",
+ "quick_links": "Quick Links",
+ "select_all": "Select All",
+ "unselect_all": "Unselect All"
+ }
+ }
+ }
+} \ No newline at end of file
diff --git a/install/ui/test/data/ipa_init.json b/install/ui/test/data/ipa_init.json
new file mode 100644
index 000000000..e0e6053c4
--- /dev/null
+++ b/install/ui/test/data/ipa_init.json
@@ -0,0 +1,7884 @@
+{
+ "error": null,
+ "id": 1,
+ "result": {
+ "count": 4,
+ "results": [
+ {
+ "error": null,
+ "metadata": {
+ "aci": {
+ "__base64__": ""
+ },
+ "automountkey": {
+ "aciattrs": [
+ "automountinformation",
+ "automountkey",
+ "description",
+ "objectclass"
+ ],
+ "attribute_members": {},
+ "bindable": false,
+ "container_dn": "cn=automount",
+ "default_attributes": [
+ "automountkey",
+ "automountinformation",
+ "description"
+ ],
+ "hidden_attributes": [
+ "objectclass",
+ "aci"
+ ],
+ "label": "Automount Keys",
+ "methods": [
+ "add",
+ "del",
+ "find",
+ "mod",
+ "show"
+ ],
+ "name": "automountkey",
+ "object_class": [
+ "automount"
+ ],
+ "object_class_config": null,
+ "object_name": "automount key",
+ "object_name_plural": "automount keys",
+ "parent_object": "automountmap",
+ "primary_key": "automountkey",
+ "rdn_attribute": "",
+ "relationships": {
+ "member": [
+ "Member",
+ "",
+ "no_"
+ ],
+ "memberindirect": [
+ "Indirect Member",
+ null,
+ "no_indirect_"
+ ],
+ "memberof": [
+ "Member Of",
+ "in_",
+ "not_in_"
+ ]
+ },
+ "takes_params": [
+ {
+ "alwaysask": false,
+ "attribute": false,
+ "autofill": false,
+ "class": "IA5Str",
+ "cli_name": "key",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Automount key name",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "Key",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "automountkey",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": true,
+ "query": false,
+ "required": true,
+ "type": "unicode"
+ },
+ {
+ "alwaysask": false,
+ "attribute": false,
+ "autofill": false,
+ "class": "IA5Str",
+ "cli_name": "info",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Mount information",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "Mount information",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "automountinformation",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": false,
+ "query": false,
+ "required": true,
+ "type": "unicode"
+ },
+ {
+ "alwaysask": false,
+ "attribute": false,
+ "autofill": false,
+ "class": "Str",
+ "cli_name": "desc",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "description",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "description",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "description",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "unicode"
+ }
+ ],
+ "uuid_attribute": ""
+ },
+ "automountlocation": {
+ "aciattrs": [
+ "cn",
+ "objectclass"
+ ],
+ "attribute_members": {},
+ "bindable": false,
+ "container_dn": "cn=automount",
+ "default_attributes": [
+ "cn"
+ ],
+ "hidden_attributes": [
+ "objectclass",
+ "aci"
+ ],
+ "label": "Automount",
+ "methods": [
+ "add",
+ "del",
+ "find",
+ "import",
+ "show",
+ "tofiles"
+ ],
+ "name": "automountlocation",
+ "object_class": [
+ "nscontainer"
+ ],
+ "object_class_config": null,
+ "object_name": "automount location",
+ "object_name_plural": "automount locations",
+ "parent_object": "",
+ "primary_key": "cn",
+ "rdn_attribute": "",
+ "relationships": {
+ "member": [
+ "Member",
+ "",
+ "no_"
+ ],
+ "memberindirect": [
+ "Indirect Member",
+ null,
+ "no_indirect_"
+ ],
+ "memberof": [
+ "Member Of",
+ "in_",
+ "not_in_"
+ ]
+ },
+ "takes_params": [
+ {
+ "alwaysask": false,
+ "attribute": false,
+ "autofill": false,
+ "class": "Str",
+ "cli_name": "location",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Automount location name",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "Location",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "cn",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": true,
+ "query": false,
+ "required": true,
+ "type": "unicode"
+ }
+ ],
+ "uuid_attribute": ""
+ },
+ "automountmap": {
+ "aciattrs": [
+ "automountmapname",
+ "description",
+ "objectclass"
+ ],
+ "attribute_members": {},
+ "bindable": false,
+ "container_dn": "cn=automount",
+ "default_attributes": [
+ "automountmapname",
+ "description"
+ ],
+ "hidden_attributes": [
+ "objectclass",
+ "aci"
+ ],
+ "label": "Automount Maps",
+ "methods": [
+ "add",
+ "add_indirect",
+ "del",
+ "find",
+ "mod",
+ "show"
+ ],
+ "name": "automountmap",
+ "object_class": [
+ "automountmap"
+ ],
+ "object_class_config": null,
+ "object_name": "automount map",
+ "object_name_plural": "automount maps",
+ "parent_object": "automountlocation",
+ "primary_key": "automountmapname",
+ "rdn_attribute": "",
+ "relationships": {
+ "member": [
+ "Member",
+ "",
+ "no_"
+ ],
+ "memberindirect": [
+ "Indirect Member",
+ null,
+ "no_indirect_"
+ ],
+ "memberof": [
+ "Member Of",
+ "in_",
+ "not_in_"
+ ]
+ },
+ "takes_params": [
+ {
+ "alwaysask": false,
+ "attribute": false,
+ "autofill": false,
+ "class": "IA5Str",
+ "cli_name": "map",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Automount map name",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "Map",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "automountmapname",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": true,
+ "query": false,
+ "required": true,
+ "type": "unicode"
+ },
+ {
+ "alwaysask": false,
+ "attribute": false,
+ "autofill": false,
+ "class": "Str",
+ "cli_name": "desc",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Description",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "Description",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "description",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "unicode"
+ }
+ ],
+ "uuid_attribute": ""
+ },
+ "config": {
+ "aciattrs": [],
+ "attribute_members": {},
+ "bindable": false,
+ "container_dn": "",
+ "default_attributes": [
+ "ipamaxusernamelength",
+ "ipahomesrootdir",
+ "ipadefaultloginshell",
+ "ipadefaultprimarygroup",
+ "ipadefaultemaildomain",
+ "ipasearchtimelimit",
+ "ipasearchrecordslimit",
+ "ipausersearchfields",
+ "ipagroupsearchfields",
+ "ipamigrationenabled",
+ "ipacertificatesubjectbase"
+ ],
+ "hidden_attributes": [
+ "objectclass",
+ "aci"
+ ],
+ "label": "Configuration",
+ "methods": [
+ "mod",
+ "show"
+ ],
+ "name": "config",
+ "object_class": [],
+ "object_class_config": null,
+ "object_name": "configuration options",
+ "object_name_plural": "entries",
+ "parent_object": "",
+ "rdn_attribute": "",
+ "relationships": {
+ "member": [
+ "Member",
+ "",
+ "no_"
+ ],
+ "memberindirect": [
+ "Indirect Member",
+ null,
+ "no_indirect_"
+ ],
+ "memberof": [
+ "Member Of",
+ "in_",
+ "not_in_"
+ ]
+ },
+ "takes_params": [
+ {
+ "alwaysask": false,
+ "attribute": false,
+ "autofill": false,
+ "class": "Int",
+ "cli_name": "maxusername",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Max username length",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "Max username length",
+ "maxvalue": null,
+ "minvalue": 1,
+ "multivalue": false,
+ "name": "ipamaxusernamelength",
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "int"
+ },
+ {
+ "alwaysask": false,
+ "attribute": false,
+ "autofill": false,
+ "class": "IA5Str",
+ "cli_name": "homedirectory",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Default location of home directories",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "Home directory base",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "ipahomesrootdir",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "unicode"
+ },
+ {
+ "alwaysask": false,
+ "attribute": false,
+ "autofill": false,
+ "class": "Str",
+ "cli_name": "defaultshell",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Default shell for new users",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "Default shell",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "ipadefaultloginshell",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "unicode"
+ },
+ {
+ "alwaysask": false,
+ "attribute": false,
+ "autofill": false,
+ "class": "Str",
+ "cli_name": "defaultgroup",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Default group for new users",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "Default users group",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "ipadefaultprimarygroup",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "unicode"
+ },
+ {
+ "alwaysask": false,
+ "attribute": false,
+ "autofill": false,
+ "class": "Str",
+ "cli_name": "emaildomain",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Default e-mail domain new users",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "Default e-mail domain",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "ipadefaultemaildomain",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "unicode"
+ },
+ {
+ "alwaysask": false,
+ "attribute": false,
+ "autofill": false,
+ "class": "Int",
+ "cli_name": "searchtimelimit",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Max. amount of time (sec.) for a search (-1 is unlimited)",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "Search time limit",
+ "maxvalue": null,
+ "minvalue": -1,
+ "multivalue": false,
+ "name": "ipasearchtimelimit",
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "int"
+ },
+ {
+ "alwaysask": false,
+ "attribute": false,
+ "autofill": false,
+ "class": "Int",
+ "cli_name": "searchrecordslimit",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Max. number of records to search (-1 is unlimited)",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "Search size limit",
+ "maxvalue": null,
+ "minvalue": -1,
+ "multivalue": false,
+ "name": "ipasearchrecordslimit",
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "int"
+ },
+ {
+ "alwaysask": false,
+ "attribute": false,
+ "autofill": false,
+ "class": "IA5Str",
+ "cli_name": "usersearch",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "A comma-separated list of fields to search when searching for users",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "User search fields",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "ipausersearchfields",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "unicode"
+ },
+ {
+ "alwaysask": false,
+ "attribute": false,
+ "autofill": false,
+ "class": "IA5Str",
+ "cli_name": "groupsearch",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "A comma-separated list of fields to search when searching for groups",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "Group search fields",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "ipagroupsearchfields",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "unicode"
+ },
+ {
+ "alwaysask": false,
+ "attribute": false,
+ "autofill": false,
+ "class": "Bool",
+ "cli_name": "enable_migration",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Enable migration mode",
+ "exclude": null,
+ "falsehoods": [
+ 0,
+ "0",
+ "false"
+ ],
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "Migration mode",
+ "multivalue": false,
+ "name": "ipamigrationenabled",
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "truths": [
+ "1",
+ 1,
+ "true"
+ ],
+ "type": "bool"
+ },
+ {
+ "alwaysask": false,
+ "attribute": false,
+ "autofill": false,
+ "class": "Str",
+ "cli_name": "subject",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Base for certificate subjects (OU=Test,O=Example)",
+ "exclude": null,
+ "flags": [
+ "no_update"
+ ],
+ "hint": null,
+ "include": null,
+ "label": "Certificate Subject base",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "ipacertificatesubjectbase",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "unicode"
+ },
+ {
+ "alwaysask": false,
+ "attribute": false,
+ "autofill": false,
+ "class": "List",
+ "cli_name": "groupobjectclasses",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Default group objectclassses (comma-separated list)",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "Default group objectclasses",
+ "multivalue": true,
+ "name": "ipagroupobjectclasses",
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "separator": ",",
+ "skipspace": true,
+ "type": "tuple"
+ },
+ {
+ "alwaysask": false,
+ "attribute": false,
+ "autofill": false,
+ "class": "List",
+ "cli_name": "userobjectclasses",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Default user objectclassses (comma-separated list)",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "Default user objectclasses",
+ "multivalue": true,
+ "name": "ipauserobjectclasses",
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "separator": ",",
+ "skipspace": true,
+ "type": "tuple"
+ },
+ {
+ "alwaysask": false,
+ "attribute": false,
+ "autofill": false,
+ "class": "Int",
+ "cli_name": "pwdexpnotify",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Password Expiration Notification (days)",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "Password Expiration Notification",
+ "maxvalue": null,
+ "minvalue": 0,
+ "multivalue": false,
+ "name": "ipapwdexpadvnotify",
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "int"
+ },
+ {
+ "alwaysask": false,
+ "attribute": false,
+ "autofill": false,
+ "class": "Str",
+ "cli_name": "ipaconfigstring",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Extra hashes to generate in password plugin",
+ "exclude": null,
+ "flags": [
+ "no_update"
+ ],
+ "hint": null,
+ "include": null,
+ "label": "Password plugin features",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "ipaconfigstring",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "unicode"
+ }
+ ],
+ "uuid_attribute": ""
+ },
+ "cosentry": {
+ "aciattrs": [
+ "a6record",
+ "aaaarecord",
+ "accessruletype",
+ "accesstime",
+ "accessto",
+ "accountinactivitylimit",
+ "accountunlocktime",
+ "acctpolicysubentry",
+ "aci",
+ "administratorcontactinfo",
+ "adminrole",
+ "adminurl",
+ "afsdbrecord",
+ "aliasedobjectname",
+ "altserver",
+ "arecord",
+ "associateddomain",
+ "associatedname",
+ "attributemap",
+ "attributetypes",
+ "audio",
+ "authenticationmethod",
+ "authorityrevocationlist",
+ "authorizedservice",
+ "automountinformation",
+ "automountkey",
+ "automountmapname",
+ "bindtimelimit",
+ "bootfile",
+ "bootparameter",
+ "buildingname",
+ "businesscategory",
+ "c",
+ "cacertificate",
+ "calcaladruri",
+ "calcaluri",
+ "calcapuri",
+ "calfburl",
+ "calothercaladruris",
+ "calothercaluris",
+ "calothercapuris",
+ "calotherfburls",
+ "carlicense",
+ "certificaterevocationlist",
+ "certrecord",
+ "changelog",
+ "changelogmaximumage",
+ "changelogmaximumconcurrentwrites",
+ "changelogmaximumsize",
+ "changenumber",
+ "changes",
+ "changetime",
+ "changetype",
+ "cirbeginorc",
+ "cirbindcredentials",
+ "cirbinddn",
+ "cirhost",
+ "cirlastupdateapplied",
+ "cirport",
+ "cirreplicaroot",
+ "cirsyncinterval",
+ "cirupdatefailedat",
+ "cirupdateschedule",
+ "cirusepersistentsearch",
+ "cirusessl",
+ "cmdcategory",
+ "cn",
+ "cnamerecord",
+ "co",
+ "connection",
+ "copiedfrom",
+ "copyingfrom",
+ "cosattribute",
+ "cosindirectspecifier",
+ "cospriority",
+ "cosspecifier",
+ "costargettree",
+ "costemplatedn",
+ "createtimestamp",
+ "creatorsname",
+ "credentiallevel",
+ "crosscertificatepair",
+ "dc",
+ "defaultsearchbase",
+ "defaultsearchscope",
+ "defaultserverlist",
+ "deleteoldrdn",
+ "deltarevocationlist",
+ "departmentnumber",
+ "dereferencealiases",
+ "description",
+ "destinationindicator",
+ "dialupaccess",
+ "displayname",
+ "distinguishedname",
+ "ditcontentrules",
+ "ditredirect",
+ "ditstructurerules",
+ "dnamerecord",
+ "dncomp",
+ "dnqualifier",
+ "dnsclass",
+ "dnsttl",
+ "documentauthor",
+ "documentidentifier",
+ "documentlocation",
+ "documentpublisher",
+ "documenttitle",
+ "documentversion",
+ "drink",
+ "dsrecord",
+ "edupersonaffiliation",
+ "edupersonentitlement",
+ "edupersonnickname",
+ "edupersonorgdn",
+ "edupersonorgunitdn",
+ "edupersonprimaryaffiliation",
+ "edupersonprimaryorgunitdn",
+ "edupersonprincipalname",
+ "edupersonscopedaffiliation",
+ "employeenumber",
+ "employeetype",
+ "enhancedsearchguide",
+ "enrolledby",
+ "entrydn",
+ "entryid",
+ "entryusn",
+ "externalhost",
+ "externaluser",
+ "facsimiletelephonenumber",
+ "filterinfo",
+ "followreferrals",
+ "fqdn",
+ "ftpdownloadbandwidth",
+ "ftpdownloadratio",
+ "ftpgid",
+ "ftpquotafiles",
+ "ftpquotambytes",
+ "ftpstatus",
+ "ftpuid",
+ "ftpuploadbandwidth",
+ "ftpuploadratio",
+ "gecos",
+ "generation",
+ "generationqualifier",
+ "gidnumber",
+ "givenname",
+ "governingstructurerule",
+ "hassubordinates",
+ "hinforecord",
+ "homedirectory",
+ "homephone",
+ "homepostaladdress",
+ "host",
+ "hostcapolicy",
+ "hostcategory",
+ "hostmask",
+ "houseidentifier",
+ "idnsallowdynupdate",
+ "idnsname",
+ "idnssoaexpire",
+ "idnssoaminimum",
+ "idnssoamname",
+ "idnssoarefresh",
+ "idnssoaretry",
+ "idnssoarname",
+ "idnssoaserial",
+ "idnsupdatepolicy",
+ "idnszoneactive",
+ "inetdomainbasedn",
+ "inetdomainstatus",
+ "inetsubscriberaccountid",
+ "inetsubscriberchallenge",
+ "inetsubscriberresponse",
+ "inetuserhttpurl",
+ "inetuserstatus",
+ "info",
+ "initials",
+ "installationtimestamp",
+ "internationalisdnnumber",
+ "ipacertificatesubjectbase",
+ "ipaclientversion",
+ "ipaconfigstring",
+ "ipacustomfields",
+ "ipadefaultemaildomain",
+ "ipadefaultloginshell",
+ "ipadefaultprimarygroup",
+ "ipaenabledflag",
+ "ipagroupobjectclasses",
+ "ipagroupsearchfields",
+ "ipahomesrootdir",
+ "ipamaxusernamelength",
+ "ipamigrationenabled",
+ "ipapwdexpadvnotify",
+ "ipasearchrecordslimit",
+ "ipasearchtimelimit",
+ "ipasudoopt",
+ "ipasudorunas",
+ "ipasudorunasextgroup",
+ "ipasudorunasextuser",
+ "ipasudorunasgroup",
+ "ipasudorunasgroupcategory",
+ "ipasudorunasusercategory",
+ "ipauniqueid",
+ "ipauserobjectclasses",
+ "ipausersearchfields",
+ "iphostnumber",
+ "ipnetmasknumber",
+ "ipnetworknumber",
+ "ipprotocolnumber",
+ "ipserviceport",
+ "ipserviceprotocol",
+ "isreplicated",
+ "javaclassname",
+ "javaclassnames",
+ "javacodebase",
+ "javadoc",
+ "javafactory",
+ "javareferenceaddress",
+ "javaserializeddata",
+ "jpegphoto",
+ "keyrecord",
+ "krbadmservers",
+ "krbcanonicalname",
+ "krbdefaultencsalttypes",
+ "krbextradata",
+ "krbhostserver",
+ "krbkdcservers",
+ "krblastfailedauth",
+ "krblastpwdchange",
+ "krblastsuccessfulauth",
+ "krbldapservers",
+ "krbloginfailedcount",
+ "krbmaxpwdlife",
+ "krbmaxrenewableage",
+ "krbmaxticketlife",
+ "krbminpwdlife",
+ "krbmkey",
+ "krbobjectreferences",
+ "krbpasswordexpiration",
+ "krbprinccontainerref",
+ "krbprincipalaliases",
+ "krbprincipalexpiration",
+ "krbprincipalkey",
+ "krbprincipalname",
+ "krbprincipalreferences",
+ "krbprincipaltype",
+ "krbprincnamingattr",
+ "krbpwdfailurecountinterval",
+ "krbpwdhistory",
+ "krbpwdhistorylength",
+ "krbpwdlockoutduration",
+ "krbpwdmaxfailure",
+ "krbpwdmindiffchars",
+ "krbpwdminlength",
+ "krbpwdpolicyreference",
+ "krbpwdservers",
+ "krbrealmreferences",
+ "krbsearchscope",
+ "krbsubtrees",
+ "krbsupportedencsalttypes",
+ "krbticketflags",
+ "krbticketpolicyreference",
+ "krbupenabled",
+ "kxrecord",
+ "l",
+ "labeleduri",
+ "lastlogintime",
+ "lastmodifiedby",
+ "lastmodifiedtime",
+ "ldapschemas",
+ "ldapsyntaxes",
+ "locrecord",
+ "loginshell",
+ "macaddress",
+ "mail",
+ "mailaccessdomain",
+ "mailalternateaddress",
+ "mailautoreplymode",
+ "mailautoreplytext",
+ "maildeliveryoption",
+ "mailenhanceduniquemember",
+ "mailforwardingaddress",
+ "mailhost",
+ "mailmessagestore",
+ "mailprogramdeliveryinfo",
+ "mailquota",
+ "mailroutingaddress",
+ "managedby",
+ "manager",
+ "matchingrules",
+ "matchingruleuse",
+ "mdrecord",
+ "member",
+ "memberallowcmd",
+ "membercertificatedescription",
+ "memberdenycmd",
+ "memberhost",
+ "membernisnetgroup",
+ "memberof",
+ "memberservice",
+ "memberuid",
+ "memberurl",
+ "memberuser",
+ "mepmanagedby",
+ "mepmanagedentry",
+ "mepmappedattr",
+ "meprdnattr",
+ "mepstaticattr",
+ "mgrpaddheader",
+ "mgrpallowedbroadcaster",
+ "mgrpalloweddomain",
+ "mgrpapprovepassword",
+ "mgrpbroadcasterpolicy",
+ "mgrpdeliverto",
+ "mgrperrorsto",
+ "mgrpmoderator",
+ "mgrpmsgmaxsize",
+ "mgrpmsgrejectaction",
+ "mgrpmsgrejecttext",
+ "mgrpnoduplicatechecks",
+ "mgrpremoveheader",
+ "mgrprfc822mailmember",
+ "minforecord",
+ "mobile",
+ "modifiersname",
+ "modifytimestamp",
+ "mozillacustom1",
+ "mozillacustom2",
+ "mozillacustom3",
+ "mozillacustom4",
+ "mozillahomecountryname",
+ "mozillahomelocalityname",
+ "mozillahomepostalcode",
+ "mozillahomestate",
+ "mozillahomestreet",
+ "mozillahomestreet2",
+ "mozillahomeurl",
+ "mozillanickname",
+ "mozillasecondemail",
+ "mozillausehtmlmail",
+ "mozillaworkstreet2",
+ "mozillaworkurl",
+ "multilinedescription",
+ "mxrecord",
+ "name",
+ "nameforms",
+ "namingcontexts",
+ "naptrrecord",
+ "netscapereversiblepassword",
+ "newrdn",
+ "newsuperior",
+ "nisdomain",
+ "nisdomainname",
+ "nismapentry",
+ "nismapname",
+ "nisnetgrouptriple",
+ "nisnetidgroup",
+ "nisnetidhost",
+ "nisnetiduser",
+ "nispublickey",
+ "nissecretkey",
+ "nsaccesslog",
+ "nsaccountlock",
+ "nsadminaccessaddresses",
+ "nsadminaccesshosts",
+ "nsadminaccountinfo",
+ "nsadmincachelifetime",
+ "nsadmincgiwaitpid",
+ "nsadmindomainname",
+ "nsadminenabledsgw",
+ "nsadminenableenduser",
+ "nsadminenduserhtmlindex",
+ "nsadmingroupname",
+ "nsadminoneacldir",
+ "nsadminsiedn",
+ "nsadminusers",
+ "nsaimid",
+ "nsbackendsuffix",
+ "nsbasedn",
+ "nsbinddn",
+ "nsbindpassword",
+ "nsbuildnumber",
+ "nsbuildsecurity",
+ "nscertconfig",
+ "nscertfile",
+ "nsclassname",
+ "nsconfigroot",
+ "nscpentrydn",
+ "nsdefaultacceptlanguage",
+ "nsdefaultobjectclass",
+ "nsdeleteclassname",
+ "nsdirectoryfailoverlist",
+ "nsdirectoryinforef",
+ "nsdirectoryurl",
+ "nsdisplayname",
+ "nsds50ruv",
+ "nsds5beginreplicarefresh",
+ "nsds5debugreplicatimeout",
+ "nsds5flags",
+ "nsds5replconflict",
+ "nsds5replicaautoreferral",
+ "nsds5replicabinddn",
+ "nsds5replicabindmethod",
+ "nsds5replicabusywaittime",
+ "nsds5replicachangecount",
+ "nsds5replicachangessentsincestartup",
+ "nsds5replicacredentials",
+ "nsds5replicahost",
+ "nsds5replicaid",
+ "nsds5replicalastinitend",
+ "nsds5replicalastinitstart",
+ "nsds5replicalastinitstatus",
+ "nsds5replicalastupdateend",
+ "nsds5replicalastupdatestart",
+ "nsds5replicalastupdatestatus",
+ "nsds5replicalegacyconsumer",
+ "nsds5replicaname",
+ "nsds5replicaport",
+ "nsds5replicapurgedelay",
+ "nsds5replicareferral",
+ "nsds5replicaroot",
+ "nsds5replicasessionpausetime",
+ "nsds5replicatedattributelist",
+ "nsds5replicatimeout",
+ "nsds5replicatombstonepurgeinterval",
+ "nsds5replicatransportinfo",
+ "nsds5replicatype",
+ "nsds5replicaupdateinprogress",
+ "nsds5replicaupdateschedule",
+ "nsds5task",
+ "nsds7directoryreplicasubtree",
+ "nsds7dirsynccookie",
+ "nsds7newwingroupsyncenabled",
+ "nsds7newwinusersyncenabled",
+ "nsds7windowsdomain",
+ "nsds7windowsreplicasubtree",
+ "nsecrecord",
+ "nsencryptionalgorithm",
+ "nserrorlog",
+ "nsexecref",
+ "nsexpirationdate",
+ "nsgrouprdncomponent",
+ "nshardwareplatform",
+ "nshelpref",
+ "nshostlocation",
+ "nsidletimeout",
+ "nsindextype",
+ "nsinstalledlocation",
+ "nsjarfilename",
+ "nskeyfile",
+ "nsldapschemaversion",
+ "nslicensedfor",
+ "nslicenseendtime",
+ "nslicensestarttime",
+ "nslogsuppress",
+ "nslookthroughlimit",
+ "nsmatchingrule",
+ "nsmsgdisallowaccess",
+ "nsmsgnummsgquota",
+ "nsnickname",
+ "nsnyr",
+ "nsosversion",
+ "nsparentuniqueid",
+ "nspidlog",
+ "nspreference",
+ "nsproductname",
+ "nsproductversion",
+ "nsrecord",
+ "nsrevisionnumber",
+ "nsrole",
+ "nsroledn",
+ "nsrolefilter",
+ "nsruvreplicalastmodified",
+ "nssaslmapbasedntemplate",
+ "nssaslmapfiltertemplate",
+ "nssaslmapregexstring",
+ "nsschemacsn",
+ "nssecureserverport",
+ "nsserialnumber",
+ "nsserveraddress",
+ "nsservercreationclassname",
+ "nsserverid",
+ "nsservermigrationclassname",
+ "nsserverport",
+ "nsserversecurity",
+ "nssizelimit",
+ "nsslapd-changelogsuffix",
+ "nsslapd-ldapiautodnsuffix",
+ "nsslapd-parent-suffix",
+ "nsslapd-plugindescription",
+ "nsslapd-pluginenabled",
+ "nsslapd-pluginid",
+ "nsslapd-plugininitfunc",
+ "nsslapd-pluginpath",
+ "nsslapd-plugintype",
+ "nsslapd-pluginvendor",
+ "nsslapd-pluginversion",
+ "nsslapd-suffix",
+ "nssnmpcontact",
+ "nssnmpdescription",
+ "nssnmpenabled",
+ "nssnmplocation",
+ "nssnmpmasterhost",
+ "nssnmpmasterport",
+ "nssnmpname",
+ "nssnmporganization",
+ "nsssl2",
+ "nsssl2ciphers",
+ "nsssl3",
+ "nsssl3ciphers",
+ "nsssl3sessiontimeout",
+ "nssslactivation",
+ "nssslclientauth",
+ "nssslpersonalityssl",
+ "nssslsessiontimeout",
+ "nssslsupportedciphers",
+ "nsssltoken",
+ "nsstate",
+ "nssuitespotuser",
+ "nssymmetrickey",
+ "nssynchuniqueattribute",
+ "nssynchuseridformat",
+ "nssystemindex",
+ "nstasklabel",
+ "nstimelimit",
+ "nsuniqueattribute",
+ "nsuniqueid",
+ "nsuseridformat",
+ "nsuserrdncomponent",
+ "nsvaluebin",
+ "nsvalueces",
+ "nsvaluecis",
+ "nsvaluedefault",
+ "nsvaluedescription",
+ "nsvaluedn",
+ "nsvalueflags",
+ "nsvaluehelpurl",
+ "nsvalueint",
+ "nsvaluesyntax",
+ "nsvaluetel",
+ "nsvaluetype",
+ "nsvendor",
+ "nsviewconfiguration",
+ "nsviewfilter",
+ "nswellknownjarfiles",
+ "nswmextendeduserprefs",
+ "ntgroupattributes",
+ "ntgroupcreatenewgroup",
+ "ntgroupdeletegroup",
+ "ntgroupdomainid",
+ "ntgroupid",
+ "ntgrouptype",
+ "ntuniqueid",
+ "ntuseracctexpires",
+ "ntuserauthflags",
+ "ntuserbadpwcount",
+ "ntusercodepage",
+ "ntusercomment",
+ "ntusercountrycode",
+ "ntusercreatenewaccount",
+ "ntuserdeleteaccount",
+ "ntuserdomainid",
+ "ntuserflags",
+ "ntuserhomedir",
+ "ntuserhomedirdrive",
+ "ntuserlastlogoff",
+ "ntuserlastlogon",
+ "ntuserlogonhours",
+ "ntuserlogonserver",
+ "ntusermaxstorage",
+ "ntusernumlogons",
+ "ntuserparms",
+ "ntuserpasswordexpired",
+ "ntuserprimarygroupid",
+ "ntuserpriv",
+ "ntuserprofile",
+ "ntuserscriptpath",
+ "ntuseruniqueid",
+ "ntuserunitsperweek",
+ "ntuserusrcomment",
+ "ntuserworkstations",
+ "numsubordinates",
+ "nxtrecord",
+ "o",
+ "objectclass",
+ "objectclasses",
+ "objectclassmap",
+ "oid",
+ "oncrpcnumber",
+ "onewaysync",
+ "organizationalstatus",
+ "ou",
+ "owner",
+ "pager",
+ "pamexcludesuffix",
+ "pamfallback",
+ "pamidattr",
+ "pamidmapmethod",
+ "pamincludesuffix",
+ "pammissingsuffix",
+ "pamsecure",
+ "pamservice",
+ "parentid",
+ "parentorganization",
+ "passwordallowchangetime",
+ "passwordchange",
+ "passwordchecksyntax",
+ "passwordexp",
+ "passwordexpirationtime",
+ "passwordexpwarned",
+ "passwordgracelimit",
+ "passwordgraceusertime",
+ "passwordhistory",
+ "passwordinhistory",
+ "passwordkeephistory",
+ "passwordlockout",
+ "passwordlockoutduration",
+ "passwordmaxage",
+ "passwordmaxfailure",
+ "passwordmaxrepeats",
+ "passwordmin8bit",
+ "passwordminage",
+ "passwordminalphas",
+ "passwordmincategories",
+ "passwordmindigits",
+ "passwordminlength",
+ "passwordminlowers",
+ "passwordminspecials",
+ "passwordmintokenlength",
+ "passwordminuppers",
+ "passwordmustchange",
+ "passwordresetduration",
+ "passwordresetfailurecount",
+ "passwordretrycount",
+ "passwordstoragescheme",
+ "passwordunlock",
+ "passwordwarning",
+ "personaltitle",
+ "photo",
+ "physicaldeliveryofficename",
+ "postaladdress",
+ "postalcode",
+ "postofficebox",
+ "preferreddeliverymethod",
+ "preferredlanguage",
+ "preferredlocale",
+ "preferredserverlist",
+ "preferredtimezone",
+ "printer-aliases",
+ "printer-charset-configured",
+ "printer-charset-supported",
+ "printer-color-supported",
+ "printer-compression-supported",
+ "printer-copies-supported",
+ "printer-current-operator",
+ "printer-delivery-orientation-supported",
+ "printer-document-format-supported",
+ "printer-finishings-supported",
+ "printer-generated-natural-language-supported",
+ "printer-info",
+ "printer-ipp-versions-supported",
+ "printer-job-k-octets-supported",
+ "printer-job-priority-supported",
+ "printer-location",
+ "printer-make-and-model",
+ "printer-media-local-supported",
+ "printer-media-supported",
+ "printer-more-info",
+ "printer-multiple-document-jobs-supported",
+ "printer-name",
+ "printer-natural-language-configured",
+ "printer-number-up-supported",
+ "printer-output-features-supported",
+ "printer-pages-per-minute",
+ "printer-pages-per-minute-color",
+ "printer-print-quality-supported",
+ "printer-resolution-supported",
+ "printer-service-person",
+ "printer-sides-supported",
+ "printer-stacking-order-supported",
+ "printer-uri",
+ "printer-xri-supported",
+ "profilettl",
+ "ptrrecord",
+ "pwdpolicysubentry",
+ "ref",
+ "registeredaddress",
+ "replicaabandonedchanges",
+ "replicabeginorc",
+ "replicabinddn",
+ "replicabindmethod",
+ "replicacfupdated",
+ "replicacredentials",
+ "replicaentryfilter",
+ "replicahost",
+ "replicalastrelevantchange",
+ "replicanickname",
+ "replicaport",
+ "replicaroot",
+ "replicatedattributelist",
+ "replicaupdatefailedat",
+ "replicaupdatereplayed",
+ "replicaupdateschedule",
+ "replicausessl",
+ "retrycountresettime",
+ "roleoccupant",
+ "roomnumber",
+ "rrsigrecord",
+ "sabayonprofilename",
+ "sabayonprofileurl",
+ "sambaacctflags",
+ "sambaalgorithmicridbase",
+ "sambabadpasswordcount",
+ "sambabadpasswordtime",
+ "sambabooloption",
+ "sambadomainname",
+ "sambaforcelogoff",
+ "sambagrouptype",
+ "sambahomedrive",
+ "sambahomepath",
+ "sambaintegeroption",
+ "sambakickofftime",
+ "sambalmpassword",
+ "sambalockoutduration",
+ "sambalockoutobservationwindow",
+ "sambalockoutthreshold",
+ "sambalogofftime",
+ "sambalogonhours",
+ "sambalogonscript",
+ "sambalogontime",
+ "sambalogontochgpwd",
+ "sambamaxpwdage",
+ "sambaminpwdage",
+ "sambaminpwdlength",
+ "sambamungeddial",
+ "sambanextgrouprid",
+ "sambanextrid",
+ "sambanextuserrid",
+ "sambantpassword",
+ "sambaoptionname",
+ "sambapasswordhistory",
+ "sambaprimarygroupsid",
+ "sambaprofilepath",
+ "sambapwdcanchange",
+ "sambapwdhistorylength",
+ "sambapwdlastset",
+ "sambapwdmustchange",
+ "sambarefusemachinepwdchange",
+ "sambasharename",
+ "sambasid",
+ "sambasidlist",
+ "sambastringlistoption",
+ "sambastringoption",
+ "sambatrustflags",
+ "sambauserworkstations",
+ "searchguide",
+ "searchtimelimit",
+ "secretary",
+ "seealso",
+ "serialnumber",
+ "serverhostname",
+ "serverproductname",
+ "serverroot",
+ "serverversionnumber",
+ "serviceauthenticationmethod",
+ "servicecategory",
+ "servicecredentiallevel",
+ "servicesearchdescriptor",
+ "shadowexpire",
+ "shadowflag",
+ "shadowinactive",
+ "shadowlastchange",
+ "shadowmax",
+ "shadowmin",
+ "shadowwarning",
+ "sigrecord",
+ "sn",
+ "sourcehost",
+ "sourcehostcategory",
+ "srvrecord",
+ "sshfprecord",
+ "st",
+ "street",
+ "structuralobjectclass",
+ "subschemasubentry",
+ "subtreeaci",
+ "sudocmd",
+ "sudocommand",
+ "sudohost",
+ "sudooption",
+ "sudorunas",
+ "sudouser",
+ "supportedalgorithms",
+ "supportedcontrol",
+ "supportedextension",
+ "supportedfeatures",
+ "supportedldapversion",
+ "supportedsaslmechanisms",
+ "targetdn",
+ "telephonenumber",
+ "teletexterminalidentifier",
+ "telexnumber",
+ "title",
+ "trustmodel",
+ "ttl",
+ "txtrecord",
+ "uid",
+ "uidnumber",
+ "uniqueidentifier",
+ "uniquemember",
+ "usercategory",
+ "usercertificate",
+ "userclass",
+ "userpassword",
+ "userpkcs12",
+ "usersmimecertificate",
+ "vacationenddate",
+ "vacationstartdate",
+ "vendorname",
+ "vendorversion",
+ "vlvbase",
+ "vlvenabled",
+ "vlvfilter",
+ "vlvscope",
+ "vlvsort",
+ "vlvuses",
+ "winsyncinterval",
+ "x121address",
+ "x500uniqueidentifier"
+ ],
+ "attribute_members": {},
+ "bindable": false,
+ "container_dn": "cn=costemplates,cn=accounts",
+ "default_attributes": [
+ "cn",
+ "cospriority",
+ "krbpwdpolicyreference"
+ ],
+ "hidden_attributes": [
+ "objectclass",
+ "aci"
+ ],
+ "label": "Entry",
+ "methods": [
+ "add",
+ "del",
+ "find",
+ "mod",
+ "show"
+ ],
+ "name": "cosentry",
+ "object_class": [
+ "top",
+ "costemplate",
+ "extensibleobject",
+ "krbcontainer"
+ ],
+ "object_class_config": null,
+ "object_name": "entry",
+ "object_name_plural": "entries",
+ "parent_object": "",
+ "primary_key": "cn",
+ "rdn_attribute": "",
+ "relationships": {
+ "member": [
+ "Member",
+ "",
+ "no_"
+ ],
+ "memberindirect": [
+ "Indirect Member",
+ null,
+ "no_indirect_"
+ ],
+ "memberof": [
+ "Member Of",
+ "in_",
+ "not_in_"
+ ]
+ },
+ "takes_params": [
+ {
+ "alwaysask": false,
+ "attribute": false,
+ "autofill": false,
+ "class": "Str",
+ "cli_name": "cn",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "<cn>",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "<cn>",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "cn",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": true,
+ "query": false,
+ "required": true,
+ "type": "unicode"
+ },
+ {
+ "alwaysask": false,
+ "attribute": false,
+ "autofill": false,
+ "class": "Str",
+ "cli_name": "krbpwdpolicyreference",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "<krbpwdpolicyreference>",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "<krbpwdpolicyreference>",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "krbpwdpolicyreference",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": false,
+ "query": false,
+ "required": true,
+ "type": "unicode"
+ },
+ {
+ "alwaysask": false,
+ "attribute": false,
+ "autofill": false,
+ "class": "Int",
+ "cli_name": "cospriority",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "<cospriority>",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "<cospriority>",
+ "maxvalue": null,
+ "minvalue": 0,
+ "multivalue": false,
+ "name": "cospriority",
+ "primary_key": false,
+ "query": false,
+ "required": true,
+ "type": "int"
+ }
+ ],
+ "uuid_attribute": ""
+ },
+ "delegation": {
+ "bindable": false,
+ "label": "Delegation",
+ "methods": [
+ "add",
+ "del",
+ "find",
+ "mod",
+ "show"
+ ],
+ "name": "delegation",
+ "object_name": [
+ "delegation"
+ ],
+ "object_name_plural": [
+ "delegation"
+ ],
+ "primary_key": "aciname",
+ "takes_params": [
+ {
+ "alwaysask": false,
+ "attribute": false,
+ "autofill": false,
+ "class": "Str",
+ "cli_name": "name",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Delegation name",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "Delegation name",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "aciname",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": true,
+ "query": false,
+ "required": true,
+ "type": "unicode"
+ },
+ {
+ "alwaysask": false,
+ "attribute": false,
+ "autofill": false,
+ "class": "List",
+ "cli_name": "permissions",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Comma-separated list of permissions to grant (read, write). Default is write.",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "Permissions",
+ "multivalue": true,
+ "name": "permissions",
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "separator": ",",
+ "skipspace": true,
+ "type": "tuple"
+ },
+ {
+ "alwaysask": false,
+ "attribute": false,
+ "autofill": false,
+ "class": "List",
+ "cli_name": "attrs",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Comma-separated list of attributes",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "Attributes",
+ "multivalue": true,
+ "name": "attrs",
+ "primary_key": false,
+ "query": false,
+ "required": true,
+ "separator": ",",
+ "skipspace": true,
+ "type": "tuple"
+ },
+ {
+ "alwaysask": false,
+ "attribute": false,
+ "autofill": false,
+ "class": "Str",
+ "cli_name": "membergroup",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "User group to apply delegation to",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "Member user group",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "memberof",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": false,
+ "query": false,
+ "required": true,
+ "type": "unicode"
+ },
+ {
+ "alwaysask": false,
+ "attribute": false,
+ "autofill": false,
+ "class": "Str",
+ "cli_name": "group",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "User group ACI grants access to",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "User group",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "group",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": false,
+ "query": false,
+ "required": true,
+ "type": "unicode"
+ }
+ ]
+ },
+ "dns": {
+ "default_attributes": [
+ "idnsname",
+ "idnszoneactive",
+ "idnssoamname",
+ "idnssoarname",
+ "idnssoaserial",
+ "idnssoarefresh",
+ "idnssoaretry",
+ "idnssoaexpire",
+ "idnssoaminimum"
+ ],
+ "label": "DNS",
+ "methods": [
+ "add",
+ "del",
+ "find",
+ "mod",
+ "show"
+ ],
+ "name": "dns",
+ "primary_key": "idnsname",
+ "takes_params": [
+ {
+ "alwaysask": false,
+ "attribute": false,
+ "autofill": false,
+ "class": "Str",
+ "cli_name": "name",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Zone name (FQDN)",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "Zone",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "idnsname",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": true,
+ "query": false,
+ "required": true,
+ "type": "unicode"
+ },
+ {
+ "alwaysask": false,
+ "attribute": false,
+ "autofill": false,
+ "class": "Str",
+ "cli_name": "name_server",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Authoritative name server",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "Authoritative name server",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "idnssoamname",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": false,
+ "query": false,
+ "required": true,
+ "type": "unicode"
+ },
+ {
+ "alwaysask": false,
+ "attribute": false,
+ "autofill": false,
+ "class": "Str",
+ "cli_name": "admin_email",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "administrator e-mail address",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "administrator e-mail address",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "idnssoarname",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": false,
+ "query": false,
+ "required": true,
+ "type": "unicode"
+ },
+ {
+ "alwaysask": false,
+ "attribute": false,
+ "autofill": false,
+ "class": "Int",
+ "cli_name": "serial",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "SOA serial",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "SOA serial",
+ "maxvalue": null,
+ "minvalue": null,
+ "multivalue": false,
+ "name": "idnssoaserial",
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "int"
+ },
+ {
+ "alwaysask": false,
+ "attribute": false,
+ "autofill": false,
+ "class": "Int",
+ "cli_name": "refresh",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "SOA refresh",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "SOA refresh",
+ "maxvalue": null,
+ "minvalue": null,
+ "multivalue": false,
+ "name": "idnssoarefresh",
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "int"
+ },
+ {
+ "alwaysask": false,
+ "attribute": false,
+ "autofill": false,
+ "class": "Int",
+ "cli_name": "retry",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "SOA retry",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "SOA retry",
+ "maxvalue": null,
+ "minvalue": null,
+ "multivalue": false,
+ "name": "idnssoaretry",
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "int"
+ },
+ {
+ "alwaysask": false,
+ "attribute": false,
+ "autofill": false,
+ "class": "Int",
+ "cli_name": "expire",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "SOA expire",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "SOA expire",
+ "maxvalue": null,
+ "minvalue": null,
+ "multivalue": false,
+ "name": "idnssoaexpire",
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "int"
+ },
+ {
+ "alwaysask": false,
+ "attribute": false,
+ "autofill": false,
+ "class": "Int",
+ "cli_name": "minimum",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "SOA minimum",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "SOA minimum",
+ "maxvalue": null,
+ "minvalue": null,
+ "multivalue": false,
+ "name": "idnssoaminimum",
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "int"
+ },
+ {
+ "alwaysask": false,
+ "attribute": false,
+ "autofill": false,
+ "class": "Int",
+ "cli_name": "ttl",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "SOA time to live",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "SOA time to live",
+ "maxvalue": null,
+ "minvalue": null,
+ "multivalue": false,
+ "name": "dnsttl",
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "int"
+ },
+ {
+ "alwaysask": false,
+ "attribute": false,
+ "autofill": false,
+ "class": "StrEnum",
+ "cli_name": "class",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "SOA class",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "SOA class",
+ "multivalue": false,
+ "name": "dnsclass",
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "unicode",
+ "values": [
+ "IN",
+ "CS",
+ "CH",
+ "HS"
+ ]
+ },
+ {
+ "alwaysask": false,
+ "attribute": false,
+ "autofill": true,
+ "class": "Flag",
+ "cli_name": "allow_dynupdate",
+ "cli_short_name": null,
+ "default": false,
+ "doc": "allow dynamic update?",
+ "exclude": null,
+ "falsehoods": [
+ 0,
+ "0",
+ "false"
+ ],
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "allow dynamic update?",
+ "multivalue": false,
+ "name": "idnsallowdynupdate",
+ "primary_key": false,
+ "query": false,
+ "required": true,
+ "truths": [
+ "1",
+ 1,
+ "true"
+ ],
+ "type": "bool"
+ },
+ {
+ "alwaysask": false,
+ "attribute": false,
+ "autofill": false,
+ "class": "Str",
+ "cli_name": "update_policy",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "BIND update policy",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "BIND update policy",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "idnsupdatepolicy",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "unicode"
+ }
+ ]
+ },
+ "dnsrecord": {
+ "aciattrs": [
+ "a6record",
+ "aaaarecord",
+ "afsdbrecord",
+ "arecord",
+ "certrecord",
+ "cn",
+ "cnamerecord",
+ "dnamerecord",
+ "dnsclass",
+ "dnsttl",
+ "dsrecord",
+ "hinforecord",
+ "idnsallowdynupdate",
+ "idnsname",
+ "keyrecord",
+ "kxrecord",
+ "locrecord",
+ "mdrecord",
+ "minforecord",
+ "mxrecord",
+ "naptrrecord",
+ "nsecrecord",
+ "nsrecord",
+ "nxtrecord",
+ "objectclass",
+ "ptrrecord",
+ "rrsigrecord",
+ "sigrecord",
+ "srvrecord",
+ "sshfprecord",
+ "txtrecord"
+ ],
+ "attribute_members": {},
+ "bindable": false,
+ "container_dn": "cn=dns",
+ "default_attributes": [
+ "arecord",
+ "aaaarecord",
+ "a6record",
+ "afsdbrecord",
+ "aplrecord",
+ "certrecord",
+ "cnamerecord",
+ "dhcidrecord",
+ "dlvrecord",
+ "dnamerecord",
+ "dnskeyrecord",
+ "dsrecord",
+ "hinforecord",
+ "hiprecord",
+ "ipseckeyrecord",
+ "keyrecord",
+ "kxrecord",
+ "locrecord",
+ "mdrecord",
+ "minforecord",
+ "mxrecord",
+ "naptrrecord",
+ "nsrecord",
+ "nsecrecord",
+ "nsec3record",
+ "nsec3paramrecord",
+ "nxtrecord",
+ "ptrrecord",
+ "rrsigrecord",
+ "rprecord",
+ "sigrecord",
+ "spfrecord",
+ "srvrecord",
+ "sshfprecord",
+ "tarecord",
+ "tkeyrecord",
+ "tsigrecord",
+ "txtrecord",
+ "idnsname"
+ ],
+ "hidden_attributes": [
+ "objectclass",
+ "aci"
+ ],
+ "label": "DNS resource record",
+ "methods": [
+ "add",
+ "add_record",
+ "del",
+ "delentry",
+ "find",
+ "show"
+ ],
+ "name": "dnsrecord",
+ "object_class": [
+ "top",
+ "idnsrecord"
+ ],
+ "object_class_config": null,
+ "object_name": "DNS resource record",
+ "object_name_plural": "DNS resource records",
+ "parent_object": "dnszone",
+ "primary_key": "idnsname",
+ "rdn_attribute": "",
+ "relationships": {
+ "member": [
+ "Member",
+ "",
+ "no_"
+ ],
+ "memberindirect": [
+ "Indirect Member",
+ null,
+ "no_indirect_"
+ ],
+ "memberof": [
+ "Member Of",
+ "in_",
+ "not_in_"
+ ]
+ },
+ "takes_params": [
+ {
+ "alwaysask": false,
+ "attribute": false,
+ "autofill": false,
+ "class": "Str",
+ "cli_name": "name",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Record name",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "Record name",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "idnsname",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": true,
+ "query": false,
+ "required": true,
+ "type": "unicode"
+ },
+ {
+ "alwaysask": false,
+ "attribute": false,
+ "autofill": false,
+ "class": "Int",
+ "cli_name": "ttl",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Time to live",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "Time to live",
+ "maxvalue": null,
+ "minvalue": null,
+ "multivalue": false,
+ "name": "dnsttl",
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "int"
+ },
+ {
+ "alwaysask": false,
+ "attribute": false,
+ "autofill": false,
+ "class": "StrEnum",
+ "cli_name": "class",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "DNS class",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "Class",
+ "multivalue": false,
+ "name": "dnsclass",
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "unicode",
+ "values": [
+ "IN",
+ "CS",
+ "CH",
+ "HS"
+ ]
+ }
+ ],
+ "uuid_attribute": ""
+ },
+ "dnszone": {
+ "aciattrs": [
+ "a6record",
+ "aaaarecord",
+ "afsdbrecord",
+ "arecord",
+ "certrecord",
+ "cn",
+ "cnamerecord",
+ "dnamerecord",
+ "dnsclass",
+ "dnsttl",
+ "dsrecord",
+ "hinforecord",
+ "idnsallowdynupdate",
+ "idnsname",
+ "idnssoaexpire",
+ "idnssoaminimum",
+ "idnssoamname",
+ "idnssoarefresh",
+ "idnssoaretry",
+ "idnssoarname",
+ "idnssoaserial",
+ "idnsupdatepolicy",
+ "idnszoneactive",
+ "keyrecord",
+ "kxrecord",
+ "locrecord",
+ "mdrecord",
+ "minforecord",
+ "mxrecord",
+ "naptrrecord",
+ "nsecrecord",
+ "nsrecord",
+ "nxtrecord",
+ "objectclass",
+ "ptrrecord",
+ "rrsigrecord",
+ "sigrecord",
+ "srvrecord",
+ "sshfprecord",
+ "txtrecord"
+ ],
+ "attribute_members": {},
+ "bindable": false,
+ "container_dn": "cn=dns",
+ "default_attributes": [
+ "idnsname",
+ "idnszoneactive",
+ "idnssoamname",
+ "idnssoarname",
+ "idnssoaserial",
+ "idnssoarefresh",
+ "idnssoaretry",
+ "idnssoaexpire",
+ "idnssoaminimum",
+ "arecord",
+ "aaaarecord",
+ "a6record",
+ "afsdbrecord",
+ "aplrecord",
+ "certrecord",
+ "cnamerecord",
+ "dhcidrecord",
+ "dlvrecord",
+ "dnamerecord",
+ "dnskeyrecord",
+ "dsrecord",
+ "hinforecord",
+ "hiprecord",
+ "ipseckeyrecord",
+ "keyrecord",
+ "kxrecord",
+ "locrecord",
+ "mdrecord",
+ "minforecord",
+ "mxrecord",
+ "naptrrecord",
+ "nsrecord",
+ "nsecrecord",
+ "nsec3record",
+ "nsec3paramrecord",
+ "nxtrecord",
+ "ptrrecord",
+ "rrsigrecord",
+ "rprecord",
+ "sigrecord",
+ "spfrecord",
+ "srvrecord",
+ "sshfprecord",
+ "tarecord",
+ "tkeyrecord",
+ "tsigrecord",
+ "txtrecord"
+ ],
+ "hidden_attributes": [
+ "objectclass",
+ "aci"
+ ],
+ "label": "DNS",
+ "methods": [
+ "add",
+ "del",
+ "disable",
+ "enable",
+ "find",
+ "mod",
+ "show"
+ ],
+ "name": "dnszone",
+ "object_class": [
+ "top",
+ "idnsrecord",
+ "idnszone"
+ ],
+ "object_class_config": null,
+ "object_name": "DNS zone",
+ "object_name_plural": "DNS zones",
+ "parent_object": "",
+ "primary_key": "idnsname",
+ "rdn_attribute": "",
+ "relationships": {
+ "member": [
+ "Member",
+ "",
+ "no_"
+ ],
+ "memberindirect": [
+ "Indirect Member",
+ null,
+ "no_indirect_"
+ ],
+ "memberof": [
+ "Member Of",
+ "in_",
+ "not_in_"
+ ]
+ },
+ "takes_params": [
+ {
+ "alwaysask": false,
+ "attribute": false,
+ "autofill": false,
+ "class": "Str",
+ "cli_name": "name",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Zone name (FQDN)",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "Zone name",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "idnsname",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": true,
+ "query": false,
+ "required": true,
+ "type": "unicode"
+ },
+ {
+ "alwaysask": false,
+ "attribute": false,
+ "autofill": false,
+ "class": "Str",
+ "cli_name": "name_server",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Authoritative name server",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "Authoritative name server",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "idnssoamname",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": false,
+ "query": false,
+ "required": true,
+ "type": "unicode"
+ },
+ {
+ "alwaysask": false,
+ "attribute": false,
+ "autofill": false,
+ "class": "Str",
+ "cli_name": "admin_email",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Administrator e-mail address",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "Administrator e-mail address",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "idnssoarname",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": false,
+ "query": false,
+ "required": true,
+ "type": "unicode"
+ },
+ {
+ "alwaysask": false,
+ "attribute": false,
+ "autofill": true,
+ "class": "Int",
+ "cli_name": "serial",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "SOA record serial number",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "SOA serial",
+ "maxvalue": null,
+ "minvalue": null,
+ "multivalue": false,
+ "name": "idnssoaserial",
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "int"
+ },
+ {
+ "alwaysask": false,
+ "attribute": false,
+ "autofill": true,
+ "class": "Int",
+ "cli_name": "refresh",
+ "cli_short_name": null,
+ "default": 3600,
+ "doc": "SOA record refresh time",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "SOA refresh",
+ "maxvalue": null,
+ "minvalue": null,
+ "multivalue": false,
+ "name": "idnssoarefresh",
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "int"
+ },
+ {
+ "alwaysask": false,
+ "attribute": false,
+ "autofill": true,
+ "class": "Int",
+ "cli_name": "retry",
+ "cli_short_name": null,
+ "default": 900,
+ "doc": "SOA record retry time",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "SOA retry",
+ "maxvalue": null,
+ "minvalue": null,
+ "multivalue": false,
+ "name": "idnssoaretry",
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "int"
+ },
+ {
+ "alwaysask": false,
+ "attribute": false,
+ "autofill": true,
+ "class": "Int",
+ "cli_name": "expire",
+ "cli_short_name": null,
+ "default": 1209600,
+ "doc": "SOA record expire time",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "SOA expire",
+ "maxvalue": null,
+ "minvalue": null,
+ "multivalue": false,
+ "name": "idnssoaexpire",
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "int"
+ },
+ {
+ "alwaysask": false,
+ "attribute": false,
+ "autofill": true,
+ "class": "Int",
+ "cli_name": "minimum",
+ "cli_short_name": null,
+ "default": 3600,
+ "doc": "SOA record minimum value",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "SOA minimum",
+ "maxvalue": null,
+ "minvalue": null,
+ "multivalue": false,
+ "name": "idnssoaminimum",
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "int"
+ },
+ {
+ "alwaysask": false,
+ "attribute": false,
+ "autofill": false,
+ "class": "Int",
+ "cli_name": "maximum",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "SOA record maximum value",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "SOA maximum",
+ "maxvalue": null,
+ "minvalue": null,
+ "multivalue": false,
+ "name": "idnssoamaximum",
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "int"
+ },
+ {
+ "alwaysask": false,
+ "attribute": false,
+ "autofill": false,
+ "class": "Int",
+ "cli_name": "ttl",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "SOA record time to live",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "SOA time to live",
+ "maxvalue": null,
+ "minvalue": null,
+ "multivalue": false,
+ "name": "dnsttl",
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "int"
+ },
+ {
+ "alwaysask": false,
+ "attribute": false,
+ "autofill": false,
+ "class": "StrEnum",
+ "cli_name": "class",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "SOA record class",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "SOA class",
+ "multivalue": false,
+ "name": "dnsclass",
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "unicode",
+ "values": [
+ "IN",
+ "CS",
+ "CH",
+ "HS"
+ ]
+ },
+ {
+ "alwaysask": false,
+ "attribute": false,
+ "autofill": false,
+ "class": "Str",
+ "cli_name": "update_policy",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "BIND update policy",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "BIND update policy",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "idnsupdatepolicy",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "unicode"
+ },
+ {
+ "alwaysask": false,
+ "attribute": true,
+ "autofill": true,
+ "class": "Flag",
+ "cli_name": "zone_active",
+ "cli_short_name": null,
+ "default": false,
+ "doc": "Is zone active?",
+ "exclude": null,
+ "falsehoods": [
+ 0,
+ "0",
+ "false"
+ ],
+ "flags": [
+ "no_update",
+ "no_create"
+ ],
+ "hint": null,
+ "include": null,
+ "label": "Active zone",
+ "multivalue": false,
+ "name": "idnszoneactive",
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "truths": [
+ "1",
+ 1,
+ "true"
+ ],
+ "type": "bool"
+ },
+ {
+ "alwaysask": false,
+ "attribute": true,
+ "autofill": true,
+ "class": "Flag",
+ "cli_name": "allow_dynupdate",
+ "cli_short_name": null,
+ "default": false,
+ "doc": "Allow dynamic update?",
+ "exclude": null,
+ "falsehoods": [
+ 0,
+ "0",
+ "false"
+ ],
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "Dynamic update",
+ "multivalue": false,
+ "name": "idnsallowdynupdate",
+ "primary_key": false,
+ "query": false,
+ "required": true,
+ "truths": [
+ "1",
+ 1,
+ "true"
+ ],
+ "type": "bool"
+ }
+ ],
+ "uuid_attribute": ""
+ },
+ "group": {
+ "aciattrs": [
+ "businesscategory",
+ "cn",
+ "description",
+ "gidnumber",
+ "ipauniqueid",
+ "member",
+ "memberof",
+ "memberuid",
+ "mepmanagedby",
+ "o",
+ "objectclass",
+ "ou",
+ "owner",
+ "seealso",
+ "userpassword"
+ ],
+ "attribute_members": {
+ "member": [
+ "user",
+ "group"
+ ],
+ "memberindirect": [
+ "user",
+ "group",
+ "netgroup",
+ "role"
+ ],
+ "memberof": [
+ "group",
+ "netgroup",
+ "role"
+ ]
+ },
+ "bindable": false,
+ "container_dn": "cn=groups,cn=accounts",
+ "default_attributes": [
+ "cn",
+ "description",
+ "gidnumber",
+ "member",
+ "memberof",
+ "memberindirect"
+ ],
+ "hidden_attributes": [
+ "objectclass",
+ "aci"
+ ],
+ "label": "User Groups",
+ "methods": [
+ "add",
+ "add_member",
+ "del",
+ "detach",
+ "find",
+ "mod",
+ "remove_member",
+ "show"
+ ],
+ "name": "group",
+ "object_class": [
+ "ipausergroup"
+ ],
+ "object_class_config": "ipagroupobjectclasses",
+ "object_name": "group",
+ "object_name_plural": "groups",
+ "parent_object": "",
+ "primary_key": "cn",
+ "rdn_attribute": "",
+ "relationships": {
+ "member": [
+ "Member",
+ "",
+ "no_"
+ ],
+ "memberindirect": [
+ "Indirect Member",
+ null,
+ "no_indirect_"
+ ],
+ "memberof": [
+ "Member Of",
+ "in_",
+ "not_in_"
+ ]
+ },
+ "takes_params": [
+ {
+ "alwaysask": false,
+ "attribute": false,
+ "autofill": false,
+ "class": "Str",
+ "cli_name": "group_name",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Group name",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "Group name",
+ "length": null,
+ "maxlength": 255,
+ "minlength": null,
+ "multivalue": false,
+ "name": "cn",
+ "pattern": "^[a-zA-Z0-9_.][a-zA-Z0-9_.-]{0,252}[a-zA-Z0-9_.$-]?$",
+ "pattern_errmsg": "may only include letters, numbers, _, -, . and $",
+ "primary_key": true,
+ "query": false,
+ "required": true,
+ "type": "unicode"
+ },
+ {
+ "alwaysask": false,
+ "attribute": false,
+ "autofill": false,
+ "class": "Str",
+ "cli_name": "desc",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Group description",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "Description",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "description",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": false,
+ "query": false,
+ "required": true,
+ "type": "unicode"
+ },
+ {
+ "alwaysask": false,
+ "attribute": false,
+ "autofill": false,
+ "class": "Int",
+ "cli_name": "gid",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "GID (use this option to set it manually)",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "GID",
+ "maxvalue": null,
+ "minvalue": null,
+ "multivalue": false,
+ "name": "gidnumber",
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "int"
+ }
+ ],
+ "uuid_attribute": "ipauniqueid"
+ },
+ "hbacrule": {
+ "aciattrs": [
+ "accessruletype",
+ "accesstime",
+ "cn",
+ "description",
+ "externalhost",
+ "hostcategory",
+ "ipaenabledflag",
+ "ipauniqueid",
+ "memberhost",
+ "memberservice",
+ "memberuser",
+ "servicecategory",
+ "sourcehost",
+ "sourcehostcategory",
+ "usercategory"
+ ],
+ "attribute_members": {
+ "memberhost": [
+ "host",
+ "hostgroup"
+ ],
+ "memberservice": [
+ "hbacsvc",
+ "hbacsvcgroup"
+ ],
+ "memberuser": [
+ "user",
+ "group"
+ ],
+ "sourcehost": [
+ "host",
+ "hostgroup"
+ ]
+ },
+ "bindable": false,
+ "container_dn": "cn=hbac",
+ "default_attributes": [
+ "cn",
+ "accessruletype",
+ "ipaenabledflag",
+ "description",
+ "usercategory",
+ "hostcategory",
+ "sourcehostcategory",
+ "servicecategory",
+ "ipaenabledflag",
+ "memberuser",
+ "sourcehost",
+ "memberhost",
+ "memberservice",
+ "memberhostgroup"
+ ],
+ "hidden_attributes": [
+ "objectclass",
+ "aci"
+ ],
+ "label": "HBAC",
+ "methods": [
+ "add",
+ "add_host",
+ "add_service",
+ "add_sourcehost",
+ "add_user",
+ "del",
+ "disable",
+ "enable",
+ "find",
+ "mod",
+ "remove_host",
+ "remove_service",
+ "remove_sourcehost",
+ "remove_user",
+ "show"
+ ],
+ "name": "hbacrule",
+ "object_class": [
+ "ipaassociation",
+ "ipahbacrule"
+ ],
+ "object_class_config": null,
+ "object_name": "HBAC rule",
+ "object_name_plural": "HBAC rules",
+ "parent_object": "",
+ "primary_key": "cn",
+ "rdn_attribute": "ipauniqueid",
+ "relationships": {
+ "member": [
+ "Member",
+ "",
+ "no_"
+ ],
+ "memberindirect": [
+ "Indirect Member",
+ null,
+ "no_indirect_"
+ ],
+ "memberof": [
+ "Member Of",
+ "in_",
+ "not_in_"
+ ]
+ },
+ "takes_params": [
+ {
+ "alwaysask": false,
+ "attribute": false,
+ "autofill": false,
+ "class": "Str",
+ "cli_name": "name",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Rule name",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "Rule name",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "cn",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": true,
+ "query": false,
+ "required": true,
+ "type": "unicode"
+ },
+ {
+ "alwaysask": false,
+ "attribute": false,
+ "autofill": false,
+ "class": "StrEnum",
+ "cli_name": "type",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Rule type (allow or deny)",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "Rule type",
+ "multivalue": false,
+ "name": "accessruletype",
+ "primary_key": false,
+ "query": false,
+ "required": true,
+ "type": "unicode",
+ "values": [
+ "allow",
+ "deny"
+ ]
+ },
+ {
+ "alwaysask": false,
+ "attribute": false,
+ "autofill": false,
+ "class": "StrEnum",
+ "cli_name": "usercat",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "User category the rule applies to",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "User category",
+ "multivalue": false,
+ "name": "usercategory",
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "unicode",
+ "values": [
+ "all"
+ ]
+ },
+ {
+ "alwaysask": false,
+ "attribute": false,
+ "autofill": false,
+ "class": "StrEnum",
+ "cli_name": "hostcat",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Host category the rule applies to",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "Host category",
+ "multivalue": false,
+ "name": "hostcategory",
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "unicode",
+ "values": [
+ "all"
+ ]
+ },
+ {
+ "alwaysask": false,
+ "attribute": false,
+ "autofill": false,
+ "class": "StrEnum",
+ "cli_name": "srchostcat",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Source host category the rule applies to",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "Source host category",
+ "multivalue": false,
+ "name": "sourcehostcategory",
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "unicode",
+ "values": [
+ "all"
+ ]
+ },
+ {
+ "alwaysask": false,
+ "attribute": false,
+ "autofill": false,
+ "class": "StrEnum",
+ "cli_name": "servicecat",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Service category the rule applies to",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "Service category",
+ "multivalue": false,
+ "name": "servicecategory",
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "unicode",
+ "values": [
+ "all"
+ ]
+ },
+ {
+ "alwaysask": false,
+ "attribute": false,
+ "autofill": false,
+ "class": "Str",
+ "cli_name": "desc",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Description",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "Description",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "description",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "unicode"
+ },
+ {
+ "alwaysask": false,
+ "attribute": false,
+ "autofill": true,
+ "class": "Flag",
+ "cli_name": "ipaenabledflag",
+ "cli_short_name": null,
+ "default": false,
+ "doc": "Enabled",
+ "exclude": null,
+ "falsehoods": [
+ 0,
+ "0",
+ "false"
+ ],
+ "flags": [
+ "no_update",
+ "no_create",
+ "no_search"
+ ],
+ "hint": null,
+ "include": null,
+ "label": "Enabled",
+ "multivalue": false,
+ "name": "ipaenabledflag",
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "truths": [
+ "1",
+ 1,
+ "true"
+ ],
+ "type": "bool"
+ },
+ {
+ "alwaysask": false,
+ "attribute": false,
+ "autofill": false,
+ "class": "Str",
+ "cli_name": "memberuser_user",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Users",
+ "exclude": null,
+ "flags": [
+ "no_update",
+ "no_create",
+ "no_search"
+ ],
+ "hint": null,
+ "include": null,
+ "label": "Users",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "memberuser_user",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "unicode"
+ },
+ {
+ "alwaysask": false,
+ "attribute": false,
+ "autofill": false,
+ "class": "Str",
+ "cli_name": "memberuser_group",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Groups",
+ "exclude": null,
+ "flags": [
+ "no_update",
+ "no_create",
+ "no_search"
+ ],
+ "hint": null,
+ "include": null,
+ "label": "Groups",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "memberuser_group",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "unicode"
+ },
+ {
+ "alwaysask": false,
+ "attribute": false,
+ "autofill": false,
+ "class": "Str",
+ "cli_name": "memberhost_host",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Hosts",
+ "exclude": null,
+ "flags": [
+ "no_update",
+ "no_create",
+ "no_search"
+ ],
+ "hint": null,
+ "include": null,
+ "label": "Hosts",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "memberhost_host",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "unicode"
+ },
+ {
+ "alwaysask": false,
+ "attribute": false,
+ "autofill": false,
+ "class": "Str",
+ "cli_name": "memberhost_hostgroup",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Host Groups",
+ "exclude": null,
+ "flags": [
+ "no_update",
+ "no_create",
+ "no_search"
+ ],
+ "hint": null,
+ "include": null,
+ "label": "Host Groups",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "memberhost_hostgroup",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "unicode"
+ },
+ {
+ "alwaysask": false,
+ "attribute": false,
+ "autofill": false,
+ "class": "Str",
+ "cli_name": "sourcehost_host",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Source hosts",
+ "exclude": null,
+ "flags": [
+ "no_update",
+ "no_create",
+ "no_search"
+ ],
+ "hint": null,
+ "include": null,
+ "label": "Source hosts",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "sourcehost_host",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "unicode"
+ },
+ {
+ "alwaysask": false,
+ "attribute": false,
+ "autofill": false,
+ "class": "Str",
+ "cli_name": "memberservice_hbacsvc",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Services",
+ "exclude": null,
+ "flags": [
+ "no_update",
+ "no_create",
+ "no_search"
+ ],
+ "hint": null,
+ "include": null,
+ "label": "Services",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "memberservice_hbacsvc",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "unicode"
+ },
+ {
+ "alwaysask": false,
+ "attribute": false,
+ "autofill": false,
+ "class": "Str",
+ "cli_name": "memberservice_hbacsvcgroup",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Service Groups",
+ "exclude": null,
+ "flags": [
+ "no_update",
+ "no_create",
+ "no_search"
+ ],
+ "hint": null,
+ "include": null,
+ "label": "Service Groups",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "memberservice_hbacsvcgroup",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "unicode"
+ }
+ ],
+ "uuid_attribute": "ipauniqueid"
+ },
+ "hbacsvc": {
+ "aciattrs": [
+ "cn",
+ "description",
+ "ipauniqueid",
+ "memberof",
+ "objectclass"
+ ],
+ "attribute_members": {},
+ "bindable": false,
+ "container_dn": "cn=hbacservices,cn=hbac",
+ "default_attributes": [
+ "cn",
+ "description",
+ "memberindirect"
+ ],
+ "hidden_attributes": [
+ "objectclass",
+ "aci"
+ ],
+ "label": "HBAC Services",
+ "methods": [
+ "add",
+ "del",
+ "find",
+ "mod",
+ "show"
+ ],
+ "name": "hbacsvc",
+ "object_class": [
+ "ipaobject",
+ "ipahbacservice"
+ ],
+ "object_class_config": null,
+ "object_name": "hbacsvc",
+ "object_name_plural": "hbacsvcs",
+ "parent_object": "",
+ "primary_key": "cn",
+ "rdn_attribute": "",
+ "relationships": {
+ "member": [
+ "Member",
+ "",
+ "no_"
+ ],
+ "memberindirect": [
+ "Indirect Member",
+ null,
+ "no_indirect_"
+ ],
+ "memberof": [
+ "Member Of",
+ "in_",
+ "not_in_"
+ ]
+ },
+ "takes_params": [
+ {
+ "alwaysask": false,
+ "attribute": false,
+ "autofill": false,
+ "class": "Str",
+ "cli_name": "service",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "HBAC Service",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "Service name",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "cn",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": true,
+ "query": false,
+ "required": true,
+ "type": "unicode"
+ },
+ {
+ "alwaysask": false,
+ "attribute": false,
+ "autofill": false,
+ "class": "Str",
+ "cli_name": "desc",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Description of service",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "Description",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "description",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "unicode"
+ }
+ ],
+ "uuid_attribute": "ipauniqueid"
+ },
+ "hbacsvcgroup": {
+ "aciattrs": [
+ "businesscategory",
+ "cn",
+ "description",
+ "ipauniqueid",
+ "member",
+ "o",
+ "objectclass",
+ "ou",
+ "owner",
+ "seealso"
+ ],
+ "attribute_members": {
+ "member": [
+ "hbacsvc"
+ ]
+ },
+ "bindable": false,
+ "container_dn": "cn=hbacservicegroups,cn=hbac",
+ "default_attributes": [
+ "cn",
+ "description",
+ "member"
+ ],
+ "hidden_attributes": [
+ "objectclass",
+ "aci"
+ ],
+ "label": "HBAC Service Groups",
+ "methods": [
+ "add",
+ "add_member",
+ "del",
+ "find",
+ "mod",
+ "remove_member",
+ "show"
+ ],
+ "name": "hbacsvcgroup",
+ "object_class": [
+ "ipaobject",
+ "ipahbacservicegroup"
+ ],
+ "object_class_config": null,
+ "object_name": "hbacsvcgroup",
+ "object_name_plural": "hbacsvcgroups",
+ "parent_object": "",
+ "primary_key": "cn",
+ "rdn_attribute": "",
+ "relationships": {
+ "member": [
+ "Member",
+ "",
+ "no_"
+ ],
+ "memberindirect": [
+ "Indirect Member",
+ null,
+ "no_indirect_"
+ ],
+ "memberof": [
+ "Member Of",
+ "in_",
+ "not_in_"
+ ]
+ },
+ "takes_params": [
+ {
+ "alwaysask": false,
+ "attribute": false,
+ "autofill": false,
+ "class": "Str",
+ "cli_name": "name",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Service group name",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "Service group name",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "cn",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": true,
+ "query": false,
+ "required": true,
+ "type": "unicode"
+ },
+ {
+ "alwaysask": false,
+ "attribute": false,
+ "autofill": false,
+ "class": "Str",
+ "cli_name": "desc",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "HBAC service group description",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "Description",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "description",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": false,
+ "query": false,
+ "required": true,
+ "type": "unicode"
+ }
+ ],
+ "uuid_attribute": "ipauniqueid"
+ },
+ "host": {
+ "aciattrs": [
+ "cn",
+ "description",
+ "enrolledby",
+ "fqdn",
+ "ipaclientversion",
+ "ipauniqueid",
+ "l",
+ "managedby",
+ "memberof",
+ "nshardwareplatform",
+ "nshostlocation",
+ "nsosversion",
+ "objectclass",
+ "serverhostname",
+ "usercertificate",
+ "userpassword"
+ ],
+ "attribute_members": {
+ "enrolledby": [
+ "user"
+ ],
+ "managedby": [
+ "host"
+ ],
+ "memberof": [
+ "hostgroup",
+ "netgroup",
+ "role"
+ ]
+ },
+ "bindable": true,
+ "container_dn": "cn=computers,cn=accounts",
+ "default_attributes": [
+ "fqdn",
+ "description",
+ "l",
+ "nshostlocation",
+ "krbprincipalname",
+ "nshardwareplatform",
+ "nsosversion",
+ "usercertificate",
+ "memberof",
+ "krblastpwdchange",
+ "managedby"
+ ],
+ "hidden_attributes": [
+ "objectclass",
+ "aci"
+ ],
+ "label": "Hosts",
+ "methods": [
+ "add",
+ "add_managedby",
+ "del",
+ "disable",
+ "find",
+ "mod",
+ "remove_managedby",
+ "show"
+ ],
+ "name": "host",
+ "object_class": [
+ "ipaobject",
+ "nshost",
+ "ipahost",
+ "pkiuser",
+ "ipaservice"
+ ],
+ "object_class_config": null,
+ "object_name": "host",
+ "object_name_plural": "hosts",
+ "parent_object": "",
+ "primary_key": "fqdn",
+ "rdn_attribute": "",
+ "relationships": {
+ "enrolledby": [
+ "Enrolled by",
+ "enroll_by_",
+ "not_enroll_by_"
+ ],
+ "managedby": [
+ "Managed by",
+ "man_by_",
+ "not_man_by_"
+ ],
+ "memberof": [
+ "Member Of",
+ "in_",
+ "not_in_"
+ ]
+ },
+ "takes_params": [
+ {
+ "alwaysask": false,
+ "attribute": false,
+ "autofill": false,
+ "class": "Str",
+ "cli_name": "hostname",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Host name",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "Host name",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "fqdn",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": true,
+ "query": false,
+ "required": true,
+ "type": "unicode"
+ },
+ {
+ "alwaysask": false,
+ "attribute": false,
+ "autofill": false,
+ "class": "Str",
+ "cli_name": "desc",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "A description of this host",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "Description",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "description",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "unicode"
+ },
+ {
+ "alwaysask": false,
+ "attribute": false,
+ "autofill": false,
+ "class": "Str",
+ "cli_name": "locality",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Host locality (e.g. \"Baltimore, MD\")",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "Locality",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "l",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "unicode"
+ },
+ {
+ "alwaysask": false,
+ "attribute": false,
+ "autofill": false,
+ "class": "Str",
+ "cli_name": "location",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Host location (e.g. \"Lab 2\")",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "Location",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "nshostlocation",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "unicode"
+ },
+ {
+ "alwaysask": false,
+ "attribute": false,
+ "autofill": false,
+ "class": "Str",
+ "cli_name": "platform",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Host hardware platform (e.g. \"Lenovo T61\")",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "Platform",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "nshardwareplatform",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "unicode"
+ },
+ {
+ "alwaysask": false,
+ "attribute": false,
+ "autofill": false,
+ "class": "Str",
+ "cli_name": "os",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Host operating system and version (e.g. \"Fedora 9\")",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "Operating system",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "nsosversion",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "unicode"
+ },
+ {
+ "alwaysask": false,
+ "attribute": false,
+ "autofill": false,
+ "class": "Str",
+ "cli_name": "password",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Password used in bulk enrollment",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "User password",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "userpassword",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "unicode"
+ },
+ {
+ "alwaysask": false,
+ "attribute": false,
+ "autofill": true,
+ "class": "Flag",
+ "cli_name": "random",
+ "cli_short_name": null,
+ "default": false,
+ "doc": "Generate a random password to be used in bulk enrollment",
+ "exclude": null,
+ "falsehoods": [
+ 0,
+ "0",
+ "false"
+ ],
+ "flags": [
+ "no_search"
+ ],
+ "hint": null,
+ "include": null,
+ "label": "<random>",
+ "multivalue": false,
+ "name": "random",
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "truths": [
+ "1",
+ 1,
+ "true"
+ ],
+ "type": "bool"
+ },
+ {
+ "alwaysask": false,
+ "attribute": false,
+ "autofill": false,
+ "class": "Str",
+ "cli_name": "randompassword",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Random password",
+ "exclude": null,
+ "flags": [
+ "no_update",
+ "no_create",
+ "no_search"
+ ],
+ "hint": null,
+ "include": null,
+ "label": "Random password",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "randompassword",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "unicode"
+ },
+ {
+ "alwaysask": false,
+ "attribute": false,
+ "autofill": false,
+ "class": "Bytes",
+ "cli_name": "certificate",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Base-64 encoded server certificate",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "Certificate",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "usercertificate",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "str"
+ },
+ {
+ "alwaysask": false,
+ "attribute": false,
+ "autofill": false,
+ "class": "Str",
+ "cli_name": "krbprincipalname",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Principal name",
+ "exclude": null,
+ "flags": [
+ "no_update",
+ "no_create",
+ "no_search"
+ ],
+ "hint": null,
+ "include": null,
+ "label": "Principal name",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "krbprincipalname",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "unicode"
+ }
+ ],
+ "uuid_attribute": "ipauniqueid"
+ },
+ "hostgroup": {
+ "aciattrs": [
+ "businesscategory",
+ "cn",
+ "description",
+ "ipauniqueid",
+ "member",
+ "memberof",
+ "o",
+ "objectclass",
+ "ou",
+ "owner",
+ "seealso"
+ ],
+ "attribute_members": {
+ "member": [
+ "host",
+ "hostgroup"
+ ],
+ "memberindirect": [
+ "host",
+ "hostgroup"
+ ],
+ "memberof": [
+ "hostgroup"
+ ]
+ },
+ "bindable": false,
+ "container_dn": "cn=hostgroups,cn=accounts",
+ "default_attributes": [
+ "cn",
+ "description",
+ "member",
+ "memberof",
+ "memberindirect"
+ ],
+ "hidden_attributes": [
+ "objectclass",
+ "aci"
+ ],
+ "label": "Host Groups",
+ "methods": [
+ "add",
+ "add_member",
+ "del",
+ "find",
+ "mod",
+ "remove_member",
+ "show"
+ ],
+ "name": "hostgroup",
+ "object_class": [
+ "ipaobject",
+ "ipahostgroup"
+ ],
+ "object_class_config": null,
+ "object_name": "hostgroup",
+ "object_name_plural": "hostgroups",
+ "parent_object": "",
+ "primary_key": "cn",
+ "rdn_attribute": "",
+ "relationships": {
+ "member": [
+ "Member",
+ "",
+ "no_"
+ ],
+ "memberindirect": [
+ "Indirect Member",
+ null,
+ "no_indirect_"
+ ],
+ "memberof": [
+ "Member Of",
+ "in_",
+ "not_in_"
+ ]
+ },
+ "takes_params": [
+ {
+ "alwaysask": false,
+ "attribute": false,
+ "autofill": false,
+ "class": "Str",
+ "cli_name": "hostgroup_name",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Name of host-group",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "Host-group",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "cn",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": true,
+ "query": false,
+ "required": true,
+ "type": "unicode"
+ },
+ {
+ "alwaysask": false,
+ "attribute": false,
+ "autofill": false,
+ "class": "Str",
+ "cli_name": "desc",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "A description of this host-group",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "Description",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "description",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": false,
+ "query": false,
+ "required": true,
+ "type": "unicode"
+ }
+ ],
+ "uuid_attribute": "ipauniqueid"
+ },
+ "krbtpolicy": {
+ "aciattrs": [],
+ "attribute_members": {},
+ "bindable": false,
+ "container_dn": "cn=IPA14.AYOUNG.BOSTON.DEVEL.REDHAT.COM,cn=kerberos",
+ "default_attributes": [
+ "krbmaxticketlife",
+ "krbmaxrenewableage"
+ ],
+ "hidden_attributes": [
+ "objectclass",
+ "aci"
+ ],
+ "label": "Kerberos Ticket Policy",
+ "methods": [
+ "mod",
+ "reset",
+ "show"
+ ],
+ "name": "krbtpolicy",
+ "object_class": [],
+ "object_class_config": null,
+ "object_name": "kerberos ticket policy settings",
+ "object_name_plural": "entries",
+ "parent_object": "",
+ "primary_key": "uid",
+ "rdn_attribute": "",
+ "relationships": {
+ "member": [
+ "Member",
+ "",
+ "no_"
+ ],
+ "memberindirect": [
+ "Indirect Member",
+ null,
+ "no_indirect_"
+ ],
+ "memberof": [
+ "Member Of",
+ "in_",
+ "not_in_"
+ ]
+ },
+ "takes_params": [
+ {
+ "alwaysask": false,
+ "attribute": false,
+ "autofill": false,
+ "class": "Str",
+ "cli_name": "user",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Manage ticket policy for specific user",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "User name",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "uid",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": true,
+ "query": false,
+ "required": false,
+ "type": "unicode"
+ },
+ {
+ "alwaysask": false,
+ "attribute": false,
+ "autofill": false,
+ "class": "Int",
+ "cli_name": "maxlife",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Maximum ticket life (seconds)",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "Max life",
+ "maxvalue": null,
+ "minvalue": null,
+ "multivalue": false,
+ "name": "krbmaxticketlife",
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "int"
+ },
+ {
+ "alwaysask": false,
+ "attribute": false,
+ "autofill": false,
+ "class": "Int",
+ "cli_name": "maxrenew",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Maximum renewable age (seconds)",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "Max renew",
+ "maxvalue": null,
+ "minvalue": null,
+ "multivalue": false,
+ "name": "krbmaxrenewableage",
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "int"
+ }
+ ],
+ "uuid_attribute": ""
+ },
+ "netgroup": {
+ "aciattrs": [
+ "cn",
+ "description",
+ "externalhost",
+ "hostcategory",
+ "ipaenabledflag",
+ "ipauniqueid",
+ "member",
+ "memberhost",
+ "memberof",
+ "memberuser",
+ "nisdomainname",
+ "usercategory"
+ ],
+ "attribute_members": {
+ "member": [
+ "netgroup"
+ ],
+ "memberhost": [
+ "host",
+ "hostgroup"
+ ],
+ "memberindirect": [
+ "netgroup"
+ ],
+ "memberof": [
+ "netgroup"
+ ],
+ "memberuser": [
+ "user",
+ "group"
+ ]
+ },
+ "bindable": false,
+ "container_dn": "cn=ng,cn=alt",
+ "default_attributes": [
+ "cn",
+ "description",
+ "memberof",
+ "externalhost",
+ "nisdomainname",
+ "memberuser",
+ "memberhost",
+ "member",
+ "memberindirect",
+ "usercategory",
+ "hostcategory"
+ ],
+ "hidden_attributes": [
+ "objectclass",
+ "aci"
+ ],
+ "label": "Net Groups",
+ "methods": [
+ "add",
+ "add_member",
+ "del",
+ "find",
+ "mod",
+ "remove_member",
+ "show"
+ ],
+ "name": "netgroup",
+ "object_class": [
+ "ipaobject",
+ "ipaassociation",
+ "ipanisnetgroup"
+ ],
+ "object_class_config": null,
+ "object_name": "netgroup",
+ "object_name_plural": "netgroups",
+ "parent_object": "",
+ "primary_key": "cn",
+ "rdn_attribute": "ipauniqueid",
+ "relationships": {
+ "member": [
+ "Member",
+ "",
+ "no_"
+ ],
+ "memberhost": [
+ "Member",
+ "",
+ "no_"
+ ],
+ "memberindirect": [
+ "Indirect Member",
+ null,
+ "no_indirect_"
+ ],
+ "memberof": [
+ "Member Of",
+ "in_",
+ "not_in_"
+ ],
+ "memberuser": [
+ "Member",
+ "",
+ "no_"
+ ]
+ },
+ "takes_params": [
+ {
+ "alwaysask": false,
+ "attribute": false,
+ "autofill": false,
+ "class": "Str",
+ "cli_name": "name",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Netgroup name",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "Netgroup name",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "cn",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": true,
+ "query": false,
+ "required": true,
+ "type": "unicode"
+ },
+ {
+ "alwaysask": false,
+ "attribute": false,
+ "autofill": false,
+ "class": "Str",
+ "cli_name": "desc",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Netgroup description",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "Description",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "description",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": false,
+ "query": false,
+ "required": true,
+ "type": "unicode"
+ },
+ {
+ "alwaysask": false,
+ "attribute": false,
+ "autofill": false,
+ "class": "Str",
+ "cli_name": "nisdomain",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "NIS domain name",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "NIS domain name",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "nisdomainname",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "unicode"
+ },
+ {
+ "alwaysask": false,
+ "attribute": false,
+ "autofill": false,
+ "class": "Str",
+ "cli_name": "uuid",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "IPA unique ID",
+ "exclude": null,
+ "flags": [
+ "no_update",
+ "no_create"
+ ],
+ "hint": null,
+ "include": null,
+ "label": "IPA unique ID",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "ipauniqueid",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "unicode"
+ },
+ {
+ "alwaysask": false,
+ "attribute": false,
+ "autofill": false,
+ "class": "StrEnum",
+ "cli_name": "usercat",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "User category the rule applies to",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "User category",
+ "multivalue": false,
+ "name": "usercategory",
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "unicode",
+ "values": [
+ "all"
+ ]
+ },
+ {
+ "alwaysask": false,
+ "attribute": false,
+ "autofill": false,
+ "class": "StrEnum",
+ "cli_name": "hostcat",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Host category the rule applies to",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "Host category",
+ "multivalue": false,
+ "name": "hostcategory",
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "unicode",
+ "values": [
+ "all"
+ ]
+ }
+ ],
+ "uuid_attribute": "ipauniqueid"
+ },
+ "permission": {
+ "aciattrs": [
+ "businesscategory",
+ "cn",
+ "description",
+ "member",
+ "o",
+ "objectclass",
+ "ou",
+ "owner",
+ "seealso"
+ ],
+ "attribute_members": {
+ "member": [
+ "privilege"
+ ]
+ },
+ "bindable": false,
+ "container_dn": "cn=permissions,cn=pbac",
+ "default_attributes": [
+ "cn",
+ "description",
+ "member",
+ "memberof",
+ "memberindirect"
+ ],
+ "hidden_attributes": [
+ "objectclass",
+ "aci"
+ ],
+ "label": "Permissions",
+ "methods": [
+ "add",
+ "add_member",
+ "del",
+ "find",
+ "mod",
+ "remove_member",
+ "show"
+ ],
+ "name": "permission",
+ "object_class": [
+ "groupofnames"
+ ],
+ "object_class_config": null,
+ "object_name": "permission",
+ "object_name_plural": "permissions",
+ "parent_object": "",
+ "primary_key": "cn",
+ "rdn_attribute": "",
+ "relationships": {
+ "member": [
+ "Member",
+ "",
+ "no_"
+ ],
+ "memberindirect": [
+ "Indirect Member",
+ null,
+ "no_indirect_"
+ ],
+ "memberof": [
+ "Member Of",
+ "in_",
+ "not_in_"
+ ]
+ },
+ "takes_params": [
+ {
+ "alwaysask": false,
+ "attribute": false,
+ "autofill": false,
+ "class": "Str",
+ "cli_name": "name",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Permission name",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "Permission name",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "cn",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": true,
+ "query": false,
+ "required": true,
+ "type": "unicode"
+ },
+ {
+ "alwaysask": false,
+ "attribute": false,
+ "autofill": false,
+ "class": "Str",
+ "cli_name": "desc",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Permission description",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "Description",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "description",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": false,
+ "query": false,
+ "required": true,
+ "type": "unicode"
+ },
+ {
+ "alwaysask": false,
+ "attribute": false,
+ "autofill": false,
+ "class": "List",
+ "cli_name": "permissions",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Comma-separated list of permissions to grant (read, write, add, delete, all)",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "Permissions",
+ "multivalue": true,
+ "name": "permissions",
+ "primary_key": false,
+ "query": false,
+ "required": true,
+ "separator": ",",
+ "skipspace": true,
+ "type": "tuple"
+ },
+ {
+ "alwaysask": false,
+ "attribute": false,
+ "autofill": false,
+ "class": "List",
+ "cli_name": "attrs",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Comma-separated list of attributes",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "Attributes",
+ "multivalue": true,
+ "name": "attrs",
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "separator": ",",
+ "skipspace": true,
+ "type": "tuple"
+ },
+ {
+ "alwaysask": false,
+ "attribute": false,
+ "autofill": false,
+ "class": "StrEnum",
+ "cli_name": "type",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Type of IPA object (user, group, host, hostgroup, service, netgroup, dns)",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "Type",
+ "multivalue": false,
+ "name": "type",
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "unicode",
+ "values": [
+ "user",
+ "group",
+ "host",
+ "service",
+ "hostgroup",
+ "netgroup",
+ "dns"
+ ]
+ },
+ {
+ "alwaysask": false,
+ "attribute": false,
+ "autofill": false,
+ "class": "Str",
+ "cli_name": "memberof",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Target members of a group",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "Member of group",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "memberof",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "unicode"
+ },
+ {
+ "alwaysask": false,
+ "attribute": false,
+ "autofill": false,
+ "class": "Str",
+ "cli_name": "filter",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Legal LDAP filter (e.g. ou=Engineering)",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "Filter",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "filter",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "unicode"
+ },
+ {
+ "alwaysask": false,
+ "attribute": false,
+ "autofill": false,
+ "class": "Str",
+ "cli_name": "subtree",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Subtree to apply permissions to",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "Subtree",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "subtree",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "unicode"
+ },
+ {
+ "alwaysask": false,
+ "attribute": false,
+ "autofill": false,
+ "class": "Str",
+ "cli_name": "targetgroup",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "User group to apply permissions to",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "Target group",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "targetgroup",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "unicode"
+ }
+ ],
+ "uuid_attribute": ""
+ },
+ "pkinit": {
+ "__base64__": ""
+ },
+ "privilege": {
+ "aciattrs": [
+ "businesscategory",
+ "cn",
+ "description",
+ "member",
+ "memberof",
+ "o",
+ "objectclass",
+ "ou",
+ "owner",
+ "seealso"
+ ],
+ "attribute_members": {
+ "member": [
+ "permission",
+ "role"
+ ],
+ "memberof": [
+ "permission"
+ ]
+ },
+ "bindable": false,
+ "container_dn": "cn=privileges,cn=pbac",
+ "default_attributes": [
+ "cn",
+ "description",
+ "member",
+ "memberof",
+ "memberindirect"
+ ],
+ "hidden_attributes": [
+ "objectclass",
+ "aci"
+ ],
+ "label": "Privileges",
+ "methods": [
+ "add",
+ "add_member",
+ "add_permission",
+ "del",
+ "find",
+ "mod",
+ "remove_member",
+ "remove_permission",
+ "show"
+ ],
+ "name": "privilege",
+ "object_class": [
+ "nestedgroup",
+ "groupofnames"
+ ],
+ "object_class_config": null,
+ "object_name": "privilege",
+ "object_name_plural": "privileges",
+ "parent_object": "",
+ "primary_key": "cn",
+ "rdn_attribute": "",
+ "relationships": {
+ "member": [
+ "Member",
+ "",
+ "no_"
+ ],
+ "memberindirect": [
+ "Indirect Member",
+ null,
+ "no_indirect_"
+ ],
+ "memberof": [
+ "Member Of",
+ "in_",
+ "not_in_"
+ ]
+ },
+ "takes_params": [
+ {
+ "alwaysask": false,
+ "attribute": false,
+ "autofill": false,
+ "class": "Str",
+ "cli_name": "name",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Privilege name",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "Privilege name",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "cn",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": true,
+ "query": false,
+ "required": true,
+ "type": "unicode"
+ },
+ {
+ "alwaysask": false,
+ "attribute": false,
+ "autofill": false,
+ "class": "Str",
+ "cli_name": "desc",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Privilege description",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "Description",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "description",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": false,
+ "query": false,
+ "required": true,
+ "type": "unicode"
+ }
+ ],
+ "uuid_attribute": ""
+ },
+ "pwpolicy": {
+ "aciattrs": [
+ "cn",
+ "krbmaxpwdlife",
+ "krbminpwdlife",
+ "krbpwdfailurecountinterval",
+ "krbpwdhistorylength",
+ "krbpwdlockoutduration",
+ "krbpwdmaxfailure",
+ "krbpwdmindiffchars",
+ "krbpwdminlength",
+ "objectclass"
+ ],
+ "attribute_members": {},
+ "bindable": false,
+ "container_dn": "cn=IPA14.AYOUNG.BOSTON.DEVEL.REDHAT.COM,cn=kerberos",
+ "default_attributes": [
+ "cn",
+ "cospriority",
+ "krbmaxpwdlife",
+ "krbminpwdlife",
+ "krbpwdhistorylength",
+ "krbpwdmindiffchars",
+ "krbpwdminlength",
+ "krbpwdmaxfailure",
+ "krbpwdfailurecountinterval",
+ "krbpwdlockoutduration"
+ ],
+ "hidden_attributes": [
+ "objectclass",
+ "aci"
+ ],
+ "label": "Password Policy",
+ "methods": [
+ "add",
+ "del",
+ "find",
+ "mod",
+ "show"
+ ],
+ "name": "pwpolicy",
+ "object_class": [
+ "top",
+ "nscontainer",
+ "krbpwdpolicy"
+ ],
+ "object_class_config": null,
+ "object_name": "password policy",
+ "object_name_plural": "password policies",
+ "parent_object": "",
+ "primary_key": "cn",
+ "rdn_attribute": "",
+ "relationships": {
+ "member": [
+ "Member",
+ "",
+ "no_"
+ ],
+ "memberindirect": [
+ "Indirect Member",
+ null,
+ "no_indirect_"
+ ],
+ "memberof": [
+ "Member Of",
+ "in_",
+ "not_in_"
+ ]
+ },
+ "takes_params": [
+ {
+ "alwaysask": false,
+ "attribute": false,
+ "autofill": false,
+ "class": "Str",
+ "cli_name": "group",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Manage password policy for specific group",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "Group",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "cn",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": true,
+ "query": false,
+ "required": false,
+ "type": "unicode"
+ },
+ {
+ "alwaysask": false,
+ "attribute": false,
+ "autofill": false,
+ "class": "Int",
+ "cli_name": "maxlife",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Maximum password lifetime (in days)",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "Max lifetime (days)",
+ "maxvalue": null,
+ "minvalue": 0,
+ "multivalue": false,
+ "name": "krbmaxpwdlife",
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "int"
+ },
+ {
+ "alwaysask": false,
+ "attribute": false,
+ "autofill": false,
+ "class": "Int",
+ "cli_name": "minlife",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Minimum password lifetime (in hours)",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "Min lifetime (hours)",
+ "maxvalue": null,
+ "minvalue": 0,
+ "multivalue": false,
+ "name": "krbminpwdlife",
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "int"
+ },
+ {
+ "alwaysask": false,
+ "attribute": false,
+ "autofill": false,
+ "class": "Int",
+ "cli_name": "history",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Password history size",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "History size",
+ "maxvalue": null,
+ "minvalue": 0,
+ "multivalue": false,
+ "name": "krbpwdhistorylength",
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "int"
+ },
+ {
+ "alwaysask": false,
+ "attribute": false,
+ "autofill": false,
+ "class": "Int",
+ "cli_name": "minclasses",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Minimum number of character classes",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "Character classes",
+ "maxvalue": 5,
+ "minvalue": 0,
+ "multivalue": false,
+ "name": "krbpwdmindiffchars",
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "int"
+ },
+ {
+ "alwaysask": false,
+ "attribute": false,
+ "autofill": false,
+ "class": "Int",
+ "cli_name": "minlength",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Minimum length of password",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "Min length",
+ "maxvalue": null,
+ "minvalue": 0,
+ "multivalue": false,
+ "name": "krbpwdminlength",
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "int"
+ },
+ {
+ "alwaysask": false,
+ "attribute": false,
+ "autofill": false,
+ "class": "Int",
+ "cli_name": "priority",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Priority of the policy (higher number means lower priority",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "Priority",
+ "maxvalue": null,
+ "minvalue": 0,
+ "multivalue": false,
+ "name": "cospriority",
+ "primary_key": false,
+ "query": false,
+ "required": true,
+ "type": "int"
+ },
+ {
+ "alwaysask": false,
+ "attribute": false,
+ "autofill": false,
+ "class": "Int",
+ "cli_name": "maxfail",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Consecutive failures before lockout",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "Max failures",
+ "maxvalue": null,
+ "minvalue": 0,
+ "multivalue": false,
+ "name": "krbpwdmaxfailure",
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "int"
+ },
+ {
+ "alwaysask": false,
+ "attribute": false,
+ "autofill": false,
+ "class": "Int",
+ "cli_name": "failinterval",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Period after which failure count will be reset (seconds)",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "Failure reset interval",
+ "maxvalue": null,
+ "minvalue": 0,
+ "multivalue": false,
+ "name": "krbpwdfailurecountinterval",
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "int"
+ },
+ {
+ "alwaysask": false,
+ "attribute": false,
+ "autofill": false,
+ "class": "Int",
+ "cli_name": "lockouttime",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Period for which lockout is enforced (seconds)",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "Lockout duration",
+ "maxvalue": null,
+ "minvalue": 0,
+ "multivalue": false,
+ "name": "krbpwdlockoutduration",
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "int"
+ }
+ ],
+ "uuid_attribute": ""
+ },
+ "role": {
+ "aciattrs": [
+ "businesscategory",
+ "cn",
+ "description",
+ "member",
+ "memberof",
+ "o",
+ "objectclass",
+ "ou",
+ "owner",
+ "seealso"
+ ],
+ "attribute_members": {
+ "member": [
+ "user",
+ "group",
+ "host",
+ "hostgroup"
+ ],
+ "memberof": [
+ "privilege"
+ ]
+ },
+ "bindable": false,
+ "container_dn": "cn=roles,cn=accounts",
+ "default_attributes": [
+ "cn",
+ "description",
+ "member",
+ "memberof",
+ "memberindirect"
+ ],
+ "hidden_attributes": [
+ "objectclass",
+ "aci"
+ ],
+ "label": "Role",
+ "methods": [
+ "add",
+ "add_member",
+ "add_privilege",
+ "del",
+ "find",
+ "mod",
+ "remove_member",
+ "remove_privilege",
+ "show"
+ ],
+ "name": "role",
+ "object_class": [
+ "groupofnames",
+ "nestedgroup"
+ ],
+ "object_class_config": null,
+ "object_name": "role",
+ "object_name_plural": "roles",
+ "parent_object": "",
+ "primary_key": "cn",
+ "rdn_attribute": "",
+ "relationships": {
+ "member": [
+ "Member",
+ "",
+ "no_"
+ ],
+ "memberindirect": [
+ "Indirect Member",
+ null,
+ "no_indirect_"
+ ],
+ "memberof": [
+ "Member Of",
+ "in_",
+ "not_in_"
+ ]
+ },
+ "takes_params": [
+ {
+ "alwaysask": false,
+ "attribute": false,
+ "autofill": false,
+ "class": "Str",
+ "cli_name": "name",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Role name",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "Role name",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "cn",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": true,
+ "query": false,
+ "required": true,
+ "type": "unicode"
+ },
+ {
+ "alwaysask": false,
+ "attribute": false,
+ "autofill": false,
+ "class": "Str",
+ "cli_name": "desc",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "A description of this role-group",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "Description",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "description",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": false,
+ "query": false,
+ "required": true,
+ "type": "unicode"
+ }
+ ],
+ "uuid_attribute": ""
+ },
+ "selfservice": {
+ "bindable": false,
+ "label": "Self Service Permissions",
+ "methods": [
+ "add",
+ "del",
+ "find",
+ "mod",
+ "show"
+ ],
+ "name": "selfservice",
+ "object_name": [
+ "selfservice"
+ ],
+ "object_name_plural": [
+ "selfservice"
+ ],
+ "primary_key": "aciname",
+ "takes_params": [
+ {
+ "alwaysask": false,
+ "attribute": false,
+ "autofill": false,
+ "class": "Str",
+ "cli_name": "name",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Self-Service name",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "Self-Service name",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "aciname",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": true,
+ "query": false,
+ "required": true,
+ "type": "unicode"
+ },
+ {
+ "alwaysask": false,
+ "attribute": false,
+ "autofill": false,
+ "class": "List",
+ "cli_name": "permissions",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Comma-separated list of permissions to grant (read, write). Default is write.",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "Permissions",
+ "multivalue": true,
+ "name": "permissions",
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "separator": ",",
+ "skipspace": true,
+ "type": "tuple"
+ },
+ {
+ "alwaysask": false,
+ "attribute": false,
+ "autofill": false,
+ "class": "List",
+ "cli_name": "attrs",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Comma-separated list of attributes",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "Attributes",
+ "multivalue": true,
+ "name": "attrs",
+ "primary_key": false,
+ "query": false,
+ "required": true,
+ "separator": ",",
+ "skipspace": true,
+ "type": "tuple"
+ }
+ ]
+ },
+ "service": {
+ "aciattrs": [
+ "ipauniqueid",
+ "krbcanonicalname",
+ "krbextradata",
+ "krblastfailedauth",
+ "krblastpwdchange",
+ "krblastsuccessfulauth",
+ "krbloginfailedcount",
+ "krbmaxrenewableage",
+ "krbmaxticketlife",
+ "krbobjectreferences",
+ "krbpasswordexpiration",
+ "krbprincipalaliases",
+ "krbprincipalexpiration",
+ "krbprincipalkey",
+ "krbprincipalname",
+ "krbprincipaltype",
+ "krbpwdhistory",
+ "krbpwdpolicyreference",
+ "krbticketflags",
+ "krbticketpolicyreference",
+ "krbupenabled",
+ "managedby",
+ "memberof",
+ "objectclass",
+ "usercertificate"
+ ],
+ "attribute_members": {
+ "managedby": [
+ "host"
+ ]
+ },
+ "bindable": true,
+ "container_dn": "cn=services,cn=accounts",
+ "default_attributes": [
+ "krbprincipalname",
+ "usercertificate",
+ "managedby",
+ "krblastpwdchange"
+ ],
+ "hidden_attributes": [
+ "objectclass",
+ "aci"
+ ],
+ "label": "Services",
+ "methods": [
+ "add",
+ "add_host",
+ "del",
+ "disable",
+ "find",
+ "mod",
+ "remove_host",
+ "show"
+ ],
+ "name": "service",
+ "object_class": [
+ "krbprincipal",
+ "krbprincipalaux",
+ "krbticketpolicyaux",
+ "ipaobject",
+ "ipaservice",
+ "pkiuser"
+ ],
+ "object_class_config": null,
+ "object_name": "service",
+ "object_name_plural": "services",
+ "parent_object": "",
+ "primary_key": "krbprincipalname",
+ "rdn_attribute": "",
+ "relationships": {
+ "member": [
+ "Member",
+ "",
+ "no_"
+ ],
+ "memberindirect": [
+ "Indirect Member",
+ null,
+ "no_indirect_"
+ ],
+ "memberof": [
+ "Member Of",
+ "in_",
+ "not_in_"
+ ]
+ },
+ "takes_params": [
+ {
+ "alwaysask": false,
+ "attribute": false,
+ "autofill": false,
+ "class": "Str",
+ "cli_name": "principal",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Service principal",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "Principal",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "krbprincipalname",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": true,
+ "query": false,
+ "required": true,
+ "type": "unicode"
+ },
+ {
+ "alwaysask": false,
+ "attribute": false,
+ "autofill": false,
+ "class": "Bytes",
+ "cli_name": "certificate",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Base-64 encoded server certificate",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "Certificate",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "usercertificate",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "str"
+ }
+ ],
+ "uuid_attribute": "ipauniqueid"
+ },
+ "sudocmd": {
+ "aciattrs": [
+ "description",
+ "ipauniqueid",
+ "memberof",
+ "objectclass",
+ "sudocmd"
+ ],
+ "attribute_members": {},
+ "bindable": false,
+ "container_dn": "cn=sudocmds,cn=sudo",
+ "default_attributes": [
+ "sudocmd",
+ "description"
+ ],
+ "hidden_attributes": [
+ "objectclass",
+ "aci"
+ ],
+ "label": "SUDO Commands",
+ "methods": [
+ "add",
+ "del",
+ "find",
+ "mod",
+ "show"
+ ],
+ "name": "sudocmd",
+ "object_class": [
+ "ipaobject",
+ "ipasudocmd"
+ ],
+ "object_class_config": null,
+ "object_name": "sudocmd",
+ "object_name_plural": "sudocmds",
+ "parent_object": "",
+ "primary_key": "sudocmd",
+ "rdn_attribute": "",
+ "relationships": {
+ "member": [
+ "Member",
+ "",
+ "no_"
+ ],
+ "memberindirect": [
+ "Indirect Member",
+ null,
+ "no_indirect_"
+ ],
+ "memberof": [
+ "Member Of",
+ "in_",
+ "not_in_"
+ ]
+ },
+ "takes_params": [
+ {
+ "alwaysask": false,
+ "attribute": false,
+ "autofill": false,
+ "class": "Str",
+ "cli_name": "command",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Sudo Command",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "Sudo Command",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "sudocmd",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": true,
+ "query": false,
+ "required": true,
+ "type": "unicode"
+ },
+ {
+ "alwaysask": false,
+ "attribute": false,
+ "autofill": false,
+ "class": "Str",
+ "cli_name": "desc",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "A description of this command",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "Description",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "description",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "unicode"
+ }
+ ],
+ "uuid_attribute": "ipauniqueid"
+ },
+ "sudocmdgroup": {
+ "aciattrs": [
+ "businesscategory",
+ "cn",
+ "description",
+ "ipauniqueid",
+ "member",
+ "o",
+ "objectclass",
+ "ou",
+ "owner",
+ "seealso"
+ ],
+ "attribute_members": {
+ "member": [
+ "sudocmd",
+ "sudocmdgroup"
+ ],
+ "memberindirect": [
+ "sudocmd",
+ "sudocmdgroup"
+ ],
+ "memberof": [
+ "sudocmdgroup"
+ ]
+ },
+ "bindable": false,
+ "container_dn": "cn=sudocmdgroups,cn=sudo",
+ "default_attributes": [
+ "cn",
+ "description",
+ "member",
+ "memberof",
+ "memberindirect"
+ ],
+ "hidden_attributes": [
+ "objectclass",
+ "aci"
+ ],
+ "label": "SUDO Command Groups",
+ "methods": [
+ "add",
+ "add_member",
+ "del",
+ "find",
+ "mod",
+ "remove_member",
+ "show"
+ ],
+ "name": "sudocmdgroup",
+ "object_class": [
+ "ipaobject",
+ "ipasudocmdgrp"
+ ],
+ "object_class_config": null,
+ "object_name": "sudocmdgroup",
+ "object_name_plural": "sudocmdgroups",
+ "parent_object": "",
+ "primary_key": "cn",
+ "rdn_attribute": "",
+ "relationships": {
+ "member": [
+ "Member",
+ "",
+ "no_"
+ ],
+ "memberindirect": [
+ "Indirect Member",
+ null,
+ "no_indirect_"
+ ],
+ "memberof": [
+ "Member Of",
+ "in_",
+ "not_in_"
+ ]
+ },
+ "takes_params": [
+ {
+ "alwaysask": false,
+ "attribute": false,
+ "autofill": false,
+ "class": "Str",
+ "cli_name": "sudocmdgroup_name",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Sudo Command Group name",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "Sudo Command Group name",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "cn",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": true,
+ "query": false,
+ "required": true,
+ "type": "unicode"
+ },
+ {
+ "alwaysask": false,
+ "attribute": false,
+ "autofill": false,
+ "class": "Str",
+ "cli_name": "desc",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Group description",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "Description",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "description",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": false,
+ "query": false,
+ "required": true,
+ "type": "unicode"
+ },
+ {
+ "alwaysask": false,
+ "attribute": false,
+ "autofill": false,
+ "class": "Str",
+ "cli_name": "membercmd_sudocmd",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Commands",
+ "exclude": null,
+ "flags": [
+ "no_update",
+ "no_create",
+ "no_search"
+ ],
+ "hint": null,
+ "include": null,
+ "label": "Commands",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "membercmd_sudocmd",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "unicode"
+ },
+ {
+ "alwaysask": false,
+ "attribute": false,
+ "autofill": false,
+ "class": "Str",
+ "cli_name": "membercmd_sudocmdgroup",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Sudo Command Groups",
+ "exclude": null,
+ "flags": [
+ "no_update",
+ "no_create",
+ "no_search"
+ ],
+ "hint": null,
+ "include": null,
+ "label": "Sudo Command Groups",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "membercmd_sudocmdgroup",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "unicode"
+ }
+ ],
+ "uuid_attribute": "ipauniqueid"
+ },
+ "sudorule": {
+ "aciattrs": [
+ "cmdcategory",
+ "cn",
+ "description",
+ "externalhost",
+ "externaluser",
+ "hostcategory",
+ "hostmask",
+ "ipaenabledflag",
+ "ipasudoopt",
+ "ipasudorunas",
+ "ipasudorunasextgroup",
+ "ipasudorunasextuser",
+ "ipasudorunasgroup",
+ "ipasudorunasgroupcategory",
+ "ipasudorunasusercategory",
+ "ipauniqueid",
+ "memberallowcmd",
+ "memberdenycmd",
+ "memberhost",
+ "memberuser",
+ "usercategory"
+ ],
+ "attribute_members": {
+ "ipasudorunas": [
+ "user",
+ "group"
+ ],
+ "ipasudorunasgroup": [
+ "group"
+ ],
+ "memberallowcmd": [
+ "sudocmd",
+ "sudocmdgroup"
+ ],
+ "memberdenycmd": [
+ "sudocmd",
+ "sudocmdgroup"
+ ],
+ "memberhost": [
+ "host",
+ "hostgroup"
+ ],
+ "memberuser": [
+ "user",
+ "group"
+ ]
+ },
+ "bindable": false,
+ "container_dn": "cn=sudorules,cn=sudo",
+ "default_attributes": [
+ "cn",
+ "ipaenabledflag",
+ "description",
+ "usercategory",
+ "hostcategory",
+ "cmdcategory",
+ "memberuser",
+ "memberhost",
+ "memberallowcmd",
+ "memberdenycmd"
+ ],
+ "hidden_attributes": [
+ "objectclass",
+ "aci"
+ ],
+ "label": "SUDO",
+ "methods": [
+ "add",
+ "add_allow_command",
+ "add_deny_command",
+ "add_host",
+ "add_option",
+ "add_runasgroup",
+ "add_runasuser",
+ "add_user",
+ "del",
+ "disable",
+ "enable",
+ "find",
+ "mod",
+ "remove_allow_command",
+ "remove_deny_command",
+ "remove_host",
+ "remove_option",
+ "remove_runasgroup",
+ "remove_runasuser",
+ "remove_user",
+ "show"
+ ],
+ "name": "sudorule",
+ "object_class": [
+ "ipaassociation",
+ "ipasudorule"
+ ],
+ "object_class_config": null,
+ "object_name": "Sudo Rule",
+ "object_name_plural": "Sudo Rules",
+ "parent_object": "",
+ "primary_key": "cn",
+ "rdn_attribute": "ipauniqueid",
+ "relationships": {
+ "member": [
+ "Member",
+ "",
+ "no_"
+ ],
+ "memberindirect": [
+ "Indirect Member",
+ null,
+ "no_indirect_"
+ ],
+ "memberof": [
+ "Member Of",
+ "in_",
+ "not_in_"
+ ]
+ },
+ "takes_params": [
+ {
+ "alwaysask": false,
+ "attribute": false,
+ "autofill": false,
+ "class": "Str",
+ "cli_name": "sudorule_name",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Rule name",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "Rule name",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "cn",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": true,
+ "query": false,
+ "required": true,
+ "type": "unicode"
+ },
+ {
+ "alwaysask": false,
+ "attribute": false,
+ "autofill": false,
+ "class": "Str",
+ "cli_name": "desc",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Description",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "Description",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "description",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "unicode"
+ },
+ {
+ "alwaysask": false,
+ "attribute": false,
+ "autofill": true,
+ "class": "Flag",
+ "cli_name": "ipaenabledflag",
+ "cli_short_name": null,
+ "default": false,
+ "doc": "Enabled",
+ "exclude": null,
+ "falsehoods": [
+ 0,
+ "0",
+ "false"
+ ],
+ "flags": [
+ "no_update",
+ "no_create",
+ "no_search"
+ ],
+ "hint": null,
+ "include": null,
+ "label": "Enabled",
+ "multivalue": false,
+ "name": "ipaenabledflag",
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "truths": [
+ "1",
+ 1,
+ "true"
+ ],
+ "type": "bool"
+ },
+ {
+ "alwaysask": false,
+ "attribute": false,
+ "autofill": false,
+ "class": "StrEnum",
+ "cli_name": "usercat",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "User category the rule applies to",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "User category",
+ "multivalue": false,
+ "name": "usercategory",
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "unicode",
+ "values": [
+ "all"
+ ]
+ },
+ {
+ "alwaysask": false,
+ "attribute": false,
+ "autofill": false,
+ "class": "StrEnum",
+ "cli_name": "hostcat",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Host category the rule applies to",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "Host category",
+ "multivalue": false,
+ "name": "hostcategory",
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "unicode",
+ "values": [
+ "all"
+ ]
+ },
+ {
+ "alwaysask": false,
+ "attribute": false,
+ "autofill": false,
+ "class": "StrEnum",
+ "cli_name": "cmdcat",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Command category the rule applies to",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "Command category",
+ "multivalue": false,
+ "name": "cmdcategory",
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "unicode",
+ "values": [
+ "all"
+ ]
+ },
+ {
+ "alwaysask": false,
+ "attribute": false,
+ "autofill": false,
+ "class": "StrEnum",
+ "cli_name": "runasusercat",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Run As User category the rule applies to",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "Run As User category",
+ "multivalue": false,
+ "name": "ipasudorunasusercategory",
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "unicode",
+ "values": [
+ "all"
+ ]
+ },
+ {
+ "alwaysask": false,
+ "attribute": false,
+ "autofill": false,
+ "class": "StrEnum",
+ "cli_name": "runasgroupcat",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Run As Group category the rule applies to",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "Run As Group category",
+ "multivalue": false,
+ "name": "ipasudorunasgroupcategory",
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "unicode",
+ "values": [
+ "all"
+ ]
+ },
+ {
+ "alwaysask": false,
+ "attribute": false,
+ "autofill": false,
+ "class": "Str",
+ "cli_name": "memberuser_user",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Users",
+ "exclude": null,
+ "flags": [
+ "no_update",
+ "no_create",
+ "no_search"
+ ],
+ "hint": null,
+ "include": null,
+ "label": "Users",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "memberuser_user",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "unicode"
+ },
+ {
+ "alwaysask": false,
+ "attribute": false,
+ "autofill": false,
+ "class": "Str",
+ "cli_name": "memberhost_host",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Hosts",
+ "exclude": null,
+ "flags": [
+ "no_update",
+ "no_create",
+ "no_search"
+ ],
+ "hint": null,
+ "include": null,
+ "label": "Hosts",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "memberhost_host",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "unicode"
+ },
+ {
+ "alwaysask": false,
+ "attribute": false,
+ "autofill": false,
+ "class": "Str",
+ "cli_name": "memberhost_hostgroup",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Host Groups",
+ "exclude": null,
+ "flags": [
+ "no_update",
+ "no_create",
+ "no_search"
+ ],
+ "hint": null,
+ "include": null,
+ "label": "Host Groups",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "memberhost_hostgroup",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "unicode"
+ },
+ {
+ "alwaysask": false,
+ "attribute": false,
+ "autofill": false,
+ "class": "Str",
+ "cli_name": "memberallowcmd_sudocmd",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Sudo Allow Commands",
+ "exclude": null,
+ "flags": [
+ "no_update",
+ "no_create",
+ "no_search"
+ ],
+ "hint": null,
+ "include": null,
+ "label": "Sudo Allow Commands",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "memberallowcmd_sudocmd",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "unicode"
+ },
+ {
+ "alwaysask": false,
+ "attribute": false,
+ "autofill": false,
+ "class": "Str",
+ "cli_name": "memberdenycmd_sudocmd",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Sudo Deny Commands",
+ "exclude": null,
+ "flags": [
+ "no_update",
+ "no_create",
+ "no_search"
+ ],
+ "hint": null,
+ "include": null,
+ "label": "Sudo Deny Commands",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "memberdenycmd_sudocmd",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "unicode"
+ },
+ {
+ "alwaysask": false,
+ "attribute": false,
+ "autofill": false,
+ "class": "Str",
+ "cli_name": "memberallowcmd_sudocmdgroup",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Sudo Command Groups",
+ "exclude": null,
+ "flags": [
+ "no_update",
+ "no_create",
+ "no_search"
+ ],
+ "hint": null,
+ "include": null,
+ "label": "Sudo Command Groups",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "memberallowcmd_sudocmdgroup",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "unicode"
+ },
+ {
+ "alwaysask": false,
+ "attribute": false,
+ "autofill": false,
+ "class": "Str",
+ "cli_name": "memberdenycmd_sudocmdgroup",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Sudo Command Groups",
+ "exclude": null,
+ "flags": [
+ "no_update",
+ "no_create",
+ "no_search"
+ ],
+ "hint": null,
+ "include": null,
+ "label": "Sudo Command Groups",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "memberdenycmd_sudocmdgroup",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "unicode"
+ },
+ {
+ "alwaysask": false,
+ "attribute": false,
+ "autofill": false,
+ "class": "Str",
+ "cli_name": "ipasudorunas_user",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Run As User",
+ "exclude": null,
+ "flags": [
+ "no_update",
+ "no_create",
+ "no_search"
+ ],
+ "hint": null,
+ "include": null,
+ "label": "Run As User",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "ipasudorunas_user",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "unicode"
+ },
+ {
+ "alwaysask": false,
+ "attribute": false,
+ "autofill": false,
+ "class": "Str",
+ "cli_name": "ipasudorunasgroup_group",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Run As Group",
+ "exclude": null,
+ "flags": [
+ "no_update",
+ "no_create",
+ "no_search"
+ ],
+ "hint": null,
+ "include": null,
+ "label": "Run As Group",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "ipasudorunasgroup_group",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "unicode"
+ },
+ {
+ "alwaysask": false,
+ "attribute": false,
+ "autofill": false,
+ "class": "Str",
+ "cli_name": "externaluser",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "External User the rule applies to",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "External User",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "externaluser",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "unicode"
+ },
+ {
+ "alwaysask": false,
+ "attribute": false,
+ "autofill": false,
+ "class": "Str",
+ "cli_name": "runasexternaluser",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "External User the commands can run as",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "RunAs External User",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "ipasudorunasextuser",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "unicode"
+ },
+ {
+ "alwaysask": false,
+ "attribute": false,
+ "autofill": false,
+ "class": "Str",
+ "cli_name": "runasexternalgroup",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "External Group the commands can run as",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "RunAs External Group",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "ipasudorunasextgroup",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "unicode"
+ }
+ ],
+ "uuid_attribute": "ipauniqueid"
+ },
+ "user": {
+ "aciattrs": [
+ "audio",
+ "businesscategory",
+ "carlicense",
+ "cn",
+ "departmentnumber",
+ "description",
+ "destinationindicator",
+ "displayname",
+ "employeenumber",
+ "employeetype",
+ "facsimiletelephonenumber",
+ "gecos",
+ "gidnumber",
+ "givenname",
+ "homedirectory",
+ "homephone",
+ "homepostaladdress",
+ "inetuserhttpurl",
+ "inetuserstatus",
+ "initials",
+ "internationalisdnnumber",
+ "ipauniqueid",
+ "jpegphoto",
+ "krbcanonicalname",
+ "krbextradata",
+ "krblastfailedauth",
+ "krblastpwdchange",
+ "krblastsuccessfulauth",
+ "krbloginfailedcount",
+ "krbmaxrenewableage",
+ "krbmaxticketlife",
+ "krbpasswordexpiration",
+ "krbprincipalaliases",
+ "krbprincipalexpiration",
+ "krbprincipalkey",
+ "krbprincipalname",
+ "krbprincipaltype",
+ "krbpwdhistory",
+ "krbpwdpolicyreference",
+ "krbticketflags",
+ "krbticketpolicyreference",
+ "krbupenabled",
+ "l",
+ "labeleduri",
+ "loginshell",
+ "mail",
+ "manager",
+ "memberof",
+ "mepmanagedentry",
+ "mobile",
+ "o",
+ "objectclass",
+ "ou",
+ "pager",
+ "photo",
+ "physicaldeliveryofficename",
+ "postaladdress",
+ "postalcode",
+ "postofficebox",
+ "preferreddeliverymethod",
+ "preferredlanguage",
+ "registeredaddress",
+ "roomnumber",
+ "secretary",
+ "seealso",
+ "sn",
+ "st",
+ "street",
+ "telephonenumber",
+ "teletexterminalidentifier",
+ "telexnumber",
+ "title",
+ "uid",
+ "uidnumber",
+ "usercertificate",
+ "userpassword",
+ "userpkcs12",
+ "usersmimecertificate",
+ "x121address",
+ "x500uniqueidentifier"
+ ],
+ "attribute_members": {
+ "memberof": [
+ "group",
+ "netgroup",
+ "role"
+ ]
+ },
+ "bindable": true,
+ "container_dn": "cn=users,cn=accounts",
+ "default_attributes": [
+ "uid",
+ "givenname",
+ "sn",
+ "homedirectory",
+ "loginshell",
+ "ou",
+ "telephonenumber",
+ "title",
+ "memberof",
+ "nsaccountlock"
+ ],
+ "hidden_attributes": [
+ "objectclass",
+ "aci"
+ ],
+ "label": "Users",
+ "methods": [
+ "add",
+ "del",
+ "disable",
+ "enable",
+ "find",
+ "mod",
+ "show"
+ ],
+ "name": "user",
+ "object_class": [
+ "posixaccount"
+ ],
+ "object_class_config": "ipauserobjectclasses",
+ "object_name": "user",
+ "object_name_plural": "users",
+ "parent_object": "",
+ "primary_key": "uid",
+ "rdn_attribute": "",
+ "relationships": {
+ "member": [
+ "Member",
+ "",
+ "no_"
+ ],
+ "memberindirect": [
+ "Indirect Member",
+ null,
+ "no_indirect_"
+ ],
+ "memberof": [
+ "Member Of",
+ "in_",
+ "not_in_"
+ ]
+ },
+ "takes_params": [
+ {
+ "alwaysask": false,
+ "attribute": false,
+ "autofill": false,
+ "class": "Str",
+ "cli_name": "login",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "User login",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "User login",
+ "length": null,
+ "maxlength": 255,
+ "minlength": null,
+ "multivalue": false,
+ "name": "uid",
+ "pattern": "^[a-zA-Z0-9_.][a-zA-Z0-9_.-]{0,252}[a-zA-Z0-9_.$-]?$",
+ "pattern_errmsg": "may only include letters, numbers, _, -, . and $",
+ "primary_key": true,
+ "query": false,
+ "required": true,
+ "type": "unicode"
+ },
+ {
+ "alwaysask": false,
+ "attribute": false,
+ "autofill": false,
+ "class": "Str",
+ "cli_name": "first",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "First name",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "First name",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "givenname",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": false,
+ "query": false,
+ "required": true,
+ "type": "unicode"
+ },
+ {
+ "alwaysask": false,
+ "attribute": false,
+ "autofill": false,
+ "class": "Str",
+ "cli_name": "last",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Last name",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "Last name",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "sn",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": false,
+ "query": false,
+ "required": true,
+ "type": "unicode"
+ },
+ {
+ "alwaysask": false,
+ "attribute": false,
+ "autofill": true,
+ "class": "Str",
+ "cli_name": "cn",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Full name",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "Full name",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "cn",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "unicode"
+ },
+ {
+ "alwaysask": false,
+ "attribute": false,
+ "autofill": true,
+ "class": "Str",
+ "cli_name": "displayname",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Display name",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "Display name",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "displayname",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "unicode"
+ },
+ {
+ "alwaysask": false,
+ "attribute": false,
+ "autofill": true,
+ "class": "Str",
+ "cli_name": "initials",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Initials",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "Initials",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "initials",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "unicode"
+ },
+ {
+ "alwaysask": false,
+ "attribute": false,
+ "autofill": false,
+ "class": "Str",
+ "cli_name": "homedir",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Home directory",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "Home directory",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "homedirectory",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "unicode"
+ },
+ {
+ "alwaysask": false,
+ "attribute": false,
+ "autofill": true,
+ "class": "Str",
+ "cli_name": "gecos",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "GECOS field",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "GECOS field",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "gecos",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "unicode"
+ },
+ {
+ "alwaysask": false,
+ "attribute": false,
+ "autofill": false,
+ "class": "Str",
+ "cli_name": "shell",
+ "cli_short_name": null,
+ "default": "/bin/sh",
+ "doc": "Login shell",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "Login shell",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "loginshell",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "unicode"
+ },
+ {
+ "alwaysask": false,
+ "attribute": false,
+ "autofill": true,
+ "class": "Str",
+ "cli_name": "principal",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Kerberos principal",
+ "exclude": null,
+ "flags": [
+ "no_update"
+ ],
+ "hint": null,
+ "include": null,
+ "label": "Kerberos principal",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "krbprincipalname",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "unicode"
+ },
+ {
+ "alwaysask": false,
+ "attribute": false,
+ "autofill": false,
+ "class": "Str",
+ "cli_name": "email",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Email address",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "Email address",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": true,
+ "name": "mail",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "unicode"
+ },
+ {
+ "alwaysask": false,
+ "attribute": false,
+ "autofill": false,
+ "class": "Password",
+ "cli_name": "password",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Prompt to set the user password",
+ "exclude": [
+ "webui"
+ ],
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "Password",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "userpassword",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "unicode"
+ },
+ {
+ "alwaysask": false,
+ "attribute": false,
+ "autofill": true,
+ "class": "Int",
+ "cli_name": "uid",
+ "cli_short_name": null,
+ "default": 999,
+ "doc": "User ID Number (system will assign one if not provided)",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "UID",
+ "maxvalue": null,
+ "minvalue": 1,
+ "multivalue": false,
+ "name": "uidnumber",
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "int"
+ },
+ {
+ "alwaysask": false,
+ "attribute": false,
+ "autofill": false,
+ "class": "Int",
+ "cli_name": "gidnumber",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Group ID Number",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "GID",
+ "maxvalue": null,
+ "minvalue": null,
+ "multivalue": false,
+ "name": "gidnumber",
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "int"
+ },
+ {
+ "alwaysask": false,
+ "attribute": false,
+ "autofill": false,
+ "class": "Str",
+ "cli_name": "street",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Street address",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "Street address",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "street",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "unicode"
+ },
+ {
+ "alwaysask": false,
+ "attribute": false,
+ "autofill": false,
+ "class": "Str",
+ "cli_name": "city",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "City",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "City",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "location",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "unicode"
+ },
+ {
+ "alwaysask": false,
+ "attribute": false,
+ "autofill": false,
+ "class": "Str",
+ "cli_name": "state",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "State",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "State",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "state",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "unicode"
+ },
+ {
+ "alwaysask": false,
+ "attribute": false,
+ "autofill": false,
+ "class": "Int",
+ "cli_name": "postalcode",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "ZIP",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "ZIP",
+ "maxvalue": null,
+ "minvalue": null,
+ "multivalue": false,
+ "name": "postalcode",
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "int"
+ },
+ {
+ "alwaysask": false,
+ "attribute": false,
+ "autofill": false,
+ "class": "Str",
+ "cli_name": "phone",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Telephone Number",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "Telephone Number",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": true,
+ "name": "telephonenumber",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "unicode"
+ },
+ {
+ "alwaysask": false,
+ "attribute": false,
+ "autofill": false,
+ "class": "Str",
+ "cli_name": "mobile",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Mobile Telephone Number",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "Mobile Telephone Number",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": true,
+ "name": "mobile",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "unicode"
+ },
+ {
+ "alwaysask": false,
+ "attribute": false,
+ "autofill": false,
+ "class": "Str",
+ "cli_name": "pager",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Pager Number",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "Pager Number",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": true,
+ "name": "pager",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "unicode"
+ },
+ {
+ "alwaysask": false,
+ "attribute": false,
+ "autofill": false,
+ "class": "Str",
+ "cli_name": "fax",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Fax Number",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "Fax Number",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": true,
+ "name": "facsimiletelephonenumber",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "unicode"
+ },
+ {
+ "alwaysask": false,
+ "attribute": false,
+ "autofill": false,
+ "class": "Str",
+ "cli_name": "orgunit",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Org. Unit",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "Org. Unit",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "ou",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "unicode"
+ },
+ {
+ "alwaysask": false,
+ "attribute": false,
+ "autofill": false,
+ "class": "Str",
+ "cli_name": "title",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Job Title",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "Job Title",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "title",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "unicode"
+ },
+ {
+ "alwaysask": false,
+ "attribute": false,
+ "autofill": false,
+ "class": "Str",
+ "cli_name": "manager",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Manager",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "Manager",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "manager",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "unicode"
+ },
+ {
+ "alwaysask": false,
+ "attribute": false,
+ "autofill": false,
+ "class": "Str",
+ "cli_name": "carlicense",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Car License",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "Car License",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "carlicense",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "unicode"
+ },
+ {
+ "alwaysask": false,
+ "attribute": false,
+ "autofill": false,
+ "class": "Bool",
+ "cli_name": "nsaccountlock",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Account activation status",
+ "exclude": null,
+ "falsehoods": [
+ 0,
+ "0",
+ "false"
+ ],
+ "flags": [
+ "no_update",
+ "no_create",
+ "no_search"
+ ],
+ "hint": null,
+ "include": null,
+ "label": "Account activation status",
+ "multivalue": false,
+ "name": "nsaccountlock",
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "truths": [
+ "1",
+ 1,
+ "true"
+ ],
+ "type": "bool"
+ }
+ ],
+ "uuid_attribute": "ipauniqueid"
+ }
+ }
+ },
+ {
+ "error": null,
+ "messages": {
+ "ajax": {
+ "401": "Your kerberos ticket no longer valid.Please run KInit and then click 'retry'If this is your first time running the IPA Web UI<a href='/ipa/errors/ssbrowser.html'> Follow these directions</a> to configure your browser."
+ },
+ "association": {
+ "managedby": "Managed by",
+ "members": "Members",
+ "membershipin": "Membership in"
+ },
+ "button": {
+ "add": "Add",
+ "enroll": "Enroll",
+ "find": "Find",
+ "remove": "Delete",
+ "reset": "Reset",
+ "update": "Update"
+ },
+ "details": {
+ "account": "Account Settings",
+ "contact": "Contact Settings",
+ "employee": "Employee Information",
+ "identity": "Identity Settings",
+ "mailing": "Mailing Address",
+ "misc": "Misc. Information",
+ "to_top": "Back to Top"
+ },
+ "facets": {
+ "details": "Settings",
+ "search": "Search"
+ },
+ "login": {
+ "header": "Logged In As"
+ },
+ "search": {
+ "delete_confirm": "Do you really want to delete the selected entries?",
+ "quick_links": "Quick Links",
+ "select_all": "Select All",
+ "unselect_all": "Unselect All"
+ }
+ }
+ },
+ {
+ "count": 1,
+ "error": null,
+ "result": [
+ {
+ "cn": [
+ "Administrator"
+ ],
+ "dn": "uid=admin,cn=users,cn=accounts,dc=ipa14,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com",
+ "gecos": [
+ "Administrator"
+ ],
+ "gidnumber": [
+ "590200000"
+ ],
+ "homedirectory": [
+ "/home/admin"
+ ],
+ "ipauniqueid": [
+ "3f1c60c6-2026-11e0-80c2-52540029a798"
+ ],
+ "krblastpwdchange": [
+ "20110114213748Z"
+ ],
+ "krblastsuccessfulauth": [
+ "20110114213845Z"
+ ],
+ "krbpasswordexpiration": [
+ "20110414213748Z"
+ ],
+ "krbprincipalname": [
+ "admin@IPA14.AYOUNG.BOSTON.DEVEL.REDHAT.COM"
+ ],
+ "loginshell": [
+ "/bin/bash"
+ ],
+ "memberof_group": [
+ "admins"
+ ],
+ "mepmanagedentry": [
+ "cn=admin,cn=groups,cn=accounts,dc=ipa14,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com"
+ ],
+ "nsaccountlock": [
+ "False"
+ ],
+ "objectclass": [
+ "top",
+ "person",
+ "posixaccount",
+ "krbprincipalaux",
+ "krbticketpolicyaux",
+ "inetuser",
+ "ipaobject",
+ "mepOriginEntry"
+ ],
+ "sn": [
+ "Administrator"
+ ],
+ "uid": [
+ "admin"
+ ],
+ "uidnumber": [
+ "590200000"
+ ]
+ }
+ ],
+ "summary": "1 user matched",
+ "truncated": false
+ },
+ {
+ "count": 65,
+ "error": null,
+ "result": {
+ "basedn": "dc=ipa14,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com",
+ "bin": "/var/www",
+ "ca_agent_port": 9443,
+ "ca_ee_port": 9444,
+ "ca_host": "ipa14.ayoung.boston.devel.redhat.com",
+ "ca_port": 9180,
+ "conf": "/etc/ipa/server.conf",
+ "conf_default": "/etc/ipa/default.conf",
+ "confdir": "/etc/ipa",
+ "config_loaded": true,
+ "container_accounts": "cn=accounts",
+ "container_applications": "cn=applications,cn=configs,cn=policies",
+ "container_automount": "cn=automount",
+ "container_configs": "cn=configs,cn=policies",
+ "container_dns": "cn=dns",
+ "container_group": "cn=groups,cn=accounts",
+ "container_hbac": "cn=hbac",
+ "container_hbacservice": "cn=hbacservices,cn=hbac",
+ "container_hbacservicegroup": "cn=hbacservicegroups,cn=hbac",
+ "container_host": "cn=computers,cn=accounts",
+ "container_hostgroup": "cn=hostgroups,cn=accounts",
+ "container_netgroup": "cn=ng,cn=alt",
+ "container_permission": "cn=permissions,cn=pbac",
+ "container_policies": "cn=policies",
+ "container_policygroups": "cn=policygroups,cn=configs,cn=policies",
+ "container_policylinks": "cn=policylinks,cn=configs,cn=policies",
+ "container_privilege": "cn=privileges,cn=pbac",
+ "container_rolegroup": "cn=roles,cn=accounts",
+ "container_roles": "cn=roles,cn=policies",
+ "container_service": "cn=services,cn=accounts",
+ "container_sudocmd": "cn=sudocmds,cn=sudo",
+ "container_sudocmdgroup": "cn=sudocmdgroups,cn=sudo",
+ "container_sudorule": "cn=sudorules,cn=sudo",
+ "container_user": "cn=users,cn=accounts",
+ "container_virtual": "cn=virtual operations,cn=etc",
+ "context": "server",
+ "debug": false,
+ "domain": "ayoung.boston.devel.redhat.com",
+ "dot_ipa": "/var/www/.ipa",
+ "enable_ra": true,
+ "fallback": true,
+ "home": "/var/www",
+ "host": "ipa14.ayoung.boston.devel.redhat.com",
+ "in_server": true,
+ "in_tree": false,
+ "interactive": true,
+ "ipalib": "/usr/lib/python2.7/site-packages/ipalib",
+ "ldap_uri": "ldapi://%2fvar%2frun%2fslapd-IPA14-AYOUNG-BOSTON-DEVEL-REDHAT-COM.socket",
+ "log": null,
+ "logdir": "/var/log/ipa",
+ "mode": "production",
+ "mount_ipa": "/ipa/",
+ "mount_jsonserver": "json",
+ "mount_xmlserver": "xml",
+ "prompt_all": false,
+ "ra_plugin": "selfsign",
+ "realm": "IPA14.AYOUNG.BOSTON.DEVEL.REDHAT.COM",
+ "rpc_json_uri": "http://localhost:8888/ipa/json",
+ "script": "/var/www/mod_wsgi",
+ "site_packages": "/usr/lib/python2.7/site-packages",
+ "startup_traceback": false,
+ "verbose": 0,
+ "webui_assets_dir": null,
+ "webui_prod": true,
+ "xmlrpc_uri": "https://ipa14.ayoung.boston.devel.redhat.com/ipa/xml"
+ },
+ "summary": "65 variables",
+ "total": 65
+ }
+ ]
+ }
+}
diff --git a/install/ui/test/data/json_metadata.json b/install/ui/test/data/json_metadata.json
new file mode 100644
index 000000000..222a8b65c
--- /dev/null
+++ b/install/ui/test/data/json_metadata.json
@@ -0,0 +1,4097 @@
+{
+ "error": null,
+ "id": 0,
+ "result": {
+ "messages": {
+ "ajax": {
+ "401": "Your kerberos ticket no longer valid.Please run KInit and then click 'retry'If this is your first time running the IPA Web UI<a href='/ipa/errors/ssbrowser.html'> Follow these directions</a> to configure your browser."
+ },
+ "button": {
+ "add": "Add",
+ "enroll": "Enroll",
+ "find": "Find",
+ "remove": "Delete",
+ "reset": "Reset",
+ "update": "Update"
+ },
+ "details": {
+ "account": "Account Details",
+ "contact": "Contact Details",
+ "employee": " Employee Information",
+ "identity": "Identity Details",
+ "mailing": "Mailing Address",
+ "misc": "Misc. Information",
+ "to_top": "Back to Top"
+ },
+ "login": {
+ "header": "Logged In As"
+ },
+ "search": {
+ "delete_confirm": "Do you really want to delete the selected entries?",
+ "quick_links": "Quick Links",
+ "select_all": "Select All",
+ "unselect_all": "Unselect All"
+ }
+ },
+ "metadata": {
+ "aci": {
+ "__base64__": ""
+ },
+ "automountkey": {
+ "attribute_members": {},
+ "container_dn": "cn=automount",
+ "default_attributes": [
+ "automountkey",
+ "automountinformation",
+ "description"
+ ],
+ "hidden_attributes": [
+ "objectclass",
+ "aci"
+ ],
+ "label": "Automount Keys",
+ "methods": [
+ "add",
+ "del",
+ "find",
+ "mod",
+ "show"
+ ],
+ "name": "automountkey",
+ "object_class": [
+ "automount"
+ ],
+ "object_class_config": null,
+ "object_name": "automount key",
+ "object_name_plural": "automount keys",
+ "parent_object": "automountmap",
+ "primary_key": "automountkey",
+ "rdn_attribute": "",
+ "takes_params": [
+ {
+ "attribute": false,
+ "autofill": false,
+ "class": "Str",
+ "cli_name": "key",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Automount key name",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "Key",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "automountkey",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": true,
+ "query": false,
+ "required": true,
+ "type": "unicode"
+ },
+ {
+ "attribute": false,
+ "autofill": false,
+ "class": "Str",
+ "cli_name": "info",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Mount information",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "Mount information",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "automountinformation",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": false,
+ "query": false,
+ "required": true,
+ "type": "unicode"
+ },
+ {
+ "attribute": false,
+ "autofill": false,
+ "class": "Str",
+ "cli_name": "desc",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "description",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "description",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "description",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "unicode"
+ }
+ ],
+ "uuid_attribute": ""
+ },
+ "automountlocation": {
+ "attribute_members": {},
+ "container_dn": "cn=automount",
+ "default_attributes": [
+ "cn"
+ ],
+ "hidden_attributes": [
+ "objectclass",
+ "aci"
+ ],
+ "label": "Automount",
+ "methods": [
+ "add",
+ "del",
+ "find",
+ "import",
+ "show",
+ "tofiles"
+ ],
+ "name": "automountlocation",
+ "object_class": [
+ "nscontainer"
+ ],
+ "object_class_config": null,
+ "object_name": "automount location",
+ "object_name_plural": "automount locations",
+ "parent_object": "",
+ "primary_key": "cn",
+ "rdn_attribute": "",
+ "takes_params": [
+ {
+ "attribute": false,
+ "autofill": false,
+ "class": "Str",
+ "cli_name": "location",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Automount location name",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "Location",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "cn",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": true,
+ "query": false,
+ "required": true,
+ "type": "unicode"
+ }
+ ],
+ "uuid_attribute": ""
+ },
+ "automountmap": {
+ "attribute_members": {},
+ "container_dn": "cn=automount",
+ "default_attributes": [
+ "automountmapname",
+ "description"
+ ],
+ "hidden_attributes": [
+ "objectclass",
+ "aci"
+ ],
+ "label": "Automount Maps",
+ "methods": [
+ "add",
+ "add_indirect",
+ "del",
+ "find",
+ "mod",
+ "show"
+ ],
+ "name": "automountmap",
+ "object_class": [
+ "automountmap"
+ ],
+ "object_class_config": null,
+ "object_name": "automount map",
+ "object_name_plural": "automount maps",
+ "parent_object": "automountlocation",
+ "primary_key": "automountmapname",
+ "rdn_attribute": "",
+ "takes_params": [
+ {
+ "attribute": false,
+ "autofill": false,
+ "class": "Str",
+ "cli_name": "map",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Automount map name",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "Map",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "automountmapname",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": true,
+ "query": false,
+ "required": true,
+ "type": "unicode"
+ },
+ {
+ "attribute": false,
+ "autofill": false,
+ "class": "Str",
+ "cli_name": "desc",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Description",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "Description",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "description",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "unicode"
+ }
+ ],
+ "uuid_attribute": ""
+ },
+ "config": {
+ "attribute_members": {},
+ "container_dn": "",
+ "default_attributes": [
+ "ipamaxusernamelength",
+ "ipahomesrootdir",
+ "ipadefaultloginshell",
+ "ipadefaultprimarygroup",
+ "ipadefaultdomain",
+ "ipasearchtimelimit",
+ "ipasearchrecordslimit",
+ "ipausersearchfields",
+ "ipagroupsearchfields",
+ "ipamigrationenabled",
+ "ipacertificatesubjectbase"
+ ],
+ "hidden_attributes": [
+ "objectclass",
+ "aci"
+ ],
+ "label": "Configuration",
+ "methods": [
+ "mod",
+ "show"
+ ],
+ "name": "config",
+ "object_class": [],
+ "object_class_config": null,
+ "object_name": "configuration options",
+ "object_name_plural": "entries",
+ "parent_object": "",
+ "rdn_attribute": "",
+ "takes_params": [
+ {
+ "attribute": false,
+ "autofill": false,
+ "class": "Int",
+ "cli_name": "maxusername",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Max username length",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "Max username length",
+ "maxvalue": null,
+ "minvalue": 1,
+ "multivalue": false,
+ "name": "ipamaxusernamelength",
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "int"
+ },
+ {
+ "attribute": false,
+ "autofill": false,
+ "class": "Str",
+ "cli_name": "homedirectory",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Default location of home directories",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "Home directory base",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "ipahomesrootdir",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "unicode"
+ },
+ {
+ "attribute": false,
+ "autofill": false,
+ "class": "Str",
+ "cli_name": "defaultshell",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Default shell for new users",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "Default shell",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "ipadefaultloginshell",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "unicode"
+ },
+ {
+ "attribute": false,
+ "autofill": false,
+ "class": "Str",
+ "cli_name": "defaultgroup",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Default group for new users",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "Default users group",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "ipadefaultprimarygroup",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "unicode"
+ },
+ {
+ "attribute": false,
+ "autofill": false,
+ "class": "Str",
+ "cli_name": "emaildomain",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Default e-mail domain new users",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "Default e-mail domain",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "ipadefaultemaildomain",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "unicode"
+ },
+ {
+ "attribute": false,
+ "autofill": false,
+ "class": "Int",
+ "cli_name": "searchtimelimit",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Max. amount of time (sec.) for a search (-1 is unlimited)",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "Search time limit",
+ "maxvalue": null,
+ "minvalue": -1,
+ "multivalue": false,
+ "name": "ipasearchtimelimit",
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "int"
+ },
+ {
+ "attribute": false,
+ "autofill": false,
+ "class": "Int",
+ "cli_name": "searchrecordslimit",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Max. number of records to search (-1 is unlimited)",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "Search size limit",
+ "maxvalue": null,
+ "minvalue": -1,
+ "multivalue": false,
+ "name": "ipasearchrecordslimit",
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "int"
+ },
+ {
+ "attribute": false,
+ "autofill": false,
+ "class": "Str",
+ "cli_name": "usersearch",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "A comma-separated list of fields to search when searching for users",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "User search fields",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "ipausersearchfields",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "unicode"
+ },
+ {
+ "attribute": false,
+ "autofill": false,
+ "class": "Str",
+ "cli_name": "groupsearch",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "A comma-separated list of fields to search when searching for groups",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "Group search fields",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "ipagroupsearchfields",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "unicode"
+ },
+ {
+ "attribute": false,
+ "autofill": false,
+ "class": "Bool",
+ "cli_name": "enable_migration",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Enable migration mode",
+ "exclude": null,
+ "falsehoods": [
+ 0,
+ "0",
+ "false"
+ ],
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "Migration mode",
+ "multivalue": false,
+ "name": "ipamigrationenabled",
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "truths": [
+ "1",
+ 1,
+ "true"
+ ],
+ "type": "bool"
+ },
+ {
+ "attribute": false,
+ "autofill": false,
+ "class": "Str",
+ "cli_name": "subject",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Base for certificate subjects (OU=Test,O=Example)",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "Certificate Subject base",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "ipacertificatesubjectbase",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "unicode"
+ }
+ ],
+ "uuid_attribute": ""
+ },
+ "cosentry": {
+ "attribute_members": {},
+ "container_dn": "cn=costemplates,cn=accounts",
+ "default_attributes": [
+ "cn",
+ "cospriority",
+ "krbpwdpolicyreference"
+ ],
+ "hidden_attributes": [
+ "objectclass",
+ "aci"
+ ],
+ "label": "<cosentry.label>",
+ "methods": [
+ "add",
+ "del",
+ "find",
+ "mod",
+ "show"
+ ],
+ "name": "cosentry",
+ "object_class": [
+ "top",
+ "costemplate",
+ "extensibleobject",
+ "krbcontainer"
+ ],
+ "object_class_config": null,
+ "object_name": "entry",
+ "object_name_plural": "entries",
+ "parent_object": "",
+ "primary_key": "cn",
+ "rdn_attribute": "",
+ "takes_params": [
+ {
+ "attribute": false,
+ "autofill": false,
+ "class": "Str",
+ "cli_name": "cn",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "<cn>",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "<cn>",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "cn",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": true,
+ "query": false,
+ "required": true,
+ "type": "unicode"
+ },
+ {
+ "attribute": false,
+ "autofill": false,
+ "class": "Str",
+ "cli_name": "krbpwdpolicyreference",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "<krbpwdpolicyreference>",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "<krbpwdpolicyreference>",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "krbpwdpolicyreference",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": false,
+ "query": false,
+ "required": true,
+ "type": "unicode"
+ },
+ {
+ "attribute": false,
+ "autofill": false,
+ "class": "Int",
+ "cli_name": "cospriority",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "<cospriority>",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "<cospriority>",
+ "maxvalue": null,
+ "minvalue": 0,
+ "multivalue": false,
+ "name": "cospriority",
+ "primary_key": false,
+ "query": false,
+ "required": true,
+ "type": "int"
+ }
+ ],
+ "uuid_attribute": ""
+ },
+ "dns": {
+ "default_attributes": [
+ "idnsname",
+ "idnszoneactive",
+ "idnssoamname",
+ "idnssoarname",
+ "idnssoaserial",
+ "idnssoarefresh",
+ "idnssoaretry",
+ "idnssoaexpire",
+ "idnssoaminimum"
+ ],
+ "label": "DNS",
+ "methods": [
+ "add",
+ "del",
+ "find",
+ "mod",
+ "show"
+ ],
+ "name": "dns",
+ "primary_key": "idnsname",
+ "takes_params": [
+ {
+ "attribute": false,
+ "autofill": false,
+ "class": "Str",
+ "cli_name": "name",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Zone name (FQDN)",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "Zone",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "idnsname",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": true,
+ "query": false,
+ "required": true,
+ "type": "unicode"
+ },
+ {
+ "attribute": false,
+ "autofill": false,
+ "class": "Str",
+ "cli_name": "name_server",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Authoritative name server",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "Authoritative name server",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "idnssoamname",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": false,
+ "query": false,
+ "required": true,
+ "type": "unicode"
+ },
+ {
+ "attribute": false,
+ "autofill": false,
+ "class": "Str",
+ "cli_name": "admin_email",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "administrator e-mail address",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "administrator e-mail address",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "idnssoarname",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": false,
+ "query": false,
+ "required": true,
+ "type": "unicode"
+ },
+ {
+ "attribute": false,
+ "autofill": false,
+ "class": "Int",
+ "cli_name": "serial",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "SOA serial",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "SOA serial",
+ "maxvalue": null,
+ "minvalue": null,
+ "multivalue": false,
+ "name": "idnssoaserial",
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "int"
+ },
+ {
+ "attribute": false,
+ "autofill": false,
+ "class": "Int",
+ "cli_name": "refresh",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "SOA refresh",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "SOA refresh",
+ "maxvalue": null,
+ "minvalue": null,
+ "multivalue": false,
+ "name": "idnssoarefresh",
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "int"
+ },
+ {
+ "attribute": false,
+ "autofill": false,
+ "class": "Int",
+ "cli_name": "retry",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "SOA retry",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "SOA retry",
+ "maxvalue": null,
+ "minvalue": null,
+ "multivalue": false,
+ "name": "idnssoaretry",
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "int"
+ },
+ {
+ "attribute": false,
+ "autofill": false,
+ "class": "Int",
+ "cli_name": "expire",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "SOA expire",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "SOA expire",
+ "maxvalue": null,
+ "minvalue": null,
+ "multivalue": false,
+ "name": "idnssoaexpire",
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "int"
+ },
+ {
+ "attribute": false,
+ "autofill": false,
+ "class": "Int",
+ "cli_name": "minimum",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "SOA minimum",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "SOA minimum",
+ "maxvalue": null,
+ "minvalue": null,
+ "multivalue": false,
+ "name": "idnssoaminimum",
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "int"
+ },
+ {
+ "attribute": false,
+ "autofill": false,
+ "class": "Int",
+ "cli_name": "ttl",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "SOA time to live",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "SOA time to live",
+ "maxvalue": null,
+ "minvalue": null,
+ "multivalue": false,
+ "name": "dnsttl",
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "int"
+ },
+ {
+ "attribute": false,
+ "autofill": false,
+ "class": "StrEnum",
+ "cli_name": "class",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "SOA class",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "SOA class",
+ "multivalue": false,
+ "name": "dnsclass",
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "unicode",
+ "values": [
+ "IN",
+ "CS",
+ "CH",
+ "HS"
+ ]
+ },
+ {
+ "attribute": false,
+ "autofill": true,
+ "class": "Flag",
+ "cli_name": "allow_dynupdate",
+ "cli_short_name": null,
+ "default": false,
+ "doc": "allow dynamic update?",
+ "exclude": null,
+ "falsehoods": [
+ 0,
+ "0",
+ "false"
+ ],
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "allow dynamic update?",
+ "multivalue": false,
+ "name": "idnsallowdynupdate",
+ "primary_key": false,
+ "query": false,
+ "required": true,
+ "truths": [
+ "1",
+ 1,
+ "true"
+ ],
+ "type": "bool"
+ },
+ {
+ "attribute": false,
+ "autofill": false,
+ "class": "Str",
+ "cli_name": "update_policy",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "BIND update policy",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "BIND update policy",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "idnsupdatepolicy",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "unicode"
+ }
+ ]
+ },
+ "group": {
+ "attribute_members": {
+ "member": [
+ "user",
+ "group"
+ ],
+ "memberindirect": [
+ "user",
+ "group",
+ "netgroup",
+ "rolegroup",
+ "taskgroup"
+ ],
+ "memberof": [
+ "group",
+ "netgroup",
+ "rolegroup",
+ "taskgroup"
+ ]
+ },
+ "container_dn": "cn=groups,cn=accounts",
+ "default_attributes": [
+ "cn",
+ "description",
+ "gidnumber",
+ "member",
+ "memberof",
+ "memberindirect"
+ ],
+ "hidden_attributes": [
+ "objectclass",
+ "aci"
+ ],
+ "label": "User Groups",
+ "methods": [
+ "add",
+ "add_member",
+ "del",
+ "detach",
+ "find",
+ "mod",
+ "remove_member",
+ "show"
+ ],
+ "name": "group",
+ "object_class": [
+ "ipausergroup"
+ ],
+ "object_class_config": "ipagroupobjectclasses",
+ "object_name": "group",
+ "object_name_plural": "groups",
+ "parent_object": "",
+ "primary_key": "cn",
+ "rdn_attribute": "",
+ "takes_params": [
+ {
+ "attribute": false,
+ "autofill": false,
+ "class": "Str",
+ "cli_name": "name",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Group name",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "Group name",
+ "length": null,
+ "maxlength": 33,
+ "minlength": null,
+ "multivalue": false,
+ "name": "cn",
+ "pattern": "^[a-zA-Z0-9_.][a-zA-Z0-9_.-]{0,30}[a-zA-Z0-9_.$-]?$",
+ "pattern_errmsg": "may only include letters, numbers, _, -, . and $",
+ "primary_key": true,
+ "query": false,
+ "required": true,
+ "type": "unicode"
+ },
+ {
+ "attribute": false,
+ "autofill": false,
+ "class": "Str",
+ "cli_name": "desc",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Group description",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "Description",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "description",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": false,
+ "query": false,
+ "required": true,
+ "type": "unicode"
+ },
+ {
+ "attribute": false,
+ "autofill": false,
+ "class": "Int",
+ "cli_name": "gid",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "GID (use this option to set it manually)",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "GID",
+ "maxvalue": null,
+ "minvalue": null,
+ "multivalue": false,
+ "name": "gidnumber",
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "int"
+ }
+ ],
+ "uuid_attribute": "ipauniqueid"
+ },
+ "hbac": {
+ "attribute_members": {
+ "memberhost": [
+ "host",
+ "hostgroup"
+ ],
+ "memberservice": [
+ "hbacsvc",
+ "hbacsvcgroup"
+ ],
+ "memberuser": [
+ "user",
+ "group"
+ ],
+ "sourcehost": [
+ "host",
+ "hostgroup"
+ ]
+ },
+ "container_dn": "cn=hbac",
+ "default_attributes": [
+ "cn",
+ "accessruletype",
+ "ipaenabledflag",
+ "accesstime",
+ "description",
+ "usercategory",
+ "hostcategory",
+ "sourcehostcategory",
+ "servicecategory",
+ "ipaenabledflag",
+ "memberuser",
+ "sourcehost",
+ "memberhost",
+ "memberservice",
+ "memberhostgroup"
+ ],
+ "hidden_attributes": [
+ "objectclass",
+ "aci"
+ ],
+ "label": "HBAC",
+ "methods": [
+ "add",
+ "add_accesstime",
+ "add_host",
+ "add_service",
+ "add_sourcehost",
+ "add_user",
+ "del",
+ "disable",
+ "enable",
+ "find",
+ "mod",
+ "remove_accesstime",
+ "remove_host",
+ "remove_service",
+ "remove_sourcehost",
+ "remove_user",
+ "show"
+ ],
+ "name": "hbac",
+ "object_class": [
+ "ipaassociation",
+ "ipahbacrule"
+ ],
+ "object_class_config": null,
+ "object_name": "HBAC rule",
+ "object_name_plural": "HBAC rules",
+ "parent_object": "",
+ "primary_key": "cn",
+ "rdn_attribute": "ipauniqueid",
+ "takes_params": [
+ {
+ "attribute": false,
+ "autofill": false,
+ "class": "Str",
+ "cli_name": "name",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Rule name",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "Rule name",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "cn",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": true,
+ "query": false,
+ "required": true,
+ "type": "unicode"
+ },
+ {
+ "attribute": false,
+ "autofill": false,
+ "class": "StrEnum",
+ "cli_name": "type",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Rule type (allow or deny)",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "Rule type",
+ "multivalue": false,
+ "name": "accessruletype",
+ "primary_key": false,
+ "query": false,
+ "required": true,
+ "type": "unicode",
+ "values": [
+ "allow",
+ "deny"
+ ]
+ },
+ {
+ "attribute": false,
+ "autofill": false,
+ "class": "StrEnum",
+ "cli_name": "usercat",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "User category the rule applies to",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "User category",
+ "multivalue": false,
+ "name": "usercategory",
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "unicode",
+ "values": [
+ "all"
+ ]
+ },
+ {
+ "attribute": false,
+ "autofill": false,
+ "class": "StrEnum",
+ "cli_name": "hostcat",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Host category the rule applies to",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "Host category",
+ "multivalue": false,
+ "name": "hostcategory",
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "unicode",
+ "values": [
+ "all"
+ ]
+ },
+ {
+ "attribute": false,
+ "autofill": false,
+ "class": "StrEnum",
+ "cli_name": "srchostcat",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Source host category the rule applies to",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "Source host category",
+ "multivalue": false,
+ "name": "sourcehostcategory",
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "unicode",
+ "values": [
+ "all"
+ ]
+ },
+ {
+ "attribute": false,
+ "autofill": false,
+ "class": "StrEnum",
+ "cli_name": "servicecat",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Service category the rule applies to",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "Service category",
+ "multivalue": false,
+ "name": "servicecategory",
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "unicode",
+ "values": [
+ "all"
+ ]
+ },
+ {
+ "attribute": false,
+ "autofill": false,
+ "class": "AccessTime",
+ "cli_name": "time",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Access time",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "Access time",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "accesstime",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "unicode"
+ },
+ {
+ "attribute": false,
+ "autofill": false,
+ "class": "Str",
+ "cli_name": "desc",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Description",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "Description",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "description",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "unicode"
+ },
+ {
+ "attribute": false,
+ "autofill": true,
+ "class": "Flag",
+ "cli_name": "ipaenabledflag",
+ "cli_short_name": null,
+ "default": false,
+ "doc": "Enabled",
+ "exclude": null,
+ "falsehoods": [
+ 0,
+ "0",
+ "false"
+ ],
+ "flags": [
+ "no_update",
+ "no_create",
+ "no_search"
+ ],
+ "hint": null,
+ "include": null,
+ "label": "Enabled",
+ "multivalue": false,
+ "name": "ipaenabledflag",
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "truths": [
+ "1",
+ 1,
+ "true"
+ ],
+ "type": "bool"
+ },
+ {
+ "attribute": false,
+ "autofill": false,
+ "class": "Str",
+ "cli_name": "memberuser_user",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Users",
+ "exclude": null,
+ "flags": [
+ "no_update",
+ "no_create",
+ "no_search"
+ ],
+ "hint": null,
+ "include": null,
+ "label": "Users",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "memberuser_user",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "unicode"
+ },
+ {
+ "attribute": false,
+ "autofill": false,
+ "class": "Str",
+ "cli_name": "memberhost_host",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Hosts",
+ "exclude": null,
+ "flags": [
+ "no_update",
+ "no_create",
+ "no_search"
+ ],
+ "hint": null,
+ "include": null,
+ "label": "Hosts",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "memberhost_host",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "unicode"
+ },
+ {
+ "attribute": false,
+ "autofill": false,
+ "class": "Str",
+ "cli_name": "memberhost_hostgroup",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Host Groups",
+ "exclude": null,
+ "flags": [
+ "no_update",
+ "no_create",
+ "no_search"
+ ],
+ "hint": null,
+ "include": null,
+ "label": "Host Groups",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "memberhost_hostgroup",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "unicode"
+ },
+ {
+ "attribute": false,
+ "autofill": false,
+ "class": "Str",
+ "cli_name": "sourcehost_host",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Source hosts",
+ "exclude": null,
+ "flags": [
+ "no_update",
+ "no_create",
+ "no_search"
+ ],
+ "hint": null,
+ "include": null,
+ "label": "Source hosts",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "sourcehost_host",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "unicode"
+ },
+ {
+ "attribute": false,
+ "autofill": false,
+ "class": "Str",
+ "cli_name": "memberservice_service",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Services",
+ "exclude": null,
+ "flags": [
+ "no_update",
+ "no_create",
+ "no_search"
+ ],
+ "hint": null,
+ "include": null,
+ "label": "Services",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "memberservice_service",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "unicode"
+ },
+ {
+ "attribute": false,
+ "autofill": false,
+ "class": "Str",
+ "cli_name": "memberservice_servicegroup",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Service Groups",
+ "exclude": null,
+ "flags": [
+ "no_update",
+ "no_create",
+ "no_search"
+ ],
+ "hint": null,
+ "include": null,
+ "label": "Service Groups",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "memberservice_servicegroup",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "unicode"
+ }
+ ],
+ "uuid_attribute": "ipauniqueid"
+ },
+ "hbacsvc": {
+ "attribute_members": {},
+ "container_dn": "cn=hbacservices,cn=hbac",
+ "default_attributes": [
+ "cn",
+ "description",
+ "memberindirect"
+ ],
+ "hidden_attributes": [
+ "objectclass",
+ "aci"
+ ],
+ "label": "Services",
+ "methods": [
+ "add",
+ "del",
+ "find",
+ "mod",
+ "show"
+ ],
+ "name": "hbacsvc",
+ "object_class": [
+ "ipaobject",
+ "ipahbacservice"
+ ],
+ "object_class_config": null,
+ "object_name": "hbacsvc",
+ "object_name_plural": "hbacsvcs",
+ "parent_object": "",
+ "primary_key": "cn",
+ "rdn_attribute": "",
+ "takes_params": [
+ {
+ "attribute": false,
+ "autofill": false,
+ "class": "Str",
+ "cli_name": "service",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "HBAC Service",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "Service name",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "cn",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": true,
+ "query": false,
+ "required": true,
+ "type": "unicode"
+ },
+ {
+ "attribute": false,
+ "autofill": false,
+ "class": "Str",
+ "cli_name": "desc",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Description of service",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "Description",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "description",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "unicode"
+ }
+ ],
+ "uuid_attribute": "ipauniqueid"
+ },
+ "hbacsvcgroup": {
+ "attribute_members": {
+ "member": [
+ "hbacsvc"
+ ]
+ },
+ "container_dn": "cn=hbacservicegroups,cn=hbac",
+ "default_attributes": [
+ "cn",
+ "description",
+ "member"
+ ],
+ "hidden_attributes": [
+ "objectclass",
+ "aci"
+ ],
+ "label": "HBAC Service Groups",
+ "methods": [
+ "add",
+ "add_member",
+ "del",
+ "find",
+ "mod",
+ "remove_member",
+ "show"
+ ],
+ "name": "hbacsvcgroup",
+ "object_class": [
+ "ipaobject",
+ "ipahbacservicegroup"
+ ],
+ "object_class_config": null,
+ "object_name": "hbacsvcgroup",
+ "object_name_plural": "hbacsvcgroups",
+ "parent_object": "",
+ "primary_key": "cn",
+ "rdn_attribute": "",
+ "takes_params": [
+ {
+ "attribute": false,
+ "autofill": false,
+ "class": "Str",
+ "cli_name": "name",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Service group name",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "Service group name",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "cn",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": true,
+ "query": false,
+ "required": true,
+ "type": "unicode"
+ },
+ {
+ "attribute": false,
+ "autofill": false,
+ "class": "Str",
+ "cli_name": "desc",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "HBAC service group description",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "Description",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "description",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": false,
+ "query": false,
+ "required": true,
+ "type": "unicode"
+ }
+ ],
+ "uuid_attribute": "ipauniqueid"
+ },
+ "host": {
+ "attribute_members": {
+ "enrolledby": [
+ "user"
+ ],
+ "memberof": [
+ "hostgroup",
+ "netgroup",
+ "rolegroup"
+ ]
+ },
+ "container_dn": "cn=computers,cn=accounts",
+ "default_attributes": [
+ "fqdn",
+ "description",
+ "l",
+ "nshostlocation",
+ "krbprincipalname",
+ "nshardwareplatform",
+ "nsosversion",
+ "usercertificate",
+ "memberof",
+ "krblastpwdchange"
+ ],
+ "hidden_attributes": [
+ "objectclass",
+ "aci"
+ ],
+ "label": "Hosts",
+ "methods": [
+ "add",
+ "del",
+ "disable",
+ "find",
+ "mod",
+ "show"
+ ],
+ "name": "host",
+ "object_class": [
+ "ipaobject",
+ "nshost",
+ "ipahost",
+ "pkiuser",
+ "ipaservice"
+ ],
+ "object_class_config": null,
+ "object_name": "host",
+ "object_name_plural": "hosts",
+ "parent_object": "",
+ "primary_key": "fqdn",
+ "rdn_attribute": "",
+ "takes_params": [
+ {
+ "attribute": false,
+ "autofill": false,
+ "class": "Str",
+ "cli_name": "hostname",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Host name",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "Host name",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "fqdn",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": true,
+ "query": false,
+ "required": true,
+ "type": "unicode"
+ },
+ {
+ "attribute": false,
+ "autofill": false,
+ "class": "Str",
+ "cli_name": "desc",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "A description of this host",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "Description",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "description",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "unicode"
+ },
+ {
+ "attribute": false,
+ "autofill": false,
+ "class": "Str",
+ "cli_name": "locality",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Host locality (e.g. \"Baltimore, MD\")",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "Locality",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "l",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "unicode"
+ },
+ {
+ "attribute": false,
+ "autofill": false,
+ "class": "Str",
+ "cli_name": "location",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Host location (e.g. \"Lab 2\")",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "Location",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "nshostlocation",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "unicode"
+ },
+ {
+ "attribute": false,
+ "autofill": false,
+ "class": "Str",
+ "cli_name": "platform",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Host hardware platform (e.g. \"Lenovo T61\")",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "Platform",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "nshardwareplatform",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "unicode"
+ },
+ {
+ "attribute": false,
+ "autofill": false,
+ "class": "Str",
+ "cli_name": "os",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Host operating system and version (e.g. \"Fedora 9\")",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "Operating system",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "nsosversion",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "unicode"
+ },
+ {
+ "attribute": false,
+ "autofill": false,
+ "class": "Str",
+ "cli_name": "password",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Password used in bulk enrollment",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "User password",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "userpassword",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "unicode"
+ },
+ {
+ "attribute": false,
+ "autofill": true,
+ "class": "Flag",
+ "cli_name": "random",
+ "cli_short_name": null,
+ "default": false,
+ "doc": "Generate a random password to be used in bulk enrollment",
+ "exclude": null,
+ "falsehoods": [
+ 0,
+ "0",
+ "false"
+ ],
+ "flags": [
+ "no_search"
+ ],
+ "hint": null,
+ "include": null,
+ "label": "<random>",
+ "multivalue": false,
+ "name": "random",
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "truths": [
+ "1",
+ 1,
+ "true"
+ ],
+ "type": "bool"
+ },
+ {
+ "attribute": false,
+ "autofill": false,
+ "class": "Str",
+ "cli_name": "randompassword",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Random password",
+ "exclude": null,
+ "flags": [
+ "no_update",
+ "no_create",
+ "no_search"
+ ],
+ "hint": null,
+ "include": null,
+ "label": "Random password",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "randompassword",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "unicode"
+ },
+ {
+ "attribute": false,
+ "autofill": false,
+ "class": "Bytes",
+ "cli_name": "certificate",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Base-64 encoded server certificate",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "Certificate",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "usercertificate",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "str"
+ },
+ {
+ "attribute": false,
+ "autofill": false,
+ "class": "Str",
+ "cli_name": "krbprincipalname",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Principal name",
+ "exclude": null,
+ "flags": [
+ "no_update",
+ "no_create",
+ "no_search"
+ ],
+ "hint": null,
+ "include": null,
+ "label": "Principal name",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "krbprincipalname",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "unicode"
+ }
+ ],
+ "uuid_attribute": "ipauniqueid"
+ },
+ "hostgroup": {
+ "attribute_members": {
+ "member": [
+ "host",
+ "hostgroup"
+ ],
+ "memberindirect": [
+ "host",
+ "hostgroup"
+ ],
+ "memberof": [
+ "hostgroup"
+ ]
+ },
+ "container_dn": "cn=hostgroups,cn=accounts",
+ "default_attributes": [
+ "cn",
+ "description",
+ "member",
+ "memberof",
+ "memberindirect"
+ ],
+ "hidden_attributes": [
+ "objectclass",
+ "aci"
+ ],
+ "label": "Host Groups",
+ "methods": [
+ "add",
+ "add_member",
+ "del",
+ "find",
+ "mod",
+ "remove_member",
+ "show"
+ ],
+ "name": "hostgroup",
+ "object_class": [
+ "ipaobject",
+ "ipahostgroup"
+ ],
+ "object_class_config": null,
+ "object_name": "hostgroup",
+ "object_name_plural": "hostgroups",
+ "parent_object": "",
+ "primary_key": "cn",
+ "rdn_attribute": "",
+ "takes_params": [
+ {
+ "attribute": false,
+ "autofill": false,
+ "class": "Str",
+ "cli_name": "name",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Name of host-group",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "Host-group",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "cn",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": true,
+ "query": false,
+ "required": true,
+ "type": "unicode"
+ },
+ {
+ "attribute": false,
+ "autofill": false,
+ "class": "Str",
+ "cli_name": "desc",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "A description of this host-group",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "Description",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "description",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": false,
+ "query": false,
+ "required": true,
+ "type": "unicode"
+ }
+ ],
+ "uuid_attribute": "ipauniqueid"
+ },
+ "krbtpolicy": {
+ "attribute_members": {},
+ "container_dn": "cn=AYOUNG.BOSTON.DEVEL.REDHAT.COM,cn=kerberos",
+ "default_attributes": [
+ "krbmaxticketlife",
+ "krbmaxrenewableage"
+ ],
+ "hidden_attributes": [
+ "objectclass",
+ "aci"
+ ],
+ "label": "Kerberos Ticket Policy",
+ "methods": [
+ "mod",
+ "reset",
+ "show"
+ ],
+ "name": "krbtpolicy",
+ "object_class": [],
+ "object_class_config": null,
+ "object_name": "kerberos ticket policy settings",
+ "object_name_plural": "entries",
+ "parent_object": "",
+ "primary_key": "uid",
+ "rdn_attribute": "",
+ "takes_params": [
+ {
+ "attribute": false,
+ "autofill": false,
+ "class": "Str",
+ "cli_name": "user",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Manage ticket policy for specific user",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "User name",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "uid",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": true,
+ "query": false,
+ "required": false,
+ "type": "unicode"
+ },
+ {
+ "attribute": false,
+ "autofill": false,
+ "class": "Int",
+ "cli_name": "maxlife",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Maximum ticket life (seconds)",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "Max life",
+ "maxvalue": null,
+ "minvalue": null,
+ "multivalue": false,
+ "name": "krbmaxticketlife",
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "int"
+ },
+ {
+ "attribute": false,
+ "autofill": false,
+ "class": "Int",
+ "cli_name": "maxrenew",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Maximum renewable age (seconds)",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "Max renew",
+ "maxvalue": null,
+ "minvalue": null,
+ "multivalue": false,
+ "name": "krbmaxrenewableage",
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "int"
+ }
+ ],
+ "uuid_attribute": ""
+ },
+ "netgroup": {
+ "attribute_members": {
+ "member": [
+ "netgroup"
+ ],
+ "memberhost": [
+ "host",
+ "hostgroup"
+ ],
+ "memberindirect": [
+ "netgroup"
+ ],
+ "memberof": [
+ "netgroup"
+ ],
+ "memberuser": [
+ "user",
+ "group"
+ ]
+ },
+ "container_dn": "cn=ng,cn=alt",
+ "default_attributes": [
+ "cn",
+ "description",
+ "memberof",
+ "externalhost",
+ "nisdomainname",
+ "memberuser",
+ "memberhost",
+ "member",
+ "memberindirect",
+ "usercategory",
+ "hostcategory"
+ ],
+ "hidden_attributes": [
+ "objectclass",
+ "aci"
+ ],
+ "label": "Net Groups",
+ "methods": [
+ "add",
+ "add_member",
+ "del",
+ "find",
+ "mod",
+ "remove_member",
+ "show"
+ ],
+ "name": "netgroup",
+ "object_class": [
+ "ipaobject",
+ "ipaassociation",
+ "ipanisnetgroup"
+ ],
+ "object_class_config": null,
+ "object_name": "netgroup",
+ "object_name_plural": "netgroups",
+ "parent_object": "",
+ "primary_key": "cn",
+ "rdn_attribute": "ipauniqueid",
+ "takes_params": [
+ {
+ "attribute": false,
+ "autofill": false,
+ "class": "Str",
+ "cli_name": "name",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Netgroup name",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "Netgroup name",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "cn",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": true,
+ "query": false,
+ "required": true,
+ "type": "unicode"
+ },
+ {
+ "attribute": false,
+ "autofill": false,
+ "class": "Str",
+ "cli_name": "desc",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Netgroup description",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "Description",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "description",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": false,
+ "query": false,
+ "required": true,
+ "type": "unicode"
+ },
+ {
+ "attribute": false,
+ "autofill": false,
+ "class": "Str",
+ "cli_name": "nisdomain",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "NIS domain name",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "NIS domain name",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "nisdomainname",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "unicode"
+ },
+ {
+ "attribute": false,
+ "autofill": false,
+ "class": "Str",
+ "cli_name": "uuid",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "IPA unique ID",
+ "exclude": null,
+ "flags": [
+ "no_update",
+ "no_create"
+ ],
+ "hint": null,
+ "include": null,
+ "label": "IPA unique ID",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "ipauniqueid",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "unicode"
+ },
+ {
+ "attribute": false,
+ "autofill": false,
+ "class": "StrEnum",
+ "cli_name": "usercat",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "User category the rule applies to",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "User category",
+ "multivalue": false,
+ "name": "usercategory",
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "unicode",
+ "values": [
+ "all"
+ ]
+ },
+ {
+ "attribute": false,
+ "autofill": false,
+ "class": "StrEnum",
+ "cli_name": "hostcat",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Host category the rule applies to",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "Host category",
+ "multivalue": false,
+ "name": "hostcategory",
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "unicode",
+ "values": [
+ "all"
+ ]
+ }
+ ],
+ "uuid_attribute": "ipauniqueid"
+ },
+ "pwpolicy": {
+ "attribute_members": {},
+ "container_dn": "cn=AYOUNG.BOSTON.DEVEL.REDHAT.COM,cn=kerberos",
+ "default_attributes": [
+ "cn",
+ "cospriority",
+ "krbmaxpwdlife",
+ "krbminpwdlife",
+ "krbpwdhistorylength",
+ "krbpwdmindiffchars",
+ "krbpwdminlength",
+ "krbpwdmaxfailure",
+ "krbpwdfailurecountinterval",
+ "krbpwdlockoutduration"
+ ],
+ "hidden_attributes": [
+ "objectclass",
+ "aci"
+ ],
+ "label": "Password Policy",
+ "methods": [
+ "add",
+ "del",
+ "find",
+ "mod",
+ "show"
+ ],
+ "name": "pwpolicy",
+ "object_class": [
+ "top",
+ "nscontainer",
+ "krbpwdpolicy"
+ ],
+ "object_class_config": null,
+ "object_name": "password policy",
+ "object_name_plural": "password policies",
+ "parent_object": "",
+ "primary_key": "cn",
+ "rdn_attribute": "",
+ "takes_params": [
+ {
+ "attribute": false,
+ "autofill": false,
+ "class": "Str",
+ "cli_name": "group",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Manage password policy for specific group",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "Group",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "cn",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": true,
+ "query": false,
+ "required": false,
+ "type": "unicode"
+ },
+ {
+ "attribute": false,
+ "autofill": false,
+ "class": "Int",
+ "cli_name": "maxlife",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Maximum password lifetime (in days)",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "Max lifetime (days)",
+ "maxvalue": null,
+ "minvalue": 0,
+ "multivalue": false,
+ "name": "krbmaxpwdlife",
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "int"
+ },
+ {
+ "attribute": false,
+ "autofill": false,
+ "class": "Int",
+ "cli_name": "minlife",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Minimum password lifetime (in hours)",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "Min lifetime (hours)",
+ "maxvalue": null,
+ "minvalue": 0,
+ "multivalue": false,
+ "name": "krbminpwdlife",
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "int"
+ },
+ {
+ "attribute": false,
+ "autofill": false,
+ "class": "Int",
+ "cli_name": "history",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Password history size",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "History size",
+ "maxvalue": null,
+ "minvalue": 0,
+ "multivalue": false,
+ "name": "krbpwdhistorylength",
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "int"
+ },
+ {
+ "attribute": false,
+ "autofill": false,
+ "class": "Int",
+ "cli_name": "minclasses",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Minimum number of character classes",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "Character classes",
+ "maxvalue": 5,
+ "minvalue": 0,
+ "multivalue": false,
+ "name": "krbpwdmindiffchars",
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "int"
+ },
+ {
+ "attribute": false,
+ "autofill": false,
+ "class": "Int",
+ "cli_name": "minlength",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Minimum length of password",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "Min length",
+ "maxvalue": null,
+ "minvalue": 0,
+ "multivalue": false,
+ "name": "krbpwdminlength",
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "int"
+ },
+ {
+ "attribute": false,
+ "autofill": false,
+ "class": "Int",
+ "cli_name": "priority",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Priority of the policy (higher number means lower priority",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "Priority",
+ "maxvalue": null,
+ "minvalue": 0,
+ "multivalue": false,
+ "name": "cospriority",
+ "primary_key": false,
+ "query": false,
+ "required": true,
+ "type": "int"
+ }
+ ],
+ "uuid_attribute": ""
+ },
+ "rolegroup": {
+ "attribute_members": {
+ "member": [
+ "user",
+ "group",
+ "host",
+ "hostgroup"
+ ],
+ "memberindirect": [
+ "user",
+ "group",
+ "host",
+ "hostgroup"
+ ],
+ "memberof": [
+ "taskgroup"
+ ]
+ },
+ "container_dn": "cn=rolegroups,cn=accounts",
+ "default_attributes": [
+ "cn",
+ "description",
+ "member",
+ "memberof",
+ "memberindirect"
+ ],
+ "hidden_attributes": [
+ "objectclass",
+ "aci"
+ ],
+ "label": "Role Groups",
+ "methods": [
+ "add",
+ "add_member",
+ "del",
+ "find",
+ "mod",
+ "remove_member",
+ "show"
+ ],
+ "name": "rolegroup",
+ "object_class": [
+ "groupofnames",
+ "nestedgroup"
+ ],
+ "object_class_config": null,
+ "object_name": "rolegroup",
+ "object_name_plural": "rolegroups",
+ "parent_object": "",
+ "primary_key": "cn",
+ "rdn_attribute": "",
+ "takes_params": [
+ {
+ "attribute": false,
+ "autofill": false,
+ "class": "Str",
+ "cli_name": "name",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Role-group name",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "Role-group name",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "cn",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": true,
+ "query": false,
+ "required": true,
+ "type": "unicode"
+ },
+ {
+ "attribute": false,
+ "autofill": false,
+ "class": "Str",
+ "cli_name": "desc",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "A description of this role-group",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "Description",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "description",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": false,
+ "query": false,
+ "required": true,
+ "type": "unicode"
+ }
+ ],
+ "uuid_attribute": ""
+ },
+ "service": {
+ "attribute_members": {
+ "managedby": [
+ "host"
+ ]
+ },
+ "container_dn": "cn=services,cn=accounts",
+ "default_attributes": [
+ "krbprincipalname",
+ "usercertificate",
+ "managedby",
+ "krblastpwdchange"
+ ],
+ "hidden_attributes": [
+ "objectclass",
+ "aci"
+ ],
+ "label": "Services",
+ "methods": [
+ "add",
+ "add_host",
+ "del",
+ "disable",
+ "find",
+ "mod",
+ "remove_host",
+ "show"
+ ],
+ "name": "service",
+ "object_class": [
+ "krbprincipal",
+ "krbprincipalaux",
+ "krbticketpolicyaux",
+ "ipaobject",
+ "ipaservice",
+ "pkiuser"
+ ],
+ "object_class_config": null,
+ "object_name": "service",
+ "object_name_plural": "services",
+ "parent_object": "",
+ "primary_key": "krbprincipalname",
+ "rdn_attribute": "",
+ "takes_params": [
+ {
+ "attribute": false,
+ "autofill": false,
+ "class": "Str",
+ "cli_name": "principal",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Service principal",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "Principal",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "krbprincipalname",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": true,
+ "query": false,
+ "required": true,
+ "type": "unicode"
+ },
+ {
+ "attribute": false,
+ "autofill": false,
+ "class": "Bytes",
+ "cli_name": "certificate",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Base-64 encoded server certificate",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "Certificate",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "usercertificate",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "str"
+ }
+ ],
+ "uuid_attribute": "ipauniqueid"
+ },
+ "sudocmd": {
+ "attribute_members": {},
+ "container_dn": "cn=sudocmds,cn=sudo",
+ "default_attributes": [
+ "sudocmd",
+ "description"
+ ],
+ "hidden_attributes": [
+ "objectclass",
+ "aci"
+ ],
+ "label": "SudoCmds",
+ "methods": [
+ "add",
+ "del",
+ "find",
+ "mod",
+ "show"
+ ],
+ "name": "sudocmd",
+ "object_class": [
+ "ipaobject",
+ "ipasudocmd"
+ ],
+ "object_class_config": null,
+ "object_name": "sudocmd",
+ "object_name_plural": "sudocmds",
+ "parent_object": "",
+ "primary_key": "sudocmd",
+ "rdn_attribute": "",
+ "takes_params": [
+ {
+ "attribute": false,
+ "autofill": false,
+ "class": "Str",
+ "cli_name": "command",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Sudo Command",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "Sudo Command",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "sudocmd",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": true,
+ "query": false,
+ "required": true,
+ "type": "unicode"
+ },
+ {
+ "attribute": false,
+ "autofill": false,
+ "class": "Str",
+ "cli_name": "desc",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "A description of this command",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "Description",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "description",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "unicode"
+ }
+ ],
+ "uuid_attribute": "ipauniqueid"
+ },
+ "sudocmdgroup": {
+ "attribute_members": {
+ "member": [
+ "sudocmd",
+ "sudocmdgroup"
+ ],
+ "memberindirect": [
+ "sudocmd",
+ "sudocmdgroup"
+ ],
+ "memberof": [
+ "sudocmdgroup"
+ ]
+ },
+ "container_dn": "cn=sudocmdgroups,cn=sudo",
+ "default_attributes": [
+ "cn",
+ "description",
+ "member",
+ "memberof",
+ "memberindirect"
+ ],
+ "hidden_attributes": [
+ "objectclass",
+ "aci"
+ ],
+ "label": "Sudo Command Groups",
+ "methods": [
+ "add",
+ "add_member",
+ "del",
+ "find",
+ "mod",
+ "remove_member",
+ "show"
+ ],
+ "name": "sudocmdgroup",
+ "object_class": [
+ "ipaobject",
+ "ipasudocmdgrp"
+ ],
+ "object_class_config": null,
+ "object_name": "sudocmdgroup",
+ "object_name_plural": "sudocmdgroups",
+ "parent_object": "",
+ "primary_key": "cn",
+ "rdn_attribute": "",
+ "takes_params": [
+ {
+ "attribute": false,
+ "autofill": false,
+ "class": "Str",
+ "cli_name": "name",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Sudo Command Group name",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "Sudo Command Group name",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "cn",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": true,
+ "query": false,
+ "required": true,
+ "type": "unicode"
+ },
+ {
+ "attribute": false,
+ "autofill": false,
+ "class": "Str",
+ "cli_name": "desc",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Group description",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "Description",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "description",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": false,
+ "query": false,
+ "required": true,
+ "type": "unicode"
+ },
+ {
+ "attribute": false,
+ "autofill": false,
+ "class": "Str",
+ "cli_name": "membercmd_sudocmd",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Commands",
+ "exclude": null,
+ "flags": [
+ "no_update",
+ "no_create",
+ "no_search"
+ ],
+ "hint": null,
+ "include": null,
+ "label": "Commands",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "membercmd_sudocmd",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "unicode"
+ },
+ {
+ "attribute": false,
+ "autofill": false,
+ "class": "Str",
+ "cli_name": "membercmd_sudocmdgroup",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Sudo Command Groups",
+ "exclude": null,
+ "flags": [
+ "no_update",
+ "no_create",
+ "no_search"
+ ],
+ "hint": null,
+ "include": null,
+ "label": "Sudo Command Groups",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "membercmd_sudocmdgroup",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "unicode"
+ }
+ ],
+ "uuid_attribute": "ipauniqueid"
+ },
+ "sudorule": {
+ "attribute_members": {
+ "memberallowcmd": [
+ "sudocmd",
+ "sudocmdgroup"
+ ],
+ "memberdenycmd": [
+ "sudocmd",
+ "sudocmdgroup"
+ ],
+ "memberhost": [
+ "host",
+ "hostgroup"
+ ],
+ "memberuser": [
+ "user",
+ "group"
+ ]
+ },
+ "container_dn": "cn=sudorules,cn=sudo",
+ "default_attributes": [
+ "cn",
+ "description"
+ ],
+ "hidden_attributes": [
+ "objectclass",
+ "aci"
+ ],
+ "label": "SudoRule",
+ "methods": [
+ "add",
+ "add_allow_command",
+ "add_deny_command",
+ "add_host",
+ "add_user",
+ "del",
+ "find",
+ "mod",
+ "remove_allow_command",
+ "remove_deny_command",
+ "remove_host",
+ "remove_user",
+ "show"
+ ],
+ "name": "sudorule",
+ "object_class": [
+ "ipaassociation",
+ "ipasudorule"
+ ],
+ "object_class_config": null,
+ "object_name": "Sudo Rule",
+ "object_name_plural": "Sudo Rules",
+ "parent_object": "",
+ "primary_key": "cn",
+ "rdn_attribute": "ipauniqueid",
+ "takes_params": [
+ {
+ "attribute": false,
+ "autofill": false,
+ "class": "Str",
+ "cli_name": "name",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Rule name",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "Rule name",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "cn",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": true,
+ "query": false,
+ "required": true,
+ "type": "unicode"
+ },
+ {
+ "attribute": false,
+ "autofill": false,
+ "class": "Str",
+ "cli_name": "desc",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Description",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "Description",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "description",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "unicode"
+ },
+ {
+ "attribute": false,
+ "autofill": false,
+ "class": "StrEnum",
+ "cli_name": "cmdcat",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Command category the rule applies to",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "Command category",
+ "multivalue": false,
+ "name": "cmdcategory",
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "unicode",
+ "values": [
+ "all"
+ ]
+ },
+ {
+ "attribute": false,
+ "autofill": false,
+ "class": "Str",
+ "cli_name": "memberuser_user",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Users",
+ "exclude": null,
+ "flags": [
+ "no_update",
+ "no_create",
+ "no_search"
+ ],
+ "hint": null,
+ "include": null,
+ "label": "Users",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "memberuser_user",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "unicode"
+ },
+ {
+ "attribute": false,
+ "autofill": false,
+ "class": "Str",
+ "cli_name": "memberhost_host",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Hosts",
+ "exclude": null,
+ "flags": [
+ "no_update",
+ "no_create",
+ "no_search"
+ ],
+ "hint": null,
+ "include": null,
+ "label": "Hosts",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "memberhost_host",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "unicode"
+ },
+ {
+ "attribute": false,
+ "autofill": false,
+ "class": "Str",
+ "cli_name": "memberhost_hostgroup",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Host Groups",
+ "exclude": null,
+ "flags": [
+ "no_update",
+ "no_create",
+ "no_search"
+ ],
+ "hint": null,
+ "include": null,
+ "label": "Host Groups",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "memberhost_hostgroup",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "unicode"
+ },
+ {
+ "attribute": false,
+ "autofill": false,
+ "class": "Str",
+ "cli_name": "memberallowcmd_sudocmd",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Sudo Allow Commands",
+ "exclude": null,
+ "flags": [
+ "no_update",
+ "no_create",
+ "no_search"
+ ],
+ "hint": null,
+ "include": null,
+ "label": "Sudo Allow Commands",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "memberallowcmd_sudocmd",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "unicode"
+ },
+ {
+ "attribute": false,
+ "autofill": false,
+ "class": "Str",
+ "cli_name": "memberdenycmd_sudocmd",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Sudo Deny Commands",
+ "exclude": null,
+ "flags": [
+ "no_update",
+ "no_create",
+ "no_search"
+ ],
+ "hint": null,
+ "include": null,
+ "label": "Sudo Deny Commands",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "memberdenycmd_sudocmd",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "unicode"
+ },
+ {
+ "attribute": false,
+ "autofill": false,
+ "class": "Str",
+ "cli_name": "memberallowcmd_sudocmdgroup",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Sudo Command Groups",
+ "exclude": null,
+ "flags": [
+ "no_update",
+ "no_create",
+ "no_search"
+ ],
+ "hint": null,
+ "include": null,
+ "label": "Sudo Command Groups",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "memberallowcmd_sudocmdgroup",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "unicode"
+ },
+ {
+ "attribute": false,
+ "autofill": false,
+ "class": "Str",
+ "cli_name": "memberdenycmd_sudocmdgroup",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Sudo Command Groups",
+ "exclude": null,
+ "flags": [
+ "no_update",
+ "no_create",
+ "no_search"
+ ],
+ "hint": null,
+ "include": null,
+ "label": "Sudo Command Groups",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "memberdenycmd_sudocmdgroup",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "unicode"
+ }
+ ],
+ "uuid_attribute": "ipauniqueid"
+ },
+ "taskgroup": {
+ "attribute_members": {
+ "member": [
+ "user",
+ "group",
+ "rolegroup"
+ ],
+ "memberindirect": [
+ "user",
+ "group",
+ "rolegroup"
+ ]
+ },
+ "container_dn": "cn=taskgroups,cn=accounts",
+ "default_attributes": [
+ "cn",
+ "description",
+ "member",
+ "memberof",
+ "memberindirect"
+ ],
+ "hidden_attributes": [
+ "objectclass",
+ "aci"
+ ],
+ "label": "Task Groups",
+ "methods": [
+ "add",
+ "add_member",
+ "del",
+ "find",
+ "mod",
+ "remove_member",
+ "show"
+ ],
+ "name": "taskgroup",
+ "object_class": [
+ "groupofnames"
+ ],
+ "object_class_config": null,
+ "object_name": "taskgroup",
+ "object_name_plural": "taskgroups",
+ "parent_object": "",
+ "primary_key": "cn",
+ "rdn_attribute": "",
+ "takes_params": [
+ {
+ "attribute": false,
+ "autofill": false,
+ "class": "Str",
+ "cli_name": "name",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Task-group name",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "Task-group name",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "cn",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": true,
+ "query": false,
+ "required": true,
+ "type": "unicode"
+ },
+ {
+ "attribute": false,
+ "autofill": false,
+ "class": "Str",
+ "cli_name": "desc",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Task-group description",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "Description",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "description",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": false,
+ "query": false,
+ "required": true,
+ "type": "unicode"
+ }
+ ],
+ "uuid_attribute": ""
+ },
+ "user": {
+ "attribute_members": {
+ "memberof": [
+ "group",
+ "netgroup",
+ "rolegroup",
+ "taskgroup"
+ ]
+ },
+ "container_dn": "cn=users,cn=accounts",
+ "default_attributes": [
+ "uid",
+ "givenname",
+ "sn",
+ "homedirectory",
+ "loginshell",
+ "ou",
+ "telephonenumber",
+ "title",
+ "memberof",
+ "nsaccountlock"
+ ],
+ "hidden_attributes": [
+ "objectclass",
+ "aci"
+ ],
+ "label": "Users",
+ "methods": [
+ "add",
+ "del",
+ "disable",
+ "enable",
+ "find",
+ "mod",
+ "show"
+ ],
+ "name": "user",
+ "object_class": [
+ "posixaccount"
+ ],
+ "object_class_config": "ipauserobjectclasses",
+ "object_name": "user",
+ "object_name_plural": "users",
+ "parent_object": "",
+ "primary_key": "uid",
+ "rdn_attribute": "",
+ "takes_params": [
+ {
+ "attribute": false,
+ "autofill": false,
+ "class": "Str",
+ "cli_name": "login",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "User login",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "User login",
+ "length": null,
+ "maxlength": 33,
+ "minlength": null,
+ "multivalue": false,
+ "name": "uid",
+ "pattern": "^[a-zA-Z0-9_.][a-zA-Z0-9_.-]{0,30}[a-zA-Z0-9_.$-]?$",
+ "pattern_errmsg": "may only include letters, numbers, _, -, . and $",
+ "primary_key": true,
+ "query": false,
+ "required": true,
+ "type": "unicode"
+ },
+ {
+ "attribute": false,
+ "autofill": false,
+ "class": "Str",
+ "cli_name": "first",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "First name",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "First name",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "givenname",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": false,
+ "query": false,
+ "required": true,
+ "type": "unicode"
+ },
+ {
+ "attribute": false,
+ "autofill": false,
+ "class": "Str",
+ "cli_name": "last",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Last name",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "Last name",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "sn",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": false,
+ "query": false,
+ "required": true,
+ "type": "unicode"
+ },
+ {
+ "attribute": false,
+ "autofill": false,
+ "class": "Str",
+ "cli_name": "homedir",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Home directory",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "Home directory",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "homedirectory",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "unicode"
+ },
+ {
+ "attribute": false,
+ "autofill": true,
+ "class": "Str",
+ "cli_name": "gecos",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "GECOS field",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "GECOS field",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "gecos",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "unicode"
+ },
+ {
+ "attribute": false,
+ "autofill": false,
+ "class": "Str",
+ "cli_name": "shell",
+ "cli_short_name": null,
+ "default": "/bin/sh",
+ "doc": "Login shell",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "Login shell",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "loginshell",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "unicode"
+ },
+ {
+ "attribute": false,
+ "autofill": true,
+ "class": "Str",
+ "cli_name": "principal",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Kerberos principal",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "Kerberos principal",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "krbprincipalname",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "unicode"
+ },
+ {
+ "attribute": false,
+ "autofill": false,
+ "class": "Str",
+ "cli_name": "email",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Email address",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "Email address",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": true,
+ "name": "mail",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "unicode"
+ },
+ {
+ "attribute": false,
+ "autofill": false,
+ "class": "Password",
+ "cli_name": "password",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Prompt to set the user password",
+ "exclude": [
+ "webui"
+ ],
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "Password",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "userpassword",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "unicode"
+ },
+ {
+ "attribute": false,
+ "autofill": true,
+ "class": "Int",
+ "cli_name": "uid",
+ "cli_short_name": null,
+ "default": 999,
+ "doc": "User ID Number (system will assign one if not provided)",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "UID",
+ "maxvalue": null,
+ "minvalue": null,
+ "multivalue": false,
+ "name": "uidnumber",
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "int"
+ },
+ {
+ "attribute": false,
+ "autofill": false,
+ "class": "Str",
+ "cli_name": "street",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Street address",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "Street address",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": false,
+ "name": "street",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "unicode"
+ },
+ {
+ "attribute": false,
+ "autofill": false,
+ "class": "Str",
+ "cli_name": "phone",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Telephone Number",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "Telephone Number",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": true,
+ "name": "telephonenumber",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "unicode"
+ },
+ {
+ "attribute": false,
+ "autofill": false,
+ "class": "Str",
+ "cli_name": "mobile",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Mobile Telephone Number",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "Mobile Telephone Number",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": true,
+ "name": "mobile",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "unicode"
+ },
+ {
+ "attribute": false,
+ "autofill": false,
+ "class": "Str",
+ "cli_name": "pager",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Pager Number",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "Pager Number",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": true,
+ "name": "pager",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "unicode"
+ },
+ {
+ "attribute": false,
+ "autofill": false,
+ "class": "Str",
+ "cli_name": "fax",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Fax Number",
+ "exclude": null,
+ "flags": [],
+ "hint": null,
+ "include": null,
+ "label": "Fax Number",
+ "length": null,
+ "maxlength": null,
+ "minlength": null,
+ "multivalue": true,
+ "name": "facsimiletelephonenumber",
+ "pattern": null,
+ "pattern_errmsg": null,
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "type": "unicode"
+ },
+ {
+ "attribute": false,
+ "autofill": false,
+ "class": "Bool",
+ "cli_name": "nsaccountlock",
+ "cli_short_name": null,
+ "default": null,
+ "doc": "Account disabled",
+ "exclude": null,
+ "falsehoods": [
+ 0,
+ "0",
+ "false"
+ ],
+ "flags": [
+ "no_update",
+ "no_create",
+ "no_search"
+ ],
+ "hint": null,
+ "include": null,
+ "label": "Account disabled",
+ "multivalue": false,
+ "name": "nsaccountlock",
+ "primary_key": false,
+ "query": false,
+ "required": false,
+ "truths": [
+ "1",
+ 1,
+ "true"
+ ],
+ "type": "bool"
+ }
+ ],
+ "uuid_attribute": "ipauniqueid"
+ }
+ }
+ }
+}
diff --git a/install/ui/test/data/krbtpolicy_show.json b/install/ui/test/data/krbtpolicy_show.json
new file mode 100644
index 000000000..39882e14a
--- /dev/null
+++ b/install/ui/test/data/krbtpolicy_show.json
@@ -0,0 +1,78 @@
+{
+ "error": null,
+ "id": 6,
+ "result": {
+ "result": {
+ "aci": [
+ "(targetattr = \"krbMKey\")(version 3.0; acl \"No external access\"; deny (read,write,search,compare) userdn != \"ldap:///uid=kdc,cn=sysaccounts,cn=etc,dc=ipa14,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com\";)"
+ ],
+ "attributelevelrights": {
+ "aci": "rscwo",
+ "cn": "rscwo",
+ "krbadmservers": "rscwo",
+ "krbdefaultencsalttypes": "rscwo",
+ "krbkdcservers": "rscwo",
+ "krbldapservers": "rscwo",
+ "krbmaxrenewableage": "rscwo",
+ "krbmaxticketlife": "rscwo",
+ "krbmkey": "none",
+ "krbprinccontainerref": "rscwo",
+ "krbprincnamingattr": "rscwo",
+ "krbpwdpolicyreference": "rsc",
+ "krbpwdservers": "rscwo",
+ "krbsearchscope": "rscwo",
+ "krbsubtrees": "rscwo",
+ "krbsupportedencsalttypes": "rscwo",
+ "krbticketflags": "rsc",
+ "krbticketpolicyreference": "rsc",
+ "krbupenabled": "rsc",
+ "nsaccountlock": "rscwo",
+ "objectclass": "rscwo"
+ },
+ "cn": [
+ "IPA14.AYOUNG.BOSTON.DEVEL.REDHAT.COM"
+ ],
+ "dn": "cn=ipa14.ayoung.boston.devel.redhat.com,cn=kerberos,dc=ipa14,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com",
+ "krbdefaultencsalttypes": [
+ "aes256-cts:special",
+ "aes128-cts:special",
+ "des3-hmac-sha1:special",
+ "arcfour-hmac:special"
+ ],
+ "krbmaxrenewableage": [
+ "604800"
+ ],
+ "krbmaxticketlife": [
+ "86400"
+ ],
+ "krbsearchscope": [
+ "2"
+ ],
+ "krbsubtrees": [
+ "dc=ipa14,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com"
+ ],
+ "krbsupportedencsalttypes": [
+ "aes256-cts:normal",
+ "aes256-cts:special",
+ "aes128-cts:normal",
+ "aes128-cts:special",
+ "des3-hmac-sha1:normal",
+ "des3-hmac-sha1:special",
+ "arcfour-hmac:normal",
+ "arcfour-hmac:special",
+ "des-hmac-sha1:normal",
+ "des-cbc-md5:normal",
+ "des-cbc-crc:normal",
+ "des-cbc-crc:v4",
+ "des-cbc-crc:afs3"
+ ],
+ "objectclass": [
+ "top",
+ "krbrealmcontainer",
+ "krbticketpolicyaux"
+ ]
+ },
+ "summary": null,
+ "value": ""
+ }
+} \ No newline at end of file
diff --git a/install/ui/test/data/netgroup_add.json b/install/ui/test/data/netgroup_add.json
new file mode 100644
index 000000000..989bb5db0
--- /dev/null
+++ b/install/ui/test/data/netgroup_add.json
@@ -0,0 +1,28 @@
+{
+ "error": null,
+ "id": 17,
+ "result": {
+ "result": {
+ "cn": [
+ "butterfly_net"
+ ],
+ "description": [
+ "Butterfly Networks"
+ ],
+ "dn": "ipauniqueid=b16f7240-b43a-11df-89fa-525400674dcd,cn=ng,cn=alt,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com",
+ "ipauniqueid": [
+ "b16f7240-b43a-11df-89fa-525400674dcd"
+ ],
+ "nisdomainname": [
+ "ayoung.boston.devel.redhat.com"
+ ],
+ "objectclass": [
+ "ipaobject",
+ "ipaassociation",
+ "ipanisnetgroup"
+ ]
+ },
+ "summary": null,
+ "value": "butterfly_net"
+ }
+} \ No newline at end of file
diff --git a/install/ui/test/data/netgroup_add_member.json b/install/ui/test/data/netgroup_add_member.json
new file mode 100644
index 000000000..5fbae9e14
--- /dev/null
+++ b/install/ui/test/data/netgroup_add_member.json
@@ -0,0 +1,40 @@
+{
+ "error": null,
+ "id": 0,
+ "result": {
+ "completed": 3,
+ "failed": {
+ "memberhost": {
+ "host": [],
+ "hostgroup": []
+ },
+ "memberuser": {
+ "group": [],
+ "user": []
+ }
+ },
+ "result": {
+ "cn": [
+ "net-live"
+ ],
+ "description": [
+ "live servers"
+ ],
+ "dn": "ipauniqueid=2e08b2c2-baac-11df-a0cf-525400674dcd,cn=ng,cn=alt,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com",
+ "memberhost_host": [
+ "live3.pbs.org",
+ "live2.pbs.org",
+ "live1.pbs.org"
+ ],
+ "memberhost_hostgroup": [
+ "host-live"
+ ],
+ "memberuser_group": [
+ "muppets"
+ ],
+ "nisdomainname": [
+ "ayoung.boston.devel.redhat.com"
+ ]
+ }
+ }
+} \ No newline at end of file
diff --git a/install/ui/test/data/netgroup_find.json b/install/ui/test/data/netgroup_find.json
new file mode 100644
index 000000000..15626e0b9
--- /dev/null
+++ b/install/ui/test/data/netgroup_find.json
@@ -0,0 +1,56 @@
+{
+ "error": null,
+ "id": 0,
+ "result": {
+ "count": 2,
+ "result": [
+ {
+ "cn": [
+ "net-stage"
+ ],
+ "description": [
+ "staging servers"
+ ],
+ "dn": "ipauniqueid=f6ee9f40-9456-11df-973b-00163e26b89e,cn=ng,cn=alt,dc=idm,dc=lab,dc=bos,dc=redhat,dc=com",
+ "memberhost": [],
+ "memberof": [],
+ "memberuser": [
+ "cn=muppets,cn=groups,cn=accounts,dc=idm,dc=lab,dc=bos,dc=redhat,dc=com"
+ ],
+ "memberuser_group": [
+ "muppets"
+ ],
+ "nisdomainname": [
+ "idm.lab.bos.redhat.com"
+ ]
+ },
+ {
+ "cn": [
+ "net-live"
+ ],
+ "description": [
+ "live servers"
+ ],
+ "dn": "ipauniqueid=f763e426-9456-11df-934d-00163e26b89e,cn=ng,cn=alt,dc=idm,dc=lab,dc=bos,dc=redhat,dc=com",
+ "memberhost": [
+ "cn=host-live,cn=hostgroups,cn=accounts,dc=idm,dc=lab,dc=bos,dc=redhat,dc=com"
+ ],
+ "memberhost_hostgroup": [
+ "host-live"
+ ],
+ "memberof": [],
+ "memberuser": [
+ "cn=muppets,cn=groups,cn=accounts,dc=idm,dc=lab,dc=bos,dc=redhat,dc=com"
+ ],
+ "memberuser_group": [
+ "muppets"
+ ],
+ "nisdomainname": [
+ "idm.lab.bos.redhat.com"
+ ]
+ }
+ ],
+ "summary": null,
+ "truncated": false
+ }
+} \ No newline at end of file
diff --git a/install/ui/test/data/netgroup_show.json b/install/ui/test/data/netgroup_show.json
new file mode 100644
index 000000000..aa77e8885
--- /dev/null
+++ b/install/ui/test/data/netgroup_show.json
@@ -0,0 +1,38 @@
+{
+ "error": null,
+ "id": 0,
+ "result": {
+ "result": {
+ "cn": [
+ "net-live"
+ ],
+ "description": [
+ "live servers"
+ ],
+ "dn": "ipauniqueid=2e08b2c2-baac-11df-a0cf-525400674dcd,cn=ng,cn=alt,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com",
+ "memberhost_host": [
+ "live3.pbs.org",
+ "live2.pbs.org",
+ "live1.pbs.org",
+ "www1.pbs.org",
+ "www2.pbs.org",
+ "www3.pbs.org"
+ ],
+ "memberhost_hostgroup": [
+ "host-live"
+ ],
+ "memberuser_group": [
+ "muppets"
+ ],
+ "memberuser_user": [
+ "kfrog",
+ "count123"
+ ],
+ "nisdomainname": [
+ "ayoung.boston.devel.redhat.com"
+ ]
+ },
+ "summary": null,
+ "value": "net-live"
+ }
+} \ No newline at end of file
diff --git a/install/ui/test/data/permission_add.json b/install/ui/test/data/permission_add.json
new file mode 100644
index 000000000..9ea7b226b
--- /dev/null
+++ b/install/ui/test/data/permission_add.json
@@ -0,0 +1,26 @@
+{
+ "error": null,
+ "id": 0,
+ "result": {
+ "result": {
+ "cn": [
+ "testperm"
+ ],
+ "description": [
+ "description"
+ ],
+ "dn": "cn=testperm,cn=permissions,cn=pbac,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com",
+ "objectclass": [
+ "groupofnames",
+ "top"
+ ],
+ "permissions": [
+ "read",
+ "write"
+ ],
+ "targetgroup": "ipausers"
+ },
+ "summary": "Added permission \"testperm\"",
+ "value": "testperm"
+ }
+}
diff --git a/install/ui/test/data/permission_del b/install/ui/test/data/permission_del
new file mode 100644
index 000000000..c11368986
--- /dev/null
+++ b/install/ui/test/data/permission_del
@@ -0,0 +1,9 @@
+{
+ "error": null,
+ "id": 0,
+ "result": {
+ "result": true,
+ "summary": "Deleted permission \"testperm\"",
+ "value": "testperm"
+ }
+} \ No newline at end of file
diff --git a/install/ui/test/data/permission_find.json b/install/ui/test/data/permission_find.json
new file mode 100644
index 000000000..cad5f0868
--- /dev/null
+++ b/install/ui/test/data/permission_find.json
@@ -0,0 +1,887 @@
+{
+ "error": null,
+ "id": 0,
+ "result": {
+ "count": 47,
+ "result": [
+ {
+ "cn": [
+ "addusers"
+ ],
+ "description": [
+ "Add Users"
+ ],
+ "dn": "cn=addusers,cn=permissions,cn=pbac,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com",
+ "member_privilege": [
+ "useradmin"
+ ],
+ "permissions": [
+ "add"
+ ],
+ "type": "user"
+ },
+ {
+ "attrs": [
+ "userPassword",
+ "krbPrincipalKey",
+ "sambaLMPassword",
+ "sambaNTPassword",
+ "passwordHistory"
+ ],
+ "cn": [
+ "change_password"
+ ],
+ "description": [
+ "Change a user password"
+ ],
+ "dn": "cn=change_password,cn=permissions,cn=pbac,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com",
+ "member_privilege": [
+ "useradmin"
+ ],
+ "permissions": [
+ "write"
+ ]
+ },
+ {
+ "attrs": [
+ "member"
+ ],
+ "cn": [
+ "add_user_to_default_group"
+ ],
+ "description": [
+ "Add user to default group"
+ ],
+ "dn": "cn=add_user_to_default_group,cn=permissions,cn=pbac,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com",
+ "member_privilege": [
+ "useradmin"
+ ],
+ "permissions": [
+ "write"
+ ],
+ "targetgroup": "ldap:///cn=ipausers,cn=groups,cn=accounts,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com"
+ },
+ {
+ "cn": [
+ "removeusers"
+ ],
+ "description": [
+ "Remove Users"
+ ],
+ "dn": "cn=removeusers,cn=permissions,cn=pbac,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com",
+ "member_privilege": [
+ "useradmin"
+ ],
+ "permissions": [
+ "delete"
+ ],
+ "type": "user"
+ },
+ {
+ "attrs": [
+ "givenName",
+ "sn",
+ "cn",
+ "displayName",
+ "title",
+ "initials",
+ "loginShell",
+ "gecos",
+ "homePhone",
+ "mobile",
+ "pager",
+ "facsimileTelephoneNumber",
+ "telephoneNumber",
+ "street",
+ "roomNumber",
+ "l",
+ "st",
+ "postalCode",
+ "manager",
+ "secretary",
+ "description",
+ "carLicense",
+ "labeledURI",
+ "inetUserHTTPURL",
+ "seeAlso",
+ "employeeType",
+ "businessCategory",
+ "ou",
+ "mepManagedEntry",
+ "objectclass"
+ ],
+ "cn": [
+ "modifyusers"
+ ],
+ "description": [
+ "Modify Users"
+ ],
+ "dn": "cn=modifyusers,cn=permissions,cn=pbac,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com",
+ "member_privilege": [
+ "useradmin"
+ ],
+ "permissions": [
+ "write"
+ ],
+ "type": "user"
+ },
+ {
+ "cn": [
+ "addgroups"
+ ],
+ "description": [
+ "Add Groups"
+ ],
+ "dn": "cn=addgroups,cn=permissions,cn=pbac,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com",
+ "member_privilege": [
+ "groupadmin"
+ ],
+ "permissions": [
+ "add"
+ ],
+ "type": "group"
+ },
+ {
+ "cn": [
+ "removegroups"
+ ],
+ "description": [
+ "Remove Groups"
+ ],
+ "dn": "cn=removegroups,cn=permissions,cn=pbac,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com",
+ "member_privilege": [
+ "groupadmin"
+ ],
+ "permissions": [
+ "delete"
+ ],
+ "type": "group"
+ },
+ {
+ "attrs": [
+ "cn",
+ "description",
+ "gidnumber",
+ "objectclass",
+ "mepManagedBy",
+ "ipaUniqueId"
+ ],
+ "cn": [
+ "modifygroups"
+ ],
+ "description": [
+ "Modify Groups"
+ ],
+ "dn": "cn=modifygroups,cn=permissions,cn=pbac,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com",
+ "member_privilege": [
+ "groupadmin"
+ ],
+ "permissions": [
+ "write"
+ ],
+ "type": "group"
+ },
+ {
+ "attrs": [
+ "member"
+ ],
+ "cn": [
+ "modifygroupmembership"
+ ],
+ "description": [
+ "Modify Group membership"
+ ],
+ "dn": "cn=modifygroupmembership,cn=permissions,cn=pbac,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com",
+ "member_privilege": [
+ "groupadmin"
+ ],
+ "permissions": [
+ "write"
+ ],
+ "type": "group"
+ },
+ {
+ "cn": [
+ "addhosts"
+ ],
+ "description": [
+ "Add Hosts"
+ ],
+ "dn": "cn=addhosts,cn=permissions,cn=pbac,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com",
+ "member_privilege": [
+ "hostadmin"
+ ],
+ "permissions": [
+ "add"
+ ],
+ "type": "host"
+ },
+ {
+ "cn": [
+ "removehosts"
+ ],
+ "description": [
+ "Remove Hosts"
+ ],
+ "dn": "cn=removehosts,cn=permissions,cn=pbac,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com",
+ "member_privilege": [
+ "hostadmin"
+ ],
+ "permissions": [
+ "delete"
+ ],
+ "type": "host"
+ },
+ {
+ "attrs": [
+ "description",
+ "l",
+ "nshostlocation",
+ "nshardwareplatform",
+ "nsosversion"
+ ],
+ "cn": [
+ "modifyhosts"
+ ],
+ "description": [
+ "Modify Hosts"
+ ],
+ "dn": "cn=modifyhosts,cn=permissions,cn=pbac,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com",
+ "member_privilege": [
+ "hostadmin"
+ ],
+ "permissions": [
+ "write"
+ ],
+ "type": "host"
+ },
+ {
+ "cn": [
+ "addhostgroups"
+ ],
+ "description": [
+ "Add Hostgroups"
+ ],
+ "dn": "cn=addhostgroups,cn=permissions,cn=pbac,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com",
+ "member_privilege": [
+ "hostgroupadmin"
+ ],
+ "permissions": [
+ "add"
+ ],
+ "type": "hostgroup"
+ },
+ {
+ "cn": [
+ "removehostgroups"
+ ],
+ "description": [
+ "Remove Hostgroups"
+ ],
+ "dn": "cn=removehostgroups,cn=permissions,cn=pbac,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com",
+ "member_privilege": [
+ "hostgroupadmin"
+ ],
+ "permissions": [
+ "delete"
+ ],
+ "type": "hostgroup"
+ },
+ {
+ "attrs": [
+ "cn",
+ "description"
+ ],
+ "cn": [
+ "modifyhostgroups"
+ ],
+ "description": [
+ "Modify Hostgroups"
+ ],
+ "dn": "cn=modifyhostgroups,cn=permissions,cn=pbac,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com",
+ "member_privilege": [
+ "hostgroupadmin"
+ ],
+ "permissions": [
+ "write"
+ ],
+ "type": "hostgroup"
+ },
+ {
+ "attrs": [
+ "member"
+ ],
+ "cn": [
+ "modifyhostgroupmembership"
+ ],
+ "description": [
+ "Modify Hostgroup membership"
+ ],
+ "dn": "cn=modifyhostgroupmembership,cn=permissions,cn=pbac,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com",
+ "member_privilege": [
+ "hostgroupadmin"
+ ],
+ "permissions": [
+ "write"
+ ],
+ "type": "hostgroup"
+ },
+ {
+ "cn": [
+ "addservices"
+ ],
+ "description": [
+ "Add Services"
+ ],
+ "dn": "cn=addservices,cn=permissions,cn=pbac,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com",
+ "member_privilege": [
+ "serviceadmin"
+ ],
+ "permissions": [
+ "add"
+ ],
+ "type": "service"
+ },
+ {
+ "cn": [
+ "removeservices"
+ ],
+ "description": [
+ "Remove Services"
+ ],
+ "dn": "cn=removeservices,cn=permissions,cn=pbac,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com",
+ "member_privilege": [
+ "serviceadmin"
+ ],
+ "permissions": [
+ "delete"
+ ],
+ "type": "service"
+ },
+ {
+ "attrs": [
+ "userCertificate"
+ ],
+ "cn": [
+ "modifyservices"
+ ],
+ "description": [
+ "Modify Services"
+ ],
+ "dn": "cn=modifyservices,cn=permissions,cn=pbac,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com",
+ "member_privilege": [
+ "serviceadmin"
+ ],
+ "permissions": [
+ "write"
+ ],
+ "type": "service"
+ },
+ {
+ "cn": [
+ "addroles"
+ ],
+ "description": [
+ "Add Roles"
+ ],
+ "dn": "cn=addroles,cn=permissions,cn=pbac,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com",
+ "member_privilege": [
+ "delegationadmin"
+ ],
+ "permissions": [
+ "add"
+ ],
+ "subtree": "ldap:///cn=*,cn=roles,cn=accounts,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com"
+ },
+ {
+ "cn": [
+ "removeroles"
+ ],
+ "description": [
+ "Remove Roles"
+ ],
+ "dn": "cn=removeroles,cn=permissions,cn=pbac,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com",
+ "member_privilege": [
+ "delegationadmin"
+ ],
+ "permissions": [
+ "delete"
+ ],
+ "subtree": "ldap:///cn=*,cn=roles,cn=accounts,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com"
+ },
+ {
+ "attrs": [
+ "cn",
+ "description"
+ ],
+ "cn": [
+ "modifyroles"
+ ],
+ "description": [
+ "Modify Roles"
+ ],
+ "dn": "cn=modifyroles,cn=permissions,cn=pbac,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com",
+ "member_privilege": [
+ "delegationadmin"
+ ],
+ "permissions": [
+ "write"
+ ],
+ "subtree": "ldap:///cn=*,cn=roles,cn=accounts,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com"
+ },
+ {
+ "attrs": [
+ "member"
+ ],
+ "cn": [
+ "modifyrolemembership"
+ ],
+ "description": [
+ "Modify Role Group membership"
+ ],
+ "dn": "cn=modifyrolemembership,cn=permissions,cn=pbac,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com",
+ "member_privilege": [
+ "delegationadmin"
+ ],
+ "permissions": [
+ "write"
+ ],
+ "subtree": "ldap:///cn=*,cn=roles,cn=accounts,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com"
+ },
+ {
+ "attrs": [
+ "member"
+ ],
+ "cn": [
+ "modifyprivilegemembership"
+ ],
+ "description": [
+ "Modify privilege membership"
+ ],
+ "dn": "cn=modifyprivilegemembership,cn=permissions,cn=pbac,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com",
+ "member_privilege": [
+ "delegationadmin"
+ ],
+ "permissions": [
+ "write"
+ ],
+ "subtree": "ldap:///cn=*,cn=permissions,cn=pbac,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com"
+ },
+ {
+ "cn": [
+ "addautomountmaps"
+ ],
+ "description": [
+ "Add Automount maps"
+ ],
+ "dn": "cn=addautomountmaps,cn=permissions,cn=pbac,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com",
+ "member_privilege": [
+ "automountadmin"
+ ],
+ "permissions": [
+ "add"
+ ],
+ "subtree": "ldap:///automountmapname=*,cn=automount,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com"
+ },
+ {
+ "cn": [
+ "removeautomountmaps"
+ ],
+ "description": [
+ "Remove Automount maps"
+ ],
+ "dn": "cn=removeautomountmaps,cn=permissions,cn=pbac,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com",
+ "member_privilege": [
+ "automountadmin"
+ ],
+ "permissions": [
+ "delete"
+ ],
+ "subtree": "ldap:///automountmapname=*,cn=automount,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com"
+ },
+ {
+ "cn": [
+ "addautomountkeys"
+ ],
+ "description": [
+ "Add Automount keys"
+ ],
+ "dn": "cn=addautomountkeys,cn=permissions,cn=pbac,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com",
+ "member_privilege": [
+ "automountadmin"
+ ],
+ "permissions": [
+ "add"
+ ],
+ "subtree": "ldap:///automountkey=*,automountmapname=*,cn=automount,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com"
+ },
+ {
+ "cn": [
+ "removeautomountkeys"
+ ],
+ "description": [
+ "Remove Automount keys"
+ ],
+ "dn": "cn=removeautomountkeys,cn=permissions,cn=pbac,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com",
+ "member_privilege": [
+ "automountadmin"
+ ],
+ "permissions": [
+ "delete"
+ ],
+ "subtree": "ldap:///automountkey=*,automountmapname=*,cn=automount,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com"
+ },
+ {
+ "cn": [
+ "addnetgroups"
+ ],
+ "description": [
+ "Add netgroups"
+ ],
+ "dn": "cn=addnetgroups,cn=permissions,cn=pbac,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com",
+ "member_privilege": [
+ "netgroupadmin"
+ ],
+ "permissions": [
+ "add"
+ ],
+ "type": "netgroup"
+ },
+ {
+ "cn": [
+ "removenetgroups"
+ ],
+ "description": [
+ "Remove netgroups"
+ ],
+ "dn": "cn=removenetgroups,cn=permissions,cn=pbac,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com",
+ "member_privilege": [
+ "netgroupadmin"
+ ],
+ "permissions": [
+ "delete"
+ ],
+ "type": "netgroup"
+ },
+ {
+ "attrs": [
+ "description"
+ ],
+ "cn": [
+ "modifynetgroups"
+ ],
+ "description": [
+ "Modify netgroups"
+ ],
+ "dn": "cn=modifynetgroups,cn=permissions,cn=pbac,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com",
+ "member_privilege": [
+ "netgroupadmin"
+ ],
+ "permissions": [
+ "write"
+ ],
+ "type": "netgroup"
+ },
+ {
+ "attrs": [
+ "memberhost",
+ "externalhost",
+ "memberuser",
+ "member"
+ ],
+ "cn": [
+ "modifynetgroupmembership"
+ ],
+ "description": [
+ "Modify netgroup membership"
+ ],
+ "dn": "cn=modifynetgroupmembership,cn=permissions,cn=pbac,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com",
+ "member_privilege": [
+ "netgroupadmin"
+ ],
+ "permissions": [
+ "write"
+ ],
+ "type": "netgroup"
+ },
+ {
+ "attrs": [
+ "krbPrincipalKey",
+ "krbLastPwdChange"
+ ],
+ "cn": [
+ "manage_host_keytab"
+ ],
+ "description": [
+ "Manage host keytab"
+ ],
+ "dn": "cn=manage_host_keytab,cn=permissions,cn=pbac,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com",
+ "member_privilege": [
+ "hostadmin",
+ "enrollhost"
+ ],
+ "permissions": [
+ "write"
+ ],
+ "type": "host"
+ },
+ {
+ "attrs": [
+ "krbPrincipalKey",
+ "krbLastPwdChange"
+ ],
+ "cn": [
+ "manage_service_keytab"
+ ],
+ "description": [
+ "Manage service keytab"
+ ],
+ "dn": "cn=manage_service_keytab,cn=permissions,cn=pbac,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com",
+ "member_privilege": [
+ "serviceadmin",
+ "admins"
+ ],
+ "permissions": [
+ "write"
+ ],
+ "type": "service"
+ },
+ {
+ "attrs": [
+ "enrolledBy",
+ "objectClass"
+ ],
+ "cn": [
+ "enroll_host"
+ ],
+ "description": [
+ "Enroll a host"
+ ],
+ "dn": "cn=enroll_host,cn=permissions,cn=pbac,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com",
+ "member_privilege": [
+ "hostadmin",
+ "enrollhost"
+ ],
+ "permissions": [
+ "write"
+ ],
+ "type": "host"
+ },
+ {
+ "cn": [
+ "managereplica"
+ ],
+ "description": [
+ "Manage Replication Agreements"
+ ],
+ "dn": "cn=managereplica,cn=permissions,cn=pbac,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com",
+ "member_privilege": [
+ "replicaadmin"
+ ],
+ "memberindirect": [
+ "uid=admin,cn=users,cn=accounts,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com",
+ "cn=admins,cn=groups,cn=accounts,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com"
+ ]
+ },
+ {
+ "cn": [
+ "deletereplica"
+ ],
+ "description": [
+ "Delete Replication Agreements"
+ ],
+ "dn": "cn=deletereplica,cn=permissions,cn=pbac,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com",
+ "member_privilege": [
+ "replicaadmin"
+ ],
+ "memberindirect": [
+ "uid=admin,cn=users,cn=accounts,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com",
+ "cn=admins,cn=groups,cn=accounts,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com"
+ ]
+ },
+ {
+ "cn": [
+ "addentitlements"
+ ],
+ "description": [
+ "Add Entitlements"
+ ],
+ "dn": "cn=addentitlements,cn=permissions,cn=pbac,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com",
+ "member_privilege": [
+ "entitlementadmin"
+ ],
+ "permissions": [
+ "add"
+ ],
+ "subtree": "ldap:///ipauniqueid=*,cn=entitlements,cn=etc,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com"
+ },
+ {
+ "cn": [
+ "removeentitlements"
+ ],
+ "description": [
+ "Remove Entitlements"
+ ],
+ "dn": "cn=removeentitlements,cn=permissions,cn=pbac,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com",
+ "member_privilege": [
+ "entitlementadmin"
+ ],
+ "permissions": [
+ "delete"
+ ],
+ "subtree": "ldap:///ipauniqueid=*,cn=entitlements,cn=etc,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com"
+ },
+ {
+ "attrs": [
+ "userCertificate"
+ ],
+ "cn": [
+ "modifyentitlements"
+ ],
+ "description": [
+ "Modify Entitlements"
+ ],
+ "dn": "cn=modifyentitlements,cn=permissions,cn=pbac,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com",
+ "member_privilege": [
+ "entitlementadmin"
+ ],
+ "permissions": [
+ "write"
+ ],
+ "subtree": "ldap:///ipauniqueid=*,cn=entitlements,cn=etc,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com"
+ },
+ {
+ "attrs": [
+ "objectClass"
+ ],
+ "cn": [
+ "retrieve_certs"
+ ],
+ "description": [
+ "Retrieve Certificates from the CA"
+ ],
+ "dn": "cn=retrieve_certs,cn=permissions,cn=pbac,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com",
+ "member_privilege": [
+ "certadmin"
+ ],
+ "permissions": [
+ "write"
+ ],
+ "subtree": "ldap:///cn=retrieve certificate,cn=virtual operations,cn=etc,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com"
+ },
+ {
+ "attrs": [
+ "objectClass"
+ ],
+ "cn": [
+ "request_certs"
+ ],
+ "description": [
+ "Request Certificates from the CA"
+ ],
+ "dn": "cn=request_certs,cn=permissions,cn=pbac,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com",
+ "member_privilege": [
+ "certadmin"
+ ],
+ "permissions": [
+ "write"
+ ],
+ "subtree": "ldap:///cn=request certificate,cn=virtual operations,cn=etc,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com"
+ },
+ {
+ "attrs": [
+ "objectClass"
+ ],
+ "cn": [
+ "request_cert_different_host"
+ ],
+ "description": [
+ "Request Certificates from a different host"
+ ],
+ "dn": "cn=request_cert_different_host,cn=permissions,cn=pbac,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com",
+ "member_privilege": [
+ "certadmin"
+ ],
+ "permissions": [
+ "write"
+ ],
+ "subtree": "ldap:///cn=request certificate different host,cn=virtual operations,cn=etc,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com"
+ },
+ {
+ "attrs": [
+ "objectClass"
+ ],
+ "cn": [
+ "certificate_status"
+ ],
+ "description": [
+ "Get Certificates status from the CA"
+ ],
+ "dn": "cn=certificate_status,cn=permissions,cn=pbac,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com",
+ "member_privilege": [
+ "certadmin"
+ ],
+ "permissions": [
+ "write"
+ ],
+ "subtree": "ldap:///cn=certificate status,cn=virtual operations,cn=etc,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com"
+ },
+ {
+ "attrs": [
+ "objectClass"
+ ],
+ "cn": [
+ "revoke_certificate"
+ ],
+ "description": [
+ "Revoke Certificate"
+ ],
+ "dn": "cn=revoke_certificate,cn=permissions,cn=pbac,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com",
+ "member_privilege": [
+ "certadmin"
+ ],
+ "permissions": [
+ "write"
+ ],
+ "subtree": "ldap:///cn=revoke certificate,cn=virtual operations,cn=etc,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com"
+ },
+ {
+ "attrs": [
+ "objectClass"
+ ],
+ "cn": [
+ "certificate_remove_hold"
+ ],
+ "description": [
+ "Certificate Remove Hold"
+ ],
+ "dn": "cn=certificate_remove_hold,cn=permissions,cn=pbac,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com",
+ "member_privilege": [
+ "certadmin"
+ ],
+ "permissions": [
+ "write"
+ ],
+ "subtree": "ldap:///cn=certificate remove hold,cn=virtual operations,cn=etc,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com"
+ },
+ {
+ "cn": [
+ "update_dns"
+ ],
+ "description": [
+ "DNS Servers Updates"
+ ],
+ "dn": "cn=update_dns,cn=permissions,cn=pbac,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com",
+ "member_privilege": [
+ "dnsadmin",
+ "dnsserver"
+ ],
+ "memberindirect": [
+ "krbprincipalname=dns/ipa.ayoung.boston.devel.redhat.com@ayoung.boston.devel.redhat.com,cn=services,cn=accounts,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com"
+ ]
+ }
+ ],
+ "summary": "47 permissions matched",
+ "truncated": false
+ }
+}
diff --git a/install/ui/test/data/permission_show.json b/install/ui/test/data/permission_show.json
new file mode 100644
index 000000000..d823061d5
--- /dev/null
+++ b/install/ui/test/data/permission_show.json
@@ -0,0 +1,41 @@
+{
+ "error": null,
+ "id": 6,
+ "result": {
+ "result": {
+ "attributelevelrights": {
+ "aci": "rscwo",
+ "businesscategory": "rscwo",
+ "cn": "rscwo",
+ "description": "rscwo",
+ "member": "rscwo",
+ "nsaccountlock": "rscwo",
+ "o": "rscwo",
+ "objectclass": "rscwo",
+ "ou": "rscwo",
+ "owner": "rscwo",
+ "seealso": "rscwo"
+ },
+ "cn": [
+ "addusers"
+ ],
+ "description": [
+ "Add Users"
+ ],
+ "dn": "cn=addusers,cn=permissions,cn=hbac,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com",
+ "member": [
+ "cn=useradmin,cn=privileges,cn=accounts,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com"
+ ],
+ "objectclass": [
+ "top",
+ "groupofnames"
+ ],
+ "permissions": [
+ "add"
+ ],
+ "type": "user"
+ },
+ "summary": null,
+ "value": "addusers"
+ }
+}
diff --git a/install/ui/test/data/privilege_find.json b/install/ui/test/data/privilege_find.json
new file mode 100644
index 000000000..c48c4a0e8
--- /dev/null
+++ b/install/ui/test/data/privilege_find.json
@@ -0,0 +1,215 @@
+{
+ "error": null,
+ "id": 0,
+ "result": {
+ "count": 14,
+ "result": [
+ {
+ "cn": [
+ "useradmin"
+ ],
+ "description": [
+ "User Administrators"
+ ],
+ "dn": "cn=useradmin,cn=privileges,cn=accounts,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com",
+ "memberof_permission": [
+ "addusers",
+ "change_password",
+ "add_user_to_default_group",
+ "removeusers",
+ "modifyusers"
+ ]
+ },
+ {
+ "cn": [
+ "groupadmin"
+ ],
+ "description": [
+ "Group Administrators"
+ ],
+ "dn": "cn=groupadmin,cn=privileges,cn=accounts,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com",
+ "memberof_permission": [
+ "addgroups",
+ "removegroups",
+ "modifygroups",
+ "modifygroupmembership"
+ ]
+ },
+ {
+ "cn": [
+ "hostadmin"
+ ],
+ "description": [
+ "Host Administrators"
+ ],
+ "dn": "cn=hostadmin,cn=privileges,cn=accounts,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com",
+ "memberof_permission": [
+ "addhosts",
+ "removehosts",
+ "modifyhosts",
+ "manage_host_keytab",
+ "enroll_host"
+ ]
+ },
+ {
+ "cn": [
+ "hostgroupadmin"
+ ],
+ "description": [
+ "Host Group Administrators"
+ ],
+ "dn": "cn=hostgroupadmin,cn=privileges,cn=accounts,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com",
+ "memberof_permission": [
+ "addhostgroups",
+ "removehostgroups",
+ "modifyhostgroups",
+ "modifyhostgroupmembership"
+ ]
+ },
+ {
+ "cn": [
+ "delegationadmin"
+ ],
+ "description": [
+ "Role administration"
+ ],
+ "dn": "cn=delegationadmin,cn=privileges,cn=accounts,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com",
+ "memberof_permission": [
+ "addroles",
+ "removeroles",
+ "modifyroles",
+ "modifyrolemembership",
+ "modifyprivilegemembership"
+ ]
+ },
+ {
+ "cn": [
+ "serviceadmin"
+ ],
+ "description": [
+ "Service Administrators"
+ ],
+ "dn": "cn=serviceadmin,cn=privileges,cn=accounts,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com",
+ "memberof_permission": [
+ "addservices",
+ "removeservices",
+ "modifyservices",
+ "manage_service_keytab"
+ ]
+ },
+ {
+ "cn": [
+ "automountadmin"
+ ],
+ "description": [
+ "Automount Administrators"
+ ],
+ "dn": "cn=automountadmin,cn=privileges,cn=accounts,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com",
+ "memberof_permission": [
+ "addautomountmaps",
+ "removeautomountmaps",
+ "addautomountkeys",
+ "removeautomountkeys"
+ ]
+ },
+ {
+ "cn": [
+ "netgroupadmin"
+ ],
+ "description": [
+ "Netgroups Administrators"
+ ],
+ "dn": "cn=netgroupadmin,cn=privileges,cn=accounts,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com",
+ "memberof_permission": [
+ "addnetgroups",
+ "removenetgroups",
+ "modifynetgroups",
+ "modifynetgroupmembership"
+ ]
+ },
+ {
+ "cn": [
+ "certadmin"
+ ],
+ "description": [
+ "Certificate Administrators"
+ ],
+ "dn": "cn=certadmin,cn=privileges,cn=accounts,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com",
+ "memberof_permission": [
+ "retrieve_certs",
+ "request_certs",
+ "request_cert_different_host",
+ "certificate_status",
+ "revoke_certificate",
+ "certificate_remove_hold"
+ ]
+ },
+ {
+ "cn": [
+ "replicaadmin"
+ ],
+ "description": [
+ "Replication Administrators"
+ ],
+ "dn": "cn=replicaadmin,cn=privileges,cn=accounts,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com",
+ "memberindirect": [
+ "uid=admin,cn=users,cn=accounts,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com"
+ ],
+ "memberof_permission": [
+ "managereplica",
+ "deletereplica"
+ ]
+ },
+ {
+ "cn": [
+ "enrollhost"
+ ],
+ "description": [
+ "Host Enrollment"
+ ],
+ "dn": "cn=enrollhost,cn=privileges,cn=accounts,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com",
+ "memberof_permission": [
+ "manage_host_keytab",
+ "enroll_host"
+ ]
+ },
+ {
+ "cn": [
+ "entitlementadmin"
+ ],
+ "description": [
+ "Entitlement Administrators"
+ ],
+ "dn": "cn=entitlementadmin,cn=privileges,cn=accounts,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com",
+ "memberof_permission": [
+ "addentitlements",
+ "removeentitlements",
+ "modifyentitlements"
+ ]
+ },
+ {
+ "cn": [
+ "dnsadmin"
+ ],
+ "description": [
+ "DNS Administrators"
+ ],
+ "dn": "cn=dnsadmin,cn=privileges,cn=accounts,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com"
+ },
+ {
+ "cn": [
+ "dnsserver"
+ ],
+ "description": [
+ "DNS Servers"
+ ],
+ "dn": "cn=dnsserver,cn=privileges,cn=accounts,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com",
+ "memberindirect": [
+ "krbprincipalname=dns/ipa.ayoung.boston.devel.redhat.com@ayoung.boston.devel.redhat.com,cn=services,cn=accounts,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com"
+ ]
+ }
+ ],
+ "summary": "14 privileges matched",
+ "truncated": false
+ }
+} \ No newline at end of file
diff --git a/install/ui/test/data/privilege_show.json b/install/ui/test/data/privilege_show.json
new file mode 100644
index 000000000..7d9328aa0
--- /dev/null
+++ b/install/ui/test/data/privilege_show.json
@@ -0,0 +1,39 @@
+{
+ "error": null,
+ "id": 0,
+ "result": {
+ "result": {
+ "attributelevelrights": {
+ "aci": "rscwo",
+ "businesscategory": "rscwo",
+ "cn": "rscwo",
+ "description": "rscwo",
+ "member": "rscwo",
+ "memberof": "rsc",
+ "nsaccountlock": "rscwo",
+ "o": "rscwo",
+ "objectclass": "rscwo",
+ "ou": "rscwo",
+ "owner": "rscwo",
+ "seealso": "rscwo"
+ },
+ "cn": [
+ "dnsserver"
+ ],
+ "description": [
+ "DNS Servers"
+ ],
+ "dn": "cn=dnsserver,cn=privileges,cn=accounts,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com",
+ "memberindirect": [
+ "krbprincipalname=dns/ipa.ayoung.boston.devel.redhat.com@ayoung.boston.devel.redhat.com,cn=services,cn=accounts,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com"
+ ],
+ "objectclass": [
+ "top",
+ "groupofnames",
+ "nestedgroup"
+ ]
+ },
+ "summary": null,
+ "value": "dnsserver"
+ }
+} \ No newline at end of file
diff --git a/install/ui/test/data/pwpolicy_find.json b/install/ui/test/data/pwpolicy_find.json
new file mode 100644
index 000000000..629ebfc90
--- /dev/null
+++ b/install/ui/test/data/pwpolicy_find.json
@@ -0,0 +1,72 @@
+{
+ "error": null,
+ "id": 6,
+ "result": {
+ "count": 3,
+ "result": [
+ {
+ "cn": "GLOBAL",
+ "dn": "cn=accounts,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com",
+ "krbmaxpwdlife": [
+ "90"
+ ],
+ "krbminpwdlife": [
+ "1"
+ ],
+ "krbpwdhistorylength": [
+ "0"
+ ],
+ "krbpwdmindiffchars": [
+ "0"
+ ],
+ "krbpwdminlength": [
+ "8"
+ ]
+ },
+ {
+ "cn": [
+ "testgroup12"
+ ],
+ "cospriority": [
+ "1"
+ ],
+ "dn": "cn=testgroup12,cn=ayoung.boston.devel.redhat.com,cn=kerberos,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com",
+ "krbmaxpwdlife": [
+ "40"
+ ],
+ "krbminpwdlife": [
+ "50"
+ ],
+ "krbpwdhistorylength": [
+ "5"
+ ],
+ "krbpwdminlength": [
+ "6"
+ ]
+ },
+ {
+ "cn": [
+ "testgroup22"
+ ],
+ "cospriority": [
+ "2"
+ ],
+ "dn": "cn=testgroup22,cn=ayoung.boston.devel.redhat.com,cn=kerberos,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com",
+ "krbmaxpwdlife": [
+ "60"
+ ],
+ "krbminpwdlife": [
+ "40"
+ ],
+ "krbpwdhistorylength": [
+ "8"
+ ],
+ "krbpwdminlength": [
+ "9"
+ ]
+ }
+ ],
+ "summary": null,
+ "truncated": false
+ }
+} \ No newline at end of file
diff --git a/install/ui/test/data/pwpolicy_mod.json b/install/ui/test/data/pwpolicy_mod.json
new file mode 100644
index 000000000..44d589519
--- /dev/null
+++ b/install/ui/test/data/pwpolicy_mod.json
@@ -0,0 +1,56 @@
+{
+ "error": null,
+ "id": 3,
+ "result": {
+ "result": {
+ "attributelevelrights": {
+ "aci": "rscwo",
+ "cn": "rscwo",
+ "krbmaxpwdlife": "rscwo",
+ "krbminpwdlife": "rscwo",
+ "krbpwdfailurecountinterval": "rscwo",
+ "krbpwdhistorylength": "rscwo",
+ "krbpwdlockoutduration": "rscwo",
+ "krbpwdmaxfailure": "rscwo",
+ "krbpwdmindiffchars": "rscwo",
+ "krbpwdminlength": "rscwo",
+ "nsaccountlock": "rscwo",
+ "objectclass": "rscwo"
+ },
+ "cn": [
+ "global_policy"
+ ],
+ "krbmaxpwdlife": [
+ "90"
+ ],
+ "krbminpwdlife": [
+ "1"
+ ],
+ "krbpwdfailurecountinterval": [
+ "60"
+ ],
+ "krbpwdhistorylength": [
+ "0"
+ ],
+ "krbpwdlockoutduration": [
+ "10"
+ ],
+ "krbpwdmaxfailure": [
+ "3"
+ ],
+ "krbpwdmindiffchars": [
+ "0"
+ ],
+ "krbpwdminlength": [
+ "8"
+ ],
+ "objectclass": [
+ "top",
+ "nsContainer",
+ "krbPwdPolicy"
+ ]
+ },
+ "summary": null,
+ "value": "global_policy"
+ }
+} \ No newline at end of file
diff --git a/install/ui/test/data/pwpolicy_show.json b/install/ui/test/data/pwpolicy_show.json
new file mode 100644
index 000000000..e91f52efa
--- /dev/null
+++ b/install/ui/test/data/pwpolicy_show.json
@@ -0,0 +1,57 @@
+{
+ "error": null,
+ "id": 8,
+ "result": {
+ "result": {
+ "attributelevelrights": {
+ "aci": "rscwo",
+ "cn": "rscwo",
+ "krbmaxpwdlife": "rscwo",
+ "krbminpwdlife": "rscwo",
+ "krbpwdfailurecountinterval": "rscwo",
+ "krbpwdhistorylength": "rscwo",
+ "krbpwdlockoutduration": "rscwo",
+ "krbpwdmaxfailure": "rscwo",
+ "krbpwdmindiffchars": "rscwo",
+ "krbpwdminlength": "rscwo",
+ "nsaccountlock": "rscwo",
+ "objectclass": "rscwo"
+ },
+ "cn": [
+ "global_policy"
+ ],
+ "dn": "cn=global_policy,cn=ipa14.ayoung.boston.devel.redhat.com,cn=kerberos,dc=ipa14,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com",
+ "krbmaxpwdlife": [
+ "90"
+ ],
+ "krbminpwdlife": [
+ "1"
+ ],
+ "krbpwdfailurecountinterval": [
+ "60"
+ ],
+ "krbpwdhistorylength": [
+ "0"
+ ],
+ "krbpwdlockoutduration": [
+ "10"
+ ],
+ "krbpwdmaxfailure": [
+ "3"
+ ],
+ "krbpwdmindiffchars": [
+ "0"
+ ],
+ "krbpwdminlength": [
+ "8"
+ ],
+ "objectclass": [
+ "top",
+ "nsContainer",
+ "krbPwdPolicy"
+ ]
+ },
+ "summary": null,
+ "value": "global_policy"
+ }
+} \ No newline at end of file
diff --git a/install/ui/test/data/role_find.json b/install/ui/test/data/role_find.json
new file mode 100644
index 000000000..af013803c
--- /dev/null
+++ b/install/ui/test/data/role_find.json
@@ -0,0 +1,20 @@
+{
+ "error": null,
+ "id": 0,
+ "result": {
+ "count": 1,
+ "result": [
+ {
+ "cn": [
+ "helpdesk"
+ ],
+ "description": [
+ "Helpdesk"
+ ],
+ "dn": "cn=helpdesk,cn=roles,cn=accounts,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com"
+ }
+ ],
+ "summary": "1 role matched",
+ "truncated": false
+ }
+} \ No newline at end of file
diff --git a/install/ui/test/data/role_show.json b/install/ui/test/data/role_show.json
new file mode 100644
index 000000000..9ad8dd689
--- /dev/null
+++ b/install/ui/test/data/role_show.json
@@ -0,0 +1,36 @@
+{
+ "error": null,
+ "id": 0,
+ "result": {
+ "result": {
+ "attributelevelrights": {
+ "aci": "rscwo",
+ "businesscategory": "rscwo",
+ "cn": "rscwo",
+ "description": "rscwo",
+ "member": "rscwo",
+ "memberof": "rsc",
+ "nsaccountlock": "rscwo",
+ "o": "rscwo",
+ "objectclass": "rscwo",
+ "ou": "rscwo",
+ "owner": "rscwo",
+ "seealso": "rscwo"
+ },
+ "cn": [
+ "helpdesk"
+ ],
+ "description": [
+ "Helpdesk"
+ ],
+ "dn": "cn=helpdesk,cn=roles,cn=accounts,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com",
+ "objectclass": [
+ "top",
+ "groupofnames",
+ "nestedgroup"
+ ]
+ },
+ "summary": null,
+ "value": "helpdesk"
+ }
+} \ No newline at end of file
diff --git a/install/ui/test/data/rolegroup_add.json b/install/ui/test/data/rolegroup_add.json
new file mode 100644
index 000000000..54e2c2832
--- /dev/null
+++ b/install/ui/test/data/rolegroup_add.json
@@ -0,0 +1,22 @@
+{
+ "error": null,
+ "id": 0,
+ "result": {
+ "result": {
+ "cn": [
+ "test"
+ ],
+ "description": [
+ "Test role"
+ ],
+ "dn": "cn=test,cn=rolegroups,cn=accounts,dc=dev,dc=example,dc=com",
+ "objectclass": [
+ "groupofnames",
+ "nestedgroup",
+ "top"
+ ]
+ },
+ "summary": "Added rolegroup \"test\"",
+ "value": "test"
+ }
+}
diff --git a/install/ui/test/data/rolegroup_add_member.json b/install/ui/test/data/rolegroup_add_member.json
new file mode 100644
index 000000000..e68ecc28b
--- /dev/null
+++ b/install/ui/test/data/rolegroup_add_member.json
@@ -0,0 +1,27 @@
+{
+ "error": null,
+ "id": 0,
+ "result": {
+ "completed": 1,
+ "failed": {
+ "member": {
+ "group": [],
+ "host": [],
+ "hostgroup": [],
+ "user": []
+ }
+ },
+ "result": {
+ "cn": [
+ "test"
+ ],
+ "description": [
+ "Test role"
+ ],
+ "dn": "cn=test,cn=rolegroups,cn=accounts,dc=dev,dc=example,dc=com",
+ "member_user": [
+ "admin"
+ ]
+ }
+ }
+}
diff --git a/install/ui/test/data/rolegroup_del.json b/install/ui/test/data/rolegroup_del.json
new file mode 100644
index 000000000..8af1e6306
--- /dev/null
+++ b/install/ui/test/data/rolegroup_del.json
@@ -0,0 +1,9 @@
+{
+ "error": null,
+ "id": 0,
+ "result": {
+ "result": true,
+ "summary": "Deleted rolegroup \"test\"",
+ "value": "test"
+ }
+}
diff --git a/install/ui/test/data/rolegroup_find.json b/install/ui/test/data/rolegroup_find.json
new file mode 100644
index 000000000..8ed2a76b7
--- /dev/null
+++ b/install/ui/test/data/rolegroup_find.json
@@ -0,0 +1,185 @@
+{
+ "error": null,
+ "id": 0,
+ "result": {
+ "count": 15,
+ "result": [
+ {
+ "cn": [
+ "helpdesk"
+ ],
+ "description": [
+ "Helpdesk"
+ ],
+ "dn": "cn=helpdesk,cn=rolegroups,cn=accounts,dc=dev,dc=example,dc=com",
+ "member_user": [
+ "edewata"
+ ]
+ },
+ {
+ "cn": [
+ "useradmin"
+ ],
+ "description": [
+ "User Administrators"
+ ],
+ "dn": "cn=useradmin,cn=rolegroups,cn=accounts,dc=dev,dc=example,dc=com"
+ },
+ {
+ "cn": [
+ "groupadmin"
+ ],
+ "description": [
+ "Group Administrators"
+ ],
+ "dn": "cn=groupadmin,cn=rolegroups,cn=accounts,dc=dev,dc=example,dc=com"
+ },
+ {
+ "cn": [
+ "hostadmin"
+ ],
+ "description": [
+ "Host Administrators"
+ ],
+ "dn": "cn=hostadmin,cn=rolegroups,cn=accounts,dc=dev,dc=example,dc=com",
+ "memberof_taskgroup": [
+ "addhosts",
+ "removehosts",
+ "modifyhosts",
+ "manage_host_keytab",
+ "enroll_host"
+ ]
+ },
+ {
+ "cn": [
+ "hostgroupadmin"
+ ],
+ "description": [
+ "Host Group Administrators"
+ ],
+ "dn": "cn=hostgroupadmin,cn=rolegroups,cn=accounts,dc=dev,dc=example,dc=com"
+ },
+ {
+ "cn": [
+ "delegationadmin"
+ ],
+ "description": [
+ "Role administration"
+ ],
+ "dn": "cn=delegationadmin,cn=rolegroups,cn=accounts,dc=dev,dc=example,dc=com"
+ },
+ {
+ "cn": [
+ "serviceadmin"
+ ],
+ "description": [
+ "Service Administrators"
+ ],
+ "dn": "cn=serviceadmin,cn=rolegroups,cn=accounts,dc=dev,dc=example,dc=com",
+ "memberof_taskgroup": [
+ "addservices",
+ "removeservices",
+ "modifyservices"
+ ]
+ },
+ {
+ "cn": [
+ "automountadmin"
+ ],
+ "description": [
+ "Automount Administrators"
+ ],
+ "dn": "cn=automountadmin,cn=rolegroups,cn=accounts,dc=dev,dc=example,dc=com"
+ },
+ {
+ "cn": [
+ "netgroupadmin"
+ ],
+ "description": [
+ "Netgroups Administrators"
+ ],
+ "dn": "cn=netgroupadmin,cn=rolegroups,cn=accounts,dc=dev,dc=example,dc=com"
+ },
+ {
+ "cn": [
+ "dnsadmin"
+ ],
+ "description": [
+ "DNS Administrators"
+ ],
+ "dn": "cn=dnsadmin,cn=rolegroups,cn=accounts,dc=dev,dc=example,dc=com"
+ },
+ {
+ "cn": [
+ "dnsserver"
+ ],
+ "description": [
+ "DNS Servers"
+ ],
+ "dn": "cn=dnsserver,cn=rolegroups,cn=accounts,dc=dev,dc=example,dc=com"
+ },
+ {
+ "cn": [
+ "certadmin"
+ ],
+ "description": [
+ "Certificate Administrators"
+ ],
+ "dn": "cn=certadmin,cn=rolegroups,cn=accounts,dc=dev,dc=example,dc=com",
+ "memberof_taskgroup": [
+ "retrieve_certs",
+ "request_certs",
+ "request_cert_different_host",
+ "certificate_status",
+ "revoke_certificate",
+ "certificate_remove_hold"
+ ]
+ },
+ {
+ "cn": [
+ "replicaadmin"
+ ],
+ "description": [
+ "Replication Administrators"
+ ],
+ "dn": "cn=replicaadmin,cn=rolegroups,cn=accounts,dc=dev,dc=example,dc=com",
+ "member_user": [
+ "admin"
+ ],
+ "memberof_taskgroup": [
+ "managereplica",
+ "deletereplica"
+ ]
+ },
+ {
+ "cn": [
+ "enrollhost"
+ ],
+ "description": [
+ "Host Enrollment"
+ ],
+ "dn": "cn=enrollhost,cn=rolegroups,cn=accounts,dc=dev,dc=example,dc=com",
+ "memberof_taskgroup": [
+ "manage_host_keytab",
+ "enroll_host"
+ ]
+ },
+ {
+ "cn": [
+ "entitlementadmin"
+ ],
+ "description": [
+ "Entitlement Administrators"
+ ],
+ "dn": "cn=entitlementadmin,cn=rolegroups,cn=accounts,dc=dev,dc=example,dc=com",
+ "memberof_taskgroup": [
+ "addentitlements",
+ "removeentitlements",
+ "modifyentitlements"
+ ]
+ }
+ ],
+ "summary": "15 rolegroups matched",
+ "truncated": false
+ }
+}
diff --git a/install/ui/test/data/rolegroup_remove_member.json b/install/ui/test/data/rolegroup_remove_member.json
new file mode 100644
index 000000000..d42bb6016
--- /dev/null
+++ b/install/ui/test/data/rolegroup_remove_member.json
@@ -0,0 +1,24 @@
+{
+ "error": null,
+ "id": 0,
+ "result": {
+ "completed": 1,
+ "failed": {
+ "member": {
+ "group": [],
+ "host": [],
+ "hostgroup": [],
+ "user": []
+ }
+ },
+ "result": {
+ "cn": [
+ "test"
+ ],
+ "description": [
+ "Test role"
+ ],
+ "dn": "cn=test,cn=rolegroups,cn=accounts,dc=dev,dc=example,dc=com"
+ }
+ }
+}
diff --git a/install/ui/test/data/rolegroup_show.json b/install/ui/test/data/rolegroup_show.json
new file mode 100644
index 000000000..4652fb2cd
--- /dev/null
+++ b/install/ui/test/data/rolegroup_show.json
@@ -0,0 +1,20 @@
+{
+ "error": null,
+ "id": 0,
+ "result": {
+ "result": {
+ "cn": [
+ "test"
+ ],
+ "description": [
+ "Test role"
+ ],
+ "dn": "cn=test,cn=rolegroups,cn=accounts,dc=dev,dc=example,dc=com",
+ "member_user": [
+ "admin"
+ ]
+ },
+ "summary": null,
+ "value": "test"
+ }
+}
diff --git a/install/ui/test/data/selfservice_find.json b/install/ui/test/data/selfservice_find.json
new file mode 100644
index 000000000..91db6e40b
--- /dev/null
+++ b/install/ui/test/data/selfservice_find.json
@@ -0,0 +1,24 @@
+{
+ "error": null,
+ "id": 0,
+ "result": {
+ "count": 1,
+ "result": [
+ {
+ "aciname": "Self can write own password",
+ "attrs": [
+ "userPassword",
+ "krbPrincipalKey",
+ "sambaLMPassword",
+ "sambaNTPassword"
+ ],
+ "permissions": [
+ "write"
+ ],
+ "selfaci": true
+ }
+ ],
+ "summary": "1 selfservice matched",
+ "truncated": false
+ }
+} \ No newline at end of file
diff --git a/install/ui/test/data/selfservice_show.json b/install/ui/test/data/selfservice_show.json
new file mode 100644
index 000000000..358e65924
--- /dev/null
+++ b/install/ui/test/data/selfservice_show.json
@@ -0,0 +1,21 @@
+{
+ "error": null,
+ "id": 0,
+ "result": {
+ "result": {
+ "aciname": "Self can write own password",
+ "attrs": [
+ "userPassword",
+ "krbPrincipalKey",
+ "sambaLMPassword",
+ "sambaNTPassword"
+ ],
+ "permissions": [
+ "write"
+ ],
+ "selfaci": true
+ },
+ "summary": null,
+ "value": "Self can write own password"
+ }
+} \ No newline at end of file
diff --git a/install/ui/test/data/service_add.json b/install/ui/test/data/service_add.json
new file mode 100644
index 000000000..4275d9bba
--- /dev/null
+++ b/install/ui/test/data/service_add.json
@@ -0,0 +1,29 @@
+{
+ "error": null,
+ "id": 0,
+ "result": {
+ "result": {
+ "dn": "krbprincipalname=test/dev.example.com@dev.example.com,cn=services,cn=accounts,dc=dev,dc=example,dc=com",
+ "ipauniqueid": [
+ "5b314ad9-bae4-11df-b82f-00163e72f2d9"
+ ],
+ "krbprincipalname": [
+ "test/dev.example.com@DEV.EXAMPLE.COM"
+ ],
+ "managedby_host": [
+ "dev.example.com"
+ ],
+ "objectclass": [
+ "krbprincipal",
+ "krbprincipalaux",
+ "krbticketpolicyaux",
+ "ipaobject",
+ "ipaservice",
+ "pkiuser",
+ "top"
+ ]
+ },
+ "summary": "Added service \"test/dev.example.com@DEV.EXAMPLE.COM\"",
+ "value": "test/dev.example.com@DEV.EXAMPLE.COM"
+ }
+}
diff --git a/install/ui/test/data/service_add_host.json b/install/ui/test/data/service_add_host.json
new file mode 100644
index 000000000..cb199e310
--- /dev/null
+++ b/install/ui/test/data/service_add_host.json
@@ -0,0 +1,21 @@
+{
+ "error": null,
+ "id": 0,
+ "result": {
+ "completed": 1,
+ "failed": {
+ "managedby": {
+ "host": []
+ }
+ },
+ "result": {
+ "dn": "krbprincipalname=test/dev.example.com@dev.example.com,cn=services,cn=accounts,dc=dev,dc=example,dc=com",
+ "krbprincipalname": [
+ "test/dev.example.com@DEV.EXAMPLE.COM"
+ ],
+ "managedby_host": [
+ "dev.example.com"
+ ]
+ }
+ }
+}
diff --git a/install/ui/test/data/service_del.json b/install/ui/test/data/service_del.json
new file mode 100644
index 000000000..053b0ad99
--- /dev/null
+++ b/install/ui/test/data/service_del.json
@@ -0,0 +1,9 @@
+{
+ "error": null,
+ "id": 0,
+ "result": {
+ "result": true,
+ "summary": "Deleted service \"test/dev.example.com@DEV.EXAMPLE.COM\"",
+ "value": "test/dev.example.com@DEV.EXAMPLE.COM"
+ }
+}
diff --git a/install/ui/test/data/service_disable.json b/install/ui/test/data/service_disable.json
new file mode 100644
index 000000000..d62c05472
--- /dev/null
+++ b/install/ui/test/data/service_disable.json
@@ -0,0 +1,9 @@
+{
+ "error": null,
+ "id": 0,
+ "result": {
+ "result": true,
+ "summary": "Removed kerberos key from \"test/dev.example.com@DEV.EXAMPLE.COM\"",
+ "value": "test/dev.example.com@DEV.EXAMPLE.COM"
+ }
+}
diff --git a/install/ui/test/data/service_find.json b/install/ui/test/data/service_find.json
new file mode 100644
index 000000000..b71ea9e31
--- /dev/null
+++ b/install/ui/test/data/service_find.json
@@ -0,0 +1,48 @@
+{
+ "error": null,
+ "id": 0,
+ "result": {
+ "count": 3,
+ "result": [
+ {
+ "dn": "krbprincipalname=ldap/dev.example.com@dev.example.com,cn=services,cn=accounts,dc=dev,dc=example,dc=com",
+ "has_keytab": true,
+ "krbprincipalname": [
+ "ldap/dev.example.com@DEV.EXAMPLE.COM"
+ ],
+ "managedby_host": [
+ "dev.example.com"
+ ],
+ "usercertificate": [
+ {
+ "__base64__": "MIICbjCCAdegAwIBAgICA+0wDQYJKoZIhvcNAQEFBQAwKTEnMCUGA1UEAxMeSVBBIFRlc3QgQ2VydGlmaWNhdGUgQXV0aG9yaXR5MB4XDTEwMDkwMjA2NTYzMloXDTIwMDkwMjA2NTYzMlowKDEMMAoGA1UEChMDSVBBMRgwFgYDVQQDEw9kZXYuZXhhbXBsZS5jb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDc63RjpqUCI84j9kjn0XYmpAOjkYbLddT9F0UUanASg1iIhscwWjvp/Mf5ZIzEYoB+dloI9gvEUWb8CU/x42QZr4lgEK4m/vCSDA0CkAnWvU/DHdtcAgpdZeBOQ1CMynyvNvN/ajyaA8dPwRcs9yJDrWXMa7LzMuw+ct5HA7HRdDdvUeIFr8YZEd/Mt1N96BmlVf3GA3P89cWfCKr1iVnmyewanjKuwcws1GCxawCnp0w1GHbKct4PPhB3k6EN8ZipFDGZmSeDVsa3gF7y2reLAYTS1/RwWPAHNeQ0cpOMe155cF3uHGSoX+RWtgo0BZ1+wgLMU5sf9W3ZMln3WmoFAgMBAAGjIjAgMBEGCWCGSAGG+EIBAQQEAwIGQDALBgNVHQ8EBAMCBSAwDQYJKoZIhvcNAQEFBQADgYEAbSYTU+IQvfppQE7setcpO/PiFNnMaZ3Ss7UGjm6XoPem9X0ktQOfWhBuhfH/7MbPdg2zn+55soaRpd8rOThr187G40GAMM5I3Jr+8386Q4zwCvED7B09pzBhQd/4ecVTIYFc82EytsM6I1aBrG9cLLuT+RL2dK5efOymCf/zjsw="
+ }
+ ]
+ },
+ {
+ "dn": "krbprincipalname=http/dev.example.com@dev.example.com,cn=services,cn=accounts,dc=dev,dc=example,dc=com",
+ "has_keytab": true,
+ "krbprincipalname": [
+ "HTTP/dev.example.com@DEV.EXAMPLE.COM"
+ ],
+ "usercertificate": [
+ {
+ "__base64__": "MIICbjCCAdegAwIBAgICA+4wDQYJKoZIhvcNAQEFBQAwKTEnMCUGA1UEAxMeSVBBIFRlc3QgQ2VydGlmaWNhdGUgQXV0aG9yaXR5MB4XDTEwMDkwMjA2NTY1MFoXDTIwMDkwMjA2NTY1MFowKDEMMAoGA1UEChMDSVBBMRgwFgYDVQQDEw9kZXYuZXhhbXBsZS5jb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC2g0DTtC0f7StYfbVqc3bZ6niWHCBZp9SVEgD1lGY9+efQnO1Z6dqbUxLI+oUcVqA2aoeWVSTQ1KZLglF0pYUJcMVfUAQaFbwhY05rLtKya0+6DgYbnJ187fSHNOLQ71v/6pFt9THyLFICFJgKX64ouQYxV7+UY/vyqaKCjonWBJznJHaw07cEYj6tFkQxwNIhQRWZP2yLrSEay1cDLtA7Rm6AYRKIhiBKwFVewi4VEo6HbgfKpeZRZ2G8w1UErxTuPom2WymByoOg1Z8Xn23OiW+CkcrwRFhDYyp3LRiIT+86fPYkF4TBqO9lWbxKy4ZtcHXfMcGBmQSc3yjN+IctAgMBAAGjIjAgMBEGCWCGSAGG+EIBAQQEAwIGQDALBgNVHQ8EBAMCBSAwDQYJKoZIhvcNAQEFBQADgYEAi1vdSKmUUPdkwxv6tnabo6sEpTCdyV33Jops5hMkdtIKsvOG+CeXuvPYIwZpvwozAppL3tcXsh6t35YklpjeoX8qX5gYTZvuusCUAQHfJC4H/ggU+TrjQW5GnGOLTpgew/NtLKj7LACp/YrwMNA5ktdsBbj2kESIEVlokLvITy4="
+ }
+ ]
+ },
+ {
+ "dn": "krbprincipalname=test/dev.example.com@dev.example.com,cn=services,cn=accounts,dc=dev,dc=example,dc=com",
+ "has_keytab": false,
+ "krbprincipalname": [
+ "test/dev.example.com@DEV.EXAMPLE.COM"
+ ],
+ "managedby_host": [
+ "dev.example.com"
+ ]
+ }
+ ],
+ "summary": "3 services matched",
+ "truncated": false
+ }
+}
diff --git a/install/ui/test/data/service_managedby_host.json b/install/ui/test/data/service_managedby_host.json
new file mode 100644
index 000000000..181fc5b96
--- /dev/null
+++ b/install/ui/test/data/service_managedby_host.json
@@ -0,0 +1,110 @@
+{
+ "error": null,
+ "id": 0,
+ "result": {
+ "count": 1,
+ "results": [
+ {
+ "error": null,
+ "result": {
+ "attributelevelrights": {
+ "aci": "rscwo",
+ "cn": "rscwo",
+ "description": "rscwo",
+ "enrolledby": "rsc",
+ "fqdn": "rscwo",
+ "ipaclientversion": "rscwo",
+ "ipauniqueid": "rscwo",
+ "krbcanonicalname": "rscwo",
+ "krbextradata": "rscwo",
+ "krblastfailedauth": "rscwo",
+ "krblastpwdchange": "rscwo",
+ "krblastsuccessfulauth": "rscwo",
+ "krbloginfailedcount": "rscwo",
+ "krbmaxrenewableage": "rscwo",
+ "krbmaxticketlife": "rscwo",
+ "krbobjectreferences": "rscwo",
+ "krbpasswordexpiration": "rscwo",
+ "krbprincipalaliases": "rscwo",
+ "krbprincipalexpiration": "rscwo",
+ "krbprincipalkey": "wo",
+ "krbprincipalname": "rscwo",
+ "krbprincipaltype": "rscwo",
+ "krbpwdhistory": "rscwo",
+ "krbpwdpolicyreference": "rscwo",
+ "krbticketflags": "rscwo",
+ "krbticketpolicyreference": "rscwo",
+ "krbupenabled": "rscwo",
+ "l": "rscwo",
+ "managedby": "rscwo",
+ "memberof": "rsc",
+ "nsaccountlock": "rscwo",
+ "nshardwareplatform": "rscwo",
+ "nshostlocation": "rscwo",
+ "nsosversion": "rscwo",
+ "objectclass": "rscwo",
+ "serverhostname": "rsc",
+ "usercertificate": "rscwo",
+ "userpassword": "wo"
+ },
+ "cn": [
+ "dev.example.com"
+ ],
+ "description": [
+ "Development"
+ ],
+ "dn": "fqdn=dev.example.com,cn=computers,cn=accounts,dc=dev,dc=example,dc=com",
+ "fqdn": [
+ "dev.example.com"
+ ],
+ "has_keytab": true,
+ "ipauniqueid": [
+ "0568a298-f46d-11df-9ef8-00163e72f2d9"
+ ],
+ "krbextradata": [
+ {
+ "__base64__": "AAKTZudMYWRtaW4vYWRtaW5AREVWLkVYQU1QTEUuQ09NAA=="
+ },
+ {
+ "__base64__": "AAgBAA=="
+ }
+ ],
+ "krblastpwdchange": [
+ "20101120061131Z"
+ ],
+ "krbpasswordexpiration": [
+ "19700101000000Z"
+ ],
+ "krbprincipalname": [
+ "host/dev.example.com@DEV.EXAMPLE.COM"
+ ],
+ "krbticketflags": [
+ "0"
+ ],
+ "managedby_host": [
+ "dev.example.com"
+ ],
+ "memberof_hostgroup": [
+ "test"
+ ],
+ "objectclass": [
+ "top",
+ "ipaobject",
+ "nshost",
+ "ipahost",
+ "ipaservice",
+ "pkiuser",
+ "krbprincipalaux",
+ "krbprincipal",
+ "krbticketpolicyaux"
+ ],
+ "serverhostname": [
+ "dev"
+ ]
+ },
+ "summary": null,
+ "value": "dev.example.com"
+ }
+ ]
+ }
+}
diff --git a/install/ui/test/data/service_mod.json b/install/ui/test/data/service_mod.json
new file mode 100644
index 000000000..f56186466
--- /dev/null
+++ b/install/ui/test/data/service_mod.json
@@ -0,0 +1,21 @@
+{
+ "error": null,
+ "id": 0,
+ "result": {
+ "result": {
+ "krbprincipalname": [
+ "test/dev.example.com@DEV.EXAMPLE.COM"
+ ],
+ "managedby_host": [
+ "dev.example.com"
+ ],
+ "usercertificate": [
+ {
+ "__base64__": "MIICAjCCAWugAwIBAgICBAswDQYJKoZIhvcNAQEFBQAwKTEnMCUGA1UEAxMeSVBBIFRlc3QgQ2VydGlmaWNhdGUgQXV0aG9yaXR5MB4XDTEwMTAwNzIzMzk0NFoXDTE1MTAwNzIzMzk0NFowKDEMMAoGA1UECgwDSVBBMRgwFgYDVQQDDA9kZXYuZXhhbXBsZS5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAOTXyj8grVB7Rj95RFawgdwn9OYZ03LWHZ+HMYggu2/xCCrUrdThP14YBlVqZumjVJSclj6T4ACjjdPJq9JTTmx7gMizDTReus7IPlS6fCxb5v5whQJZsEksXL04OxUMl25euPRFkYcTK1rdW47+AkG10j1qeNW+B6CpdQGR6eM/AgMBAAGjOjA4MBEGCWCGSAGG+EIBAQQEAwIGQDATBgNVHSUEDDAKBggrBgEFBQcDATAOBgNVHQ8BAf8EBAMCBPAwDQYJKoZIhvcNAQEFBQADgYEASIhq723VL5xP0q51MYXFlGU1boD7pPD1pIQspD/MjCIEupcbH2kAo4wf+EiKsXR0rs+WZkaSgvFqaM4OQ2kWSFTiqmFXFDBEi6EFr68yLg7IpQpNTzVBXERd8B4GwNL9wrRw60jPXlUK29DPBsdGq8fDgX18l39wKkWXv7p1to4="
+ }
+ ]
+ },
+ "summary": "Modified service \"test/dev.example.com@DEV.EXAMPLE.COM\"",
+ "value": "test/dev.example.com@DEV.EXAMPLE.COM"
+ }
+} \ No newline at end of file
diff --git a/install/ui/test/data/service_remove_host.sh b/install/ui/test/data/service_remove_host.sh
new file mode 100644
index 000000000..15234f4d0
--- /dev/null
+++ b/install/ui/test/data/service_remove_host.sh
@@ -0,0 +1,18 @@
+{
+ "error": null,
+ "id": 0,
+ "result": {
+ "completed": 1,
+ "failed": {
+ "managedby": {
+ "host": []
+ }
+ },
+ "result": {
+ "dn": "krbprincipalname=test/dev.example.com@dev.example.com,cn=services,cn=accounts,dc=dev,dc=example,dc=com",
+ "krbprincipalname": [
+ "test/dev.example.com@DEV.EXAMPLE.COM"
+ ]
+ }
+ }
+}
diff --git a/install/ui/test/data/service_show.json b/install/ui/test/data/service_show.json
new file mode 100644
index 000000000..9cb11d535
--- /dev/null
+++ b/install/ui/test/data/service_show.json
@@ -0,0 +1,74 @@
+{
+ "error": null,
+ "id": 0,
+ "result": {
+ "result": {
+ "attributelevelrights": {
+ "aci": "rscwo",
+ "ipauniqueid": "rsc",
+ "krbcanonicalname": "rscwo",
+ "krbextradata": "rscwo",
+ "krblastfailedauth": "rscwo",
+ "krblastpwdchange": "rscwo",
+ "krblastsuccessfulauth": "rscwo",
+ "krbloginfailedcount": "rscwo",
+ "krbmaxrenewableage": "rscwo",
+ "krbmaxticketlife": "rscwo",
+ "krbobjectreferences": "rscwo",
+ "krbpasswordexpiration": "rscwo",
+ "krbprincipalaliases": "rscwo",
+ "krbprincipalexpiration": "rscwo",
+ "krbprincipalkey": "wo",
+ "krbprincipalname": "rscwo",
+ "krbprincipaltype": "rscwo",
+ "krbpwdhistory": "rscwo",
+ "krbpwdpolicyreference": "rscwo",
+ "krbticketflags": "rscwo",
+ "krbticketpolicyreference": "rscwo",
+ "krbupenabled": "rscwo",
+ "managedby": "rscwo",
+ "memberof": "rsc",
+ "nsaccountlock": "rscwo",
+ "objectclass": "rscwo",
+ "usercertificate": "rscwo"
+ },
+ "dn": "krbprincipalname=test/dev.example.com@dev.example.com,cn=services,cn=accounts,dc=dev,dc=example,dc=com",
+ "has_keytab": true,
+ "issuer": "CN=IPA Test Certificate Authority",
+ "ipauniqueid": [
+ "c0298f70-f396-11df-a2aa-00163e72f2d9"
+ ],
+ "krblastpwdchange": [
+ "20101119101837Z"
+ ],
+ "krbprincipalname": [
+ "test/dev.example.com@DEV.EXAMPLE.COM"
+ ],
+ "managedby_host": [
+ "dev.example.com"
+ ],
+ "md5_fingerprint": "08:86:a9:f9:87:af:0d:d7:42:01:e0:5f:12:9b:32:7f",
+ "serial_number": "1",
+ "sha1_fingerprint": "b8:4c:4b:79:4f:13:03:79:47:08:fa:6b:52:63:3d:f9:15:8e:7e:dc",
+ "subject": "CN=dev.example.com,O=IPA",
+ "usercertificate": [
+ {
+ "__base64__": "MIICAjCCAWugAwIBAgICBAswDQYJKoZIhvcNAQEFBQAwKTEnMCUGA1UEAxMeSVBBIFRlc3QgQ2VydGlmaWNhdGUgQXV0aG9yaXR5MB4XDTEwMTAwNzIzMzk0NFoXDTE1MTAwNzIzMzk0NFowKDEMMAoGA1UECgwDSVBBMRgwFgYDVQQDDA9kZXYuZXhhbXBsZS5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAOTXyj8grVB7Rj95RFawgdwn9OYZ03LWHZ+HMYggu2/xCCrUrdThP14YBlVqZumjVJSclj6T4ACjjdPJq9JTTmx7gMizDTReus7IPlS6fCxb5v5whQJZsEksXL04OxUMl25euPRFkYcTK1rdW47+AkG10j1qeNW+B6CpdQGR6eM/AgMBAAGjOjA4MBEGCWCGSAGG+EIBAQQEAwIGQDATBgNVHSUEDDAKBggrBgEFBQcDATAOBgNVHQ8BAf8EBAMCBPAwDQYJKoZIhvcNAQEFBQADgYEASIhq723VL5xP0q51MYXFlGU1boD7pPD1pIQspD/MjCIEupcbH2kAo4wf+EiKsXR0rs+WZkaSgvFqaM4OQ2kWSFTiqmFXFDBEi6EFr68yLg7IpQpNTzVBXERd8B4GwNL9wrRw60jPXlUK29DPBsdGq8fDgX18l39wKkWXv7p1to4="
+ }
+ ],
+ "valid_not_after": "Tue Oct 13 01:59:32 2015 UTC",
+ "valid_not_before": "Wed Oct 13 01:59:32 2010 UTC",
+ "objectclass": [
+ "krbprincipal",
+ "krbprincipalaux",
+ "krbticketpolicyaux",
+ "ipaobject",
+ "ipaservice",
+ "pkiuser",
+ "top"
+ ]
+ },
+ "summary": null,
+ "value": "test/dev.example.com@DEV.EXAMPLE.COM"
+ }
+}
diff --git a/install/ui/test/data/sudocmd_add.json b/install/ui/test/data/sudocmd_add.json
new file mode 100644
index 000000000..6fb4a5fc1
--- /dev/null
+++ b/install/ui/test/data/sudocmd_add.json
@@ -0,0 +1,21 @@
+{
+ "error": null,
+ "id": 0,
+ "result": {
+ "result": {
+ "dn": "sudocmd=/usr/bin/less,cn=sudocmds,cn=sudo,dc=dev,dc=example,dc=com",
+ "ipauniqueid": [
+ "09e4ab26-f456-11df-bb95-00163e72f2d9"
+ ],
+ "objectclass": [
+ "ipaobject",
+ "ipasudocmd"
+ ],
+ "sudocmd": [
+ "/usr/bin/less"
+ ]
+ },
+ "summary": "Added sudo command \"/usr/bin/less\"",
+ "value": "/usr/bin/less"
+ }
+}
diff --git a/install/ui/test/data/sudocmd_del.json b/install/ui/test/data/sudocmd_del.json
new file mode 100644
index 000000000..d6bc5ad00
--- /dev/null
+++ b/install/ui/test/data/sudocmd_del.json
@@ -0,0 +1,9 @@
+{
+ "error": null,
+ "id": 0,
+ "result": {
+ "result": true,
+ "summary": "Deleted sudo command \"/usr/bin/less\"",
+ "value": "/usr/bin/less"
+ }
+}
diff --git a/install/ui/test/data/sudocmd_find.json b/install/ui/test/data/sudocmd_find.json
new file mode 100644
index 000000000..f7f5a23ef
--- /dev/null
+++ b/install/ui/test/data/sudocmd_find.json
@@ -0,0 +1,23 @@
+{
+ "error": null,
+ "id": 0,
+ "result": {
+ "count": 2,
+ "result": [
+ {
+ "dn": "sudocmd=/usr/bin/more,cn=sudocmds,cn=sudo,dc=dev,dc=example,dc=com",
+ "sudocmd": [
+ "/usr/bin/more"
+ ]
+ },
+ {
+ "dn": "sudocmd=/usr/bin/less,cn=sudocmds,cn=sudo,dc=dev,dc=example,dc=com",
+ "sudocmd": [
+ "/usr/bin/less"
+ ]
+ }
+ ],
+ "summary": "2 sudo command matched",
+ "truncated": false
+ }
+}
diff --git a/install/ui/test/data/sudocmd_memberof_add.json b/install/ui/test/data/sudocmd_memberof_add.json
new file mode 100644
index 000000000..fc45ef4e2
--- /dev/null
+++ b/install/ui/test/data/sudocmd_memberof_add.json
@@ -0,0 +1,53 @@
+{
+ "error": null,
+ "id": 0,
+ "result": {
+ "count": 2,
+ "results": [
+ {
+ "completed": 1,
+ "error": null,
+ "failed": {
+ "member": {
+ "sudocmd": [],
+ "sudocmdgroup": []
+ }
+ },
+ "result": {
+ "cn": [
+ "group1"
+ ],
+ "description": [
+ "Group 1"
+ ],
+ "dn": "cn=group1,cn=sudocmdgroups,cn=sudo,dc=ipa",
+ "member_sudocmd": [
+ "/usr/bin/less"
+ ]
+ }
+ },
+ {
+ "completed": 1,
+ "error": null,
+ "failed": {
+ "member": {
+ "sudocmd": [],
+ "sudocmdgroup": []
+ }
+ },
+ "result": {
+ "cn": [
+ "group2"
+ ],
+ "description": [
+ "Group 2"
+ ],
+ "dn": "cn=group2,cn=sudocmdgroups,cn=sudo,dc=ipa",
+ "member_sudocmd": [
+ "/usr/bin/more"
+ ]
+ }
+ }
+ ]
+ }
+}
diff --git a/install/ui/test/data/sudocmd_memberof_remove.json b/install/ui/test/data/sudocmd_memberof_remove.json
new file mode 100644
index 000000000..c5e031b86
--- /dev/null
+++ b/install/ui/test/data/sudocmd_memberof_remove.json
@@ -0,0 +1,50 @@
+{
+ "error": null,
+ "id": 0,
+ "result": {
+ "count": 2,
+ "results": [
+ {
+ "completed": 1,
+ "error": null,
+ "failed": {
+ "member": {
+ "sudocmd": [],
+ "sudocmdgroup": []
+ }
+ },
+ "result": {
+ "cn": [
+ "group1"
+ ],
+ "description": [
+ "Group 1"
+ ],
+ "dn": "cn=group1,cn=sudocmdgroups,cn=sudo,dc=ipa"
+ }
+ },
+ {
+ "completed": 1,
+ "error": null,
+ "failed": {
+ "member": {
+ "sudocmd": [],
+ "sudocmdgroup": []
+ }
+ },
+ "result": {
+ "cn": [
+ "group2"
+ ],
+ "description": [
+ "Group 2"
+ ],
+ "dn": "cn=group2,cn=sudocmdgroups,cn=sudo,dc=ipa",
+ "memberindirect_sudocmd": [
+ "/usr/bin/more"
+ ]
+ }
+ }
+ ]
+ }
+}
diff --git a/install/ui/test/data/sudocmd_memberof_show.json b/install/ui/test/data/sudocmd_memberof_show.json
new file mode 100644
index 000000000..279dc6c96
--- /dev/null
+++ b/install/ui/test/data/sudocmd_memberof_show.json
@@ -0,0 +1,61 @@
+{
+ "error": null,
+ "id": 0,
+ "result": {
+ "count": 2,
+ "results": [
+ {
+ "error": null,
+ "result": {
+ "cn": [
+ "group1"
+ ],
+ "description": [
+ "Group 1"
+ ],
+ "dn": "cn=group1,cn=sudocmdgroups,cn=sudo,dc=ipa",
+ "ipauniqueid": [
+ "fc775d2e-1d56-11e0-b7cd-00163e2fe6de"
+ ],
+ "member_sudocmd": [
+ "/usr/bin/less"
+ ],
+ "objectclass": [
+ "ipaobject",
+ "ipasudocmdgrp",
+ "groupOfNames",
+ "top"
+ ]
+ },
+ "summary": null,
+ "value": "group1"
+ },
+ {
+ "error": null,
+ "result": {
+ "cn": [
+ "group2"
+ ],
+ "description": [
+ "Group 2"
+ ],
+ "dn": "cn=group2,cn=sudocmdgroups,cn=sudo,dc=ipa",
+ "ipauniqueid": [
+ "b90c1930-1d5b-11e0-ac89-00163e2fe6de"
+ ],
+ "member_sudocmd": [
+ "/usr/bin/more"
+ ],
+ "objectclass": [
+ "ipaobject",
+ "ipasudocmdgrp",
+ "groupOfNames",
+ "top"
+ ]
+ },
+ "summary": null,
+ "value": "group2"
+ }
+ ]
+ }
+}
diff --git a/install/ui/test/data/sudocmd_mod.json b/install/ui/test/data/sudocmd_mod.json
new file mode 100644
index 000000000..82919cd2d
--- /dev/null
+++ b/install/ui/test/data/sudocmd_mod.json
@@ -0,0 +1,31 @@
+{
+ "error": null,
+ "id": 0,
+ "result": {
+ "result": {
+ "attributelevelrights": {
+ "aci": "rscwo",
+ "description": "rscwo",
+ "ipauniqueid": "rsc",
+ "memberof": "rsc",
+ "nsaccountlock": "rscwo",
+ "sudocmd": "rscwo"
+ },
+ "description": [
+ "opposite of more"
+ ],
+ "ipauniqueid": [
+ "06708d0e-f454-11df-9273-00163e72f2d9"
+ ],
+ "objectclass": [
+ "ipaobject",
+ "ipasudocmd"
+ ],
+ "sudocmd": [
+ "/usr/bin/less"
+ ]
+ },
+ "summary": "Modified sudo command \"/usr/bin/less\"",
+ "value": "/usr/bin/less"
+ }
+}
diff --git a/install/ui/test/data/sudocmd_show.json b/install/ui/test/data/sudocmd_show.json
new file mode 100644
index 000000000..b27c832f3
--- /dev/null
+++ b/install/ui/test/data/sudocmd_show.json
@@ -0,0 +1,33 @@
+{
+ "error": null,
+ "id": 0,
+ "result": {
+ "result": {
+ "attributelevelrights": {
+ "aci": "rscwo",
+ "description": "rscwo",
+ "ipauniqueid": "rsc",
+ "memberof": "rsc",
+ "nsaccountlock": "rscwo",
+ "sudocmd": "rscwo"
+ },
+ "dn": "sudocmd=/usr/bin/less,cn=sudocmds,cn=sudo,dc=dev,dc=example,dc=com",
+ "ipauniqueid": [
+ "06708d0e-f454-11df-9273-00163e72f2d9"
+ ],
+ "memberof": [
+ "cn=group1,cn=sudocmdgroups,cn=sudo,dc=dev,dc=example,dc=com",
+ "cn=group2,cn=sudocmdgroups,cn=sudo,dc=dev,dc=example,dc=com"
+ ],
+ "objectclass": [
+ "ipaobject",
+ "ipasudocmd"
+ ],
+ "sudocmd": [
+ "/usr/bin/less"
+ ]
+ },
+ "summary": null,
+ "value": "/usr/bin/less"
+ }
+}
diff --git a/install/ui/test/data/sudocmdgroup_add.json b/install/ui/test/data/sudocmdgroup_add.json
new file mode 100644
index 000000000..ce389f564
--- /dev/null
+++ b/install/ui/test/data/sudocmdgroup_add.json
@@ -0,0 +1,26 @@
+{
+ "error": null,
+ "id": 0,
+ "result": {
+ "result": {
+ "cn": [
+ "group1"
+ ],
+ "description": [
+ "Group 1"
+ ],
+ "dn": "cn=group1,cn=sudocmdgroups,cn=sudo,dc=dev,dc=example,dc=com",
+ "ipauniqueid": [
+ "1a8f4852-f459-11df-815c-00163e72f2d9"
+ ],
+ "objectclass": [
+ "ipaobject",
+ "ipasudocmdgrp",
+ "groupOfNames",
+ "top"
+ ]
+ },
+ "summary": "Added sudo command group \"group1\"",
+ "value": "group1"
+ }
+}
diff --git a/install/ui/test/data/sudocmdgroup_add_member.json b/install/ui/test/data/sudocmdgroup_add_member.json
new file mode 100644
index 000000000..254746e65
--- /dev/null
+++ b/install/ui/test/data/sudocmdgroup_add_member.json
@@ -0,0 +1,26 @@
+{
+ "error": null,
+ "id": 0,
+ "result": {
+ "completed": 2,
+ "failed": {
+ "member": {
+ "sudocmd": [],
+ "sudocmdgroup": []
+ }
+ },
+ "result": {
+ "cn": [
+ "group1"
+ ],
+ "description": [
+ "SUDO Group 1"
+ ],
+ "dn": "cn=group1,cn=sudocmdgroups,cn=sudo,dc=dev,dc=example,dc=com",
+ "member_sudocmd": [
+ "/usr/bin/more",
+ "/usr/bin/less"
+ ]
+ }
+ }
+}
diff --git a/install/ui/test/data/sudocmdgroup_del.json b/install/ui/test/data/sudocmdgroup_del.json
new file mode 100644
index 000000000..24c7ab692
--- /dev/null
+++ b/install/ui/test/data/sudocmdgroup_del.json
@@ -0,0 +1,9 @@
+{
+ "error": null,
+ "id": 0,
+ "result": {
+ "result": true,
+ "summary": "Deleted sudo command group \"group1\"",
+ "value": "group1"
+ }
+}
diff --git a/install/ui/test/data/sudocmdgroup_find.json b/install/ui/test/data/sudocmdgroup_find.json
new file mode 100644
index 000000000..d640e35bd
--- /dev/null
+++ b/install/ui/test/data/sudocmdgroup_find.json
@@ -0,0 +1,33 @@
+{
+ "error": null,
+ "id": 0,
+ "result": {
+ "count": 2,
+ "result": [
+ {
+ "cn": [
+ "group1"
+ ],
+ "description": [
+ "Group 1"
+ ],
+ "dn": "cn=group1,cn=sudocmdgroups,cn=sudo,dc=dev,dc=example,dc=com",
+ "member_sudocmd": [
+ "/usr/bin/more",
+ "/usr/bin/less"
+ ]
+ },
+ {
+ "cn": [
+ "group2"
+ ],
+ "description": [
+ "Group 2"
+ ],
+ "dn": "cn=group2,cn=sudocmdgroups,cn=sudo,dc=dev,dc=example,dc=com"
+ }
+ ],
+ "summary": "2 sudo command groups matched",
+ "truncated": false
+ }
+}
diff --git a/install/ui/test/data/sudocmdgroup_member_sudocmd.json b/install/ui/test/data/sudocmdgroup_member_sudocmd.json
new file mode 100644
index 000000000..7871a4684
--- /dev/null
+++ b/install/ui/test/data/sudocmdgroup_member_sudocmd.json
@@ -0,0 +1,57 @@
+{
+ "error": null,
+ "id": 0,
+ "result": {
+ "count": 2,
+ "results": [
+ {
+ "error": null,
+ "result": {
+ "description": [
+ "more"
+ ],
+ "dn": "sudocmd=/usr/bin/more,cn=sudocmds,cn=sudo,dc=dev,dc=example,dc=com",
+ "ipauniqueid": [
+ "a9138c9a-fc0c-11df-8584-00163e72f2d9"
+ ],
+ "memberof": [
+ "cn=test,cn=sudocmdgroups,cn=sudo,dc=dev,dc=example,dc=com"
+ ],
+ "objectclass": [
+ "ipaobject",
+ "ipasudocmd"
+ ],
+ "sudocmd": [
+ "/usr/bin/more"
+ ]
+ },
+ "summary": null,
+ "value": "/usr/bin/more"
+ },
+ {
+ "error": null,
+ "result": {
+ "description": [
+ "less"
+ ],
+ "dn": "sudocmd=/usr/bin/less,cn=sudocmds,cn=sudo,dc=dev,dc=example,dc=com",
+ "ipauniqueid": [
+ "44ce29ee-fc38-11df-b995-00163e72f2d9"
+ ],
+ "memberof": [
+ "cn=test,cn=sudocmdgroups,cn=sudo,dc=dev,dc=example,dc=com"
+ ],
+ "objectclass": [
+ "ipaobject",
+ "ipasudocmd"
+ ],
+ "sudocmd": [
+ "/usr/bin/less"
+ ]
+ },
+ "summary": null,
+ "value": "/usr/bin/less"
+ }
+ ]
+ }
+}
diff --git a/install/ui/test/data/sudocmdgroup_mod.json b/install/ui/test/data/sudocmdgroup_mod.json
new file mode 100644
index 000000000..d0eb3226b
--- /dev/null
+++ b/install/ui/test/data/sudocmdgroup_mod.json
@@ -0,0 +1,39 @@
+{
+ "error": null,
+ "id": 0,
+ "result": {
+ "result": {
+ "attributelevelrights": {
+ "aci": "rscwo",
+ "businesscategory": "rscwo",
+ "cn": "rscwo",
+ "description": "rscwo",
+ "ipauniqueid": "rsc",
+ "member": "rscwo",
+ "nsaccountlock": "rscwo",
+ "o": "rscwo",
+ "objectclass": "rscwo",
+ "ou": "rscwo",
+ "owner": "rscwo",
+ "seealso": "rscwo"
+ },
+ "cn": [
+ "group1"
+ ],
+ "description": [
+ "SUDO Group 1"
+ ],
+ "ipauniqueid": [
+ "1a8f4852-f459-11df-815c-00163e72f2d9"
+ ],
+ "objectclass": [
+ "ipaobject",
+ "ipasudocmdgrp",
+ "groupOfNames",
+ "top"
+ ]
+ },
+ "summary": "Modified sudo command group \"group1\"",
+ "value": "group1"
+ }
+}
diff --git a/install/ui/test/data/sudocmdgroup_remove_member.json b/install/ui/test/data/sudocmdgroup_remove_member.json
new file mode 100644
index 000000000..22353c314
--- /dev/null
+++ b/install/ui/test/data/sudocmdgroup_remove_member.json
@@ -0,0 +1,22 @@
+{
+ "error": null,
+ "id": 0,
+ "result": {
+ "completed": 2,
+ "failed": {
+ "member": {
+ "sudocmd": [],
+ "sudocmdgroup": []
+ }
+ },
+ "result": {
+ "cn": [
+ "group1"
+ ],
+ "description": [
+ "SUDO Group 1"
+ ],
+ "dn": "cn=group1,cn=sudocmdgroups,cn=sudo,dc=dev,dc=example,dc=com"
+ }
+ }
+}
diff --git a/install/ui/test/data/sudocmdgroup_show.json b/install/ui/test/data/sudocmdgroup_show.json
new file mode 100644
index 000000000..1478ba265
--- /dev/null
+++ b/install/ui/test/data/sudocmdgroup_show.json
@@ -0,0 +1,44 @@
+{
+ "error": null,
+ "id": 0,
+ "result": {
+ "result": {
+ "attributelevelrights": {
+ "aci": "rscwo",
+ "businesscategory": "rscwo",
+ "cn": "rscwo",
+ "description": "rscwo",
+ "ipauniqueid": "rsc",
+ "member": "rscwo",
+ "nsaccountlock": "rscwo",
+ "o": "rscwo",
+ "objectclass": "rscwo",
+ "ou": "rscwo",
+ "owner": "rscwo",
+ "seealso": "rscwo"
+ },
+ "cn": [
+ "group1"
+ ],
+ "description": [
+ "Group 1"
+ ],
+ "dn": "cn=group1,cn=sudocmdgroups,cn=sudo,dc=dev,dc=example,dc=com",
+ "ipauniqueid": [
+ "d99989a6-f459-11df-9273-00163e72f2d9"
+ ],
+ "member_sudocmd": [
+ "/usr/bin/more",
+ "/usr/bin/less"
+ ],
+ "objectclass": [
+ "ipaobject",
+ "ipasudocmdgrp",
+ "groupOfNames",
+ "top"
+ ]
+ },
+ "summary": null,
+ "value": "group1"
+ }
+}
diff --git a/install/ui/test/data/sudorule_add.json b/install/ui/test/data/sudorule_add.json
new file mode 100644
index 000000000..396b4935c
--- /dev/null
+++ b/install/ui/test/data/sudorule_add.json
@@ -0,0 +1,24 @@
+{
+ "error": null,
+ "id": 0,
+ "result": {
+ "result": {
+ "cn": [
+ "test"
+ ],
+ "description": [
+ "test"
+ ],
+ "dn": "ipauniqueid=94ef3550-f443-11df-a2aa-00163e72f2d9,cn=sudorules,cn=sudo,dc=dev,dc=example,dc=com",
+ "ipauniqueid": [
+ "94ef3550-f443-11df-a2aa-00163e72f2d9"
+ ],
+ "objectclass": [
+ "ipaassociation",
+ "ipasudorule"
+ ]
+ },
+ "summary": "Added sudo rule \"test\"",
+ "value": "test"
+ }
+}
diff --git a/install/ui/test/data/sudorule_del.json b/install/ui/test/data/sudorule_del.json
new file mode 100644
index 000000000..c30979892
--- /dev/null
+++ b/install/ui/test/data/sudorule_del.json
@@ -0,0 +1,9 @@
+{
+ "error": null,
+ "id": 0,
+ "result": {
+ "result": true,
+ "summary": null,
+ "value": "test"
+ }
+}
diff --git a/install/ui/test/data/sudorule_find.json b/install/ui/test/data/sudorule_find.json
new file mode 100644
index 000000000..a843b2a5b
--- /dev/null
+++ b/install/ui/test/data/sudorule_find.json
@@ -0,0 +1,17 @@
+{
+ "error": null,
+ "id": 0,
+ "result": {
+ "count": 1,
+ "result": [
+ {
+ "cn": [
+ "test"
+ ],
+ "dn": "ipauniqueid=4fc57a02-f23311df-b268e50e-a3b3ef71,cn=sudorules,cn=sudo,dc=dev,dc=example,dc=com"
+ }
+ ],
+ "summary": null,
+ "truncated": false
+ }
+}
diff --git a/install/ui/test/data/sudorule_mod.json b/install/ui/test/data/sudorule_mod.json
new file mode 100644
index 000000000..7785f5f5e
--- /dev/null
+++ b/install/ui/test/data/sudorule_mod.json
@@ -0,0 +1,51 @@
+{
+ "error": null,
+ "id": 0,
+ "result": {
+ "result": {
+ "attributelevelrights": {
+ "aci": "rscwo",
+ "cmdcategory": "rscwo",
+ "cn": "rscwo",
+ "description": "rscwo",
+ "externalhost": "rscwo",
+ "externaluser": "rscwo",
+ "hostcategory": "rscwo",
+ "hostmask": "rscwo",
+ "ipaenabledflag": "rscwo",
+ "ipasudoopt": "rscwo",
+ "ipasudorunas": "rscwo",
+ "ipasudorunasextgroup": "rscwo",
+ "ipasudorunasextuser": "rscwo",
+ "ipasudorunasgroup": "rscwo",
+ "ipasudorunasgroupcategory": "rscwo",
+ "ipasudorunasusercategory": "rscwo",
+ "ipauniqueid": "rsc",
+ "memberallowcmd": "rscwo",
+ "memberdenycmd": "rscwo",
+ "memberhost": "rscwo",
+ "memberuser": "rscwo",
+ "nsaccountlock": "rscwo",
+ "usercategory": "rscwo"
+ },
+ "cmdcategory": [
+ "all"
+ ],
+ "cn": [
+ "test"
+ ],
+ "description": [
+ "Test Rule"
+ ],
+ "ipauniqueid": [
+ "94ef3550-f443-11df-a2aa-00163e72f2d9"
+ ],
+ "objectclass": [
+ "ipaassociation",
+ "ipasudorule"
+ ]
+ },
+ "summary": null,
+ "value": "test"
+ }
+}
diff --git a/install/ui/test/data/sudorule_show.json b/install/ui/test/data/sudorule_show.json
new file mode 100644
index 000000000..51f83af70
--- /dev/null
+++ b/install/ui/test/data/sudorule_show.json
@@ -0,0 +1,84 @@
+{
+ "error": null,
+ "id": 0,
+ "result": {
+ "result": {
+ "attributelevelrights": {
+ "aci": "rscwo",
+ "cmdcategory": "rscwo",
+ "cn": "rscwo",
+ "description": "rscwo",
+ "externalhost": "rscwo",
+ "externaluser": "rscwo",
+ "hostcategory": "rscwo",
+ "hostmask": "rscwo",
+ "ipaenabledflag": "rscwo",
+ "ipasudoopt": "rscwo",
+ "ipasudorunas": "rscwo",
+ "ipasudorunasextgroup": "rscwo",
+ "ipasudorunasextuser": "rscwo",
+ "ipasudorunasgroup": "rscwo",
+ "ipasudorunasgroupcategory": "rscwo",
+ "ipasudorunasusercategory": "rscwo",
+ "ipauniqueid": "rsc",
+ "memberallowcmd": "rscwo",
+ "memberdenycmd": "rscwo",
+ "memberhost": "rscwo",
+ "memberuser": "rscwo",
+ "nsaccountlock": "rscwo",
+ "usercategory": "rscwo"
+ },
+ "cn": [
+ "test"
+ ],
+ "dn": "ipauniqueid=4fc57a02-f23311df-b268e50e-a3b3ef71,cn=sudorules,cn=sudo,dc=dev,dc=example,dc=com",
+ "externalhost": [
+ "external.example.com"
+ ],
+ "externaluser": [
+ "external"
+ ],
+ "ipasudorunas_user": [
+ "admin"
+ ],
+ "ipasudorunasgroup_group": [
+ "admins"
+ ],
+ "ipauniqueid": [
+ "4fc57a02-f23311df-b268e50e-a3b3ef71"
+ ],
+ "memberallowcmd_sudocmd": [
+ "/usr/bin/less"
+ ],
+ "memberallowcmd_sudocmdgroup": [
+ "group1"
+ ],
+ "memberdenycmd_sudocmd": [
+ "/usr/bin/more"
+ ],
+ "memberdenycmd_sudocmdgroup": [
+ "group1",
+ "group2"
+ ],
+ "memberhost_host": [
+ "dev.example.com"
+ ],
+ "memberhost_hostgroup": [
+ "production",
+ "staging"
+ ],
+ "memberuser_group": [
+ "editors"
+ ],
+ "memberuser_user": [
+ "test"
+ ],
+ "objectclass": [
+ "ipaassociation",
+ "ipasudorule"
+ ]
+ },
+ "summary": null,
+ "value": "test"
+ }
+}
diff --git a/install/ui/test/data/taskgroup_find.json b/install/ui/test/data/taskgroup_find.json
new file mode 100644
index 000000000..fa5c46250
--- /dev/null
+++ b/install/ui/test/data/taskgroup_find.json
@@ -0,0 +1,554 @@
+{
+ "error": null,
+ "id": 6,
+ "result": {
+ "count": 45,
+ "result": [
+ {
+ "cn": [
+ "addusers"
+ ],
+ "description": [
+ "Add Users"
+ ],
+ "dn": "cn=addusers,cn=taskgroups,cn=accounts,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com",
+ "member_rolegroup": [
+ "useradmin"
+ ]
+ },
+ {
+ "cn": [
+ "change_password"
+ ],
+ "description": [
+ "Change a user password"
+ ],
+ "dn": "cn=change_password,cn=taskgroups,cn=accounts,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com",
+ "member_rolegroup": [
+ "useradmin"
+ ]
+ },
+ {
+ "cn": [
+ "add_user_to_default_group"
+ ],
+ "description": [
+ "Add user to default group"
+ ],
+ "dn": "cn=add_user_to_default_group,cn=taskgroups,cn=accounts,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com",
+ "member_rolegroup": [
+ "useradmin"
+ ]
+ },
+ {
+ "cn": [
+ "removeusers"
+ ],
+ "description": [
+ "Remove Users"
+ ],
+ "dn": "cn=removeusers,cn=taskgroups,cn=accounts,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com",
+ "member_rolegroup": [
+ "useradmin"
+ ]
+ },
+ {
+ "cn": [
+ "modifyusers"
+ ],
+ "description": [
+ "Modify Users"
+ ],
+ "dn": "cn=modifyusers,cn=taskgroups,cn=accounts,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com",
+ "member_rolegroup": [
+ "useradmin"
+ ]
+ },
+ {
+ "cn": [
+ "addgroups"
+ ],
+ "description": [
+ "Add Groups"
+ ],
+ "dn": "cn=addgroups,cn=taskgroups,cn=accounts,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com",
+ "member_rolegroup": [
+ "groupadmin"
+ ]
+ },
+ {
+ "cn": [
+ "removegroups"
+ ],
+ "description": [
+ "Remove Groups"
+ ],
+ "dn": "cn=removegroups,cn=taskgroups,cn=accounts,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com",
+ "member_rolegroup": [
+ "groupadmin"
+ ]
+ },
+ {
+ "cn": [
+ "modifygroups"
+ ],
+ "description": [
+ "Modify Groups"
+ ],
+ "dn": "cn=modifygroups,cn=taskgroups,cn=accounts,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com",
+ "member_rolegroup": [
+ "groupadmin"
+ ]
+ },
+ {
+ "cn": [
+ "modifygroupmembership"
+ ],
+ "description": [
+ "Modify Group membership"
+ ],
+ "dn": "cn=modifygroupmembership,cn=taskgroups,cn=accounts,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com",
+ "member_rolegroup": [
+ "groupadmin"
+ ]
+ },
+ {
+ "cn": [
+ "addhosts"
+ ],
+ "description": [
+ "Add Hosts"
+ ],
+ "dn": "cn=addhosts,cn=taskgroups,cn=accounts,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com",
+ "member_rolegroup": [
+ "hostadmin"
+ ]
+ },
+ {
+ "cn": [
+ "removehosts"
+ ],
+ "description": [
+ "Remove Hosts"
+ ],
+ "dn": "cn=removehosts,cn=taskgroups,cn=accounts,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com",
+ "member_rolegroup": [
+ "hostadmin"
+ ]
+ },
+ {
+ "cn": [
+ "modifyhosts"
+ ],
+ "description": [
+ "Modify Hosts"
+ ],
+ "dn": "cn=modifyhosts,cn=taskgroups,cn=accounts,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com",
+ "member_rolegroup": [
+ "hostadmin"
+ ]
+ },
+ {
+ "cn": [
+ "addhostgroups"
+ ],
+ "description": [
+ "Add Host Groups"
+ ],
+ "dn": "cn=addhostgroups,cn=taskgroups,cn=accounts,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com",
+ "member_rolegroup": [
+ "hostgroupadmin"
+ ]
+ },
+ {
+ "cn": [
+ "removehostgroups"
+ ],
+ "description": [
+ "Remove Host Groups"
+ ],
+ "dn": "cn=removehostgroups,cn=taskgroups,cn=accounts,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com",
+ "member_rolegroup": [
+ "hostgroupadmin"
+ ]
+ },
+ {
+ "cn": [
+ "modifyhostgroups"
+ ],
+ "description": [
+ "Modify Host Groups"
+ ],
+ "dn": "cn=modifyhostgroups,cn=taskgroups,cn=accounts,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com",
+ "member_rolegroup": [
+ "hostgroupadmin"
+ ]
+ },
+ {
+ "cn": [
+ "modifyhostgroupmembership"
+ ],
+ "description": [
+ "Modify Host Group membership"
+ ],
+ "dn": "cn=modifyhostgroupmembership,cn=taskgroups,cn=accounts,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com",
+ "member_rolegroup": [
+ "hostgroupadmin"
+ ]
+ },
+ {
+ "cn": [
+ "addservices"
+ ],
+ "description": [
+ "Add Services"
+ ],
+ "dn": "cn=addservices,cn=taskgroups,cn=accounts,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com",
+ "member_rolegroup": [
+ "serviceadmin"
+ ]
+ },
+ {
+ "cn": [
+ "removeservices"
+ ],
+ "description": [
+ "Remove Services"
+ ],
+ "dn": "cn=removeservices,cn=taskgroups,cn=accounts,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com",
+ "member_rolegroup": [
+ "serviceadmin"
+ ]
+ },
+ {
+ "cn": [
+ "addhrole",
+ "addroles"
+ ],
+ "description": [
+ "Add Roles"
+ ],
+ "dn": "cn=addroles,cn=taskgroups,cn=accounts,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com",
+ "member_rolegroup": [
+ "delegationadmin"
+ ]
+ },
+ {
+ "cn": [
+ "removeroles"
+ ],
+ "description": [
+ "Remove Roles"
+ ],
+ "dn": "cn=removeroles,cn=taskgroups,cn=accounts,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com",
+ "member_rolegroup": [
+ "delegationadmin"
+ ]
+ },
+ {
+ "cn": [
+ "modifyroles"
+ ],
+ "description": [
+ "Modify Roles"
+ ],
+ "dn": "cn=modifyroles,cn=taskgroups,cn=accounts,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com",
+ "member_rolegroup": [
+ "delegationadmin"
+ ]
+ },
+ {
+ "cn": [
+ "modifyrolegroupmembership"
+ ],
+ "description": [
+ "Modify Role Group membership"
+ ],
+ "dn": "cn=modifyrolegroupmembership,cn=taskgroups,cn=accounts,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com",
+ "member_rolegroup": [
+ "delegationadmin"
+ ]
+ },
+ {
+ "cn": [
+ "modifytaskgroupmembership"
+ ],
+ "description": [
+ "Modify Task Group membership"
+ ],
+ "dn": "cn=modifytaskgroupmembership,cn=taskgroups,cn=accounts,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com",
+ "member_rolegroup": [
+ "delegationadmin"
+ ]
+ },
+ {
+ "cn": [
+ "addautomount"
+ ],
+ "description": [
+ "Add Automount maps/keys"
+ ],
+ "dn": "cn=addautomount,cn=taskgroups,cn=accounts,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com",
+ "member_rolegroup": [
+ "automountadmin"
+ ]
+ },
+ {
+ "cn": [
+ "removeautomount"
+ ],
+ "description": [
+ "Remove Automount maps/keys"
+ ],
+ "dn": "cn=removeautomount,cn=taskgroups,cn=accounts,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com",
+ "member_rolegroup": [
+ "automountadmin"
+ ]
+ },
+ {
+ "cn": [
+ "addnetgroups"
+ ],
+ "description": [
+ "Add netgroups"
+ ],
+ "dn": "cn=addnetgroups,cn=taskgroups,cn=accounts,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com",
+ "member_rolegroup": [
+ "netgroupadmin"
+ ]
+ },
+ {
+ "cn": [
+ "removenetgroups"
+ ],
+ "description": [
+ "Remove netgroups"
+ ],
+ "dn": "cn=removenetgroups,cn=taskgroups,cn=accounts,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com",
+ "member_rolegroup": [
+ "netgroupadmin"
+ ]
+ },
+ {
+ "cn": [
+ "modifynetgroups"
+ ],
+ "description": [
+ "Modify netgroups"
+ ],
+ "dn": "cn=modifynetgroups,cn=taskgroups,cn=accounts,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com",
+ "member_rolegroup": [
+ "netgroupadmin"
+ ]
+ },
+ {
+ "cn": [
+ "modifynetgroupmembership"
+ ],
+ "description": [
+ "Modify netgroup membership"
+ ],
+ "dn": "cn=modifynetgroupmembership,cn=taskgroups,cn=accounts,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com",
+ "member_rolegroup": [
+ "netgroupadmin"
+ ]
+ },
+ {
+ "cn": [
+ "manage_host_keytab"
+ ],
+ "description": [
+ "Manage host keytab"
+ ],
+ "dn": "cn=manage_host_keytab,cn=taskgroups,cn=accounts,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com",
+ "member_rolegroup": [
+ "hostadmin",
+ "enrollhost"
+ ]
+ },
+ {
+ "cn": [
+ "manage_host_keytab",
+ "update_dns",
+ "update_sn"
+ ],
+ "description": [
+ "Updates DNS"
+ ],
+ "dn": "cn=update_dns,cn=taskgroups,cn=accounts,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com",
+ "member_rolegroup": [
+ "dnsadmin",
+ "dnsserver"
+ ]
+ },
+ {
+ "cn": [
+ "modifyservices"
+ ],
+ "description": [
+ "Modify Services"
+ ],
+ "dn": "cn=modifyservices,cn=taskgroups,cn=accounts,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com",
+ "member_rolegroup": [
+ "serviceadmin"
+ ]
+ },
+ {
+ "cn": [
+ "enroll_host"
+ ],
+ "description": [
+ "Enroll a host"
+ ],
+ "dn": "cn=enroll_host,cn=taskgroups,cn=accounts,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com",
+ "member_rolegroup": [
+ "hostadmin",
+ "enrollhost"
+ ]
+ },
+ {
+ "cn": [
+ "retrieve_certs"
+ ],
+ "description": [
+ "Retrieve SSL Certificates"
+ ],
+ "dn": "cn=retrieve_certs,cn=taskgroups,cn=accounts,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com",
+ "member_rolegroup": [
+ "certadmin"
+ ]
+ },
+ {
+ "cn": [
+ "request_certs"
+ ],
+ "description": [
+ "Request a SSL Certificate"
+ ],
+ "dn": "cn=request_certs,cn=taskgroups,cn=accounts,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com",
+ "member_rolegroup": [
+ "certadmin"
+ ]
+ },
+ {
+ "cn": [
+ "request_cert_different_host"
+ ],
+ "description": [
+ "Request a SSL Certificate from a different host"
+ ],
+ "dn": "cn=request_cert_different_host,cn=taskgroups,cn=accounts,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com",
+ "member_rolegroup": [
+ "certadmin"
+ ]
+ },
+ {
+ "cn": [
+ "certificate_status"
+ ],
+ "description": [
+ "Status of cert request"
+ ],
+ "dn": "cn=certificate_status,cn=taskgroups,cn=accounts,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com",
+ "member_rolegroup": [
+ "certadmin"
+ ]
+ },
+ {
+ "cn": [
+ "revoke_certificate"
+ ],
+ "description": [
+ "Revoke Certificate"
+ ],
+ "dn": "cn=revoke_certificate,cn=taskgroups,cn=accounts,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com",
+ "member_rolegroup": [
+ "certadmin"
+ ]
+ },
+ {
+ "cn": [
+ "certificate_remove_hold"
+ ],
+ "description": [
+ "Certificate Remove Hold"
+ ],
+ "dn": "cn=certificate_remove_hold,cn=taskgroups,cn=accounts,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com",
+ "member_rolegroup": [
+ "certadmin"
+ ]
+ },
+ {
+ "cn": [
+ "managereplica"
+ ],
+ "description": [
+ "Manage Replication Agreements"
+ ],
+ "dn": "cn=managereplica,cn=taskgroups,cn=accounts,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com",
+ "member_rolegroup": [
+ "replicaadmin"
+ ]
+ },
+ {
+ "cn": [
+ "deletereplica"
+ ],
+ "description": [
+ "Delete Replication Agreements"
+ ],
+ "dn": "cn=deletereplica,cn=taskgroups,cn=accounts,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com",
+ "member_rolegroup": [
+ "replicaadmin"
+ ]
+ },
+ {
+ "cn": [
+ "addentitlements"
+ ],
+ "description": [
+ "Add Entitlements"
+ ],
+ "dn": "cn=addentitlements,cn=taskgroups,cn=accounts,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com",
+ "member_rolegroup": [
+ "entitlementadmin"
+ ]
+ },
+ {
+ "cn": [
+ "removeentitlements"
+ ],
+ "description": [
+ "Remove Entitlements"
+ ],
+ "dn": "cn=removeentitlements,cn=taskgroups,cn=accounts,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com",
+ "member_rolegroup": [
+ "entitlementadmin"
+ ]
+ },
+ {
+ "cn": [
+ "modifyentitlements"
+ ],
+ "description": [
+ "Modify Entitlements"
+ ],
+ "dn": "cn=modifyentitlements,cn=taskgroups,cn=accounts,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com",
+ "member_rolegroup": [
+ "entitlementadmin"
+ ]
+ },
+ {
+ "cn": [
+ "testtaskgroup"
+ ],
+ "description": [
+ "test1"
+ ],
+ "dn": "cn=testtaskgroup,cn=taskgroups,cn=accounts,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com"
+ }
+ ],
+ "summary": "45 grupos de tarea coincidentes",
+ "truncated": false
+ }
+} \ No newline at end of file
diff --git a/install/ui/test/data/user_add.json b/install/ui/test/data/user_add.json
new file mode 100644
index 000000000..e6a98b5c2
--- /dev/null
+++ b/install/ui/test/data/user_add.json
@@ -0,0 +1,49 @@
+{
+ "error": null,
+ "id": 10,
+ "result": {
+ "result": {
+ "dn": "uid=snuffy,cn=users,cn=accounts,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com",
+ "gecos": [
+ "snuffy"
+ ],
+ "givenname": [
+ "Aloysius"
+ ],
+ "homedirectory": [
+ "/home/snuffy"
+ ],
+ "ipauniqueid": [
+ "a4ce7d19-b439-11df-a9ae-525400674dcd"
+ ],
+ "krbprincipalname": [
+ "snuffy@AYOUNG.BOSTON.DEVEL.REDHAT.COM"
+ ],
+ "loginshell": [
+ "/bin/sh"
+ ],
+ "objectclass": [
+ "top",
+ "person",
+ "organizationalperson",
+ "inetorgperson",
+ "inetuser",
+ "posixaccount",
+ "krbprincipalaux",
+ "krbticketpolicyaux",
+ "ipaobject"
+ ],
+ "sn": [
+ "Snuffleupagus"
+ ],
+ "uid": [
+ "snuffy"
+ ],
+ "uidnumber": [
+ "1869788865"
+ ]
+ },
+ "summary": "Added user \"snuffy\"",
+ "value": "snuffy"
+ }
+}
diff --git a/install/ui/test/data/user_disable.json b/install/ui/test/data/user_disable.json
new file mode 100644
index 000000000..75a71fdf6
--- /dev/null
+++ b/install/ui/test/data/user_disable.json
@@ -0,0 +1,9 @@
+{
+ "error": null,
+ "id": 6,
+ "result": {
+ "result": true,
+ "summary": "Disabled user account \"rfrank\"",
+ "value": "rfrank"
+ }
+} \ No newline at end of file
diff --git a/install/ui/test/data/user_enable.json b/install/ui/test/data/user_enable.json
new file mode 100644
index 000000000..c596c81da
--- /dev/null
+++ b/install/ui/test/data/user_enable.json
@@ -0,0 +1,9 @@
+{
+ "error": null,
+ "id": 6,
+ "result": {
+ "result": true,
+ "summary": "Enabled user account \"rfrank\"",
+ "value": "rfrank"
+ }
+} \ No newline at end of file
diff --git a/install/ui/test/data/user_find.json b/install/ui/test/data/user_find.json
new file mode 100644
index 000000000..8a4094712
--- /dev/null
+++ b/install/ui/test/data/user_find.json
@@ -0,0 +1,243 @@
+
+{
+ "error": null,
+ "id": 0,
+ "result": {
+ "count": 4,
+ "result": [
+ {
+ "cn": [
+ "Administrator"
+ ],
+ "dn": "uid=admin,cn=users,cn=accounts,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com",
+ "gecos": [
+ "Administrator"
+ ],
+ "gidnumber": [
+ "444194797"
+ ],
+ "homedirectory": [
+ "/home/admin"
+ ],
+ "krblastpwdchange": [
+ "20100614200400Z"
+ ],
+ "krbpasswordexpiration": [
+ "20100912200400Z"
+ ],
+ "krbprincipalname": [
+ "admin@AYOUNG.BOSTON.DEVEL.REDHAT.COM"
+ ],
+ "loginshell": [
+ "/bin/bash"
+ ],
+ "memberof_group": [
+ "admins"
+ ],
+ "memberof_rolegroup": [
+ "replicaadmin"
+ ],
+ "memberof_taskgroup": [
+ "managereplica",
+ "deletereplica"
+ ],
+ "objectclass": [
+ "top",
+ "person",
+ "posixaccount",
+ "krbprincipalaux",
+ "krbticketpolicyaux",
+ "inetuser"
+ ],
+ "sn": [
+ "Administrator"
+ ],
+ "uid": [
+ "admin"
+ ],
+ "uidnumber": [
+ "444194797"
+ ]
+ },
+ {
+ "cn": [
+ "Kermit Frog"
+ ],
+ "dn": "uid=kfrog,cn=users,cn=accounts,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com",
+ "gecos": [
+ "Some of my best friends are Geckos"
+ ],
+ "gidnumber": [
+ "444194798"
+ ],
+ "givenname": [
+ "Kermit"
+ ],
+ "homedirectory": [
+ "/home/kfrog"
+ ],
+ "ipauniqueid": [
+ "89dc1f68-77f3-11df-afb7-525400ed2d11"
+ ],
+ "krbprincipalname": [
+ "kfrog"
+ ],
+ "loginshell": [
+ "/bin/sh"
+ ],
+ "mail": [
+ "kfrog@pbs.org"
+ ],
+ "memberof_group": [
+ "ipausers"
+ ],
+ "objectclass": [
+ "top",
+ "person",
+ "organizationalperson",
+ "inetorgperson",
+ "inetuser",
+ "posixaccount",
+ "krbprincipalaux",
+ "krbticketpolicyaux",
+ "ipaobject"
+ ],
+ "sn": [
+ "Frog"
+ ],
+ "street": [
+ "55 Seasame Street"
+ ],
+ "title": [
+ "Reporter"
+ ],
+ "uid": [
+ "kfrog"
+ ],
+ "uidnumber": [
+ "444194798"
+ ]
+ },
+ {
+ "cn": [
+ "Oscar Grouch"
+ ],
+ "dn": "uid=scram,cn=users,cn=accounts,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com",
+ "gecos": [
+ "scram"
+ ],
+ "gidnumber": [
+ "444194798"
+ ],
+ "givenname": [
+ "Oscar"
+ ],
+ "homedirectory": [
+ "/home/trash"
+ ],
+ "ipauniqueid": [
+ "adba909c-77f3-11df-ae3f-525400ed2d11"
+ ],
+ "krbprincipalname": [
+ "scram"
+ ],
+ "loginshell": [
+ "/bin/sh"
+ ],
+ "mail": [
+ "oscar@pbs.org"
+ ],
+ "memberof_group": [
+ "ipausers"
+ ],
+ "objectclass": [
+ "top",
+ "person",
+ "organizationalperson",
+ "inetorgperson",
+ "inetuser",
+ "posixaccount",
+ "krbprincipalaux",
+ "krbticketpolicyaux",
+ "ipaobject"
+ ],
+ "sn": [
+ "Grouch"
+ ],
+ "street": [
+ "123a Sesame Street"
+ ],
+ "title": [
+ "Sys Admin"
+ ],
+ "uid": [
+ "scram"
+ ],
+ "uidnumber": [
+ "444194799"
+ ]
+ },
+ {
+ "cn": [
+ "Sid Monster"
+ ],
+ "dn": "uid=cookie,cn=users,cn=accounts,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com",
+ "gecos": [
+ "cookie"
+ ],
+ "gidnumber": [
+ "444194798"
+ ],
+ "givenname": [
+ "Sid"
+ ],
+ "homedirectory": [
+ "cookie"
+ ],
+ "ipauniqueid": [
+ "c7d10507-77f3-11df-ac53-525400ed2d11"
+ ],
+ "krbprincipalname": [
+ "cookie"
+ ],
+ "loginshell": [
+ "/bin/sh"
+ ],
+ "mail": [
+ "cookie@pbs.org"
+ ],
+ "memberof_group": [
+ "ipausers"
+ ],
+ "objectclass": [
+ "top",
+ "person",
+ "organizationalperson",
+ "inetorgperson",
+ "inetuser",
+ "posixaccount",
+ "krbprincipalaux",
+ "krbticketpolicyaux",
+ "ipaobject"
+ ],
+ "sn": [
+ "Monster"
+ ],
+ "street": [
+ "123 Sesame Street"
+ ],
+ "title": [
+ "Chef"
+ ],
+ "uid": [
+ "cookie"
+ ],
+ "uidnumber": [
+ "444194800"
+ ]
+ }
+ ],
+ "summary": "4 users matched",
+ "truncated": false
+ }
+}
diff --git a/install/ui/test/data/user_memberof_group.json b/install/ui/test/data/user_memberof_group.json
new file mode 100644
index 000000000..e8f7a8fa5
--- /dev/null
+++ b/install/ui/test/data/user_memberof_group.json
@@ -0,0 +1,64 @@
+{
+ "error": null,
+ "id": 0,
+ "result": {
+ "count": 2,
+ "results": [
+ {
+ "error": null,
+ "result": {
+ "cn": [
+ "ipausers"
+ ],
+ "description": [
+ "Default group for all users"
+ ],
+ "dn": "cn=ipausers,cn=groups,cn=accounts,dc=dev,dc=example,dc=com",
+ "gidnumber": [
+ "1662072956"
+ ],
+ "member_user": [
+ "test",
+ "admin"
+ ],
+ "objectclass": [
+ "top",
+ "groupofnames",
+ "nestedgroup",
+ "ipausergroup",
+ "posixgroup"
+ ]
+ },
+ "summary": null,
+ "value": "ipausers"
+ },
+ {
+ "error": null,
+ "result": {
+ "cn": [
+ "editors"
+ ],
+ "description": [
+ "Limited admins who can edit other users"
+ ],
+ "dn": "cn=editors,cn=groups,cn=accounts,dc=dev,dc=example,dc=com",
+ "gidnumber": [
+ "1662072957"
+ ],
+ "member_user": [
+ "test"
+ ],
+ "objectclass": [
+ "top",
+ "groupofnames",
+ "posixgroup",
+ "ipausergroup",
+ "nestedGroup"
+ ]
+ },
+ "summary": null,
+ "value": "editors"
+ }
+ ]
+ }
+}
diff --git a/install/ui/test/data/user_mod.json b/install/ui/test/data/user_mod.json
new file mode 100644
index 000000000..c77012c14
--- /dev/null
+++ b/install/ui/test/data/user_mod.json
@@ -0,0 +1,162 @@
+{
+ "error": null,
+ "id": 6,
+ "result": {
+ "result": {
+ "attributelevelrights": {
+ "aci": "rscwo",
+ "audio": "rscwo",
+ "businesscategory": "rscwo",
+ "carlicense": "rscwo",
+ "cn": "rscwo",
+ "departmentnumber": "rscwo",
+ "description": "rscwo",
+ "destinationindicator": "rscwo",
+ "dialupaccess": "rscwo",
+ "displayname": "rscwo",
+ "employeenumber": "rscwo",
+ "employeetype": "rscwo",
+ "facsimiletelephonenumber": "rscwo",
+ "gecos": "rscwo",
+ "gidnumber": "rscwo",
+ "givenname": "rscwo",
+ "homedirectory": "rscwo",
+ "homephone": "rscwo",
+ "homepostaladdress": "rscwo",
+ "inetuserhttpurl": "rscwo",
+ "inetuserstatus": "rscwo",
+ "initials": "rscwo",
+ "internationalisdnnumber": "rscwo",
+ "ipauniqueid": "rsc",
+ "jpegphoto": "rscwo",
+ "krbcanonicalname": "rscwo",
+ "krbextradata": "rscwo",
+ "krblastfailedauth": "rscwo",
+ "krblastpwdchange": "rscwo",
+ "krblastsuccessfulauth": "rscwo",
+ "krbloginfailedcount": "rscwo",
+ "krbmaxrenewableage": "rscwo",
+ "krbmaxticketlife": "rscwo",
+ "krbpasswordexpiration": "rscwo",
+ "krbprincipalaliases": "rscwo",
+ "krbprincipalexpiration": "rscwo",
+ "krbprincipalkey": "wo",
+ "krbprincipalname": "rscwo",
+ "krbprincipaltype": "rscwo",
+ "krbpwdhistory": "rscwo",
+ "krbpwdpolicyreference": "rscwo",
+ "krbticketflags": "rscwo",
+ "krbticketpolicyreference": "rscwo",
+ "krbupenabled": "rscwo",
+ "l": "rscwo",
+ "labeleduri": "rscwo",
+ "loginshell": "rscwo",
+ "mail": "rscwo",
+ "manager": "rscwo",
+ "memberof": "rsc",
+ "mepmanagedentry": "rscwo",
+ "mobile": "rscwo",
+ "nsaccountlock": "rscwo",
+ "o": "rscwo",
+ "objectclass": "rscwo",
+ "ou": "rscwo",
+ "pager": "rscwo",
+ "photo": "rscwo",
+ "physicaldeliveryofficename": "rscwo",
+ "postaladdress": "rscwo",
+ "postalcode": "rscwo",
+ "postofficebox": "rscwo",
+ "preferreddeliverymethod": "rscwo",
+ "preferredlanguage": "rscwo",
+ "registeredaddress": "rscwo",
+ "roomnumber": "rscwo",
+ "secretary": "rscwo",
+ "seealso": "rscwo",
+ "sn": "rscwo",
+ "st": "rscwo",
+ "street": "rscwo",
+ "telephonenumber": "rscwo",
+ "teletexterminalidentifier": "rscwo",
+ "telexnumber": "rscwo",
+ "title": "rscwo",
+ "uid": "rscwo",
+ "uidnumber": "rscwo",
+ "usercertificate": "rscwo",
+ "userpassword": "wo",
+ "userpkcs12": "rscwo",
+ "usersmimecertificate": "rscwo",
+ "x121address": "rscwo",
+ "x500uniqueidentifier": "rscwo"
+ },
+ "cn": [
+ "Kermit The Frog"
+ ],
+ "gecos": [
+ "kfrog"
+ ],
+ "gidnumber": [
+ "953553261"
+ ],
+ "givenname": [
+ "Kermit"
+ ],
+ "homedirectory": [
+ "/home/kfrog"
+ ],
+ "ipauniqueid": [
+ "a2854798-e7d811df-b69ad8ca-cb44a24c"
+ ],
+ "krblastpwdchange": [
+ "20101105172205Z"
+ ],
+ "krbpasswordexpiration": [
+ "20101105172205Z"
+ ],
+ "krbprincipalname": [
+ "kfrog@AYOUNG.BOSTON.DEVEL.REDHAT.COM"
+ ],
+ "krbpwdpolicyreference": [
+ "cn=global_policy,cn=AYOUNG.BOSTON.DEVEL.REDHAT.COM,cn=kerberos,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com"
+ ],
+ "loginshell": [
+ "/bin/sh"
+ ],
+ "mail": [
+ "kermit@muppets.com"
+ ],
+ "memberof_group": [
+ "ipausers",
+ "muppets"
+ ],
+ "mepmanagedentry": [
+ "cn=kfrog,cn=groups,cn=accounts,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com"
+ ],
+ "nsaccountlock": [
+ "False"
+ ],
+ "objectclass": [
+ "top",
+ "person",
+ "organizationalperson",
+ "inetorgperson",
+ "inetuser",
+ "posixaccount",
+ "krbprincipalaux",
+ "krbticketpolicyaux",
+ "ipaobject",
+ "mepOriginEntry"
+ ],
+ "sn": [
+ "Frog"
+ ],
+ "uid": [
+ "kfrog"
+ ],
+ "uidnumber": [
+ "953553261"
+ ]
+ },
+ "summary": "Modified user \"kfrog\"",
+ "value": "kfrog"
+ }
+}
diff --git a/install/ui/test/data/user_show.json b/install/ui/test/data/user_show.json
new file mode 100644
index 000000000..33893d77b
--- /dev/null
+++ b/install/ui/test/data/user_show.json
@@ -0,0 +1,163 @@
+{
+ "error": null,
+ "id": 6,
+ "result": {
+ "result": {
+ "attributelevelrights": {
+ "aci": "rscwo",
+ "audio": "rscwo",
+ "businesscategory": "rscwo",
+ "carlicense": "rscwo",
+ "cn": "rscwo",
+ "departmentnumber": "rscwo",
+ "description": "rscwo",
+ "destinationindicator": "rscwo",
+ "dialupaccess": "rscwo",
+ "displayname": "rscwo",
+ "employeenumber": "rscwo",
+ "employeetype": "rscwo",
+ "facsimiletelephonenumber": "rscwo",
+ "gecos": "rscwo",
+ "gidnumber": "rscwo",
+ "givenname": "rscwo",
+ "homedirectory": "rscwo",
+ "homephone": "rscwo",
+ "homepostaladdress": "rscwo",
+ "inetuserhttpurl": "rscwo",
+ "inetuserstatus": "rscwo",
+ "initials": "rscwo",
+ "internationalisdnnumber": "rscwo",
+ "ipauniqueid": "rsc",
+ "jpegphoto": "rscwo",
+ "krbcanonicalname": "rscwo",
+ "krbextradata": "rscwo",
+ "krblastfailedauth": "rscwo",
+ "krblastpwdchange": "rscwo",
+ "krblastsuccessfulauth": "rscwo",
+ "krbloginfailedcount": "rscwo",
+ "krbmaxrenewableage": "rscwo",
+ "krbmaxticketlife": "rscwo",
+ "krbpasswordexpiration": "rscwo",
+ "krbprincipalaliases": "rscwo",
+ "krbprincipalexpiration": "rscwo",
+ "krbprincipalkey": "wo",
+ "krbprincipalname": "rscwo",
+ "krbprincipaltype": "rscwo",
+ "krbpwdhistory": "rscwo",
+ "krbpwdpolicyreference": "rscwo",
+ "krbticketflags": "rscwo",
+ "krbticketpolicyreference": "rscwo",
+ "krbupenabled": "rscwo",
+ "l": "rscwo",
+ "labeleduri": "rscwo",
+ "loginshell": "rscwo",
+ "mail": "rscwo",
+ "manager": "rscwo",
+ "memberof": "rsc",
+ "mepmanagedentry": "rscwo",
+ "mobile": "rscwo",
+ "nsaccountlock": "rscwo",
+ "o": "rscwo",
+ "objectclass": "rscwo",
+ "ou": "rscwo",
+ "pager": "rscwo",
+ "photo": "rscwo",
+ "physicaldeliveryofficename": "rscwo",
+ "postaladdress": "rscwo",
+ "postalcode": "rscwo",
+ "postofficebox": "rscwo",
+ "preferreddeliverymethod": "rscwo",
+ "preferredlanguage": "rscwo",
+ "registeredaddress": "rscwo",
+ "roomnumber": "rscwo",
+ "secretary": "rscwo",
+ "seealso": "rscwo",
+ "sn": "rscwo",
+ "st": "rscwo",
+ "street": "rscwo",
+ "telephonenumber": "rscwo",
+ "teletexterminalidentifier": "rscwo",
+ "telexnumber": "rscwo",
+ "title": "rscwo",
+ "uid": "rscwo",
+ "uidnumber": "rscwo",
+ "usercertificate": "rscwo",
+ "userpassword": "wo",
+ "userpkcs12": "rscwo",
+ "usersmimecertificate": "rscwo",
+ "x121address": "rscwo",
+ "x500uniqueidentifier": "rscwo"
+ },
+ "cn": [
+ "Kermit The Frog"
+ ],
+ "dn": "uid=kfrog,cn=users,cn=accounts,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com",
+ "gecos": [
+ "kfrog"
+ ],
+ "gidnumber": [
+ "953553261"
+ ],
+ "givenname": [
+ "Kermit"
+ ],
+ "homedirectory": [
+ "/home/kfrog"
+ ],
+ "ipauniqueid": [
+ "a2854798-e7d811df-b69ad8ca-cb44a24c"
+ ],
+ "krblastpwdchange": [
+ "20101105172205Z"
+ ],
+ "krbpasswordexpiration": [
+ "20101105172205Z"
+ ],
+ "krbprincipalname": [
+ "kfrog@AYOUNG.BOSTON.DEVEL.REDHAT.COM"
+ ],
+ "krbpwdpolicyreference": [
+ "cn=global_policy,cn=AYOUNG.BOSTON.DEVEL.REDHAT.COM,cn=kerberos,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com"
+ ],
+ "loginshell": [
+ "/bin/sh"
+ ],
+ "mail": [
+ "kermit@muppets.com"
+ ],
+ "memberof_group": [
+ "ipausers",
+ "muppets"
+ ],
+ "mepmanagedentry": [
+ "cn=kfrog,cn=groups,cn=accounts,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com"
+ ],
+ "nsaccountlock": [
+ "False"
+ ],
+ "objectclass": [
+ "top",
+ "person",
+ "organizationalperson",
+ "inetorgperson",
+ "inetuser",
+ "posixaccount",
+ "krbprincipalaux",
+ "krbticketpolicyaux",
+ "ipaobject",
+ "mepOriginEntry"
+ ],
+ "sn": [
+ "Frog"
+ ],
+ "uid": [
+ "kfrog"
+ ],
+ "uidnumber": [
+ "953553261"
+ ]
+ },
+ "summary": null,
+ "value": "kfrog"
+ }
+}
diff --git a/install/ui/test/data/whoami.json b/install/ui/test/data/whoami.json
new file mode 100644
index 000000000..a922d3720
--- /dev/null
+++ b/install/ui/test/data/whoami.json
@@ -0,0 +1,7 @@
+{
+ "error": null,
+ "id": 0,
+ "result": {
+ "summary": "admin@AYOUNG.BOSTON.DEVEL.REDHAT.COM"
+ }
+}
diff --git a/install/ui/test/details_tests.html b/install/ui/test/details_tests.html
new file mode 100644
index 000000000..3cb20c562
--- /dev/null
+++ b/install/ui/test/details_tests.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<html>
+<head>
+ <title>Details Test Suite</title>
+ <link rel="stylesheet" href="qunit.css" type="text/css" media="screen">
+ <script type="text/javascript" src="qunit.js"></script>
+ <script type="text/javascript" src="../jquery.js"></script>
+ <script type="text/javascript" src="../jquery.ba-bbq.js"></script>
+ <script type="text/javascript" src="../jquery-ui.js"></script>
+ <script type="text/javascript" src="../ipa.js"></script>
+ <script type="text/javascript" src="../widget.js"></script>
+ <script type="text/javascript" src="../details.js"></script>
+ <script type="text/javascript" src="../entity.js"></script>
+
+ <script type="text/javascript" src="details_tests.js"></script>
+</head>
+<body>
+ <h1 id="qunit-header">Details Test Suite</h1>
+ <h2 id="qunit-banner"></h2>
+ <div id="qunit-testrunner-toolbar"></div>
+ <h2 id="qunit-userAgent"></h2>
+ <ol id="qunit-tests"></ol>
+ <div id="qunit-fixture"></div>
+</body>
+</html>
diff --git a/install/ui/test/details_tests.js b/install/ui/test/details_tests.js
new file mode 100644
index 000000000..d832bd26d
--- /dev/null
+++ b/install/ui/test/details_tests.js
@@ -0,0 +1,327 @@
+/* Authors:
+ * Adam Young <ayoung@redhat.com>
+ *
+ * Copyright (C) 2010 Red Hat
+ * see file 'COPYING' for use and warranty information
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+
+module('details');
+
+test("Testing IPA.details_section.create().", function() {
+
+ IPA.ajax_options.async = false;
+
+ IPA.init(
+ "data",
+ true,
+ function(data, text_status, xhr) {
+ ok(true, "ipa_init() succeeded.");
+ },
+ function(xhr, text_status, error_thrown) {
+ ok(false, "ipa_init() failed: "+error_thrown);
+ }
+ );
+
+ var section = IPA.stanza({name:'IDIDID', label:'NAMENAMENAME'}).
+ input({name:'cn'}).
+ input({name:'description'}).
+ input({name:'number'});
+
+
+ var fields = section.fields;
+ var container = $("<div/>");
+ section.create(container);
+
+ var dl = $('dl', container);
+
+ same(
+ dl.length, 1,
+ 'Checking dl tag'
+ );
+
+ same(
+ dl.attr('id'), section.name,
+ 'Checking section name'
+ );
+
+ var dts = $('dt', dl);
+ same(
+ dts.length, fields.length, // each field generates dt & dd
+ 'Checking number of children'
+ );
+
+ for (var i=0; i<fields.length; i++) {
+ var field = fields[i];
+
+ var dt = dts.get(i);
+ same(
+ dt.innerHTML, field.label+':',
+ 'Checking field '+field.name+'\'s label'
+ );
+
+ var span = $('span[name='+field.name+']', dl);
+
+ ok(
+ span.length,
+ 'Checking span tag for field '+field.name
+ );
+
+ var dd = $('dd', span);
+
+ ok(
+ dd.length == 0,
+ 'Checking dd tag for field '+field.name
+ );
+ }
+});
+
+
+
+test("Testing details lifecycle: create, setup, load.", function(){
+
+ IPA.ajax_options.async = false;
+
+ IPA.init(
+ "data",
+ true,
+ function(data, text_status, xhr) {
+ ok(true, "ipa_init() succeeded.");
+ },
+ function(xhr, text_status, error_thrown) {
+ ok(false, "ipa_init() failed: "+error_thrown);
+ }
+ );
+
+ var result = {};
+
+ IPA.cmd(
+ 'user_show',
+ ['kfrog'],
+ {},
+ function(data, text_status, xhr) {
+ result = data.result.result;
+ ok(true, "IPA.cmd() succeeded.");
+ },
+ function(xhr, text_status, error_thrown) {
+ ok(false, "IPA.cmd() failed: "+error_thrown);
+ }
+ );
+
+ var setup_status_called = false;
+ var save_password_called= false;
+ var load_manager_called = false;
+ var load_success_called = false;
+ var load_failure_called = false;
+ var update_success_called = false;
+ var update_failure_called = false;
+
+ function setup_status(){
+ setup_status_called = true;
+ }
+
+ function save_password(){
+ save_password_called = true;
+ return [];
+ }
+
+ function load_manager(){
+ load_manager_called = true;
+ }
+
+ function setup_st(){
+ }
+
+ var container = $("<div/>");
+ var obj_name = 'user';
+ IPA.entity_set_details_definition(obj_name, [
+ IPA.stanza({name:'identity', label:'Identity Details'}).
+ input({name:'title'}).
+ input({name:'givenname'}).
+ input({name:'sn'}).
+ input({name:'cn'}).
+ input({name:'displayname'}).
+ input({name:'initials'}),
+ IPA.stanza({name:'account', label:'Account Details'}).
+ input({name:'status', setup: setup_status}).
+ input({name:'uid'}).
+ input({name:'userpassword', save: save_password}).
+ input({name:'uidnumber'}).
+ input({name:'gidnumber'}).
+ input({name:'homedirectory'}),
+ IPA.stanza({name:'contact', label:'Contact Details'}).
+ input({name:'mail'}).
+ input({name:'telephonenumber'}),
+ IPA.stanza({name:'address'}).
+ input({name:'street'}).
+ input({name:'location'}).
+ input({name:'state', setup: setup_st}).
+ input({name:'postalcode'}),
+ IPA.stanza({name:'employee', label:'Employee Information'}).
+ input({name:'ou'}).
+ input({name:'manager', load: load_manager}),
+ IPA.stanza({name:'misc', label:'Misc. Information'}).
+ input({name:'carlicense'})
+ ]);
+
+ var entity = IPA.fetch_entity(obj_name);
+ var facet = entity.get_facet('details');
+ facet.create(container);
+ facet.setup(container);
+ facet.load(result);
+
+ var contact = container.find('dl#contact.entryattrs');
+
+ ok(
+ contact,
+ 'dl tag for contact is created'
+ );
+
+ var identity = container.find('dl#identity.entryattrs');
+
+ ok(
+ identity,
+ 'dl tag for identity is created'
+ );
+
+ var dts = identity.find('dt');
+
+ same(
+ dts.length, 6,
+ 'Checking dt tags for identity'
+ );
+
+ container.attr('id','user');
+
+ ok (
+ setup_status_called,
+ 'Setup status called'
+ );
+
+ ok (load_manager_called, 'load manager called');
+
+ facet.update(
+ function(){update_success_called = true},
+ function(){update_failure_called = true}
+ );
+
+ ok (update_success_called,'update success called');
+ ok (!update_failure_called,'update failure not called');
+ ok (save_password_called, 'save password called');
+
+});
+
+
+test("Testing create_input().", function() {
+
+ var field = IPA.details_field({
+ 'name': "name"
+ });
+
+ var name = "name";
+ var value="value";
+ var rights = 'rscwo'
+ var input = field.create_input(value, null, rights);
+ ok(input,"input not null");
+
+ var text = input.find('input');
+ ok(text);
+
+ same(text[0].name,name );
+ same(text[0].value,value );
+ same(text[0].type,"text" );
+});
+
+test("Testing create_input() read only .", function() {
+
+ var field = IPA.details_field({
+ 'name': "name"
+ });
+
+ var name = "name";
+ var value="value";
+ var rights = 'rsc'
+ var input = field.create_input(value, null, rights);
+ ok(input,"input not null");
+
+ var text = input.find('input');
+ ok(text);
+
+ same(text[0].name,name );
+ same(text[0].value,value );
+ same(text[0].type,"text" );
+ ok(text[0].disabled);
+
+});
+
+
+
+
+test("Testing IPA.details_section_setup again()",function(){
+
+ var section = IPA.stanza({name: 'IDIDID', label: 'NAMENAMENAME'}).
+ input({name:'cn', label:'Entity Name'}).
+ input({name:'description', label:'Description'}).
+ input({name:'number', label:'Entity ID'});
+ var fields = section.fields;
+ var container = $("<div title='entity'/>");
+ var details = $("<div/>");
+ container.append(details);
+
+ var result = {};
+
+ section.create(container);
+ section.setup(container);
+ section.load(result);
+
+ //var h2= container.find('h2');
+ //ok(h2);
+ //ok(h2[0].innerHTML.indexOf(section.label) > 1,"find name in html");
+
+ var dl = $('dl', container);
+ ok(
+ dl.length,
+ 'dl is created'
+ );
+
+ var dt = $('dt', dl);
+ same(
+ dt.length, 3,
+ '3 dt'
+ );
+
+ var span = dt.next();
+ same(
+ span.length, 3,
+ '3 span'
+ );
+
+ same(
+ dl[0].id, section.name,
+ 'checking section name'
+ );
+
+ same(
+ dt[0].innerHTML, fields[0].label+":",
+ 'inner HTML matches label'
+ );
+
+ var dd = $('dd', span[0]);
+ same(
+ dd.length, 1,
+ '1 dd'
+ );
+});
diff --git a/install/ui/test/entity_tests.html b/install/ui/test/entity_tests.html
new file mode 100644
index 000000000..cd6b64095
--- /dev/null
+++ b/install/ui/test/entity_tests.html
@@ -0,0 +1,27 @@
+<!DOCTYPE html>
+<html>
+<head>
+ <title>Entity Test Suite</title>
+ <link rel="stylesheet" href="qunit.css" type="text/css" media="screen">
+ <script type="text/javascript" src="qunit.js"></script>
+ <script type="text/javascript" src="../jquery.js"></script>
+ <script type="text/javascript" src="../jquery.ba-bbq.js"></script>
+ <script type="text/javascript" src="../ipa.js"></script>
+ <script type="text/javascript" src="../widget.js"></script>
+ <script type="text/javascript" src="../details.js"></script>
+ <script type="text/javascript" src="../search.js"></script>
+ <script type="text/javascript" src="../add.js"></script>
+ <script type="text/javascript" src="../associate.js"></script>
+ <script type="text/javascript" src="../navigation.js"></script>
+ <script type="text/javascript" src="../entity.js"></script>
+ <script type="text/javascript" src="entity_tests.js"></script>
+</head>
+<body>
+ <h1 id="qunit-header">Entity Test Suite</h1>
+ <h2 id="qunit-banner"></h2>
+ <div id="qunit-testrunner-toolbar"></div>
+ <h2 id="qunit-userAgent"></h2>
+ <ol id="qunit-tests"></ol>
+ <div id="qunit-fixture"></div>
+</body>
+</html>
diff --git a/install/ui/test/entity_tests.js b/install/ui/test/entity_tests.js
new file mode 100644
index 000000000..21fff48f8
--- /dev/null
+++ b/install/ui/test/entity_tests.js
@@ -0,0 +1,171 @@
+/* Authors:
+ * Endi Sukma Dewata <edewata@redhat.com>
+ *
+ * Copyright (C) 2010 Red Hat
+ * see file 'COPYING' for use and warranty information
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+module('entity');
+
+test('Testing IPA.entity_set_search_definition().', function() {
+
+ var uid_callback = function() {
+ return true;
+ };
+
+ IPA.entity_set_search_definition('user', [
+ ['uid', 'Login', uid_callback]
+ ]);
+
+ var facet = IPA.entity_get_search_facet('user');
+ ok(
+ facet,
+ 'IPA.entity_get_search_facet(\'user\') is not null'
+ );
+
+ var column = facet.get_columns()[0];
+ ok(
+ column,
+ 'column is not null'
+ );
+
+ equals(
+ column.name, 'uid',
+ 'column.name'
+ );
+
+ equals(
+ column.label, 'Login',
+ 'column.label'
+ );
+
+ ok(
+ column.setup,
+ 'column.setup not null'
+ );
+
+ ok(
+ column.setup(),
+ 'column.setup() works'
+ );
+});
+
+test('Testing ipa_facet_setup_views().', function() {
+
+ var orig_switch_and_show_page = IPA.switch_and_show_page;
+ IPA.ajax_options.async = false;
+
+ IPA.init(
+ 'data',
+ true,
+ function(data, text_status, xhr) {
+ ok(true, 'ipa_init() succeeded.');
+ },
+ function(xhr, text_status, error_thrown) {
+ ok(false, 'ipa_init() failed: '+error_thrown);
+ }
+ );
+
+ var entity = IPA.entity({
+ 'name': 'user'
+ });
+
+ IPA.add_entity(entity);
+
+ var facet = IPA.search_facet({
+ 'name': 'search',
+ 'label': 'Search'
+ });
+ entity.add_facet(facet);
+
+ entity.create_association_facets();
+
+ var container = $('<div/>');
+
+ entity.init();
+ entity.setup(container);
+
+ var counter = 0;
+ IPA.switch_and_show_page = function(entity_name, facet_name, pkey) {
+ counter++;
+ };
+
+ //Container now has two divs, one for the action panel one for content
+ var action_panel = facet.get_action_panel();
+ ok(action_panel.length, 'action panel exists');
+
+ var ul = $('ul', action_panel);
+
+ var views = ul.children();
+
+ /*6 Views:
+ one for each of 3 associations
+ one for search
+ one for details
+ a blank one for the action controls*/
+ equals(
+ views.length, 6,
+ 'Checking number of views'
+ );
+
+ var li = views.first();
+ ok( li.children().first().hasClass('action-controls'),
+ 'Checking that first item in list is placement for controls'
+ );
+
+ li = li.next(); // skip action controls
+ li = li.next(); // skip the header line for Member of
+
+ var attribute_members = IPA.metadata['user'].attribute_members;
+ for (var attribute_member in attribute_members) {
+ var objects = attribute_members[attribute_member];
+ for (var i = 0; i < objects.length; i++) {
+ var object = objects[i];
+ var title = attribute_member+'_'+object;
+
+ li = li.next();
+ var value = li.attr('title');
+ equals(
+ value, title,
+ 'Checking the '+title+' facet'
+ );
+ }
+ }
+
+ var pkey_input = $('input[name=pkey]', action_panel);
+ ok(pkey_input.length,'pkey input exists');
+ var search_facets = $('li.search-facet', action_panel);
+ equals(search_facets.length,0,'search facet should not show up in action panel');
+ var entity_facets = $('li.entity-facet', action_panel);
+ /*No longer automatically adding details, so ony the assoc. facets */
+ equals(entity_facets.length,4,'4 hidden entity facets in action panel');
+ entity_facets.each(function() {
+ ok( $(this).hasClass('entity-facet-disabled'),
+ 'entity facets are disabled');
+ });
+
+ for ( var entity_facet = entity_facets.first();
+ entity_facet.length;
+ entity_facet = entity_facet.next()){
+ entity_facet.click();
+ }
+
+ equals(counter, 0, 'links are disabled');
+
+ IPA.switch_and_show_page = orig_switch_and_show_page;
+});
+
+
diff --git a/install/ui/test/index.html b/install/ui/test/index.html
new file mode 100644
index 000000000..78b41e9b5
--- /dev/null
+++ b/install/ui/test/index.html
@@ -0,0 +1,43 @@
+<!DOCTYPE html>
+<html>
+<head>
+ <title>IPA Test Suite</title>
+ <link rel="stylesheet" href="qunit.css" type="text/css" media="screen">
+ <style type="text/css">
+#content {
+ font-family: "Helvetica Neue Light", "HelveticaNeue-Light", "Helvetica Neue", Calibri, Helvetica, Arial;
+ font-size: smaller;
+
+ border-bottom: 1px solid #fff;
+ padding: 0.5em 0.5em 0.5em 2.5em;
+
+ color: #2b81af;
+ background-color: #D2E0E6;
+}
+ </style>
+</head>
+<body>
+ <h1 id="qunit-header">IPA Test Suite</h1>
+
+ <h2 id="qunit-banner" class="qunit-pass"></h2>
+
+ <div id="content">
+ <a href="all_tests.html">Complete Test Suite</a>
+ <ul>
+ <li><a href="ipa_tests.html">Core Test Suite</a>
+ <li><a href="entity_tests.html">Entity Test Suite</a>
+ <li><a href="details_tests.html">Details Test Suite</a>
+ <li><a href="association_tests.html">Association Test Suite</a>
+ <li><a href="navigation_tests.html">Navigation Test Suite</a>
+ <li><a href="certificate_tests.html">Certificate Test Suite</a>
+ <li><a href="aci_tests.html">Access Control Interface Test Suite</a>
+
+ </ul>
+ </div>
+
+ <div id="qunit-testresult">
+ <br>
+ </div>
+
+</body>
+</html>
diff --git a/install/ui/test/ipa_tests.html b/install/ui/test/ipa_tests.html
new file mode 100644
index 000000000..903e71545
--- /dev/null
+++ b/install/ui/test/ipa_tests.html
@@ -0,0 +1,23 @@
+<!DOCTYPE html>
+<html>
+<head>
+ <title>Core Test Suite</title>
+ <link rel="stylesheet" href="qunit.css" type="text/css" media="screen">
+ <link rel="stylesheet" type="text/css" href="../jquery-ui.css" />
+
+ <script type="text/javascript" src="qunit.js"></script>
+ <script type="text/javascript" src="../jquery.js"></script>
+ <script type="text/javascript" src="../jquery.ba-bbq.js"></script>
+ <script type="text/javascript" src="../jquery-ui.js"></script>
+ <script type="text/javascript" src="../ipa.js"></script>
+ <script type="text/javascript" src="ipa_tests.js"></script>
+</head>
+<body>
+ <h1 id="qunit-header">Core Test Suite</h1>
+ <h2 id="qunit-banner"></h2>
+ <div id="qunit-testrunner-toolbar"></div>
+ <h2 id="qunit-userAgent"></h2>
+ <ol id="qunit-tests"></ol>
+ <div id="qunit-fixture"></div>
+</body>
+</html>
diff --git a/install/ui/test/ipa_tests.js b/install/ui/test/ipa_tests.js
new file mode 100644
index 000000000..4fa0d1ea2
--- /dev/null
+++ b/install/ui/test/ipa_tests.js
@@ -0,0 +1,297 @@
+/* Authors:
+ * Endi Sukma Dewata <edewata@redhat.com>
+ *
+ * Copyright (C) 2010 Red Hat
+ * see file 'COPYING' for use and warranty information
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+module('ipa');
+
+test("Testing ipa_init().", function() {
+
+ expect(1);
+
+ IPA.ajax_options.async = false;
+
+ IPA.init(
+ "data",
+ true,
+ function(data, text_status, xhr) {
+ ok(true, "ipa_init() succeeded.");
+ },
+ function(xhr, text_status, error_thrown) {
+ ok(false, "ipa_init() failed: "+error_thrown);
+ }
+ );
+});
+
+test("Testing IPA.get_param_info().", function() {
+
+ var param_info = IPA.get_param_info("user", "uid");
+ ok(
+ param_info,
+ "IPA.get_param_info(\"user\", \"uid\") not null"
+ );
+
+ equals(
+ param_info["label"], "User login",
+ "IPA.get_param_info(\"user\", \"uid\")[\"label\"]"
+ );
+
+ equals(
+ IPA.get_param_info("user", "wrong_attribute"), null,
+ "IPA.get_param_info(\"user\", \"wrong_attribute\")"
+ );
+
+ equals(
+ IPA.get_param_info("user", null), null,
+ "IPA.get_param_info(\"user\", null)"
+ );
+
+ equals(
+ IPA.get_param_info("wrong_entity", "uid"), null,
+ "IPA.get_param_info(\"wrong_entity\", \"uid\")"
+ );
+
+ equals(
+ IPA.get_param_info(null, "uid"), null,
+ "IPA.get_param_info(null, \"uid\")"
+ );
+});
+
+test("Testing IPA.get_member_attribute().", function() {
+
+ equals(
+ IPA.get_member_attribute("user", "group"), "memberof",
+ "IPA.get_member_attribute(\"user\", \"group\")"
+ );
+
+ equals(
+ IPA.get_member_attribute("user", "host"), null,
+ "IPA.get_member_attribute(\"user\", \"host\")"
+ );
+
+ equals(
+ IPA.get_member_attribute("user", null), null,
+ "IPA.get_member_attribute(\"user\", null)"
+ );
+
+ equals(
+ IPA.get_member_attribute(null, "group"), null,
+ "IPA.get_member_attribute(null, \"group\")"
+ );
+});
+
+test("Testing successful IPA.cmd().", function() {
+
+ var method = 'method';
+ var args = ['arg1', 'arg2', 'arg3'];
+ var options = {
+ opt1: 'val1',
+ opt2: 'val2',
+ opt3: 'val3'
+ };
+ var object = 'object';
+
+ var success_handler_counter = 0;
+ var error_handler_counter = 0;
+
+ function success_handler(data, status, xhr) {
+ success_handler_counter++;
+ }
+
+ function error_handler(xhr, text_status, error_thrown) {
+ error_handler_counter++;
+ }
+
+ var orig = $.ajax;
+
+ var xhr = {};
+ var text_status = null;
+ var error_thrown = {name:'ERROR', message:'An error has occured'};
+
+ var ajax_counter = 0;
+
+ $.ajax = function(request) {
+ ajax_counter++;
+
+ equals(
+ request.url, "data/"+object+"_"+method+".json",
+ "Checking request.url"
+ );
+
+ var data = JSON.parse(request.data);
+
+ equals(
+ data.method, object+'_'+method,
+ "Checking method"
+ );
+
+ same(
+ data.params, [args, options],
+ "Checking parameters"
+ );
+
+ request.success(xhr, text_status, error_thrown);
+ };
+
+ IPA.cmd(method, args, options, success_handler, error_handler, object);
+
+ equals(
+ ajax_counter, 1,
+ "Checking ajax invocation counter"
+ );
+
+ var dialog = IPA.error_dialog.parent('.ui-dialog');
+
+ ok(
+ !dialog.length,
+ "The dialog box is not created."
+ );
+
+ ok(
+ success_handler_counter == 1 && error_handler_counter == 0,
+ "Only the success handler is called."
+ );
+
+ $.ajax = orig;
+});
+
+test("Testing unsuccessful IPA.cmd().", function() {
+
+ var method = 'method';
+ var args = ['arg1', 'arg2', 'arg3'];
+ var options = {
+ opt1: 'val1',
+ opt2: 'val2',
+ opt3: 'val3'
+ };
+ var object = 'object';
+
+ var success_handler_counter = 0;
+ var error_handler_counter = 0;
+
+ function success_handler(data, status, xhr) {
+ success_handler_counter++;
+ }
+
+ function error_handler(xhr, text_status, error_thrown) {
+ error_handler_counter++;
+ }
+
+ var orig = $.ajax;
+
+ var xhr = {};
+ var text_status = null;
+ var error_thrown = {name:'ERROR', message:'An error has occured'};
+
+ var ajax_counter = 0;
+
+ $.ajax = function(request) {
+ ajax_counter++;
+
+ equals(
+ request.url, "data/"+object+"_"+method+".json",
+ "Checking request.url"
+ );
+
+ var data = JSON.parse(request.data);
+
+ equals(
+ data.method, object+'_'+method,
+ "Checking method"
+ );
+
+ same(
+ data.params, [args, options],
+ "Checking parameters"
+ );
+
+ request.error(xhr, text_status, error_thrown);
+ };
+
+ IPA.cmd(method, args, options, success_handler, error_handler, object);
+
+ var dialog = IPA.error_dialog.parent('.ui-dialog');
+
+ equals(
+ ajax_counter, 1,
+ "Checking ajax invocation counter"
+ );
+
+ ok(
+ dialog.length == 1 && IPA.error_dialog.dialog('isOpen'),
+ "The dialog box is created and open."
+ );
+
+ ok(
+ success_handler_counter == 0 && error_handler_counter == 0,
+ "Initially none of the handlers are called."
+ );
+
+ // search the retry button from the beginning
+ var retry = $('button', dialog).first();
+ retry.trigger('click');
+
+ equals(
+ ajax_counter, 2,
+ "Checking ajax invocation counter"
+ );
+
+ ok(
+ success_handler_counter == 0 && error_handler_counter == 0,
+ "After 1st retry, none of the handlers are called."
+ );
+
+ // search the retry button from the beginning again because the dialog
+ // has been recreated
+ dialog = IPA.error_dialog.parent('.ui-dialog');
+ retry = $('button', dialog).first();
+ retry.trigger('click');
+
+ equals(
+ ajax_counter, 3,
+ "Checking ajax invocation counter"
+ );
+
+ ok(
+ success_handler_counter == 0 && error_handler_counter == 0,
+ "After 2nd retry, none of the handlers are called."
+ );
+
+ // search the cancel button from the beginning because the dialog has
+ // been recreated
+ dialog = IPA.error_dialog.parent('.ui-dialog');
+ var cancel = $('button', dialog).first().next();
+ cancel.trigger('click');
+
+ equals(
+ ajax_counter, 3,
+ "Checking ajax invocation counter"
+ );
+
+ ok(
+ !IPA.error_dialog.dialog('isOpen'),
+ "After cancel, the dialog box is closed."
+ );
+
+ ok(
+ success_handler_counter == 0 && error_handler_counter == 1,
+ "Only the error handler is called."
+ );
+
+ $.ajax = orig;
+});
diff --git a/install/ui/test/navigation_tests.html b/install/ui/test/navigation_tests.html
new file mode 100644
index 000000000..16d095aca
--- /dev/null
+++ b/install/ui/test/navigation_tests.html
@@ -0,0 +1,23 @@
+<!DOCTYPE html>
+<html>
+<head>
+ <title>Navigation Test Suite</title>
+ <link rel="stylesheet" href="qunit.css" type="text/css" media="screen">
+ <script type="text/javascript" src="qunit.js"></script>
+ <script type="text/javascript" src="../jquery.js"></script>
+ <script type="text/javascript" src="../jquery.ba-bbq.js"></script>
+ <script type="text/javascript" src="../jquery-ui.js"></script>
+ <script type="text/javascript" src="../ipa.js"></script>
+ <script type="text/javascript" src="../entity.js"></script>
+ <script type="text/javascript" src="../navigation.js"></script>
+ <script type="text/javascript" src="navigation_tests.js"></script>
+</head>
+<body>
+ <h1 id="qunit-header">Navigation Test Suite</h1>
+ <h2 id="qunit-banner"></h2>
+ <div id="qunit-testrunner-toolbar"></div>
+ <h2 id="qunit-userAgent"></h2>
+ <ol id="qunit-tests"></ol>
+ <div id="qunit-fixture"></div>
+</body>
+</html>
diff --git a/install/ui/test/navigation_tests.js b/install/ui/test/navigation_tests.js
new file mode 100644
index 000000000..bc198ac0c
--- /dev/null
+++ b/install/ui/test/navigation_tests.js
@@ -0,0 +1,163 @@
+/* Authors:
+ * Adam Young <ayoung@redhat.com>
+ *
+ * Copyright (C) 2010 Red Hat
+ * see file 'COPYING' for use and warranty information
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+
+module('navigation');
+
+test("Testing nav_create().", function() {
+
+ var mock_tabs_lists =
+ [
+ { name:'identity', label:'IDENTITY', children: [
+ {name:'user', entity:'user'},
+ {name:'group', entity:'group'}
+ ]}];
+
+ var entity = IPA.entity({name: 'user'});
+ entity.setup = function(container){
+ user_mock_called = true;
+ same(container[0].id,'user','user id');
+ same(container[0].nodeName,'DIV','user div');
+ };
+ IPA.add_entity(entity);
+
+ entity = IPA.entity({name: 'group'});
+ entity.setup = function(container){
+ group_mock_called = true;
+ same(container[0].id,'group','group id');
+ same(container[0].nodeName,'DIV','group Div');
+ };
+ IPA.add_entity(entity);
+
+ IPA.metadata = {};
+ var navigation = $('<div id="navigation"/>').appendTo(document.body);
+ var user_mock_called = false;
+ var group_mock_called = false;
+ nav_create(mock_tabs_lists, navigation, 'tabs');
+ ok(user_mock_called, "mock user setup was called");
+ ok(!group_mock_called, "mock group setup was not called because the tab is inactive");
+ same( navigation[0].children.length, 2, "Two Child tabs");
+ same( navigation[0].children[1].id, 'identity', "Identity Tab");
+ same( navigation[0].children[1].children[1].id, 'user', "User Tab");
+ same( navigation[0].children[1].children[2].id, 'group', "User Tab");
+ navigation.remove();
+});
+
+test("Testing nav_update_tabs() with valid index.", function() {
+
+ var orig_push_state = nav_push_state;
+ var orig_get_state = nav_get_state;
+ var orig_remove_state = nav_remove_state;
+
+ var state = {};
+
+ nav_push_state = function(params) {
+ $.extend(state, params);
+ };
+ nav_get_state = function(key) {
+ return state[key];
+ };
+ nav_remove_state = function(key) {
+ delete state[key];
+ };
+
+ var mock_tabs_lists =
+ [
+ { name:'identity', label:'IDENTITY', children: [
+ {name:'one', label:'One', setup: function (){}},
+ {name:'two', label:'Two', setup: function (){}}
+ ]}];
+
+ var navigation = $('<div id="navigation"/>').appendTo(document.body);
+
+ nav_create(mock_tabs_lists, navigation, 'tabs');
+
+ nav_push_state({"identity":1});
+ nav_update_tabs();
+
+ same(
+ navigation.tabs('option', 'selected'), 0,
+ "Active tab at level 1"
+ );
+
+ same(
+ $('#identity').tabs('option', 'selected'), 1,
+ "Active tab at level 2"
+ );
+
+ nav_remove_state("identity");
+
+ navigation.remove();
+
+ nav_push_state = orig_push_state;
+ nav_get_state = orig_get_state;
+ nav_remove_state = orig_remove_state;
+});
+
+test("Testing nav_update_tabs() with out-of-range index.", function() {
+
+ var orig_push_state = nav_push_state;
+ var orig_get_state = nav_get_state;
+ var orig_remove_state = nav_remove_state;
+
+ var state = {};
+
+ nav_push_state = function(params) {
+ $.extend(state, params);
+ };
+ nav_get_state = function(key) {
+ return state[key];
+ };
+ nav_remove_state = function(key) {
+ delete state[key];
+ };
+
+ var mock_tabs_lists =
+ [
+ { name:'identity', label:'IDENTITY', children: [
+ {name:'one', label:'One', setup: function (){}},
+ {name:'two', label:'Two', setup: function (){}}
+ ]}];
+
+ var navigation = $('<div id="navigation"/>').appendTo(document.body);
+
+ nav_create(mock_tabs_lists, navigation, 'tabs');
+
+ nav_push_state({"identity":2});
+ nav_update_tabs();
+
+ same(
+ navigation.tabs('option', 'selected'), 0,
+ "Active tab at level 1"
+ );
+
+ same(
+ $('#identity').tabs('option', 'selected'), 0,
+ "Active tab at level 2"
+ );
+
+ nav_remove_state("identity");
+
+ navigation.remove();
+
+ nav_push_state = orig_push_state;
+ nav_get_state = orig_get_state;
+ nav_remove_state = orig_remove_state;
+});
diff --git a/install/ui/test/qunit.css b/install/ui/test/qunit.css
new file mode 100644
index 000000000..e9404f598
--- /dev/null
+++ b/install/ui/test/qunit.css
@@ -0,0 +1,155 @@
+/** Font Family and Sizes */
+
+#qunit-tests, #qunit-header, #qunit-banner, #qunit-testrunner-toolbar, #qunit-userAgent, #qunit-testresult {
+ font-family: "Helvetica Neue Light", "HelveticaNeue-Light", "Helvetica Neue", Calibri, Helvetica, Arial;
+}
+
+#qunit-testrunner-toolbar, #qunit-userAgent, #qunit-testresult, #qunit-tests li { font-size: small; }
+#qunit-tests { font-size: smaller; }
+
+
+/** Resets */
+
+#qunit-tests, #qunit-tests ol, #qunit-header, #qunit-banner, #qunit-userAgent, #qunit-testresult {
+ margin: 0;
+ padding: 0;
+}
+
+
+/** Header */
+
+#qunit-header {
+ padding: 0.5em 0 0.5em 1em;
+
+ color: #fff;
+ text-shadow: rgba(0, 0, 0, 0.5) 4px 4px 1px;
+ background-color: #0d3349;
+
+ border-radius: 15px 15px 0 0;
+ -moz-border-radius: 15px 15px 0 0;
+ -webkit-border-top-right-radius: 15px;
+ -webkit-border-top-left-radius: 15px;
+}
+
+#qunit-header a {
+ text-decoration: none;
+ color: white;
+}
+
+#qunit-banner {
+ height: 5px;
+}
+
+#qunit-testrunner-toolbar {
+ padding: 0em 0 0.5em 2em;
+}
+
+#qunit-userAgent {
+ padding: 0.5em 0 0.5em 2.5em;
+ background-color: #2b81af;
+ color: #fff;
+ text-shadow: rgba(0, 0, 0, 0.5) 2px 2px 1px;
+}
+
+
+/** Tests: Pass/Fail */
+
+#qunit-tests {
+ list-style-position: inside;
+}
+
+#qunit-tests li {
+ padding: 0.4em 0.5em 0.4em 2.5em;
+ border-bottom: 1px solid #fff;
+ list-style-position: inside;
+}
+
+#qunit-tests li strong {
+ cursor: pointer;
+}
+
+#qunit-tests ol {
+ margin-top: 0.5em;
+ padding: 0.5em;
+
+ background-color: #fff;
+
+ border-radius: 15px;
+ -moz-border-radius: 15px;
+ -webkit-border-radius: 15px;
+
+ box-shadow: inset 0px 2px 13px #999;
+ -moz-box-shadow: inset 0px 2px 13px #999;
+ -webkit-box-shadow: inset 0px 2px 13px #999;
+}
+
+/*** Test Counts */
+
+#qunit-tests b.counts { color: black; }
+#qunit-tests b.passed { color: #5E740B; }
+#qunit-tests b.failed { color: #710909; }
+
+#qunit-tests li li {
+ margin: 0.5em;
+ padding: 0.4em 0.5em 0.4em 0.5em;
+ background-color: #fff;
+ border-bottom: none;
+ list-style-position: inside;
+}
+
+/*** Passing Styles */
+
+#qunit-tests li li.pass {
+ color: #5E740B;
+ background-color: #fff;
+ border-left: 26px solid #C6E746;
+}
+
+#qunit-tests .pass { color: #528CE0; background-color: #D2E0E6; }
+#qunit-tests .pass .test-name { color: #366097; }
+
+#qunit-tests .pass .test-actual,
+#qunit-tests .pass .test-expected { color: #999999; }
+
+#qunit-banner.qunit-pass { background-color: #C6E746; }
+
+/*** Failing Styles */
+
+#qunit-tests li li.fail {
+ color: #710909;
+ background-color: #fff;
+ border-left: 26px solid #EE5757;
+}
+
+#qunit-tests .fail { color: #000000; background-color: #EE5757; }
+#qunit-tests .fail .test-name,
+#qunit-tests .fail .module-name { color: #000000; }
+
+#qunit-tests .fail .test-actual { color: #EE5757; }
+#qunit-tests .fail .test-expected { color: green; }
+
+#qunit-banner.qunit-fail,
+#qunit-testrunner-toolbar { background-color: #EE5757; }
+
+
+/** Footer */
+
+#qunit-testresult {
+ padding: 0.5em 0.5em 0.5em 2.5em;
+
+ color: #2b81af;
+ background-color: #D2E0E6;
+
+ border-radius: 0 0 15px 15px;
+ -moz-border-radius: 0 0 15px 15px;
+ -webkit-border-bottom-right-radius: 15px;
+ -webkit-border-bottom-left-radius: 15px;
+}
+
+/** Fixture */
+
+#qunit-fixture {
+ position: absolute;
+ top: -10000px;
+ left: -10000px;
+}
diff --git a/install/ui/test/qunit.js b/install/ui/test/qunit.js
new file mode 100644
index 000000000..0b8173a80
--- /dev/null
+++ b/install/ui/test/qunit.js
@@ -0,0 +1,1261 @@
+/*
+ * QUnit - A JavaScript Unit Testing Framework
+ *
+ * http://docs.jquery.com/QUnit
+ *
+ * Copyright (c) 2009 John Resig, Jörn Zaefferer
+ * Dual licensed under the MIT (MIT-LICENSE.txt)
+ * and GPL (GPL-LICENSE.txt) licenses.
+ */
+
+(function(window) {
+
+var QUnit = {
+
+ // call on start of module test to prepend name to all tests
+ module: function(name, testEnvironment) {
+ config.currentModule = name;
+
+ synchronize(function() {
+ if ( config.currentModule ) {
+ QUnit.moduleDone( config.currentModule, config.moduleStats.bad, config.moduleStats.all );
+ }
+
+ config.currentModule = name;
+ config.moduleTestEnvironment = testEnvironment;
+ config.moduleStats = { all: 0, bad: 0 };
+
+ QUnit.moduleStart( name, testEnvironment );
+ });
+ },
+
+ asyncTest: function(testName, expected, callback) {
+ if ( arguments.length === 2 ) {
+ callback = expected;
+ expected = 0;
+ }
+
+ QUnit.test(testName, expected, callback, true);
+ },
+
+ test: function(testName, expected, callback, async) {
+ var name = '<span class="test-name">' + testName + '</span>', testEnvironment, testEnvironmentArg;
+
+ if ( arguments.length === 2 ) {
+ callback = expected;
+ expected = null;
+ }
+ // is 2nd argument a testEnvironment?
+ if ( expected && typeof expected === 'object') {
+ testEnvironmentArg = expected;
+ expected = null;
+ }
+
+ if ( config.currentModule ) {
+ name = '<span class="module-name">' + config.currentModule + "</span>: " + name;
+ }
+
+ if ( !validTest(config.currentModule + ": " + testName) ) {
+ return;
+ }
+
+ synchronize(function() {
+
+ testEnvironment = extend({
+ setup: function() {},
+ teardown: function() {}
+ }, config.moduleTestEnvironment);
+ if (testEnvironmentArg) {
+ extend(testEnvironment,testEnvironmentArg);
+ }
+
+ QUnit.testStart( testName, testEnvironment );
+
+ // allow utility functions to access the current test environment
+ QUnit.current_testEnvironment = testEnvironment;
+
+ config.assertions = [];
+ config.expected = expected;
+
+ var tests = id("qunit-tests");
+ if (tests) {
+ var b = document.createElement("strong");
+ b.innerHTML = "Running " + name;
+ var li = document.createElement("li");
+ li.appendChild( b );
+ li.id = "current-test-output";
+ tests.appendChild( li )
+ }
+
+ try {
+ if ( !config.pollution ) {
+ saveGlobal();
+ }
+
+ testEnvironment.setup.call(testEnvironment);
+ } catch(e) {
+ QUnit.ok( false, "Setup failed on " + name + ": " + e.message );
+ }
+ });
+
+ synchronize(function() {
+ if ( async ) {
+ QUnit.stop();
+ }
+
+ try {
+ callback.call(testEnvironment);
+ } catch(e) {
+ fail("Test " + name + " died, exception and test follows", e, callback);
+ QUnit.ok( false, "Died on test #" + (config.assertions.length + 1) + ": " + e.message );
+ // else next test will carry the responsibility
+ saveGlobal();
+
+ // Restart the tests if they're blocking
+ if ( config.blocking ) {
+ start();
+ }
+ }
+ });
+
+ synchronize(function() {
+ try {
+ checkPollution();
+ testEnvironment.teardown.call(testEnvironment);
+ } catch(e) {
+ QUnit.ok( false, "Teardown failed on " + name + ": " + e.message );
+ }
+ });
+
+ synchronize(function() {
+ try {
+ QUnit.reset();
+ } catch(e) {
+ fail("reset() failed, following Test " + name + ", exception and reset fn follows", e, reset);
+ }
+
+ if ( config.expected && config.expected != config.assertions.length ) {
+ QUnit.ok( false, "Expected " + config.expected + " assertions, but " + config.assertions.length + " were run" );
+ }
+
+ var good = 0, bad = 0,
+ tests = id("qunit-tests");
+
+ config.stats.all += config.assertions.length;
+ config.moduleStats.all += config.assertions.length;
+
+ if ( tests ) {
+ var ol = document.createElement("ol");
+
+ for ( var i = 0; i < config.assertions.length; i++ ) {
+ var assertion = config.assertions[i];
+
+ var li = document.createElement("li");
+ li.className = assertion.result ? "pass" : "fail";
+ li.innerHTML = assertion.message || "(no message)";
+ ol.appendChild( li );
+
+ if ( assertion.result ) {
+ good++;
+ } else {
+ bad++;
+ config.stats.bad++;
+ config.moduleStats.bad++;
+ }
+ }
+ if (bad == 0) {
+ ol.style.display = "none";
+ }
+
+ var b = document.createElement("strong");
+ b.innerHTML = name + " <b class='counts'>(<b class='failed'>" + bad + "</b>, <b class='passed'>" + good + "</b>, " + config.assertions.length + ")</b>";
+
+ addEvent(b, "click", function() {
+ var next = b.nextSibling, display = next.style.display;
+ next.style.display = display === "none" ? "block" : "none";
+ });
+
+ addEvent(b, "dblclick", function(e) {
+ var target = e && e.target ? e.target : window.event.srcElement;
+ if ( target.nodeName.toLowerCase() == "span" || target.nodeName.toLowerCase() == "b" ) {
+ target = target.parentNode;
+ }
+ if ( window.location && target.nodeName.toLowerCase() === "strong" ) {
+ window.location.search = "?" + encodeURIComponent(getText([target]).replace(/\(.+\)$/, "").replace(/(^\s*|\s*$)/g, ""));
+ }
+ });
+
+ var li = id("current-test-output");
+ li.id = "";
+ li.className = bad ? "fail" : "pass";
+ li.removeChild( li.firstChild );
+ li.appendChild( b );
+ li.appendChild( ol );
+
+ if ( bad ) {
+ var toolbar = id("qunit-testrunner-toolbar");
+ if ( toolbar ) {
+ toolbar.style.display = "block";
+ id("qunit-filter-pass").disabled = null;
+ id("qunit-filter-missing").disabled = null;
+ }
+ }
+
+ } else {
+ for ( var i = 0; i < config.assertions.length; i++ ) {
+ if ( !config.assertions[i].result ) {
+ bad++;
+ config.stats.bad++;
+ config.moduleStats.bad++;
+ }
+ }
+ }
+
+ QUnit.testDone( testName, bad, config.assertions.length );
+
+ if ( !window.setTimeout && !config.queue.length ) {
+ done();
+ }
+ });
+
+ synchronize( done );
+ },
+
+ /**
+ * Specify the number of expected assertions to gurantee that failed test (no assertions are run at all) don't slip through.
+ */
+ expect: function(asserts) {
+ config.expected = asserts;
+ },
+
+ /**
+ * Asserts true.
+ * @example ok( "asdfasdf".length > 5, "There must be at least 5 chars" );
+ */
+ ok: function(a, msg) {
+ msg = escapeHtml(msg);
+ QUnit.log(a, msg);
+
+ config.assertions.push({
+ result: !!a,
+ message: msg
+ });
+ },
+
+ /**
+ * Checks that the first two arguments are equal, with an optional message.
+ * Prints out both actual and expected values.
+ *
+ * Prefered to ok( actual == expected, message )
+ *
+ * @example equal( format("Received {0} bytes.", 2), "Received 2 bytes." );
+ *
+ * @param Object actual
+ * @param Object expected
+ * @param String message (optional)
+ */
+ equal: function(actual, expected, message) {
+ push(expected == actual, actual, expected, message);
+ },
+
+ notEqual: function(actual, expected, message) {
+ push(expected != actual, actual, expected, message);
+ },
+
+ deepEqual: function(actual, expected, message) {
+ push(QUnit.equiv(actual, expected), actual, expected, message);
+ },
+
+ notDeepEqual: function(actual, expected, message) {
+ push(!QUnit.equiv(actual, expected), actual, expected, message);
+ },
+
+ strictEqual: function(actual, expected, message) {
+ push(expected === actual, actual, expected, message);
+ },
+
+ notStrictEqual: function(actual, expected, message) {
+ push(expected !== actual, actual, expected, message);
+ },
+
+ raises: function(fn, message) {
+ try {
+ fn();
+ ok( false, message );
+ }
+ catch (e) {
+ ok( true, message );
+ }
+ },
+
+ start: function() {
+ // A slight delay, to avoid any current callbacks
+ if ( window.setTimeout ) {
+ window.setTimeout(function() {
+ if ( config.timeout ) {
+ clearTimeout(config.timeout);
+ }
+
+ config.blocking = false;
+ process();
+ }, 13);
+ } else {
+ config.blocking = false;
+ process();
+ }
+ },
+
+ stop: function(timeout) {
+ config.blocking = true;
+
+ if ( timeout && window.setTimeout ) {
+ config.timeout = window.setTimeout(function() {
+ QUnit.ok( false, "Test timed out" );
+ QUnit.start();
+ }, timeout);
+ }
+ }
+
+};
+
+// Backwards compatibility, deprecated
+QUnit.equals = QUnit.equal;
+QUnit.same = QUnit.deepEqual;
+
+// Maintain internal state
+var config = {
+ // The queue of tests to run
+ queue: [],
+
+ // block until document ready
+ blocking: true
+};
+
+// Load paramaters
+(function() {
+ var location = window.location || { search: "", protocol: "file:" },
+ GETParams = location.search.slice(1).split('&');
+
+ for ( var i = 0; i < GETParams.length; i++ ) {
+ GETParams[i] = decodeURIComponent( GETParams[i] );
+ if ( GETParams[i] === "noglobals" ) {
+ GETParams.splice( i, 1 );
+ i--;
+ config.noglobals = true;
+ } else if ( GETParams[i].search('=') > -1 ) {
+ GETParams.splice( i, 1 );
+ i--;
+ }
+ }
+
+ // restrict modules/tests by get parameters
+ config.filters = GETParams;
+
+ // Figure out if we're running the tests from a server or not
+ QUnit.isLocal = !!(location.protocol === 'file:');
+})();
+
+// Expose the API as global variables, unless an 'exports'
+// object exists, in that case we assume we're in CommonJS
+if ( typeof exports === "undefined" || typeof require === "undefined" ) {
+ extend(window, QUnit);
+ window.QUnit = QUnit;
+} else {
+ extend(exports, QUnit);
+ exports.QUnit = QUnit;
+}
+
+// define these after exposing globals to keep them in these QUnit namespace only
+extend(QUnit, {
+ config: config,
+
+ // Initialize the configuration options
+ init: function() {
+ extend(config, {
+ stats: { all: 0, bad: 0 },
+ moduleStats: { all: 0, bad: 0 },
+ started: +new Date,
+ updateRate: 1000,
+ blocking: false,
+ autostart: true,
+ autorun: false,
+ assertions: [],
+ filters: [],
+ queue: []
+ });
+
+ var tests = id("qunit-tests"),
+ banner = id("qunit-banner"),
+ result = id("qunit-testresult");
+
+ if ( tests ) {
+ tests.innerHTML = "";
+ }
+
+ if ( banner ) {
+ banner.className = "";
+ }
+
+ if ( result ) {
+ result.parentNode.removeChild( result );
+ }
+ },
+
+ /**
+ * Resets the test setup. Useful for tests that modify the DOM.
+ */
+ reset: function() {
+ if ( window.jQuery ) {
+ jQuery("#main, #qunit-fixture").html( config.fixture );
+ }
+ },
+
+ /**
+ * Trigger an event on an element.
+ *
+ * @example triggerEvent( document.body, "click" );
+ *
+ * @param DOMElement elem
+ * @param String type
+ */
+ triggerEvent: function( elem, type, event ) {
+ if ( document.createEvent ) {
+ event = document.createEvent("MouseEvents");
+ event.initMouseEvent(type, true, true, elem.ownerDocument.defaultView,
+ 0, 0, 0, 0, 0, false, false, false, false, 0, null);
+ elem.dispatchEvent( event );
+
+ } else if ( elem.fireEvent ) {
+ elem.fireEvent("on"+type);
+ }
+ },
+
+ // Safe object type checking
+ is: function( type, obj ) {
+ return QUnit.objectType( obj ) == type;
+ },
+
+ objectType: function( obj ) {
+ if (typeof obj === "undefined") {
+ return "undefined";
+
+ // consider: typeof null === object
+ }
+ if (obj === null) {
+ return "null";
+ }
+
+ var type = Object.prototype.toString.call( obj )
+ .match(/^\[object\s(.*)\]$/)[1] || '';
+
+ switch (type) {
+ case 'Number':
+ if (isNaN(obj)) {
+ return "nan";
+ } else {
+ return "number";
+ }
+ case 'String':
+ case 'Boolean':
+ case 'Array':
+ case 'Date':
+ case 'RegExp':
+ case 'Function':
+ return type.toLowerCase();
+ }
+ if (typeof obj === "object") {
+ return "object";
+ }
+ return undefined;
+ },
+
+ // Logging callbacks
+ begin: function() {},
+ done: function(failures, total) {},
+ log: function(result, message) {},
+ testStart: function(name, testEnvironment) {},
+ testDone: function(name, failures, total) {},
+ moduleStart: function(name, testEnvironment) {},
+ moduleDone: function(name, failures, total) {}
+});
+
+if ( typeof document === "undefined" || document.readyState === "complete" ) {
+ config.autorun = true;
+}
+
+addEvent(window, "load", function() {
+ QUnit.begin();
+
+ // Initialize the config, saving the execution queue
+ var oldconfig = extend({}, config);
+ QUnit.init();
+ extend(config, oldconfig);
+
+ config.blocking = false;
+
+ var userAgent = id("qunit-userAgent");
+ if ( userAgent ) {
+ userAgent.innerHTML = navigator.userAgent;
+ }
+ var banner = id("qunit-header");
+ if ( banner ) {
+ banner.innerHTML = '<a href="' + location.href + '">' + banner.innerHTML + '</a>';
+ }
+
+ var toolbar = id("qunit-testrunner-toolbar");
+ if ( toolbar ) {
+ toolbar.style.display = "none";
+
+ var filter = document.createElement("input");
+ filter.type = "checkbox";
+ filter.id = "qunit-filter-pass";
+ filter.disabled = true;
+ addEvent( filter, "click", function() {
+ var li = document.getElementsByTagName("li");
+ for ( var i = 0; i < li.length; i++ ) {
+ if ( li[i].className.indexOf("pass") > -1 ) {
+ li[i].style.display = filter.checked ? "none" : "";
+ }
+ }
+ });
+ toolbar.appendChild( filter );
+
+ var label = document.createElement("label");
+ label.setAttribute("for", "qunit-filter-pass");
+ label.innerHTML = "Hide passed tests";
+ toolbar.appendChild( label );
+
+ var missing = document.createElement("input");
+ missing.type = "checkbox";
+ missing.id = "qunit-filter-missing";
+ missing.disabled = true;
+ addEvent( missing, "click", function() {
+ var li = document.getElementsByTagName("li");
+ for ( var i = 0; i < li.length; i++ ) {
+ if ( li[i].className.indexOf("fail") > -1 && li[i].innerHTML.indexOf('missing test - untested code is broken code') > - 1 ) {
+ li[i].parentNode.parentNode.style.display = missing.checked ? "none" : "block";
+ }
+ }
+ });
+ toolbar.appendChild( missing );
+
+ label = document.createElement("label");
+ label.setAttribute("for", "qunit-filter-missing");
+ label.innerHTML = "Hide missing tests (untested code is broken code)";
+ toolbar.appendChild( label );
+ }
+
+ var main = id('main') || id('qunit-fixture');
+ if ( main ) {
+ config.fixture = main.innerHTML;
+ }
+
+ if (config.autostart) {
+ QUnit.start();
+ }
+});
+
+function done() {
+ if ( config.doneTimer && window.clearTimeout ) {
+ window.clearTimeout( config.doneTimer );
+ config.doneTimer = null;
+ }
+
+ if ( config.queue.length ) {
+ config.doneTimer = window.setTimeout(function(){
+ if ( !config.queue.length ) {
+ done();
+ } else {
+ synchronize( done );
+ }
+ }, 13);
+
+ return;
+ }
+
+ config.autorun = true;
+
+ // Log the last module results
+ if ( config.currentModule ) {
+ QUnit.moduleDone( config.currentModule, config.moduleStats.bad, config.moduleStats.all );
+ }
+
+ var banner = id("qunit-banner"),
+ tests = id("qunit-tests"),
+ html = ['Tests completed in ',
+ +new Date - config.started, ' milliseconds.<br/>',
+ '<span class="passed">', config.stats.all - config.stats.bad, '</span> tests of <span class="total">', config.stats.all, '</span> passed, <span class="failed">', config.stats.bad,'</span> failed.'].join('');
+
+ if ( banner ) {
+ banner.className = (config.stats.bad ? "qunit-fail" : "qunit-pass");
+ }
+
+ if ( tests ) {
+ var result = id("qunit-testresult");
+
+ if ( !result ) {
+ result = document.createElement("p");
+ result.id = "qunit-testresult";
+ result.className = "result";
+ tests.parentNode.insertBefore( result, tests.nextSibling );
+ }
+
+ result.innerHTML = html;
+ }
+
+ QUnit.done( config.stats.bad, config.stats.all );
+}
+
+function validTest( name ) {
+ var i = config.filters.length,
+ run = false;
+
+ if ( !i ) {
+ return true;
+ }
+
+ while ( i-- ) {
+ var filter = config.filters[i],
+ not = filter.charAt(0) == '!';
+
+ if ( not ) {
+ filter = filter.slice(1);
+ }
+
+ if ( name.indexOf(filter) !== -1 ) {
+ return !not;
+ }
+
+ if ( not ) {
+ run = true;
+ }
+ }
+
+ return run;
+}
+
+function escapeHtml(s) {
+ s = s === null ? "" : s + "";
+ return s.replace(/[\&"<>\\]/g, function(s) {
+ switch(s) {
+ case "&": return "&amp;";
+ case "\\": return "\\\\";
+ case '"': return '\"';
+ case "<": return "&lt;";
+ case ">": return "&gt;";
+ default: return s;
+ }
+ });
+}
+
+function push(result, actual, expected, message) {
+ message = escapeHtml(message) || (result ? "okay" : "failed");
+ message = '<span class="test-message">' + message + "</span>";
+ expected = escapeHtml(QUnit.jsDump.parse(expected));
+ actual = escapeHtml(QUnit.jsDump.parse(actual));
+ var output = message + ', expected: <span class="test-expected">' + expected + '</span>';
+ if (actual != expected) {
+ output += ' result: <span class="test-actual">' + actual + '</span>, diff: ' + QUnit.diff(expected, actual);
+ }
+
+ // can't use ok, as that would double-escape messages
+ QUnit.log(result, output);
+ config.assertions.push({
+ result: !!result,
+ message: output
+ });
+}
+
+function synchronize( callback ) {
+ config.queue.push( callback );
+
+ if ( config.autorun && !config.blocking ) {
+ process();
+ }
+}
+
+function process() {
+ var start = (new Date()).getTime();
+
+ while ( config.queue.length && !config.blocking ) {
+ if ( config.updateRate <= 0 || (((new Date()).getTime() - start) < config.updateRate) ) {
+ config.queue.shift()();
+
+ } else {
+ setTimeout( process, 13 );
+ break;
+ }
+ }
+}
+
+function saveGlobal() {
+ config.pollution = [];
+
+ if ( config.noglobals ) {
+ for ( var key in window ) {
+ config.pollution.push( key );
+ }
+ }
+}
+
+function checkPollution( name ) {
+ var old = config.pollution;
+ saveGlobal();
+
+ var newGlobals = diff( old, config.pollution );
+ if ( newGlobals.length > 0 ) {
+ ok( false, "Introduced global variable(s): " + newGlobals.join(", ") );
+ config.expected++;
+ }
+
+ var deletedGlobals = diff( config.pollution, old );
+ if ( deletedGlobals.length > 0 ) {
+ ok( false, "Deleted global variable(s): " + deletedGlobals.join(", ") );
+ config.expected++;
+ }
+}
+
+// returns a new Array with the elements that are in a but not in b
+function diff( a, b ) {
+ var result = a.slice();
+ for ( var i = 0; i < result.length; i++ ) {
+ for ( var j = 0; j < b.length; j++ ) {
+ if ( result[i] === b[j] ) {
+ result.splice(i, 1);
+ i--;
+ break;
+ }
+ }
+ }
+ return result;
+}
+
+function fail(message, exception, callback) {
+ if ( typeof console !== "undefined" && console.error && console.warn ) {
+ console.error(message);
+ console.error(exception);
+ console.warn(callback.toString());
+
+ } else if ( window.opera && opera.postError ) {
+ opera.postError(message, exception, callback.toString);
+ }
+}
+
+function extend(a, b) {
+ for ( var prop in b ) {
+ a[prop] = b[prop];
+ }
+
+ return a;
+}
+
+function addEvent(elem, type, fn) {
+ if ( elem.addEventListener ) {
+ elem.addEventListener( type, fn, false );
+ } else if ( elem.attachEvent ) {
+ elem.attachEvent( "on" + type, fn );
+ } else {
+ fn();
+ }
+}
+
+function id(name) {
+ return !!(typeof document !== "undefined" && document && document.getElementById) &&
+ document.getElementById( name );
+}
+
+// Test for equality any JavaScript type.
+// Discussions and reference: http://philrathe.com/articles/equiv
+// Test suites: http://philrathe.com/tests/equiv
+// Author: Philippe Rathé <prathe@gmail.com>
+QUnit.equiv = function () {
+
+ var innerEquiv; // the real equiv function
+ var callers = []; // stack to decide between skip/abort functions
+ var parents = []; // stack to avoiding loops from circular referencing
+
+ // Call the o related callback with the given arguments.
+ function bindCallbacks(o, callbacks, args) {
+ var prop = QUnit.objectType(o);
+ if (prop) {
+ if (QUnit.objectType(callbacks[prop]) === "function") {
+ return callbacks[prop].apply(callbacks, args);
+ } else {
+ return callbacks[prop]; // or undefined
+ }
+ }
+ }
+
+ var callbacks = function () {
+
+ // for string, boolean, number and null
+ function useStrictEquality(b, a) {
+ if (b instanceof a.constructor || a instanceof b.constructor) {
+ // to catch short annotaion VS 'new' annotation of a declaration
+ // e.g. var i = 1;
+ // var j = new Number(1);
+ return a == b;
+ } else {
+ return a === b;
+ }
+ }
+
+ return {
+ "string": useStrictEquality,
+ "boolean": useStrictEquality,
+ "number": useStrictEquality,
+ "null": useStrictEquality,
+ "undefined": useStrictEquality,
+
+ "nan": function (b) {
+ return isNaN(b);
+ },
+
+ "date": function (b, a) {
+ return QUnit.objectType(b) === "date" && a.valueOf() === b.valueOf();
+ },
+
+ "regexp": function (b, a) {
+ return QUnit.objectType(b) === "regexp" &&
+ a.source === b.source && // the regex itself
+ a.global === b.global && // and its modifers (gmi) ...
+ a.ignoreCase === b.ignoreCase &&
+ a.multiline === b.multiline;
+ },
+
+ // - skip when the property is a method of an instance (OOP)
+ // - abort otherwise,
+ // initial === would have catch identical references anyway
+ "function": function () {
+ var caller = callers[callers.length - 1];
+ return caller !== Object &&
+ typeof caller !== "undefined";
+ },
+
+ "array": function (b, a) {
+ var i, j, loop;
+ var len;
+
+ // b could be an object literal here
+ if ( ! (QUnit.objectType(b) === "array")) {
+ return false;
+ }
+
+ len = a.length;
+ if (len !== b.length) { // safe and faster
+ return false;
+ }
+
+ //track reference to avoid circular references
+ parents.push(a);
+ for (i = 0; i < len; i++) {
+ loop = false;
+ for(j=0;j<parents.length;j++){
+ if(parents[j] === a[i]){
+ loop = true;//dont rewalk array
+ }
+ }
+ if (!loop && ! innerEquiv(a[i], b[i])) {
+ parents.pop();
+ return false;
+ }
+ }
+ parents.pop();
+ return true;
+ },
+
+ "object": function (b, a) {
+ var i, j, loop;
+ var eq = true; // unless we can proove it
+ var aProperties = [], bProperties = []; // collection of strings
+
+ // comparing constructors is more strict than using instanceof
+ if ( a.constructor !== b.constructor) {
+ return false;
+ }
+
+ // stack constructor before traversing properties
+ callers.push(a.constructor);
+ //track reference to avoid circular references
+ parents.push(a);
+
+ for (i in a) { // be strict: don't ensures hasOwnProperty and go deep
+ loop = false;
+ for(j=0;j<parents.length;j++){
+ if(parents[j] === a[i])
+ loop = true; //don't go down the same path twice
+ }
+ aProperties.push(i); // collect a's properties
+
+ if (!loop && ! innerEquiv(a[i], b[i])) {
+ eq = false;
+ break;
+ }
+ }
+
+ callers.pop(); // unstack, we are done
+ parents.pop();
+
+ for (i in b) {
+ bProperties.push(i); // collect b's properties
+ }
+
+ // Ensures identical properties name
+ return eq && innerEquiv(aProperties.sort(), bProperties.sort());
+ }
+ };
+ }();
+
+ innerEquiv = function () { // can take multiple arguments
+ var args = Array.prototype.slice.apply(arguments);
+ if (args.length < 2) {
+ return true; // end transition
+ }
+
+ return (function (a, b) {
+ if (a === b) {
+ return true; // catch the most you can
+ } else if (a === null || b === null || typeof a === "undefined" || typeof b === "undefined" || QUnit.objectType(a) !== QUnit.objectType(b)) {
+ return false; // don't lose time with error prone cases
+ } else {
+ return bindCallbacks(a, callbacks, [b, a]);
+ }
+
+ // apply transition with (1..n) arguments
+ })(args[0], args[1]) && arguments.callee.apply(this, args.splice(1, args.length -1));
+ };
+
+ return innerEquiv;
+
+}();
+
+/**
+ * jsDump
+ * Copyright (c) 2008 Ariel Flesler - aflesler(at)gmail(dot)com | http://flesler.blogspot.com
+ * Licensed under BSD (http://www.opensource.org/licenses/bsd-license.php)
+ * Date: 5/15/2008
+ * @projectDescription Advanced and extensible data dumping for Javascript.
+ * @version 1.0.0
+ * @author Ariel Flesler
+ * @link {http://flesler.blogspot.com/2008/05/jsdump-pretty-dump-of-any-javascript.html}
+ */
+QUnit.jsDump = (function() {
+ function quote( str ) {
+ return '"' + str.toString().replace(/"/g, '\\"') + '"';
+ };
+ function literal( o ) {
+ return o + '';
+ };
+ function join( pre, arr, post ) {
+ var s = jsDump.separator(),
+ base = jsDump.indent(),
+ inner = jsDump.indent(1);
+ if ( arr.join )
+ arr = arr.join( ',' + s + inner );
+ if ( !arr )
+ return pre + post;
+ return [ pre, inner + arr, base + post ].join(s);
+ };
+ function array( arr ) {
+ var i = arr.length, ret = Array(i);
+ this.up();
+ while ( i-- )
+ ret[i] = this.parse( arr[i] );
+ this.down();
+ return join( '[', ret, ']' );
+ };
+
+ var reName = /^function (\w+)/;
+
+ var jsDump = {
+ parse:function( obj, type ) { //type is used mostly internally, you can fix a (custom)type in advance
+ var parser = this.parsers[ type || this.typeOf(obj) ];
+ type = typeof parser;
+
+ return type == 'function' ? parser.call( this, obj ) :
+ type == 'string' ? parser :
+ this.parsers.error;
+ },
+ typeOf:function( obj ) {
+ var type;
+ if ( obj === null ) {
+ type = "null";
+ } else if (typeof obj === "undefined") {
+ type = "undefined";
+ } else if (QUnit.is("RegExp", obj)) {
+ type = "regexp";
+ } else if (QUnit.is("Date", obj)) {
+ type = "date";
+ } else if (QUnit.is("Function", obj)) {
+ type = "function";
+ } else if (obj.setInterval && obj.document && !obj.nodeType) {
+ type = "window";
+ } else if (obj.nodeType === 9) {
+ type = "document";
+ } else if (obj.nodeType) {
+ type = "node";
+ } else if (typeof obj === "object" && typeof obj.length === "number" && obj.length >= 0) {
+ type = "array";
+ } else {
+ type = typeof obj;
+ }
+ return type;
+ },
+ separator:function() {
+ return this.multiline ? this.HTML ? '<br />' : '\n' : this.HTML ? '&nbsp;' : ' ';
+ },
+ indent:function( extra ) {// extra can be a number, shortcut for increasing-calling-decreasing
+ if ( !this.multiline )
+ return '';
+ var chr = this.indentChar;
+ if ( this.HTML )
+ chr = chr.replace(/\t/g,' ').replace(/ /g,'&nbsp;');
+ return Array( this._depth_ + (extra||0) ).join(chr);
+ },
+ up:function( a ) {
+ this._depth_ += a || 1;
+ },
+ down:function( a ) {
+ this._depth_ -= a || 1;
+ },
+ setParser:function( name, parser ) {
+ this.parsers[name] = parser;
+ },
+ // The next 3 are exposed so you can use them
+ quote:quote,
+ literal:literal,
+ join:join,
+ //
+ _depth_: 1,
+ // This is the list of parsers, to modify them, use jsDump.setParser
+ parsers:{
+ window: '[Window]',
+ document: '[Document]',
+ error:'[ERROR]', //when no parser is found, shouldn't happen
+ unknown: '[Unknown]',
+ 'null':'null',
+ undefined:'undefined',
+ 'function':function( fn ) {
+ var ret = 'function',
+ name = 'name' in fn ? fn.name : (reName.exec(fn)||[])[1];//functions never have name in IE
+ if ( name )
+ ret += ' ' + name;
+ ret += '(';
+
+ ret = [ ret, this.parse( fn, 'functionArgs' ), '){'].join('');
+ return join( ret, this.parse(fn,'functionCode'), '}' );
+ },
+ array: array,
+ nodelist: array,
+ arguments: array,
+ object:function( map ) {
+ var ret = [ ];
+ this.up();
+ for ( var key in map )
+ ret.push( this.parse(key,'key') + ': ' + this.parse(map[key]) );
+ this.down();
+ return join( '{', ret, '}' );
+ },
+ node:function( node ) {
+ var open = this.HTML ? '&lt;' : '<',
+ close = this.HTML ? '&gt;' : '>';
+
+ var tag = node.nodeName.toLowerCase(),
+ ret = open + tag;
+
+ for ( var a in this.DOMAttrs ) {
+ var val = node[this.DOMAttrs[a]];
+ if ( val )
+ ret += ' ' + a + '=' + this.parse( val, 'attribute' );
+ }
+ return ret + close + open + '/' + tag + close;
+ },
+ functionArgs:function( fn ) {//function calls it internally, it's the arguments part of the function
+ var l = fn.length;
+ if ( !l ) return '';
+
+ var args = Array(l);
+ while ( l-- )
+ args[l] = String.fromCharCode(97+l);//97 is 'a'
+ return ' ' + args.join(', ') + ' ';
+ },
+ key:quote, //object calls it internally, the key part of an item in a map
+ functionCode:'[code]', //function calls it internally, it's the content of the function
+ attribute:quote, //node calls it internally, it's an html attribute value
+ string:quote,
+ date:quote,
+ regexp:literal, //regex
+ number:literal,
+ 'boolean':literal
+ },
+ DOMAttrs:{//attributes to dump from nodes, name=>realName
+ id:'id',
+ name:'name',
+ 'class':'className'
+ },
+ HTML:false,//if true, entities are escaped ( <, >, \t, space and \n )
+ indentChar:' ',//indentation unit
+ multiline:false //if true, items in a collection, are separated by a \n, else just a space.
+ };
+
+ return jsDump;
+})();
+
+// from Sizzle.js
+function getText( elems ) {
+ var ret = "", elem;
+
+ for ( var i = 0; elems[i]; i++ ) {
+ elem = elems[i];
+
+ // Get the text from text nodes and CDATA nodes
+ if ( elem.nodeType === 3 || elem.nodeType === 4 ) {
+ ret += elem.nodeValue;
+
+ // Traverse everything else, except comment nodes
+ } else if ( elem.nodeType !== 8 ) {
+ ret += getText( elem.childNodes );
+ }
+ }
+
+ return ret;
+};
+
+/*
+ * Javascript Diff Algorithm
+ * By John Resig (http://ejohn.org/)
+ * Modified by Chu Alan "sprite"
+ *
+ * Released under the MIT license.
+ *
+ * More Info:
+ * http://ejohn.org/projects/javascript-diff-algorithm/
+ *
+ * Usage: QUnit.diff(expected, actual)
+ *
+ * QUnit.diff("the quick brown fox jumped over", "the quick fox jumps over") == "the quick <del>brown </del> fox <del>jumped </del><ins>jumps </ins> over"
+ */
+QUnit.diff = (function() {
+ function diff(o, n){
+ var ns = new Object();
+ var os = new Object();
+
+ for (var i = 0; i < n.length; i++) {
+ if (ns[n[i]] == null)
+ ns[n[i]] = {
+ rows: new Array(),
+ o: null
+ };
+ ns[n[i]].rows.push(i);
+ }
+
+ for (var i = 0; i < o.length; i++) {
+ if (os[o[i]] == null)
+ os[o[i]] = {
+ rows: new Array(),
+ n: null
+ };
+ os[o[i]].rows.push(i);
+ }
+
+ for (var i in ns) {
+ if (ns[i].rows.length == 1 && typeof(os[i]) != "undefined" && os[i].rows.length == 1) {
+ n[ns[i].rows[0]] = {
+ text: n[ns[i].rows[0]],
+ row: os[i].rows[0]
+ };
+ o[os[i].rows[0]] = {
+ text: o[os[i].rows[0]],
+ row: ns[i].rows[0]
+ };
+ }
+ }
+
+ for (var i = 0; i < n.length - 1; i++) {
+ if (n[i].text != null && n[i + 1].text == null && n[i].row + 1 < o.length && o[n[i].row + 1].text == null &&
+ n[i + 1] == o[n[i].row + 1]) {
+ n[i + 1] = {
+ text: n[i + 1],
+ row: n[i].row + 1
+ };
+ o[n[i].row + 1] = {
+ text: o[n[i].row + 1],
+ row: i + 1
+ };
+ }
+ }
+
+ for (var i = n.length - 1; i > 0; i--) {
+ if (n[i].text != null && n[i - 1].text == null && n[i].row > 0 && o[n[i].row - 1].text == null &&
+ n[i - 1] == o[n[i].row - 1]) {
+ n[i - 1] = {
+ text: n[i - 1],
+ row: n[i].row - 1
+ };
+ o[n[i].row - 1] = {
+ text: o[n[i].row - 1],
+ row: i - 1
+ };
+ }
+ }
+
+ return {
+ o: o,
+ n: n
+ };
+ }
+
+ return function(o, n){
+ o = o.replace(/\s+$/, '');
+ n = n.replace(/\s+$/, '');
+ var out = diff(o == "" ? [] : o.split(/\s+/), n == "" ? [] : n.split(/\s+/));
+
+ var str = "";
+
+ var oSpace = o.match(/\s+/g);
+ if (oSpace == null) {
+ oSpace = [" "];
+ }
+ else {
+ oSpace.push(" ");
+ }
+ var nSpace = n.match(/\s+/g);
+ if (nSpace == null) {
+ nSpace = [" "];
+ }
+ else {
+ nSpace.push(" ");
+ }
+
+ if (out.n.length == 0) {
+ for (var i = 0; i < out.o.length; i++) {
+ str += '<del>' + out.o[i] + oSpace[i] + "</del>";
+ }
+ }
+ else {
+ if (out.n[0].text == null) {
+ for (n = 0; n < out.o.length && out.o[n].text == null; n++) {
+ str += '<del>' + out.o[n] + oSpace[n] + "</del>";
+ }
+ }
+
+ for (var i = 0; i < out.n.length; i++) {
+ if (out.n[i].text == null) {
+ str += '<ins>' + out.n[i] + nSpace[i] + "</ins>";
+ }
+ else {
+ var pre = "";
+
+ for (n = out.n[i].row + 1; n < out.o.length && out.o[n].text == null; n++) {
+ pre += '<del>' + out.o[n] + oSpace[n] + "</del>";
+ }
+ str += " " + out.n[i].text + nSpace[i] + pre;
+ }
+ }
+ }
+
+ return str;
+ }
+})();
+
+})(this);