diff options
author | Gauvain Pocentek <gauvain@pocentek.net> | 2017-12-31 17:52:57 +0100 |
---|---|---|
committer | Gauvain Pocentek <gauvain@pocentek.net> | 2017-12-31 17:52:57 +0100 |
commit | c281d95c2f978d8d2eb1d77352babf5217d32062 (patch) | |
tree | b25838f9379fb73abc01996c9221f99c4b262e32 | |
parent | 6923f117bc20fffcb0256e7cda35534ee48b058f (diff) | |
download | gitlab-c281d95c2f978d8d2eb1d77352babf5217d32062.tar.gz |
Add support for pagesdomains
Closes #362
-rw-r--r-- | docs/api-objects.rst | 1 | ||||
-rw-r--r-- | docs/gl_objects/pagesdomains.rst | 65 | ||||
-rw-r--r-- | gitlab/__init__.py | 1 | ||||
-rw-r--r-- | gitlab/v4/objects.py | 22 | ||||
-rw-r--r-- | tools/python_test_v4.py | 9 |
5 files changed, 98 insertions, 0 deletions
diff --git a/docs/api-objects.rst b/docs/api-objects.rst index adfe5ff..b18c4ce 100644 --- a/docs/api-objects.rst +++ b/docs/api-objects.rst @@ -22,6 +22,7 @@ API examples gl_objects/mrs gl_objects/namespaces gl_objects/milestones + gl_objects/pagesdomains gl_objects/projects gl_objects/runners gl_objects/settings diff --git a/docs/gl_objects/pagesdomains.rst b/docs/gl_objects/pagesdomains.rst new file mode 100644 index 0000000..d6b39c7 --- /dev/null +++ b/docs/gl_objects/pagesdomains.rst @@ -0,0 +1,65 @@ +############# +Pages domains +############# + +Admin +===== + +References +---------- + +* v4 API: + + + :class:`gitlab.v4.objects.PagesDomain` + + :class:`gitlab.v4.objects.PagesDomainManager` + + :attr:`gitlab.Gitlab.pagesdomains` + +* GitLab API: https://docs.gitlab.com/ce/api/pages_domains.html#list-all-pages-domains + +Examples +-------- + +List all the existing domains (admin only):: + + domains = gl.pagesdomains.list() + +Project pages domain +==================== + +References +---------- + +* v4 API: + + + :class:`gitlab.v4.objects.ProjectPagesDomain` + + :class:`gitlab.v4.objects.ProjectPagesDomainManager` + + :attr:`gitlab.v4.objects.Project.pagesdomains` + +* GitLab API: https://docs.gitlab.com/ce/api/pages_domains.html#list-pages-domains + +Examples +-------- + +List domains for a project:: + + domains = project.pagesdomains.list() + +Get a single domain:: + + domain = project.pagesdomains.get('d1.example.com') + +Create a new domain:: + + domain = project.pagesdomains.create({'domain': 'd2.example.com}) + +Update an existing domain:: + + domain.certificate = open('d2.crt').read() + domain.key = open('d2.key').read() + domain.save() + +Delete an existing domain:: + + domain.delete + # or + project.pagesdomains.delete('d2.example.com') diff --git a/gitlab/__init__.py b/gitlab/__init__.py index e7b09a4..950db86 100644 --- a/gitlab/__init__.py +++ b/gitlab/__init__.py @@ -125,6 +125,7 @@ class Gitlab(object): self.teams = objects.TeamManager(self) else: self.dockerfiles = objects.DockerfileManager(self) + self.pagesdomains = objects.PagesDomainManager(self) self.user_activities = objects.UserActivitiesManager(self) if self._api_version == '3': diff --git a/gitlab/v4/objects.py b/gitlab/v4/objects.py index 4bf6776..397bfb5 100644 --- a/gitlab/v4/objects.py +++ b/gitlab/v4/objects.py @@ -723,6 +723,15 @@ class NamespaceManager(GetFromListMixin, RESTManager): _list_filters = ('search', ) +class PagesDomain(RESTObject): + _id_attr = 'domain' + + +class PagesDomainManager(ListMixin, RESTManager): + _path = '/pages/domains' + _obj_cls = PagesDomain + + class ProjectBoardList(SaveMixin, ObjectDeleteMixin, RESTObject): pass @@ -1249,6 +1258,18 @@ class ProjectNotificationSettingsManager(NotificationSettingsManager): _from_parent_attrs = {'project_id': 'id'} +class ProjectPagesDomain(SaveMixin, ObjectDeleteMixin, RESTObject): + _id_attr = 'domain' + + +class ProjectPagesDomainManager(CRUDMixin, RESTManager): + _path = '/projects/%(project_id)s/pages/domains' + _obj_cls = ProjectPagesDomain + _from_parent_attrs = {'project_id': 'id'} + _create_attrs = (('domain', ), ('certificate', 'key')) + _update_attrs = (tuple(), ('certificate', 'key')) + + class ProjectTag(ObjectDeleteMixin, RESTObject): _id_attr = 'name' _short_print_attr = 'name' @@ -2161,6 +2182,7 @@ class Project(SaveMixin, ObjectDeleteMixin, RESTObject): ('milestones', 'ProjectMilestoneManager'), ('notes', 'ProjectNoteManager'), ('notificationsettings', 'ProjectNotificationSettingsManager'), + ('pagesdomains', 'ProjectPagesDomainManager'), ('pipelines', 'ProjectPipelineManager'), ('protectedbranches', 'ProjectProtectedBranchManager'), ('runners', 'ProjectRunnerManager'), diff --git a/tools/python_test_v4.py b/tools/python_test_v4.py index 66493cb..1b86913 100644 --- a/tools/python_test_v4.py +++ b/tools/python_test_v4.py @@ -285,6 +285,15 @@ assert(len(l1) == 1) assert(len(l2) == 1) assert(l1[0].id != l2[0].id) +# project pages domains +domain = admin_project.pagesdomains.create({'domain': 'foo.domain.com'}) +assert(len(admin_project.pagesdomains.list()) == 1) +assert(len(gl.pagesdomains.list()) == 1) +domain = admin_project.pagesdomains.get('foo.domain.com') +assert(domain.domain == 'foo.domain.com') +domain.delete() +assert(len(admin_project.pagesdomains.list()) == 0) + # project content (files) admin_project.files.create({'file_path': 'README', 'branch': 'master', |