summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMax Wittig <max.wittig@siemens.com>2020-02-10 08:15:50 +0100
committerGitHub <noreply@github.com>2020-02-10 08:15:50 +0100
commit066fc9bfdc1d8e6295cb924ea8471268ee869a90 (patch)
tree20a78c9ea8d2907bd3fbe83bb8b32db7dce4b5e5
parent272db2655d80fb81fbe1d8c56f241fe9f31b47e0 (diff)
parent1ec1816d7c76ae079ad3b3e3b7a1bae70e0dd95b (diff)
downloadgitlab-066fc9bfdc1d8e6295cb924ea8471268ee869a90.tar.gz
Merge pull request #1008 from filipowm/feature/feature-flags-additional-config
Add capability to control GitLab features per project or group
-rw-r--r--docs/gl_objects/features.rst2
-rw-r--r--gitlab/utils.py4
-rw-r--r--gitlab/v4/objects.py22
3 files changed, 26 insertions, 2 deletions
diff --git a/docs/gl_objects/features.rst b/docs/gl_objects/features.rst
index 9f5e685..2344895 100644
--- a/docs/gl_objects/features.rst
+++ b/docs/gl_objects/features.rst
@@ -24,6 +24,8 @@ Create or set a feature::
feature = gl.features.set(feature_name, True)
feature = gl.features.set(feature_name, 30)
+ feature = gl.features.set(feature_name, True, user=filipowm)
+ feature = gl.features.set(feature_name, 40, group=mygroup)
Delete a feature::
diff --git a/gitlab/utils.py b/gitlab/utils.py
index 0992ed7..4241787 100644
--- a/gitlab/utils.py
+++ b/gitlab/utils.py
@@ -55,3 +55,7 @@ def sanitized_url(url):
parsed = urlparse(url)
new_path = parsed.path.replace(".", "%2E")
return parsed._replace(path=new_path).geturl()
+
+
+def remove_none_from_dict(data):
+ return {k: v for k, v in data.items() if v is not None}
diff --git a/gitlab/v4/objects.py b/gitlab/v4/objects.py
index b0e686d..ed65d7b 100644
--- a/gitlab/v4/objects.py
+++ b/gitlab/v4/objects.py
@@ -724,7 +724,16 @@ class FeatureManager(ListMixin, DeleteMixin, RESTManager):
_obj_cls = Feature
@exc.on_http_error(exc.GitlabSetError)
- def set(self, name, value, feature_group=None, user=None, **kwargs):
+ def set(
+ self,
+ name,
+ value,
+ feature_group=None,
+ user=None,
+ group=None,
+ project=None,
+ **kwargs
+ ):
"""Create or update the object.
Args:
@@ -732,6 +741,8 @@ class FeatureManager(ListMixin, DeleteMixin, RESTManager):
value (bool/int): The value to set for the object
feature_group (str): A feature group name
user (str): A GitLab username
+ group (str): A GitLab group
+ project (str): A GitLab project in form group/project
**kwargs: Extra options to send to the server (e.g. sudo)
Raises:
@@ -742,7 +753,14 @@ class FeatureManager(ListMixin, DeleteMixin, RESTManager):
obj: The created/updated attribute
"""
path = "%s/%s" % (self.path, name.replace("/", "%2F"))
- data = {"value": value, "feature_group": feature_group, "user": user}
+ data = {
+ "value": value,
+ "feature_group": feature_group,
+ "user": user,
+ "group": group,
+ "project": project,
+ }
+ data = utils.remove_none_from_dict(data)
server_data = self.gitlab.http_post(path, post_data=data, **kwargs)
return self._obj_cls(self, server_data)