summaryrefslogtreecommitdiff
path: root/gitlab/v4/objects/variables.py
diff options
context:
space:
mode:
Diffstat (limited to 'gitlab/v4/objects/variables.py')
-rw-r--r--gitlab/v4/objects/variables.py30
1 files changed, 19 insertions, 11 deletions
diff --git a/gitlab/v4/objects/variables.py b/gitlab/v4/objects/variables.py
index 025e3be..54ee149 100644
--- a/gitlab/v4/objects/variables.py
+++ b/gitlab/v4/objects/variables.py
@@ -4,7 +4,7 @@ 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 RESTManager, RESTObject
+from gitlab.base import RequiredOptional, RESTManager, RESTObject
from gitlab.mixins import CRUDMixin, ObjectDeleteMixin, SaveMixin
@@ -25,8 +25,12 @@ class Variable(SaveMixin, ObjectDeleteMixin, RESTObject):
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"))
+ _create_attrs = RequiredOptional(
+ required=("key", "value"), optional=("protected", "variable_type", "masked")
+ )
+ _update_attrs = RequiredOptional(
+ required=("key", "value"), optional=("protected", "variable_type", "masked")
+ )
class GroupVariable(SaveMixin, ObjectDeleteMixin, RESTObject):
@@ -37,8 +41,12 @@ 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"))
+ _create_attrs = RequiredOptional(
+ required=("key", "value"), optional=("protected", "variable_type", "masked")
+ )
+ _update_attrs = RequiredOptional(
+ required=("key", "value"), optional=("protected", "variable_type", "masked")
+ )
class ProjectVariable(SaveMixin, ObjectDeleteMixin, RESTObject):
@@ -49,11 +57,11 @@ 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"),
+ _create_attrs = RequiredOptional(
+ required=("key", "value"),
+ optional=("protected", "variable_type", "masked", "environment_scope"),
)
- _update_attrs = (
- ("key", "value"),
- ("protected", "variable_type", "masked", "environment_scope"),
+ _update_attrs = RequiredOptional(
+ required=("key", "value"),
+ optional=("protected", "variable_type", "masked", "environment_scope"),
)