Hi,

Please review the attached patch. This patch requires my patch #28 (HBAC Services). Thanks!


The HBAC Service Groups search, details, and association pages have
been added under the HBAC tab.

New test data files for HBAC Service Groups have been added. The sample
metadata has been updated as well.

--
Endi S. Dewata
From a66df26ac518682b550908c1015d721ce350125a Mon Sep 17 00:00:00 2001
From: Endi S. Dewata <edew...@redhat.com>
Date: Wed, 10 Nov 2010 19:03:49 -0600
Subject: [PATCH] HBAC Service Groups

The HBAC Service Groups search, details, and association pages have
been added under the HBAC tab.

New test data files for HBAC Service Groups have been added. The sample
metadata has been updated as well.
---
 install/static/hbac.js                             |   16 +++-
 install/static/hbacsvc.js                          |   14 +++
 install/static/{hbacsvc.js => hbacsvcgroup.js}     |   51 ++++++++---
 install/static/index.xhtml                         |    1 +
 install/static/service.js                          |   12 +-
 .../static/test/data/hbacsvcgroup_add_member.json  |   24 +++++
 .../test/data/hbacsvcgroup_remove_member.json      |   21 ++++
 install/static/test/data/json_metadata.json        |  100 +-------------------
 8 files changed, 121 insertions(+), 118 deletions(-)
 copy install/static/{hbacsvc.js => hbacsvcgroup.js} (73%)
 create mode 100644 install/static/test/data/hbacsvcgroup_add_member.json
 create mode 100644 install/static/test/data/hbacsvcgroup_remove_member.json

diff --git a/install/static/hbac.js b/install/static/hbac.js
index fed6451293ebdba0d0bfd7e8bf90e99957e8cabb..a5b7676c1b08e14a65a99eca5450bbb36575e33e 100755
--- a/install/static/hbac.js
+++ b/install/static/hbac.js
@@ -114,6 +114,10 @@ function ipa_hbac_search_facet(spec) {
     that.create = function(container) {
 
         var that = this;
+
+        // TODO: replace with IPA.metadata[that.entity_name].label
+        $('<h2/>', { 'html': 'HBAC Rules' }).appendTo(container);
+
 /*
         // Not yet implemented
 
@@ -142,11 +146,17 @@ function ipa_hbac_search_facet(spec) {
                 return false;
             }
         }));
-/*
+
         right_buttons.append(ipa_button({
-            'label': 'Login Svc Groups'
+            'label': 'HBAC Service Groups',
+            'click': function() {
+                var state = {};
+                state['entity'] = 'hbacsvcgroup';
+                nav_push_state(state);
+                return false;
+            }
         }));
-*/
+
         container.append('<br/><br/>');
 
         that.super_create(container);
diff --git a/install/static/hbacsvc.js b/install/static/hbacsvc.js
index 268ce4c5defefc29a8158afd0ca5147f5dc5af85..0d704a0af0ff90544dda6417c01e61960dbd3435 100755
--- a/install/static/hbacsvc.js
+++ b/install/static/hbacsvc.js
@@ -104,6 +104,9 @@ function ipa_hbacsvc_search_facet(spec) {
 
         var that = this;
 
+        // TODO: replace with IPA.metadata[that.entity_name].label
+        $('<h2/>', { 'html': 'HBAC Services' }).appendTo(container);
+
         var right_buttons = $('<span/>', {
             'style': 'float: right;'
         }).appendTo(container);
@@ -117,6 +120,17 @@ function ipa_hbacsvc_search_facet(spec) {
                 return false;
             }
         }));
+
+        right_buttons.append(ipa_button({
+            'label': 'HBAC Service Groups',
+            'click': function() {
+                var state = {};
+                state['entity'] = 'hbacsvcgroup';
+                nav_push_state(state);
+                return false;
+            }
+        }));
+
         container.append('<br/><br/>');
 
         that.super_create(container);
diff --git a/install/static/hbacsvc.js b/install/static/hbacsvcgroup.js
similarity index 73%
copy from install/static/hbacsvc.js
copy to install/static/hbacsvcgroup.js
index 268ce4c5defefc29a8158afd0ca5147f5dc5af85..f57a3bae9ff9ee5385920d8e38f735abb6293bdd 100755
--- a/install/static/hbacsvc.js
+++ b/install/static/hbacsvcgroup.js
@@ -20,44 +20,55 @@
 
 /* REQUIRES: ipa.js, details.js, search.js, add.js, entity.js */
 
