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

« back to all changes in this revision

Viewing changes to jujupy.py

  • Committer: Andrew Beach
  • Date: 2016-11-15 22:34:10 UTC
  • mto: (1726.3.3 status-check-for-error)
  • mto: This revision was merged to the branch mainline in revision 1735.
  • Revision ID: andrew.beach@canonical.com-20161115223410-wcv664lkga7ajrwh
Fixes from comments and added to_exception tests.

Show diffs side-by-side

added added

removed removed

Lines of Context:
608
608
    def __init__(self, status_name, item_name, item_value):
609
609
        self.status_name = status_name
610
610
        self.item_name = item_name
611
 
        # (self.item_name, item_value) = item
612
 
        self.status = item_value[status_name]
 
611
        self.status = item_value.get(status_name, item_value)
613
612
 
614
613
    @property
615
614
    def message(self):
627
626
    def version(self):
628
627
        return self.status.get('version')
629
628
 
 
629
    @property
630
630
    def datetime_since(self):
 
631
        if self.since is None:
 
632
            return None
631
633
        return datetime.strptime(self.since, '%d %b %Y %H:%M:%SZ')
632
634
 
633
635
    def to_exception(self):
643
645
        elif self.WORKLOAD == self.status_name:
644
646
            if self.message is None:
645
647
                return UnitError(self.item_name, self.message)
646
 
            elif re.match('hook failed ".*install.*"', self.message):
 
648
            elif re.match('hook failed: ".*install.*"', self.message):
647
649
                return InstallError(self.item_name, self.message)
648
650
            elif re.match('hook failed', self.message):
649
651
                return HookFailedError(self.item_name, self.message)
652
654
        elif self.MACHINE == self.status_name:
653
655
            return MachineError(self.item_name, self.message)
654
656
        elif self.JUJU == self.status_name:
655
 
            time_since = datetime.utcnow() - self.datetime_since()
 
657
            time_since = datetime.utcnow() - self.datetime_since
656
658
            if time_since > timedelta(minutes=5):
657
659
                return AgentUnresolvedError(self.item_name, self.message,
658
660
                                            time_since.total_seconds())