summaryrefslogtreecommitdiff
path: root/gitlab/v4/objects/variables.py
diff options
context:
space:
mode:
authorNejc Habjan <nejc.habjan@siemens.com>2020-08-29 17:44:08 +0200
committerNejc Habjan <nejc.habjan@siemens.com>2020-08-31 23:48:54 +0200
commit4492fc42c9f6e0031dd3f3c6c99e4c58d4f472ff (patch)
treea04dad6678dd3c9b2e14397f9b58335340d14439 /gitlab/v4/objects/variables.py
parentda8af6f6be6886dca4f96390632cf3b91891954e (diff)
downloadgitlab-4492fc42c9f6e0031dd3f3c6c99e4c58d4f472ff.tar.gz
feat(api): add support for instance variables
Diffstat (limited to 'gitlab/v4/objects/variables.py')
-rw-r--r--gitlab/v4/objects/variables.py49
1 files changed, 49 insertions, 0 deletions
diff --git a/gitlab/v4/objects/variables.py b/gitlab/v4/objects/variables.py
new file mode 100644
index 0000000..c8de80f
--- /dev/null
+++ b/gitlab/v4/objects/variables.py
@@ -0,0 +1,49 @@
+"""
+GitLab API:
+https://docs.gitlab.com/ee/api/instance_level_ci_variables.html
+https://docs.gitlab.com/ee/api/project_level_variables.html
+https://docs.gitlab.com/ee/api/group_level_variables.html
+"""
+from gitlab.base import * # noqa
+from gitlab.mixins import * # noqa
+
+
+class Variable(SaveMixin, ObjectDeleteMixin, RESTObject):
+ _id_attr = "key"
+
+
+class VariableManager(CRUDMixin, RESTManager):
+ _path = "/admin/ci/variables"
+ _obj_cls = Variable
+ _create_attrs = (("key", "value"), ("protected", "variable_type", "masked"))
+ _update_attrs = (("key", "value"), ("protected", "variable_type", "masked"))
+
+
+class GroupVariable(SaveMixin, ObjectDeleteMixin, RESTObject):
+ _id_attr = "key"
+
+
+class GroupVariableManager(CRUDMixin, RESTManager):
+ _path = "/groups/%(group_id)s/variables"
+ _obj_cls = GroupVariable
+ _from_parent_attrs = {"group_id": "id"}
+ _create_attrs = (("key", "value"), ("protected", "variable_type", "masked"))
+ _update_attrs = (("key", "value"), ("protected", "variable_type", "masked"))
+
+
+class ProjectVariable(SaveMixin, ObjectDeleteMixin, RESTObject):
+ _id_attr = "key"
+
+
+class ProjectVariableManager(CRUDMixin, RESTManager):
+ _path = "/projects/%(project_id)s/variables"
+ _obj_cls = ProjectVariable
+ _from_parent_attrs = {"project_id": "id"}
+ _create_attrs = (
+ ("key", "value"),
+ ("protected", "variable_type", "masked", "environment_scope"),
+ )
+ _update_attrs = (
+ ("key", "value"),
+ ("protected", "variable_type", "masked", "environment_scope"),
+ )