summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ipalib/plugins/automount.py15
-rw-r--r--tests/test_xmlrpc/test_automount_plugin.py11
2 files changed, 21 insertions, 5 deletions
diff --git a/ipalib/plugins/automount.py b/ipalib/plugins/automount.py
index 1879c56c0..d05e0cf1c 100644
--- a/ipalib/plugins/automount.py
+++ b/ipalib/plugins/automount.py
@@ -791,11 +791,16 @@ class automountmap_add_indirect(LDAPCreate):
def execute(self, *keys, **options):
result = self.api.Command['automountmap_add'](*keys, **options)
- options['automountinformation'] = keys[1]
- self.api.Command['automountkey_add'](
- keys[0], options['parentmap'],
- automountkey=options['key'], **options
- )
+ try:
+ options['automountinformation'] = keys[1]
+ self.api.Command['automountkey_add'](
+ keys[0], options['parentmap'],
+ automountkey=options['key'], **options
+ )
+ except Exception, e:
+ # The key exists, drop the map
+ self.api.Command['automountmap_del'](*keys, **options)
+ raise e
return result
api.register(automountmap_add_indirect)
diff --git a/tests/test_xmlrpc/test_automount_plugin.py b/tests/test_xmlrpc/test_automount_plugin.py
index c5dd619e2..0face2ef0 100644
--- a/tests/test_xmlrpc/test_automount_plugin.py
+++ b/tests/test_xmlrpc/test_automount_plugin.py
@@ -266,6 +266,17 @@ class test_automount_indirect(XMLRPC_test):
assert res
assert_attr_equal(res, 'automountmapname', self.mapname)
+ def test_1a_automountmap_add_indirect(self):
+ """
+ Test adding a duplicate indirect map.
+ """
+ try:
+ api.Command['automountmap_add_indirect'](self.locname, self.mapname, **self.map_kw)['result']
+ except errors.DuplicateEntry:
+ pass
+ else:
+ assert False
+
def test_2_automountmap_show(self):
"""
Test the `xmlrpc.automountmap_show` method.