Search in sources :

Example 1 with Access

use of org.openstack.model.identity.Access in project platformlayer by platformlayer.

the class GlanceImageStore method uploadImage.

@Override
public String uploadImage(OpsTarget target, Tags tags, File imageFile, long rawImageFileSize) throws OpsException {
    OpenstackImageClient client = getOpenstackImageClient();
    String diskFormat = null;
    if (tags != null) {
        // This logic looks suspicious...
        assert false;
        for (Tag tag : tags.getTags()) {
            ImageFormat imageFormat = ImageFormat.fromTags(tags);
            diskFormat = mapToGlanceDiskFormat(imageFormat);
        }
    }
    String glanceBaseUrl;
    String tokenId;
    try {
        Access access = client.getSession().getAuthenticationToken();
        tokenId = access.getToken().getId();
        glanceBaseUrl = client.root().getBaseUrl();
    } catch (OpenstackException e) {
        throw new OpsException("Error getting glance url", e);
    }
    // Upload to glance
    String glanceUploadUrl = glanceBaseUrl;
    if (!glanceUploadUrl.endsWith("/")) {
        glanceUploadUrl += "/";
    }
    glanceUploadUrl += "images";
    String imageName = "image-" + System.currentTimeMillis();
    Command command = Command.build("curl");
    command.addLiteral("--fail");
    command.addLiteral("--upload-file").addFile(imageFile);
    command.addLiteral("-X").addLiteral("POST");
    command.addLiteral("-H").addQuoted("X-Auth-Token: " + tokenId);
    command.addLiteral("-H").addQuoted("Content-Type: application/octet-stream");
    command.addLiteral("-H").addQuoted("X-Image-Meta-Name: " + imageName);
    command.addLiteral("-H").addQuoted("X-Image-Meta-Is-Public: True");
    // } else {
    if (diskFormat != null) {
        command.addLiteral("-H").addQuoted("X-Image-Meta-Disk-Format: " + diskFormat);
    }
    command.addLiteral("-H").addQuoted("X-Image-Meta-Container-Format: bare");
    // }
    // command.addLiteral("-H").addQuoted("X-Image-Meta-Min-Disk: 0");
    // command.addLiteral("-H").addQuoted("X-Image-Meta-Min-Ram: 0");
    // command.addLiteral("-H").addQuoted("X-Image-Meta-Image-Size: " + rawImageFileSize);
    command.addLiteral("-H").addQuoted("X-Image-Meta-Size: " + rawImageFileSize);
    // image_meta = {'name': fields.pop('name'),
    // 'is_public': utils.bool_from_string(
    // fields.pop('is_public', False)),
    // 'disk_format': fields.pop('disk_format', 'raw'),
    // 'min_disk': fields.pop('min_disk', 0),
    // 'min_ram': fields.pop('min_ram', 0),
    // 'container_format': fields.pop('container_format', 'ovf')}
    // glance add name=DebianSqueeze is_public=True disk_format=raw container_format=bare
    // system_id="http://org.platformlayer/service/imagefactory/v1.0:bootstrap"
    // image_size="${RAW_SIZE}" < disk.raw.gz
    command.addQuoted(glanceUploadUrl);
    command.setTimeout(TimeSpan.FIFTEEN_MINUTES);
    ProcessExecution execution = target.executeCommand(command);
    String imageId;
    // String imageLocation;
    {
        // "is_public": true, "deleted_at": null, "min_ram": 0, "size": 925761536}}
        try {
            JSONObject json = new JSONObject(execution.getStdOut());
            JSONObject image = json.getJSONObject("image");
            // imageLocation = image.getString("location");
            imageId = image.getString("id");
        } catch (JSONException e) {
            log.warn("Image upload returned: " + execution.getStdOut());
            throw new OpsException("Error parsing return value from image upload", e);
        }
    }
    if (tags != null) {
        updateImageTags(imageId, tags);
    }
    return imageId;
}
Also used : OpsException(org.platformlayer.ops.OpsException) JSONObject(org.json.JSONObject) Command(org.platformlayer.ops.Command) ProcessExecution(org.platformlayer.ops.process.ProcessExecution) OpenstackImageClient(org.openstack.client.common.OpenstackImageClient) Access(org.openstack.model.identity.Access) JSONException(org.json.JSONException) Tag(org.platformlayer.core.model.Tag) OpenstackException(org.openstack.client.OpenstackException) ImageFormat(org.platformlayer.ops.images.ImageFormat)

Aggregations

JSONException (org.json.JSONException)1 JSONObject (org.json.JSONObject)1 OpenstackException (org.openstack.client.OpenstackException)1 OpenstackImageClient (org.openstack.client.common.OpenstackImageClient)1 Access (org.openstack.model.identity.Access)1 Tag (org.platformlayer.core.model.Tag)1 Command (org.platformlayer.ops.Command)1 OpsException (org.platformlayer.ops.OpsException)1 ImageFormat (org.platformlayer.ops.images.ImageFormat)1 ProcessExecution (org.platformlayer.ops.process.ProcessExecution)1