ac7d03
From f868a2016bdad996fac9cc9d3b3e9b4228ab1dd4 Mon Sep 17 00:00:00 2001
ac7d03
From: Stanislav Laznicka <slaznick@redhat.com>
ac7d03
Date: Mon, 27 Mar 2017 08:26:03 +0200
ac7d03
Subject: [PATCH] Allow renaming of the sudorule objects
ac7d03
ac7d03
The recent changes allow the sudorule objects to be renamed.
ac7d03
ac7d03
https://pagure.io/freeipa/issue/2466
ac7d03
ac7d03
Reviewed-By: Alexander Bokovoy <abokovoy@redhat.com>
ac7d03
Reviewed-By: Jan Cholasta <jcholast@redhat.com>
ac7d03
Reviewed-By: Martin Basti <mbasti@redhat.com>
ac7d03
---
ac7d03
 API.txt                                      |  3 ++-
ac7d03
 VERSION.m4                                   |  2 +-
ac7d03
 ipaserver/plugins/sudorule.py                |  1 +
ac7d03
 ipatests/test_xmlrpc/test_sudorule_plugin.py | 14 ++++++++++++++
ac7d03
 4 files changed, 18 insertions(+), 2 deletions(-)
ac7d03
ac7d03
diff --git a/API.txt b/API.txt
ac7d03
index 2a63c983a343b07ec7928bc774c6443a84b7c64c..7594157384511c1317738dafb41361676a2a0fd7 100644
ac7d03
--- a/API.txt
ac7d03
+++ b/API.txt
ac7d03
@@ -5403,7 +5403,7 @@ output: ListOfEntries('result')
ac7d03
 output: Output('summary', type=[<type 'unicode'>, <type 'NoneType'>])
ac7d03
 output: Output('truncated', type=[<type 'bool'>])
ac7d03
 command: sudorule_mod/1
ac7d03
-args: 1,20,3
ac7d03
+args: 1,21,3
ac7d03
 arg: Str('cn', cli_name='sudorule_name')
ac7d03
 option: Str('addattr*', cli_name='addattr')
ac7d03
 option: Flag('all', autofill=True, cli_name='all', default=False)
ac7d03
@@ -5420,6 +5420,7 @@ option: StrEnum('ipasudorunasgroupcategory?', autofill=False, cli_name='runasgro
ac7d03
 option: StrEnum('ipasudorunasusercategory?', autofill=False, cli_name='runasusercat', values=[u'all'])
ac7d03
 option: Flag('no_members', autofill=True, default=False)
ac7d03
 option: Flag('raw', autofill=True, cli_name='raw', default=False)
ac7d03
+option: Str('rename?', cli_name='rename')
ac7d03
 option: Flag('rights', autofill=True, default=False)
ac7d03
 option: Str('setattr*', cli_name='setattr')
ac7d03
 option: Int('sudoorder?', autofill=False, cli_name='order', default=0)
ac7d03
diff --git a/VERSION.m4 b/VERSION.m4
ac7d03
index bbb5212e5b8cd9604b6ec90d4a0bd4c3276b1856..31e7c1d6e7054d3b4ef1d9dfaf349d2959f8330a 100644
ac7d03
--- a/VERSION.m4
ac7d03
+++ b/VERSION.m4
ac7d03
@@ -74,7 +74,7 @@ define(IPA_DATA_VERSION, 20100614120000)
ac7d03
 ########################################################
ac7d03
 define(IPA_API_VERSION_MAJOR, 2)
ac7d03
 define(IPA_API_VERSION_MINOR, 224)
ac7d03
-# Last change: Add rename option to HBAC rule objects
ac7d03
+# Last change: Add rename option to sudorule objects
ac7d03
 
ac7d03
 
ac7d03
 ########################################################
ac7d03
diff --git a/ipaserver/plugins/sudorule.py b/ipaserver/plugins/sudorule.py
ac7d03
index 90771072ac8645863e77e88b2500c47c0bb2c8df..28c3f21f113fd14160abd518663f2d582f8653fd 100644
ac7d03
--- a/ipaserver/plugins/sudorule.py
ac7d03
+++ b/ipaserver/plugins/sudorule.py
ac7d03
@@ -145,6 +145,7 @@ class sudorule(LDAPObject):
ac7d03
     ]
ac7d03
     uuid_attribute = 'ipauniqueid'
ac7d03
     rdn_attribute = 'ipauniqueid'
ac7d03
+    allow_rename = True
ac7d03
     attribute_members = {
ac7d03
         'memberuser': ['user', 'group'],
ac7d03
         'memberhost': ['host', 'hostgroup'],
ac7d03
diff --git a/ipatests/test_xmlrpc/test_sudorule_plugin.py b/ipatests/test_xmlrpc/test_sudorule_plugin.py
ac7d03
index c37262a43cc3805913688be4bda0318d67b364c4..75dbfbe67202a57299330d21200fe7ca1bb3f77e 100644
ac7d03
--- a/ipatests/test_xmlrpc/test_sudorule_plugin.py
ac7d03
+++ b/ipatests/test_xmlrpc/test_sudorule_plugin.py
ac7d03
@@ -42,6 +42,7 @@ class test_sudorule(XMLRPC_test):
ac7d03
     """
ac7d03
     rule_name = u'testing_sudorule1'
ac7d03
     rule_name2 = u'testing_sudorule2'
ac7d03
+    rule_renamed = u'testing_mega_sudorule'
ac7d03
     rule_command = u'/usr/bin/testsudocmd1'
ac7d03
     rule_desc = u'description'
ac7d03
     rule_desc_mod = u'description modified'
ac7d03
@@ -782,6 +783,19 @@ class test_sudorule(XMLRPC_test):
ac7d03
         api.Command['sudorule_mod'](self.rule_name, sudoorder=None)
ac7d03
         api.Command['sudorule_mod'](self.rule_name2, sudoorder=None)
ac7d03
 
ac7d03
+    def test_l_1_sudorule_rename(self):
ac7d03
+        """
ac7d03
+        Test renaming an HBAC rule, rename it back afterwards
ac7d03
+        """
ac7d03
+        api.Command['sudorule_mod'](
ac7d03
+            self.rule_name, rename=self.rule_renamed
ac7d03
+        )
ac7d03
+        entry = api.Command['sudorule_show'](self.rule_renamed)['result']
ac7d03
+        assert_attr_equal(entry, 'cn', self.rule_renamed)
ac7d03
+        # clean up by renaming the rule back
ac7d03
+        api.Command['sudorule_mod'](
ac7d03
+            self.rule_renamed, rename=self.rule_name
ac7d03
+        )
ac7d03
 
ac7d03
     def test_m_sudorule_del(self):
ac7d03
         """
ac7d03
-- 
ac7d03
2.12.1
ac7d03