-function ipa_hbacsvc() {
+function ipa_hbacsvcgroup() {
 
     var that = ipa_entity({
-        'name': 'hbacsvc'
+        'name': 'hbacsvcgroup'
     });
 
     that.super_init = that.super('init');
 
     that.init = function() {
 
-        var dialog = ipa_hbacsvc_add_dialog({
+        that.create_association({
+            'name': 'hbacsvc',
+            'add_method': 'add_member',
+            'delete_method': 'remove_member'
+        });
+
+        var dialog = ipa_hbacsvcgroup_add_dialog({
             'name': 'add',
-            'title': 'Add New HBAC Service'
+            'title': 'Add New HBAC Service Group'
         });
         that.add_dialog(dialog);
         dialog.init();
 
-        var facet = ipa_hbacsvc_search_facet({
+        var facet = ipa_hbacsvcgroup_search_facet({
             'name': 'search',
             'label': 'Search'
         });
         that.add_facet(facet);
 
-        facet = ipa_hbacsvc_details_facet({
+        facet = ipa_hbacsvcgroup_details_facet({
             'name': 'details',
             'label': 'Details'
         });
         that.add_facet(facet);
 
+        facet = ipa_association_facet({
+            'name': 'associate'
+        });
+        that.add_facet(facet);
+
         that.super_init();
     };
 
     return that;
 }
 
-IPA.add_entity(ipa_hbacsvc());
+IPA.add_entity(ipa_hbacsvcgroup());
 
-function ipa_hbacsvc_add_dialog(spec) {
+function ipa_hbacsvcgroup_add_dialog(spec) {
 
     spec = spec || {};
 
@@ -76,7 +87,7 @@ function ipa_hbacsvc_add_dialog(spec) {
     return that;
 }
 
-function ipa_hbacsvc_search_facet(spec) {
+function ipa_hbacsvcgroup_search_facet(spec) {
 
     spec = spec || {};
 
@@ -88,13 +99,13 @@ function ipa_hbacsvc_search_facet(spec) {
 
     that.init = function() {
 
-        that.create_column({name:'cn', label:'Service', primary_key: true});
+        that.create_column({name:'cn', label:'Group', primary_key: true});
         that.create_column({name:'description', label:'Description'});
 
         that.create_column({
             name: 'quick_links',
             label: 'Quick Links',
-            setup: ipa_hbacsvc_quick_links
+            setup: ipa_hbacsvcgroup_quick_links
         });
 
         that.super_init();
@@ -104,6 +115,9 @@ function ipa_hbacsvc_search_facet(spec) {
 
         var that = this;
 
+        // TODO: replace with IPA.metadata[that.entity_name].label
+        $('<h2/>', { 'html': 'HBAC Service Groups' }).appendTo(container);
+
         var right_buttons = $('<span/>', {
             'style': 'float: right;'
         }).appendTo(container);
@@ -117,6 +131,17 @@ function ipa_hbacsvc_search_facet(spec) {
                 return false;
             }
         }));
+
+        right_buttons.append(ipa_button({
+            'label': 'HBAC Services',
+            'click': function() {
+                var state = {};
+                state['entity'] = 'hbacsvc';
+                nav_push_state(state);
+                return false;
+            }
+        }));
+
         container.append('<br/><br/>');
 
         that.super_create(container);
@@ -126,7 +151,7 @@ function ipa_hbacsvc_search_facet(spec) {
 }
 
 
-function ipa_hbacsvc_quick_links(container, name, value, record) {
+function ipa_hbacsvcgroup_quick_links(container, name, value, record) {
 
     var that = this;
 
@@ -150,7 +175,7 @@ function ipa_hbacsvc_quick_links(container, name, value, record) {
     span.html(link);
 }
 
-function ipa_hbacsvc_details_facet(spec) {
+function ipa_hbacsvcgroup_details_facet(spec) {
 
     spec = spec || {};
 
diff --git a/install/static/index.xhtml b/install/static/index.xhtml
index 4ca93f7120fa9dfda99c80a9a60bc81c59810436..088ebf6b4602f40d3e316cd7a3f96ac11e74fbee 100644
--- a/install/static/index.xhtml
+++ b/install/static/index.xhtml
@@ -25,6 +25,7 @@
     <script type="text/javascript" src="group.js"></script>
     <script type="text/javascript" src="hbac.js"></script>
     <script type="text/javascript" src="hbacsvc.js"></script>
+    <script type="text/javascript" src="hbacsvcgroup.js"></script>
     <script type="text/javascript" src="host.js"></script>
     <script type="text/javascript" src="hostgroup.js"></script>
     <script type="text/javascript" src="netgroup.js"></script>
diff --git a/install/static/service.js b/install/static/service.js
index 6a79af074a0712962ce48f982f5ba40c2a512103..f4179cb8a75ab362c30dbd030542d6cbb4b7f7d4 100644
--- a/install/static/service.js
+++ b/install/static/service.js
@@ -30,6 +30,12 @@ function ipa_service() {
 
     that.init = function() {
 
+        that.create_association({
+            'name': 'host',
+            'add_method': 'add_host',
+            'delete_method': 'remove_host'
+        });
+
         var dialog = ipa_service_add_dialog({
             'name': 'add',
             'title': 'Add New Service'
@@ -54,12 +60,6 @@ function ipa_service() {
         });
         that.add_facet(facet);
 
-        that.create_association({
-            'name': 'host',
-            'add_method': 'add_host',
-            'delete_method': 'remove_host'
-        });
-
         that.super_init();
     };
 
diff --git a/install/static/test/data/hbacsvcgroup_add_member.json b/install/static/test/data/hbacsvcgroup_add_member.json
new file mode 100644
index 0000000000000000000000000000000000000000..6c16a1ddeb4e44d1ab517907f962d430f29a802f
--- /dev/null
+++ b/install/static/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=accounts,dc=dev,dc=example,dc=com",
+            "member_hbacsvc": [
+                "test"
+            ]
+        }
+    }
+}
diff --git a/install/static/test/data/hbacsvcgroup_remove_member.json b/install/static/test/data/hbacsvcgroup_remove_member.json
new file mode 100644
index 0000000000000000000000000000000000000000..fc298e42f9b097704ed4d7e448215cf9cb822e12
--- /dev/null
+++ b/install/static/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=accounts,dc=dev,dc=example,dc=com"
+        }
+    }
+}
diff --git a/install/static/test/data/json_metadata.json b/install/static/test/data/json_metadata.json
index 477cb158d479b8751a508db37c2702911c07a43e..1942dea913de7c09e777c0731fd58dcfa4e4a87f 100644
--- a/install/static/test/data/json_metadata.json
+++ b/install/static/test/data/json_metadata.json
@@ -1748,19 +1748,14 @@
             "hbacsvcgroup": {
                 "attribute_members": {
                     "member": [
-                        "hbacsvc",
-                        "hbacsvcgroup"
-                    ],
-                    "memberof": [
-                        "hbacsvcgroup"
+                        "hbacsvc"
                     ]
                 },
                 "container_dn": "cn=hbacservicegroups,cn=accounts",
                 "default_attributes": [
                     "cn",
                     "description",
-                    "member",
-                    "memberof"
+                    "member"
                 ],
                 "hidden_attributes": [
                     "objectclass",
@@ -1782,8 +1777,8 @@
                     "ipahbacservicegroup"
                 ],
                 "object_class_config": null,
-                "object_name": "servicegroup",
-                "object_name_plural": "servicegroups",
+                "object_name": "hbacsvcgroup",
+                "object_name_plural": "hbacsvcgroups",
                 "parent_object": "",
                 "primary_key": "cn",
                 "takes_params": [
@@ -1836,93 +1831,6 @@
                         "query": false,
                         "required": true,
                         "type": "unicode"
-                    },
-                    {
-                        "attribute": false,
-                        "autofill": false,
-                        "class": "Str",
-                        "cli_name": "member_service",
-                        "cli_short_name": null,
-                        "default": null,
-                        "doc": "Member services",
-                        "exclude": null,
-                        "flags": [
-                            "no_update",
-                            "no_create",
-                            "no_search"
-                        ],
-                        "hint": null,
-                        "include": null,
-                        "label": "Member services",
-                        "length": null,
-                        "maxlength": null,
-                        "minlength": null,
-                        "multivalue": false,
-                        "name": "member_service",
-                        "pattern": null,
-                        "pattern_errmsg": null,
-                        "primary_key": false,
-                        "query": false,
-                        "required": false,
-                        "type": "unicode"
-                    },
-                    {
-                        "attribute": false,
-                        "autofill": false,
-                        "class": "Str",
-                        "cli_name": "member_servicegroup",
-                        "cli_short_name": null,
-                        "default": null,
-                        "doc": "Member service groups",
-                        "exclude": null,
-                        "flags": [
-                            "no_update",
-                            "no_create",
-                            "no_search"
-                        ],
-                        "hint": null,
-                        "include": null,
-                        "label": "Member service groups",
-                        "length": null,
-                        "maxlength": null,
-                        "minlength": null,
-                        "multivalue": false,
-                        "name": "member_servicegroup",
-                        "pattern": null,
-                        "pattern_errmsg": null,
-                        "primary_key": false,
-                        "query": false,
-                        "required": false,
-                        "type": "unicode"
-                    },
-                    {
-                        "attribute": false,
-                        "autofill": false,
-                        "class": "Str",
-                        "cli_name": "memberof_servicegroup",
-                        "cli_short_name": null,
-                        "default": null,
-                        "doc": "Member of service groups",
-                        "exclude": null,
-                        "flags": [
-                            "no_update",
-                            "no_create",
-                            "no_search"
-                        ],
-                        "hint": null,
-                        "include": null,
-                        "label": "Member of service groups",
-                        "length": null,
-                        "maxlength": null,
-                        "minlength": null,
-                        "multivalue": false,
-                        "name": "memberof_servicegroup",
-                        "pattern": null,
-                        "pattern_errmsg": null,
-                        "primary_key": false,
-                        "query": false,
-                        "required": false,
-                        "type": "unicode"
                     }
                 ],
                 "uuid_attribute": "ipauniqueid"
-- 
1.6.6.1

_______________________________________________
Freeipa-devel mailing list
Freeipa-devel@redhat.com
https://www.redhat.com/mailman/listinfo/freeipa-devel

Reply via email to