summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gitlab/__init__.py1
-rw-r--r--gitlab/v4/objects/__init__.py26
-rw-r--r--gitlab/v4/objects/variables.py49
3 files changed, 52 insertions, 24 deletions
diff --git a/gitlab/__init__.py b/gitlab/__init__.py
index 1959adc..a1327e2 100644
--- a/gitlab/__init__.py
+++ b/gitlab/__init__.py
@@ -139,6 +139,7 @@ class Gitlab(object):
self.pagesdomains = objects.PagesDomainManager(self)
self.user_activities = objects.UserActivitiesManager(self)
self.applications = objects.ApplicationManager(self)
+ self.variables = objects.VariableManager(self)
def __enter__(self):
return self
diff --git a/gitlab/v4/objects/__init__.py b/gitlab/v4/objects/__init__.py
index eaf1cd0..f9a2c25 100644
--- a/gitlab/v4/objects/__init__.py
+++ b/gitlab/v4/objects/__init__.py
@@ -23,6 +23,8 @@ from gitlab.exceptions import * # noqa
from gitlab.mixins import * # noqa
from gitlab import types
from gitlab import utils
+from gitlab.v4.objects.variables import *
+
VISIBILITY_PRIVATE = "private"
VISIBILITY_INTERNAL = "internal"
@@ -1366,18 +1368,6 @@ class GroupSubgroupManager(ListMixin, RESTManager):
)
-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 Group(SaveMixin, ObjectDeleteMixin, RESTObject):
_short_print_attr = "name"
_managers = (
@@ -4116,18 +4106,6 @@ class ProjectUserManager(ListMixin, RESTManager):
_list_filters = ("search",)
-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"))
- _update_attrs = (("key", "value"), ("protected", "variable_type", "masked"))
-
-
class ProjectService(SaveMixin, ObjectDeleteMixin, RESTObject):
pass
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"),
+ )