예제 #1
0
    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
예제 #2
0
    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
예제 #3
0
파일: jobs.py 프로젝트: ceph/paddles
 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
예제 #4
0
파일: jobs.py 프로젝트: tchaikov/paddles
 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
예제 #5
0
파일: test_jobs.py 프로젝트: ceph/paddles
 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)
예제 #6
0
 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)
예제 #7
0
파일: test_jobs.py 프로젝트: ceph/paddles
 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)
예제 #8
0
 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()
예제 #9
0
 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)
예제 #10
0
파일: runs.py 프로젝트: dreamhost/paddles
 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()