class VCenterDriver::DsImporter

Class DsImporter

Public Class Methods

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

Public Instance Methods

add_cluster(cid, eid) click to toggle source
# File lib/datastore.rb, line 917
def add_cluster(cid, eid)
    one_cluster = @info[:clusters][cid]
    raise 'no cluster defined' unless one_cluster

    one_cluster.adddatastore(eid)
end
get_list(args = {}) click to toggle source
# File lib/datastore.rb, line 884
def get_list(args = {})
    dc_folder = VCenterDriver::DatacenterFolder.new(@vi_client)

    # one pool creation
    dpool = VCenterDriver::VIHelper
            .one_pool(
                OpenNebula::DatastorePool,
                false
            )
    if dpool.respond_to?(:message)
        raise "Could not get OpenNebula DatastorePool: #{dpool.message}"
    end

    # OpenNebula's HostPool
    hpool = VCenterDriver::VIHelper
            .one_pool(
                OpenNebula::HostPool,
                false
            )
    if hpool.respond_to?(:message)
        raise "Could not get OpenNebula HostPool: #{hpool.message}"
    end

    rs = dc_folder
         .get_unimported_datastores(
             dpool,
             @vi_client.vc_name,
             hpool,
             args
         )
    @list = rs
end
import(selected) click to toggle source
# File lib/datastore.rb, line 935
def import(selected)
    inner = lambda {|object, auth|
        one = ''
        one << "VCENTER_HOST=\"#{auth[:host]}\"\n"

        object.update(one, true)
    }

    opts = @info[selected[:ref]][:opts]

    # Datastore info comes in a pair (SYS, IMG)
    pair     = selected[:ds]
    clusters = selected[:cluster]
    if opts && opts['selected_clusters']
        clusters = opts['selected_clusters'].each.map(&:to_i)
    end

    name = VCenterDriver::VcImporter.sanitize(
        selected[:simple_name]
    )

    res = { :id => [], :name => name }
    @info[:rollback] = []
    pair.each do |ds|
        create(ds[:one]) do |one_object, id|
            res[:id] << id

            add_clusters(id, clusters)

            inner.call(
                one_object,
                @vi_client.host_credentials(
                    @one_client
                )
            )
        end
    end

    res
end
remove_default(id) click to toggle source
# File lib/datastore.rb, line 924
def remove_default(id)
    cid = 0
    @info[:clusters][cid] ||= VCenterDriver::VIHelper
                              .one_item(
                                  OpenNebula::Cluster,
                                  cid.to_s,
                                  false
                              )
    @info[:clusters][cid].deldatastore(id.to_i)
end