/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar

« back to all changes in this revision

Viewing changes to breezy/plugins/gitlab/hoster.py

  • Committer: Breezy landing bot
  • Author(s): Jelmer Vernooij
  • Date: 2020-07-20 02:17:05 UTC
  • mfrom: (7518.1.2 merge-3.1)
  • Revision ID: breezy.the.bot@gmail.com-20200720021705-5f11tmo1hdqjxm6x
Merge lp:brz/3.1.

Merged from https://code.launchpad.net/~jelmer/brz/merge-3.1/+merge/387628

Show diffs side-by-side

added added

removed removed

Lines of Context:
97
97
        self.error = error
98
98
 
99
99
 
 
100
class ForkingDisabled(errors.BzrError):
 
101
 
 
102
    _fmt = ("Forking on project %(project)s is disabled.")
 
103
 
 
104
    def __init__(self, project):
 
105
        self.project = project
 
106
 
 
107
 
100
108
class MergeRequestExists(Exception):
101
109
    """Raised when a merge requests already exists."""
102
110
 
325
333
            raise KeyError('no such user %s' % username)
326
334
        if response.status == 200:
327
335
            return json.loads(response.data)
328
 
        raise errors.InvalidHttpResponse(path, response.text)
 
336
        raise errors.UnexpectedHttpStatus(path, response.status)
329
337
 
330
338
    def _get_user_by_email(self, email):
331
339
        path = 'users?search=%s' % urlutils.quote(str(email), '')
337
345
            if len(ret) != 1:
338
346
                raise ValueError('unexpected number of results; %r' % ret)
339
347
            return ret[0]
340
 
        raise errors.InvalidHttpResponse(path, response.text)
 
348
        raise errors.UnexpectedHttpStatus(path, response.status)
341
349
 
342
350
    def _get_project(self, project_name):
343
351
        path = 'projects/%s' % urlutils.quote(str(project_name), '')
346
354
            raise NoSuchProject(project_name)
347
355
        if response.status == 200:
348
356
            return json.loads(response.data)
349
 
        raise errors.InvalidHttpResponse(path, response.text)
 
357
        raise errors.UnexpectedHttpStatus(path, response.status)
350
358
 
351
359
    def _fork_project(self, project_name, timeout=50, interval=5):
352
360
        path = 'projects/%s/fork' % urlutils.quote(str(project_name), '')
353
361
        response = self._api_request('POST', path)
 
362
        if response.status == 404:
 
363
            raise ForkingDisabled(project_name)
354
364
        if response.status not in (200, 201):
355
 
            raise errors.InvalidHttpResponse(path, response.text)
 
365
            raise errors.UnexpectedHttpStatus(path, response.status)
356
366
        # The response should be valid JSON, but let's ignore it
357
367
        project = json.loads(response.data)
358
368
        # Spin and wait until import_status for new project
385
395
            if response.status == 403:
386
396
                raise errors.PermissionDenied(response.text)
387
397
            if response.status != 200:
388
 
                raise errors.InvalidHttpResponse(path, response.text)
 
398
                raise errors.UnexpectedHttpStatus(path, response.status)
389
399
            page = response.getheader("X-Next-Page")
390
400
            for entry in json.loads(response.data):
391
401
                yield entry
408
418
        if response.status == 403:
409
419
            raise errors.PermissionDenied(response.text)
410
420
        if response.status != 200:
411
 
            raise errors.InvalidHttpResponse(path, response.text)
 
421
            raise errors.UnexpectedHttpStatus(path, response.status)
412
422
        return json.loads(response.data)
413
423
 
414
424
    def _list_projects(self, owner):
422
432
        response = self._api_request('PUT', path, fields=mr)
423
433
        if response.status == 200:
424
434
            return json.loads(response.data)
425
 
        raise errors.InvalidHttpResponse(path, response.text)
 
435
        raise errors.UnexpectedHttpStatus(path, response.status)
426
436
 
427
437
    def _post_merge_request_note(self, project_id, iid, kwargs):
428
438
        path = 'projects/%s/merge_requests/%s/notes' % (
431
441
        if response.status == 201:
432
442
            json.loads(response.data)
433
443
            return
434
 
        raise errors.InvalidHttpResponse(path, response.text)
 
444
        raise errors.UnexpectedHttpStatus(path, response.status)
435
445
 
436
446
    def _create_mergerequest(
437
447
            self, title, source_project_id, target_project_id,
454
464
        if response.status == 409:
455
465
            raise MergeRequestExists()
456
466
        if response.status != 201:
457
 
            raise errors.InvalidHttpResponse(path, response.text)
 
467
            raise errors.UnexpectedHttpStatus(path, response.status)
458
468
        return json.loads(response.data)
459
469
 
460
470
    def get_push_url(self, branch):
543
553
                raise GitLabLoginMissing()
544
554
            else:
545
555
                raise GitlabLoginError(response.text)
546
 
        raise UnsupportedHoster(url)
 
556
        raise UnsupportedHoster(self.base_url)
547
557
 
548
558
    @classmethod
549
559
    def probe_from_url(cls, url, possible_transports=None):
602
612
        if response.status == 404:
603
613
            raise NoSuchProject(project)
604
614
        if response.status != 202:
605
 
            raise errors.InvalidHttpResponse(path, response.text)
 
615
            raise errors.UnexpectedHttpStatus(path, response.status)
606
616
 
607
617
 
608
618
class GitlabMergeProposalBuilder(MergeProposalBuilder):