def update_node(self, node_json): name = node_json['name'].split('@')[1] query = Node.query.filter(Node.name == name) if query.count(): node = query.one() verb = "Updated" else: node = Node(name) verb = "Created" vm_host_name = node_json.get('vpshost', '') is_vm = vm_host_name not in (None, '') if is_vm: self.vm_hosts[name] = node_json['vpshost'] locked_since_local = datetime.strptime(node_json['locked_since'], '%Y-%m-%dT%H:%M:%S') locked_since = local_datetime_to_utc(locked_since_local) node.machine_type = node_json.get('type') node.arch = node_json.get('arch') node.distro = node_json.get('distro') node.up = bool(node_json.get('up', 0)) node.is_vm = is_vm node.mac_address = node_json.get('mac').lower() node.ssh_pub_key = node_json.get('sshpubkey') node.locked = node_json.get('locked') == 1 node.locked_by = node_json.get('locked_by') node.locked_since = locked_since node.description = node_json.get('description') return verb
def set_updated(self, local_str): """ Given a string in the format of '%Y-%m-%d %H:%M:%S', in the local timezone, create a datetime object, convert it to UTC, and store it in self.updated. """ local_dt = datetime.strptime(local_str, '%Y-%m-%d %H:%M:%S') utc_dt = local_datetime_to_utc(local_dt) self.run.updated = self.updated = utc_dt
def test_force_updated_time(self): run_name = 'test_force_updated_time' run = Run(run_name) time_stamp = '2014-03-31 21:25:43' Job(dict(updated=time_stamp), run) models.commit() local_dt = datetime.strptime(time_stamp, '%Y-%m-%d %H:%M:%S') utc_dt = local_datetime_to_utc(local_dt) job = Run.query.filter(Run.name == run.name).one().jobs[0] assert str(job.updated) == str(utc_dt)
def test_manual_updated_time(self): time_stamp = '2014-03-31 21:25:43' run_name = 'manual_update' job_id = 1 self.app.post_json('/runs/', dict(name=run_name)) self.app.post_json('/runs/%s/jobs/' % run_name, dict( job_id=job_id, updated=time_stamp, )) local_dt = datetime.strptime(time_stamp, '%Y-%m-%d %H:%M:%S') utc_dt = local_datetime_to_utc(local_dt) response = self.app.get('/runs/%s/jobs/%s/' % (run_name, 1)) assert response.json['updated'] == str(utc_dt)
def __init__(self, name): self.name = name self.posted = datetime.utcnow() parsed_name = self.parse_name() self.user = parsed_name.get('user', '') if 'scheduled' in parsed_name: scheduled_local = parsed_name['scheduled'] self.scheduled = local_datetime_to_utc(scheduled_local) else: self.scheduled = self.posted self.suite = parsed_name.get('suite', '') self.branch = parsed_name.get('branch', '') self.machine_type = parsed_name.get('machine_type', '') self.set_status()