X-Git-Url: https://osm.etsi.org/gitweb/?p=osm%2FN2VC.git;a=blobdiff_plain;f=modules%2Flibjuju%2Fjuju%2Fmachine.py;h=a46135cdf2f5df403e3a607f40b0da0c72759084;hp=23b41c614bd36019140c136255fed8ab6ff72188;hb=1afb30a22cc175cf67572b7195609be6a484258c;hpb=68858c1915122c2dbc8999a5cd3229694abf5f3a diff --git a/modules/libjuju/juju/machine.py b/modules/libjuju/juju/machine.py index 23b41c6..a46135c 100644 --- a/modules/libjuju/juju/machine.py +++ b/modules/libjuju/juju/machine.py @@ -2,7 +2,7 @@ import asyncio import logging import os -from dateutil.parser import parse as parse_date +import pyrfc3339 from . import model, utils from .client import client @@ -14,7 +14,18 @@ log = logging.getLogger(__name__) class Machine(model.ModelEntity): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) - self.on_change(self._workaround_1695335) + self.model.loop.create_task(self._queue_workarounds()) + + async def _queue_workarounds(self): + model = self.model + if not model.info: + await utils.run_with_interrupt(model.get_info(), + model._watch_stopping, + model.loop) + if model._watch_stopping.is_set(): + return + if model.info.agent_version < client.Number.from_json('2.2.3'): + self.on_change(self._workaround_1695335) async def _workaround_1695335(self, delta, old, new, model): """ @@ -66,8 +77,8 @@ class Machine(model.ModelEntity): change_log.append(('agent-version', '', agent_version)) # only update (other) delta fields if status data is newer - status_since = parse_date(machine['instance-status']['since']) - delta_since = parse_date(delta.data['instance-status']['since']) + status_since = pyrfc3339.parse(machine['instance-status']['since']) + delta_since = pyrfc3339.parse(delta.data['instance-status']['since']) if status_since > delta_since: for status_key in ('status', 'info', 'since'): delta_key = key_map[status_key] @@ -169,6 +180,8 @@ class Machine(model.ModelEntity): 'scp', '-i', os.path.expanduser('~/.local/share/juju/ssh/juju_id_rsa'), '-o', 'StrictHostKeyChecking=no', + '-q', + '-B', source, destination ] cmd += scp_opts.split() @@ -211,7 +224,7 @@ class Machine(model.ModelEntity): """Get the time when the `agent_status` was last updated. """ - return parse_date(self.safe_data['agent-status']['since']) + return pyrfc3339.parse(self.safe_data['agent-status']['since']) @property def agent_version(self): @@ -244,7 +257,7 @@ class Machine(model.ModelEntity): """Get the time when the `status` was last updated. """ - return parse_date(self.safe_data['instance-status']['since']) + return pyrfc3339.parse(self.safe_data['instance-status']['since']) @property def dns_name(self): @@ -260,3 +273,10 @@ class Machine(model.ModelEntity): if addresses: return addresses[0]['value'] return None + + @property + def series(self): + """Returns the series of the current machine + + """ + return self.safe_data['series']