~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/plugins/launchpad/lp_registration.py

  • Committer: Alexander Belchenko
  • Date: 2008-02-16 10:03:17 UTC
  • mfrom: (3224 +trunk)
  • mto: This revision was merged to the branch mainline in revision 3230.
  • Revision ID: bialix@ukr.net-20080216100317-xg1hdw306evlgt94
merge bzr.dev; update for 1.3; $BZR_LOG used in trace.py module (again), not in the main bzr script (req. by Robert Collins)

Show diffs side-by-side

added added

removed removed

Lines of Context:
32
32
export BZR_LP_XMLRPC_URL=http://xmlrpc.staging.launchpad.net/bazaar/
33
33
'''
34
34
 
 
35
class InvalidLaunchpadInstance(errors.BzrError):
 
36
 
 
37
    _fmt = "%(lp_instance)s is not a valid Launchpad instance."
 
38
 
 
39
    def __init__(self, lp_instance):
 
40
        errors.BzrError.__init__(self, lp_instance=lp_instance)
 
41
 
 
42
 
35
43
class LaunchpadService(object):
36
44
    """A service to talk to Launchpad via XMLRPC.
37
 
    
 
45
 
38
46
    See http://bazaar-vcs.org/Specs/LaunchpadRpc for the methods we can call.
39
47
    """
40
48
 
41
 
    # NB: this should always end in a slash to avoid xmlrpclib appending
 
49
    # NB: these should always end in a slash to avoid xmlrpclib appending
42
50
    # '/RPC2'
43
 
    # We use edge because:
 
51
    # We use edge as the default because:
44
52
    # Beta users get redirected to it
45
53
    # All users can use it
46
54
    # There is a bug in the launchpad side where redirection causes an OOPS.
47
 
    DEFAULT_SERVICE_URL = 'https://xmlrpc.edge.launchpad.net/bazaar/'
 
55
    LAUNCHPAD_INSTANCE = {
 
56
        'production': 'https://xmlrpc.launchpad.net/bazaar/',
 
57
        'edge': 'https://xmlrpc.edge.launchpad.net/bazaar/',
 
58
        'staging': 'https://xmlrpc.staging.launchpad.net/bazaar/',
 
59
        'demo': 'https://xmlrpc.demo.launchpad.net/bazaar/',
 
60
        'dev': 'http://xmlrpc.launchpad.dev/bazaar/',
 
61
        }
 
62
    DEFAULT_SERVICE_URL = LAUNCHPAD_INSTANCE['edge']
48
63
 
49
64
    transport = None
50
65
    registrant_email = None
51
66
    registrant_password = None
52
67
 
53
68
 
54
 
    def __init__(self, transport=None):
 
69
    def __init__(self, transport=None, lp_instance=None):
55
70
        """Construct a new service talking to the launchpad rpc server"""
 
71
        self._lp_instance = lp_instance
56
72
        if transport is None:
57
73
            uri_type = urllib.splittype(self.service_url)[0]
58
74
            if uri_type == 'https':
73
89
        key = 'BZR_LP_XMLRPC_URL'
74
90
        if key in os.environ:
75
91
            return os.environ[key]
 
92
        elif self._lp_instance is not None:
 
93
            try:
 
94
                return self.LAUNCHPAD_INSTANCE[self._lp_instance]
 
95
            except KeyError:
 
96
                raise InvalidLaunchpadInstance(self._lp_instance)
76
97
        else:
77
98
            return self.DEFAULT_SERVICE_URL
78
99