Class: VSphereCloud::Resources::Datastore

Inherits:
Object
  • Object
show all
Includes:
VimSdk
Defined in:
lib/cloud/vsphere/resources/datastore.rb

Constant Summary collapse

PROPERTIES =
%w(summary.freeSpace summary.capacity name)

Constants included from VimSdk

VimSdk::BASE_VERSION, VimSdk::DYNAMIC_TYPES, VimSdk::SOAP_BODY_END, VimSdk::SOAP_BODY_START, VimSdk::SOAP_BODY_TAG, VimSdk::SOAP_END, VimSdk::SOAP_ENVELOPE_END, VimSdk::SOAP_ENVELOPE_START, VimSdk::SOAP_ENVELOPE_TAG, VimSdk::SOAP_FAULT_TAG, VimSdk::SOAP_HEADER_END, VimSdk::SOAP_HEADER_START, VimSdk::SOAP_HEADER_TAG, VimSdk::SOAP_NAMESPACE_MAP, VimSdk::SOAP_START, VimSdk::VERSION1, VimSdk::XMLNS_SOAPENC, VimSdk::XMLNS_SOAPENV, VimSdk::XMLNS_VMODL_BASE, VimSdk::XMLNS_XSD, VimSdk::XMLNS_XSI, VimSdk::XML_ENCODING, VimSdk::XML_HEADER

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(name, mob, total_space, synced_free_space) ⇒ Datastore

Creates a Datastore resource from the prefetched vSphere properties.

Parameters:

  • properties (Hash)

    prefetched vSphere properties to build the model.



45
46
47
48
49
50
51
# File 'lib/cloud/vsphere/resources/datastore.rb', line 45

def initialize(name, mob, total_space, synced_free_space)
  @name = name
  @mob = mob
  @total_space = total_space
  @synced_free_space = synced_free_space
  @allocated_after_sync = 0
end

Instance Attribute Details

#allocated_after_syncInteger

Returns allocated space since vSphere fetch.

Returns:

  • (Integer)

    allocated space since vSphere fetch.



39
40
41
# File 'lib/cloud/vsphere/resources/datastore.rb', line 39

def allocated_after_sync
  @allocated_after_sync
end

#mobVim::Datastore

Returns datastore vSphere MOB.

Returns:

  • (Vim::Datastore)

    datastore vSphere MOB.



27
28
29
# File 'lib/cloud/vsphere/resources/datastore.rb', line 27

def mob
  @mob
end

#nameString

Returns datastore name.

Returns:

  • (String)

    datastore name.



23
24
25
# File 'lib/cloud/vsphere/resources/datastore.rb', line 23

def name
  @name
end

#synced_free_spaceInteger

Returns datastore free space when fetched from vSphere.

Returns:

  • (Integer)

    datastore free space when fetched from vSphere.



35
36
37
# File 'lib/cloud/vsphere/resources/datastore.rb', line 35

def synced_free_space
  @synced_free_space
end

#total_spaceInteger

Returns datastore capacity.

Returns:

  • (Integer)

    datastore capacity.



31
32
33
# File 'lib/cloud/vsphere/resources/datastore.rb', line 31

def total_space
  @total_space
end

Class Method Details

.build_from_client(client, datastore_properties) ⇒ Object



9
10
11
12
13
14
15
16
17
18
19
# File 'lib/cloud/vsphere/resources/datastore.rb', line 9

def self.build_from_client(client, datastore_properties)
  ds_properties_map = client.cloud_searcher.get_properties(datastore_properties, Vim::Datastore, Datastore::PROPERTIES)
  ds_properties_map.values.map do |ds_properties|
    Datastore.new(
      ds_properties['name'],
      ds_properties[:obj],
      ds_properties['summary.capacity'].to_i / BYTES_IN_MB,
      ds_properties['summary.freeSpace'].to_i / BYTES_IN_MB,
    )
  end
end

Instance Method Details

#allocate(space) ⇒ void

This method returns an undefined value.

Marks the disk space against the cached utilization data.

Parameters:

  • space (Integer)

    requested disk space.



62
63
64
# File 'lib/cloud/vsphere/resources/datastore.rb', line 62

def allocate(space)
  @allocated_after_sync += space
end

#free_spaceInteger

Returns free disk space available for allocation.

Returns:

  • (Integer)

    free disk space available for allocation



54
55
56
# File 'lib/cloud/vsphere/resources/datastore.rb', line 54

def free_space
  @synced_free_space - @allocated_after_sync
end

#inspectString

Returns debug datastore information.

Returns:

  • (String)

    debug datastore information.



67
68
69
# File 'lib/cloud/vsphere/resources/datastore.rb', line 67

def inspect
  "<Datastore: #@mob / #@name>"
end