class VCenterDriver::ImageImporter

Class ImageImporter

Public Class Methods

new(one_client, vi_client) click to toggle source
Calls superclass method VCenterDriver::VcImporter::new
# File lib/datastore.rb, line 983
def initialize(one_client, vi_client)
    super(one_client, vi_client)
    @one_class = OpenNebula::Image
end

Public Instance Methods

get_list(args = {}) click to toggle source
# File lib/datastore.rb, line 988
def get_list(args = {})
    ds_ref   = args[:datastore][:ds_ref]
    one_ds   = args[:datastore][:one_item]

    unless ds_ref
        raise "can't retrieve ref info from openNebula datastore"
    end

    datastore = VCenterDriver::Datastore
                .new_from_ref(ds_ref, @vi_client)

    ds = datastore.tap do |spawn|
        spawn.one_item = one_ds
    end

    vc_uuid = @vi_client.vim.serviceContent.about.instanceUuid
    one_ds_instance_id = one_ds['TEMPLATE/VCENTER_INSTANCE_ID']

    if one_ds_instance_id != vc_uuid
        raise 'Datastore is not in the same vCenter \
            instance provided in credentials'
    end

    @list = ds.all_images
end
import(selected) click to toggle source
# File lib/datastore.rb, line 1014
def import(selected)
    resource = VCenterDriver::VIHelper.new_one_item(@one_class)
    message = 'Error creating the OpenNebula resource'
    info = selected[:one]
    dsid = selected[:dsid].to_i
    name = VCenterDriver::VcImporter.sanitize(
        selected[:name]
    )

    rc = resource.allocate(info, dsid, false)
    VCenterDriver::VIHelper.check_error(rc, message)

    resource.info
    id = resource['ID']
    @rollback << Raction.new(resource, :delete)

    { :id => [id], :name => name }
end