]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
netcmd: models: allow scope to be overridden in query
authorRob van der Linde <rob@catalyst.net.nz>
Mon, 11 Mar 2024 23:13:09 +0000 (12:13 +1300)
committerAndrew Bartlett <abartlet@samba.org>
Wed, 20 Mar 2024 03:49:34 +0000 (03:49 +0000)
Signed-off-by: Rob van der Linde <rob@catalyst.net.nz>
Reviewed-by: Douglas Bagnall <douglas.bagnall@catalyst.net.nz>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
python/samba/netcmd/domain/models/model.py

index a9b10a7b53ef6a30fdac2dca76e23dbef75a1ee5..ea23db85da828255389661925ae68aaa362656b7 100644 (file)
@@ -225,7 +225,8 @@ class Model(metaclass=ModelMeta):
         return expression
 
     @classmethod
-    def query(cls, ldb, polymorphic=False, base_dn=None, **kwargs):
+    def query(cls, ldb, polymorphic=False, base_dn=None, scope=SCOPE_SUBTREE,
+              **kwargs):
         """Returns a search query for this model.
 
         NOTE: If polymorphic is enabled then querying will return instances
@@ -238,6 +239,7 @@ class Model(metaclass=ModelMeta):
         :param ldb: Ldb connection
         :param polymorphic: If true enables polymorphic querying (see note)
         :param base_dn: Optional provide base dn for searching or use the model
+        :param scope: Ldb search scope (default SCOPE_SUBTREE)
         :param kwargs: Search criteria as keyword args
         """
         if base_dn is None:
@@ -246,7 +248,7 @@ class Model(metaclass=ModelMeta):
         # If the container does not exist produce a friendly error message.
         try:
             result = ldb.search(base_dn,
-                                scope=SCOPE_SUBTREE,
+                                scope=scope,
                                 expression=cls.build_expression(**kwargs))
         except LdbError as e:
             if e.args[0] == ERR_NO_SUCH_OBJECT: