def _image_to_view(image, tenant=None): result = link_for_image(image.id, image.name) result.update({ u'status': image.status, u'disk-format': image.disk_format, u'container-format': image.container_format, u'created': timestamp_from_openstack(image.created_at), u'md5sum': image.checksum, u'size': image.size, u'data-href': url_for('images.get_image_data', image_id=image.id) }) if image.owner == auth.default_tenant_id(): result[u'global'] = True else: result[u'global'] = False result[u'project'] = link_for_project(image.owner, tenant.name if tenant else None) if 'kernel_id' in image.properties: result['kernel'] = link_for_image(image.properties['kernel_id']) if 'ramdisk_id' in image.properties: result['ramdisk'] = link_for_image(image.properties['ramdisk_id']) return result
def _instance_to_view(server): client = admin_client_set() project_link = link_for_project(server.tenant_id) flavor = client.compute.flavors.get(server.flavor["id"]) user_link = link_for_user_id(server.user_id) image_link = link_for_image(server.image["id"]) instancedata = InstanceDataDAO.get(server.id) href_for = lambda endpoint: url_for(endpoint, instance_id=server.id) result = { u"id": server.id, u"href": href_for("instances.get_instance"), u"name": server.name, u"project": project_link, u"created-by": user_link, u"image": image_link, u"instance-type": { u"id": flavor.id, u"name": flavor.name, u"href": url_for("instance_types.get_instance_type", instance_type_id=flavor.id), }, u"created": timestamp_from_openstack(server.created), u"state": server.status, u"ipv4": [elem["addr"] for val in server.addresses.itervalues() for elem in val if elem["version"] == 4], u"links": { u"reboot": href_for("instances.reboot_instance"), u"reset": href_for("instances.reset_instance"), u"remove": href_for("instances.remove_instance"), u"vnc": href_for("instances.instance_vnc_console"), u"console-output": href_for("instances.instance_console_output"), u"fw-rules": href_for("instance_fw_rule_sets" ".list_instance_fw_rule_sets"), }, } if instancedata: if instancedata.expires_at is not None: result[u"expires-at"] = instancedata.expires_at if instancedata.remind_at is not None: result[u"remind-at"] = instancedata.remind_at if g.is_admin and hasattr(server, _HOST_ATTRIBUTE): result["node"] = link_for_node(getattr(server, _HOST_ATTRIBUTE)) return result
def test_timestamp_with_microseconds_can_be_parsed(self): value = "2012-09-13T15:00:42.000Z" expected = datetime(2012, 9, 13, 15, 0, 42) self.assertEquals(expected, timestamp_from_openstack(value))
def test_timestamp_without_zone_can_be_parsed(self): value = "2012-09-13T15:00:42" expected = datetime(2012, 9, 13, 15, 0, 42) self.assertEquals(expected, timestamp_from_openstack(value))