~andrewjbeach/juju-ci-tools/make-local-patcher

« back to all changes in this revision

Viewing changes to jujupy.py

  • Committer: Aaron Bentley
  • Date: 2016-05-07 15:39:04 UTC
  • mto: (1363.10.3 extract-backend8)
  • mto: This revision was merged to the branch mainline in revision 1411.
  • Revision ID: aaron.bentley@canonical.com-20160507153904-hxxg45yw3y4ddsbp
Move debug to backend.

Show diffs side-by-side

added added

removed removed

Lines of Context:
206
206
class Juju2Backend:
207
207
    """A Juju backend referring to a specific juju 2 binary."""
208
208
 
209
 
    def __init__(self, full_path, version, feature_flags):
 
209
    def __init__(self, full_path, version, feature_flags, debug):
210
210
        self._version = version
211
211
        self._full_path = full_path
212
212
        self.feature_flags = set()
 
213
        self.debug = debug
213
214
        self._timeout_path = get_timeout_path()
214
215
 
215
216
    @property
224
225
        if type(self) != type(other):
225
226
            return False
226
227
        return (
227
 
            (self._version, self._full_path, self.feature_flags) ==
228
 
            (other._version, other._full_path, other.feature_flags))
 
228
            (self._version, self._full_path, self.feature_flags, self.debug) ==
 
229
            (other._version, other._full_path, other.feature_flags,
 
230
             other.debug))
229
231
 
230
232
    def shell_environ(self, used_feature_flags, juju_home):
231
233
        """Generate a suitable shell environment.
242
244
        env['JUJU_DATA'] = juju_home
243
245
        return env
244
246
 
245
 
    def full_args(self, command, args, model, timeout, debug):
 
247
    def full_args(self, command, args, model, timeout):
246
248
        if model is not None:
247
249
            e_arg = ('-m', model)
248
250
        else:
251
253
            prefix = ()
252
254
        else:
253
255
            prefix = get_timeout_prefix(timeout, self._timeout_path)
254
 
        logging = '--debug' if debug else '--show-log'
 
256
        logging = '--debug' if self.debug else '--show-log'
255
257
 
256
258
        # If args is a string, make it a tuple. This makes writing commands
257
259
        # with one argument a bit nicer.
290
292
        del env['JUJU_DATA']
291
293
        return env
292
294
 
293
 
    def full_args(self, command, args, model, timeout, debug):
 
295
    def full_args(self, command, args, model, timeout):
294
296
        if model is None:
295
297
            e_arg = ()
296
298
        else:
300
302
            prefix = ()
301
303
        else:
302
304
            prefix = get_timeout_prefix(timeout, self._timeout_path)
303
 
        logging = '--debug' if debug else '--show-log'
 
305
        logging = '--debug' if self.debug else '--show-log'
304
306
 
305
307
        # If args is a string, make it a tuple. This makes writing commands
306
308
        # with one argument a bit nicer.
436
438
            version = self.version
437
439
        if full_path is None:
438
440
            full_path = self.full_path
439
 
        backend = self._backend.__class__(full_path, version, set())
440
441
        if debug is None:
441
442
            debug = self.debug
 
443
        backend = self._backend.__class__(full_path, version, set(), debug)
442
444
        if cls is None:
443
445
            cls = self.__class__
444
446
        other = cls(env, version, full_path, debug=debug, _backend=backend)
458
460
        else:
459
461
            model = self.env.environment
460
462
        # sudo is not needed for devel releases.
461
 
        return self._backend.full_args(command, args, model, timeout,
462
 
                                       self.debug)
 
463
        return self._backend.full_args(command, args, model, timeout)
463
464
 
464
465
    @staticmethod
465
466
    def _get_env(env):
473
474
                 _backend=None):
474
475
        self.env = self._get_env(env)
475
476
        if _backend is None:
476
 
            _backend = Juju2Backend(full_path, version, set())
 
477
            _backend = Juju2Backend(full_path, version, set(), debug)
477
478
        self._backend = _backend
478
479
        if version != _backend.version:
479
480
            raise ValueError('Version mismatch: {} {}'.format(
481
482
        if full_path != _backend.full_path:
482
483
            raise ValueError('Path mismatch: {} {}'.format(
483
484
                full_path, _backend.full_path))
484
 
        self.debug = debug
 
485
        if debug is not _backend.debug:
 
486
            raise ValueError('debug mismatch: {} {}'.format(
 
487
                debug, _backend.debug))
485
488
        self.feature_flags = set()
486
489
        if env is not None:
487
490
            if juju_home is None:
507
510
    def feature_flags(self, feature_flags):
508
511
        self._backend.feature_flags = feature_flags
509
512
 
 
513
    @property
 
514
    def debug(self):
 
515
        return self._backend.debug
 
516
 
510
517
    def _shell_environ(self):
511
518
        """Generate a suitable shell environment.
512
519
 
1331
1338
    def __init__(self, env, version, full_path, juju_home=None, debug=False,
1332
1339
                 _backend=None):
1333
1340
        if _backend is None:
1334
 
            _backend = Juju2ABackend(full_path, version, set())
 
1341
            _backend = Juju2ABackend(full_path, version, set(), debug)
1335
1342
        super(EnvJujuClient2A2, self).__init__(
1336
1343
            env, version, full_path, juju_home, debug, _backend=_backend)
1337
1344
 
1388
1395
    def __init__(self, env, version, full_path, juju_home=None, debug=False,
1389
1396
                 _backend=None):
1390
1397
        if _backend is None:
1391
 
            _backend = Juju2A1Backend(full_path, version, set())
 
1398
            _backend = Juju2A1Backend(full_path, version, set(), debug)
1392
1399
        super(EnvJujuClient2A1, self).__init__(
1393
1400
            env, version, full_path, juju_home, debug, _backend=_backend)
1394
1401