/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 bzrlib/plugins/launchpad/lp_registration.py

  • Committer: Vincent Ladeuil
  • Date: 2012-01-05 14:26:58 UTC
  • mto: This revision was merged to the branch mainline in revision 6468.
  • Revision ID: v.ladeuil+lp@free.fr-20120105142658-vek3v6pzlxb751s2
Tests passing for a first rough version of a cached branch config store. The changes here are too invasive and several parallel proposals have been made. 

@only_raises is evil and gave a hard time since any exception during
save_changes() was swallowed.

Possible improvements: 

- add some needs_write_lock decorators to crucial
  methods (_set_config_location ?) but keep locking the branch at higher levels

- decorate branch.unlock to call stack.save if last_lock() it True
  outside of @only_raises scope (evil decorator)

- add @needs_write_lock to stack.set and stack.remove (will probably get
  rid of most testing issues) we probably need a specialized decorator
  that can relay to the store and from there to the branch or whatever is
  needed. This will also helps bzr config to get it right. The
  get_mutable_section trick should not be needed anymore either.

- decorate branch.unlock to call stack.save if last_lock() it True outside
  of @only_raises scope (evil decorator)

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# Copyright (C) 2006-2010 Canonical Ltd
 
1
# Copyright (C) 2006-2011 Canonical Ltd
2
2
#
3
3
# This program is free software; you can redistribute it and/or modify
4
4
# it under the terms of the GNU General Public License as published by
14
14
# along with this program; if not, write to the Free Software
15
15
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
16
16
 
 
17
from __future__ import absolute_import
 
18
 
17
19
 
18
20
import os
19
21
import socket
86
88
 
87
89
    LAUNCHPAD_DOMAINS = {
88
90
        'production': 'launchpad.net',
89
 
        'edge': 'edge.launchpad.net',
90
91
        'staging': 'staging.launchpad.net',
 
92
        'qastaging': 'qastaging.launchpad.net',
91
93
        'demo': 'demo.launchpad.net',
92
94
        'dev': 'launchpad.dev',
93
95
        }
98
100
    for instance, domain in LAUNCHPAD_DOMAINS.iteritems():
99
101
        LAUNCHPAD_INSTANCE[instance] = 'https://xmlrpc.%s/bazaar/' % domain
100
102
 
101
 
    # We use edge as the default because:
102
 
    # Beta users get redirected to it
103
 
    # All users can use it
104
 
    # There is a bug in the launchpad side where redirection causes an OOPS.
105
 
    DEFAULT_INSTANCE = 'edge'
 
103
    # We use production as the default because edge has been deprecated circa
 
104
    # 2010-11 (see bug https://bugs.launchpad.net/bzr/+bug/583667)
 
105
    DEFAULT_INSTANCE = 'production'
106
106
    DEFAULT_SERVICE_URL = LAUNCHPAD_INSTANCE[DEFAULT_INSTANCE]
107
107
 
108
108
    transport = None
168
168
            # the url?  perhaps a bit more secure against accidentally
169
169
            # revealing it.  std66 s3.2.1 discourages putting the
170
170
            # password in the url.
171
 
            hostinfo = '%s:%s@%s' % (urllib.quote(self.registrant_email),
172
 
                                     urllib.quote(self.registrant_password),
 
171
            hostinfo = '%s:%s@%s' % (urlutils.quote(self.registrant_email),
 
172
                                     urlutils.quote(self.registrant_password),
173
173
                                     hostinfo)
174
174
            url = urlunsplit((scheme, hostinfo, path, '', ''))
175
175
        else: