From 35ba63757218e778b02e63e4a2beef7b1d3c00d4 Mon Sep 17 00:00:00 2001 From: Paulo Henrique Lopes Ribeiro Date: Mon, 7 Jul 2014 14:25:33 -0300 Subject: [PATCH] Defined association methods on Fog::Model to dry up models. --- lib/fog/compute/xen_server.rb | 8 ++ lib/fog/compute/xen_server/models.rb | 6 ++ lib/fog/compute/xen_server/models/blob.rb | 2 - lib/fog/compute/xen_server/models/bond.rb | 9 +-- lib/fog/compute/xen_server/models/console.rb | 12 +-- .../compute/xen_server/models/crash_dump.rb | 7 +- lib/fog/compute/xen_server/models/dr_task.rb | 5 +- .../compute/xen_server/models/gpu_group.rb | 7 +- .../xen_server/models/guest_metrics.rb | 2 - .../xen_server/models/guests_metrics.rb | 26 +++++++ lib/fog/compute/xen_server/models/host.rb | 53 +++---------- lib/fog/compute/xen_server/models/host_cpu.rb | 7 +- .../compute/xen_server/models/host_cpus.rb | 26 +++++++ .../xen_server/models/host_crash_dump.rb | 5 +- .../compute/xen_server/models/host_metrics.rb | 2 - .../compute/xen_server/models/host_patch.rb | 7 +- .../xen_server/models/hosts_metrics.rb | 26 +++++++ lib/fog/compute/xen_server/models/network.rb | 29 +------ lib/fog/compute/xen_server/models/pbd.rb | 17 +---- lib/fog/compute/xen_server/models/pci.rb | 7 +- lib/fog/compute/xen_server/models/pgpu.rb | 9 +-- lib/fog/compute/xen_server/models/pif.rb | 27 +++---- .../compute/xen_server/models/pif_metrics.rb | 2 - lib/fog/compute/xen_server/models/pool.rb | 29 ++----- .../compute/xen_server/models/pool_patch.rb | 5 +- lib/fog/compute/xen_server/models/role.rb | 5 +- lib/fog/compute/xen_server/models/server.rb | 70 +++++------------ .../xen_server/models/server_appliance.rb | 5 +- .../xen_server/models/server_metrics.rb | 27 +++++++ .../xen_server/models/servers_metrics.rb | 26 +++++++ .../xen_server/models/storage_manager.rb | 2 - .../xen_server/models/storage_repository.rb | 13 +--- lib/fog/compute/xen_server/models/tunnel.rb | 7 +- lib/fog/compute/xen_server/models/vbd.rb | 34 +-------- .../compute/xen_server/models/vbd_metrics.rb | 2 - .../compute/xen_server/models/vbds_metrics.rb | 26 +++++++ lib/fog/compute/xen_server/models/vdi.rb | 45 +++-------- lib/fog/compute/xen_server/models/vif.rb | 19 ++--- .../compute/xen_server/models/vif_metrics.rb | 20 +++++ .../compute/xen_server/models/vifs_metrics.rb | 26 +++++++ lib/fog/compute/xen_server/models/vlan.rb | 21 +----- lib/fog/compute/xen_server/models/vmpp.rb | 5 +- lib/fog/compute/xen_server/models/vtpm.rb | 7 +- lib/fog/model.rb | 27 +++++++ lib/fog/xenserver.rb | 1 + .../compute/xen_server/models/bond_test.rb | 9 ++- .../compute/xen_server/models/console_test.rb | 5 +- .../xen_server/models/crash_dump_test.rb | 8 +- .../compute/xen_server/models/dr_task_test.rb | 9 ++- .../xen_server/models/gpu_group_test.rb | 8 +- .../xen_server/models/host_cpu_test.rb | 4 +- .../xen_server/models/host_crash_dump_test.rb | 4 +- .../xen_server/models/host_patch_test.rb | 6 +- .../compute/xen_server/models/host_test.rb | 32 ++++---- .../compute/xen_server/models/network_test.rb | 10 ++- .../fog/compute/xen_server/models/pbd_test.rb | 11 +-- .../fog/compute/xen_server/models/pci_test.rb | 6 +- .../compute/xen_server/models/pgpu_test.rb | 12 +-- .../fog/compute/xen_server/models/pif_test.rb | 37 +++++---- .../xen_server/models/pool_patch_test.rb | 4 +- .../compute/xen_server/models/pool_test.rb | 28 ++++--- .../compute/xen_server/models/role_test.rb | 4 +- .../models/server_appliance_test.rb | 7 +- .../compute/xen_server/models/server_test.rb | 75 +++++++++++-------- .../models/storage_repository_test.rb | 16 ++-- .../compute/xen_server/models/tunnel_test.rb | 14 ++-- .../fog/compute/xen_server/models/vbd_test.rb | 16 ++-- .../fog/compute/xen_server/models/vdi_test.rb | 24 +++--- .../xen_server/models/vif_metrics_test.rb | 29 +++++++ .../fog/compute/xen_server/models/vif_test.rb | 11 +-- .../compute/xen_server/models/vlan_test.rb | 10 ++- .../compute/xen_server/models/vmpp_test.rb | 7 +- .../compute/xen_server/models/vtpm_test.rb | 2 +- test/minitest_helper.rb | 2 +- 74 files changed, 605 insertions(+), 528 deletions(-) create mode 100644 lib/fog/compute/xen_server/models/guests_metrics.rb create mode 100644 lib/fog/compute/xen_server/models/host_cpus.rb create mode 100644 lib/fog/compute/xen_server/models/hosts_metrics.rb create mode 100644 lib/fog/compute/xen_server/models/server_metrics.rb create mode 100644 lib/fog/compute/xen_server/models/servers_metrics.rb create mode 100644 lib/fog/compute/xen_server/models/vbds_metrics.rb create mode 100644 lib/fog/compute/xen_server/models/vif_metrics.rb create mode 100644 lib/fog/compute/xen_server/models/vifs_metrics.rb create mode 100644 lib/fog/model.rb create mode 100644 test/fog/compute/xen_server/models/vif_metrics_test.rb diff --git a/lib/fog/compute/xen_server.rb b/lib/fog/compute/xen_server.rb index 205187d..a8bfbee 100644 --- a/lib/fog/compute/xen_server.rb +++ b/lib/fog/compute/xen_server.rb @@ -69,9 +69,17 @@ class XenServer < Fog::Service collection :pbds model :pbd model :guest_metrics + collection :guests_metrics + model :server_metrics + collection :servers_metrics model :vbd_metrics + collection :vbds_metrics + model :vif_metrics + collection :vifs_metrics model :host_metrics + collection :hosts_metrics model :host_cpu + collection :host_cpus model :vlan collection :vlans model :console diff --git a/lib/fog/compute/xen_server/models.rb b/lib/fog/compute/xen_server/models.rb index f920f19..ac00371 100644 --- a/lib/fog/compute/xen_server/models.rb +++ b/lib/fog/compute/xen_server/models.rb @@ -17,12 +17,15 @@ module Models autoload :GuestMetrics, 'fog/compute/xen_server/models/guest_metrics' autoload :Host, 'fog/compute/xen_server/models/host' autoload :HostCpu, 'fog/compute/xen_server/models/host_cpu' + autoload :HostCpus, 'fog/compute/xen_server/models/host_cpus' autoload :HostCrashDump, 'fog/compute/xen_server/models/host_crash_dump' autoload :HostCrashDumps, 'fog/compute/xen_server/models/host_crash_dumps' autoload :HostMetrics, 'fog/compute/xen_server/models/host_metrics' autoload :HostPatch, 'fog/compute/xen_server/models/host_patch' autoload :HostPatchs, 'fog/compute/xen_server/models/host_patchs' autoload :Hosts, 'fog/compute/xen_server/models/hosts' + autoload :HostsMetrics, 'fog/compute/xen_server/models/hosts_metrics' + autoload :Model, 'fog/compute/xen_server/models/model' autoload :Network, 'fog/compute/xen_server/models/network' autoload :Networks, 'fog/compute/xen_server/models/networks' autoload :Pbd, 'fog/compute/xen_server/models/pbd' @@ -54,10 +57,13 @@ module Models autoload :Vbd, 'fog/compute/xen_server/models/vbd' autoload :VbdMetrics, 'fog/compute/xen_server/models/vbd_metrics' autoload :Vbds, 'fog/compute/xen_server/models/vbds' + autoload :VbdsMetrics, 'fog/compute/xen_server/models/vbds_metrics' autoload :Vdi, 'fog/compute/xen_server/models/vdi' autoload :Vdis, 'fog/compute/xen_server/models/vdis' autoload :Vif, 'fog/compute/xen_server/models/vif' + autoload :VifMetrics, 'fog/compute/xen_server/models/vif_metrics' autoload :Vifs, 'fog/compute/xen_server/models/vifs' + autoload :VifsMetrics, 'fog/compute/xen_server/models/vifs_metrics' autoload :Vlan, 'fog/compute/xen_server/models/vlan' autoload :Vlans, 'fog/compute/xen_server/models/vlans' autoload :Vmpp, 'fog/compute/xen_server/models/vmpp' diff --git a/lib/fog/compute/xen_server/models/blob.rb b/lib/fog/compute/xen_server/models/blob.rb index fd77adc..e6172ea 100644 --- a/lib/fog/compute/xen_server/models/blob.rb +++ b/lib/fog/compute/xen_server/models/blob.rb @@ -1,5 +1,3 @@ -require 'fog/core/model' - module Fog module Compute class XenServer diff --git a/lib/fog/compute/xen_server/models/bond.rb b/lib/fog/compute/xen_server/models/bond.rb index 4fe8cd2..8674f4b 100644 --- a/lib/fog/compute/xen_server/models/bond.rb +++ b/lib/fog/compute/xen_server/models/bond.rb @@ -1,5 +1,3 @@ -require 'fog/core/model' - module Fog module Compute class XenServer @@ -11,13 +9,14 @@ class Bond < Fog::Model identity :reference attribute :links_up - attribute :__master, :aliases => :master attribute :mode attribute :other_config - attribute :__primary_slave, :aliases => :primary_slave attribute :properties - attribute :__slaves, :aliases => :slaves attribute :uuid + + has_one :master, :pifs + has_one :primary_slave, :pifs + has_many :slaves, :pifs end end end diff --git a/lib/fog/compute/xen_server/models/console.rb b/lib/fog/compute/xen_server/models/console.rb index c680a93..8c2d4f7 100644 --- a/lib/fog/compute/xen_server/models/console.rb +++ b/lib/fog/compute/xen_server/models/console.rb @@ -1,5 +1,3 @@ -require 'fog/core/model' - module Fog module Compute class XenServer @@ -14,16 +12,8 @@ class Console < Fog::Model attribute :other_config attribute :protocol attribute :uuid - attribute :__vm, :aliases => :VM - def vm - begin - vm = service.servers.get __vm - rescue Fog::XenServer::RequestFailed => e - vm = nil - end - vm - end + has_one :vm, :servers, :aliases => :VM end end end diff --git a/lib/fog/compute/xen_server/models/crash_dump.rb b/lib/fog/compute/xen_server/models/crash_dump.rb index c6cae10..eeec066 100644 --- a/lib/fog/compute/xen_server/models/crash_dump.rb +++ b/lib/fog/compute/xen_server/models/crash_dump.rb @@ -1,5 +1,3 @@ -require 'fog/core/model' - module Fog module Compute class XenServer @@ -12,8 +10,9 @@ class CrashDump < Fog::Model attribute :other_config attribute :uuid - attribute :__vdi, :aliases => :VDI - attribute :__vm, :aliases => :VM + + has_one :vdi, :vdis, :aliases => :VDI + has_one :vm, :servers, :aliases => :VM end end end diff --git a/lib/fog/compute/xen_server/models/dr_task.rb b/lib/fog/compute/xen_server/models/dr_task.rb index 9ed83da..279e9d5 100644 --- a/lib/fog/compute/xen_server/models/dr_task.rb +++ b/lib/fog/compute/xen_server/models/dr_task.rb @@ -1,5 +1,3 @@ -require 'fog/core/model' - module Fog module Compute class XenServer @@ -10,8 +8,9 @@ class DrTask < Fog::Model identity :reference - attribute :__introduced_srs, :aliases => :introduced_SRs attribute :uuid + + has_many :introduced_srs, :storage_repositories, :aliases => :introduced_SRs end end end diff --git a/lib/fog/compute/xen_server/models/gpu_group.rb b/lib/fog/compute/xen_server/models/gpu_group.rb index 2a40512..d476783 100644 --- a/lib/fog/compute/xen_server/models/gpu_group.rb +++ b/lib/fog/compute/xen_server/models/gpu_group.rb @@ -1,5 +1,3 @@ -require 'fog/core/model' - module Fog module Compute class XenServer @@ -14,9 +12,10 @@ class GpuGroup < Fog::Model attribute :gpu_types, :aliases => :GPU_types attribute :name, :aliases => :name_label attribute :other_config - attribute :__pgpus, :aliases => :PGPUs attribute :uuid - attribute :__vgpus, :aliases => :VGPUs + + has_many :pgpus, :pgpus, :aliases => :PGPUs + has_many :vgpus, :vgpus, :aliases => :VGPUs end end end diff --git a/lib/fog/compute/xen_server/models/guest_metrics.rb b/lib/fog/compute/xen_server/models/guest_metrics.rb index a60a09c..32cbebb 100644 --- a/lib/fog/compute/xen_server/models/guest_metrics.rb +++ b/lib/fog/compute/xen_server/models/guest_metrics.rb @@ -1,5 +1,3 @@ -require 'fog/core/model' - module Fog module Compute class XenServer diff --git a/lib/fog/compute/xen_server/models/guests_metrics.rb b/lib/fog/compute/xen_server/models/guests_metrics.rb new file mode 100644 index 0000000..a85ee70 --- /dev/null +++ b/lib/fog/compute/xen_server/models/guests_metrics.rb @@ -0,0 +1,26 @@ +require 'fog/core/collection' + +module Fog + module Compute + class XenServer + module Models + class GuestMetrics < Fog::Collection + model Fog::Compute::XenServer::Models::GuestMetrics + + def all(options={}) + data = service.get_records 'VM_guest_metrics' + load(data) + end + + def get( guest_metrics_ref ) + if guest_metrics_ref && guest_metrics = service.get_record( guest_metrics_ref, 'VM_guest_metrics' ) + new(guest_metrics) + else + nil + end + end + end + end + end + end +end \ No newline at end of file diff --git a/lib/fog/compute/xen_server/models/host.rb b/lib/fog/compute/xen_server/models/host.rb index 3d345a8..cbddb48 100644 --- a/lib/fog/compute/xen_server/models/host.rb +++ b/lib/fog/compute/xen_server/models/host.rb @@ -1,5 +1,3 @@ -require 'fog/core/model' - module Fog module Compute class XenServer @@ -22,8 +20,6 @@ class Host < Fog::Model attribute :chipset_info attribute :cpu_configuration attribute :cpu_info - attribute :__crashdumps, :aliases => :crashdumps - attribute :__crash_dump_sr, :aliases => :crash_dump_sr attribute :current_operations attribute :description, :aliases => :name_description attribute :edition @@ -35,23 +31,15 @@ class Host < Fog::Model attribute :ha_network_peers attribute :ha_statefiles attribute :hostname - attribute :__host_cpus, :aliases => :host_CPUs attribute :license_params attribute :license_server - attribute :__local_cache_sr, :aliases => :local_cache_sr attribute :logging attribute :memory_overhead - attribute :__metrics, :aliases => :metrics attribute :name, :aliases => :name_label attribute :other_config attribute :patches - attribute :__pbds, :aliases => :PBDs - attribute :__pcis, :aliases => :PCIs - attribute :__pgpus, :aliases => :PGPUs - attribute :__pifs, :aliases => :PIFs attribute :power_on_config attribute :power_on_mode - attribute :__resident_vms, :aliases => :resident_VMs attribute :sched_policy attribute :software_version attribute :supported_bootloaders @@ -59,37 +47,18 @@ class Host < Fog::Model attribute :tags attribute :uuid - def pifs - __pifs.collect { |pif| service.pifs.get pif } - end - - def pbds - __pbds.collect { |pbd| service.pbds.get pbd } - end - - def resident_servers - __resident_vms.collect { |ref| service.servers.get ref } - end + has_many :crashdumps, :crash_dumps + has_one :crash_dump_sr, :storage_repositories + has_many :host_cpus, :host_cpus, :aliases => :host_CPUs + has_one :local_cache_sr,:storage_repositories + has_one :metrics, :hosts_metrics + has_many :pbds, :pbds, :aliases => :PBDs + has_many :pcis, :pcis, :aliases => :PCIs + has_many :pgpus, :pgpus, :aliases => :PGPUs + has_many :pifs, :pifs, :aliases => :PIFs + has_many :resident_vms, :servers, :aliases => :resident_VMs - def resident_vms - resident_servers - end - - def host_cpus - cpus = [] - (__host_cpus || []).each do |ref| - cpu_ref = service.get_record(ref, 'host_cpu' ) - cpu_ref[:service] = service - cpus << Fog::Compute::XenServer::HostCpu.new(cpu_ref) - end - cpus - end - - def metrics - return nil unless __metrics - rec = service.get_record(__metrics, 'host_metrics' ) - Fog::Compute::XenServer::HostMetrics.new(rec) - end + alias_method :resident_servers, :resident_vms # # Reboot the host disabling it first unless auto_disable is diff --git a/lib/fog/compute/xen_server/models/host_cpu.rb b/lib/fog/compute/xen_server/models/host_cpu.rb index 3954f67..77ff0f7 100644 --- a/lib/fog/compute/xen_server/models/host_cpu.rb +++ b/lib/fog/compute/xen_server/models/host_cpu.rb @@ -1,5 +1,3 @@ -require 'fog/core/model' - module Fog module Compute class XenServer @@ -13,7 +11,6 @@ class HostCpu < Fog::Model attribute :family attribute :features attribute :flags - attribute :__host, :aliases => :host attribute :model attribute :model_name, :aliases => :modelname attribute :number @@ -24,9 +21,7 @@ class HostCpu < Fog::Model attribute :uuid attribute :vendor - def host - service.hosts.get __host - end + has_one :host, :hosts end end end diff --git a/lib/fog/compute/xen_server/models/host_cpus.rb b/lib/fog/compute/xen_server/models/host_cpus.rb new file mode 100644 index 0000000..264c788 --- /dev/null +++ b/lib/fog/compute/xen_server/models/host_cpus.rb @@ -0,0 +1,26 @@ +require 'fog/core/collection' + +module Fog + module Compute + class XenServer + module Models + class HostCpus < Fog::Collection + model Fog::Compute::XenServer::Models::HostCpu + + def all(options={}) + data = service.get_records 'host_cpu' + load(data) + end + + def get( host_cpu_ref ) + if host_cpu_ref && host_cpu = service.get_record( host_cpu_ref, 'host_cpu' ) + new(host_cpu) + else + nil + end + end + end + end + end + end +end \ No newline at end of file diff --git a/lib/fog/compute/xen_server/models/host_crash_dump.rb b/lib/fog/compute/xen_server/models/host_crash_dump.rb index a9f78ba..899b28a 100644 --- a/lib/fog/compute/xen_server/models/host_crash_dump.rb +++ b/lib/fog/compute/xen_server/models/host_crash_dump.rb @@ -1,5 +1,3 @@ -require 'fog/core/model' - module Fog module Compute class XenServer @@ -10,11 +8,12 @@ class HostCrashDump < Fog::Model identity :reference - attribute :__host, :aliases => :host attribute :other_config attribute :size attribute :timestamp attribute :uuid + + has_one :host, :hosts end end end diff --git a/lib/fog/compute/xen_server/models/host_metrics.rb b/lib/fog/compute/xen_server/models/host_metrics.rb index 36ff071..65b17b6 100644 --- a/lib/fog/compute/xen_server/models/host_metrics.rb +++ b/lib/fog/compute/xen_server/models/host_metrics.rb @@ -1,5 +1,3 @@ -require 'fog/core/model' - module Fog module Compute class XenServer diff --git a/lib/fog/compute/xen_server/models/host_patch.rb b/lib/fog/compute/xen_server/models/host_patch.rb index 7fb71ef..37d23ad 100644 --- a/lib/fog/compute/xen_server/models/host_patch.rb +++ b/lib/fog/compute/xen_server/models/host_patch.rb @@ -1,5 +1,3 @@ -require 'fog/core/model' - module Fog module Compute class XenServer @@ -12,14 +10,15 @@ class HostPatch < Fog::Model attribute :applied attribute :description, :aliases => :name_description - attribute :__host, :aliases => :host attribute :name, :aliases => :name_label attribute :other_config - attribute :__pool_patch, :aliases => :pool_patch attribute :size attribute :timestamp_applied attribute :uuid attribute :version + + has_one :host, :hosts + has_one :pool_patch, :pool_patchs end end end diff --git a/lib/fog/compute/xen_server/models/hosts_metrics.rb b/lib/fog/compute/xen_server/models/hosts_metrics.rb new file mode 100644 index 0000000..149308d --- /dev/null +++ b/lib/fog/compute/xen_server/models/hosts_metrics.rb @@ -0,0 +1,26 @@ +require 'fog/core/collection' + +module Fog + module Compute + class XenServer + module Models + class HostsMetrics < Fog::Collection + model Fog::Compute::XenServer::Models::HostMetrics + + def all(options={}) + data = service.get_records 'host_metrics' + load(data) + end + + def get( host_metrics_ref ) + if host_metrics_ref && host_metrics = service.get_record( host_metrics_ref, 'host_metrics' ) + new(host_metrics) + else + nil + end + end + end + end + end + end +end \ No newline at end of file diff --git a/lib/fog/compute/xen_server/models/network.rb b/lib/fog/compute/xen_server/models/network.rb index 7b66792..a374dea 100644 --- a/lib/fog/compute/xen_server/models/network.rb +++ b/lib/fog/compute/xen_server/models/network.rb @@ -1,5 +1,3 @@ -require 'fog/core/model' - module Fog module Compute class XenServer @@ -19,10 +17,11 @@ class Network < Fog::Model attribute :mtu, :aliases => :MTU attribute :name, :aliases => :name_label attribute :other_config - attribute :__pifs, :aliases => :PIFs attribute :tags attribute :uuid - attribute :__vifs, :aliases => :VIFs + + has_many :pifs, :pifs, :aliases => :PIFs + has_many :vifs, :vifs, :aliases => :VIFs def refresh data = service.get_record( reference, 'network' ) @@ -30,28 +29,6 @@ def refresh true end - # - # Return the list of network related PIFs - # - def pifs - p = [] - __pifs.each do |pif| - p << service.pifs.get(pif) - end - p - end - - # - # Return the list of network related VIFs - # - def vifs - v = [] - __vifs.each do |vif| - v << service.vifs.get(vif) - end - v - end - # Creates a new network # # service = Fog::Compute[:xenserver] diff --git a/lib/fog/compute/xen_server/models/pbd.rb b/lib/fog/compute/xen_server/models/pbd.rb index 0309305..cb6a2c9 100644 --- a/lib/fog/compute/xen_server/models/pbd.rb +++ b/lib/fog/compute/xen_server/models/pbd.rb @@ -1,5 +1,3 @@ -require 'fog/core/model' - module Fog module Compute class XenServer @@ -12,22 +10,13 @@ class Pbd < Fog::Model attribute :currently_attached attribute :device_config - attribute :__host, :aliases => :host attribute :other_config - attribute :__sr, :aliases => :SR attribute :uuid - def sr - service.storage_repositories.get __sr - end + has_one :host, :hosts + has_one :sr, :storage_repositories, :aliases => :SR - def storage_repository - sr - end - - def host - service.hosts.get __host - end + alias_method :storage_repository, :sr def unplug service.unplug_pbd reference diff --git a/lib/fog/compute/xen_server/models/pci.rb b/lib/fog/compute/xen_server/models/pci.rb index 70c60a8..2dfb3bf 100644 --- a/lib/fog/compute/xen_server/models/pci.rb +++ b/lib/fog/compute/xen_server/models/pci.rb @@ -1,5 +1,3 @@ -require 'fog/core/model' - module Fog module Compute class XenServer @@ -10,13 +8,14 @@ class Pci < Fog::Model identity :reference - attribute :__dependencies, :aliases => :dependencies attribute :device_name - attribute :__host, :aliases => :host attribute :other_config attribute :pci_id attribute :uuid attribute :vendor_name + + has_many :dependencies, :pcis + has_one :host, :hosts end end end diff --git a/lib/fog/compute/xen_server/models/pgpu.rb b/lib/fog/compute/xen_server/models/pgpu.rb index 9dc949f..c11b506 100644 --- a/lib/fog/compute/xen_server/models/pgpu.rb +++ b/lib/fog/compute/xen_server/models/pgpu.rb @@ -1,5 +1,3 @@ -require 'fog/core/model' - module Fog module Compute class XenServer @@ -10,11 +8,12 @@ class Pgpu < Fog::Model identity :reference - attribute :__gpu_group, :aliases => :GPU_group - attribute :__host, :aliases => :host attribute :other_config - attribute :__pci, :aliases => :PCI attribute :uuid + + has_one :gpu_group, :gpu_groups, :aliases => :GPU_group + has_one :host, :hosts + has_one :pci, :pcis, :aliases => :PCI end end end diff --git a/lib/fog/compute/xen_server/models/pif.rb b/lib/fog/compute/xen_server/models/pif.rb index 27c192b..20fc503 100644 --- a/lib/fog/compute/xen_server/models/pif.rb +++ b/lib/fog/compute/xen_server/models/pif.rb @@ -1,5 +1,3 @@ -require 'fog/core/model' - module Fog module Compute class XenServer @@ -10,15 +8,12 @@ class Pif < Fog::Model identity :reference - attribute :__bond_master_of, :aliases => :bond_master_of - attribute :__bond_slave_of, :aliases => :bond_slave_of attribute :disallow_unplug attribute :currently_attached attribute :device attribute :device_name attribute :dns, :aliases => :DNS attribute :gateway - attribute :__host, :aliases => :host attribute :ip, :aliases => :IP attribute :ip_configuration_mode attribute :ipv6, :aliases => :IPv6 @@ -26,29 +21,25 @@ class Pif < Fog::Model attribute :ipv6_gateway attribute :mac, :aliases => :MAC attribute :management - attribute :metrics attribute :mtu, :aliases => :MTU attribute :netmask - attribute :__network, :aliases => :network attribute :other_config attribute :physical attribute :primary_address_type attribute :status_code attribute :status_detail - attribute :__tunnel_access_pif_of, :aliases => :tunnel_access_PIF_of - attribute :__tunnel_transport_pif_of, :aliases => :tunnel_transport_PIF_of attribute :vlan, :aliases => :VLAN - attribute :vlan_master_of, :aliases => :VLAN_master_of - attribute :vlan_slave_of, :aliases => :VLAN_slave_of attribute :uuid - def network - service.networks.get __network - end - - def host - service.hosts.get __host - end + has_one :bond_master_of, :bonds + has_one :bond_slave_of, :bonds + has_one :host, :hosts + has_one :metrics, :pif_metrics + has_one :network, :networks + has_one :tunnel_access_pif_of, :tunnels, :aliases => :tunnel_access_PIF_of + has_one :tunnel_transport_pif_of, :tunnels, :aliases => :tunnel_transport_PIF_of + has_one :vlan_master_of, :vlans, :aliases => :VLAN_master_of + has_one :vlan_slave_of, :vlans, :aliases => :VLAN_slave_of end end end diff --git a/lib/fog/compute/xen_server/models/pif_metrics.rb b/lib/fog/compute/xen_server/models/pif_metrics.rb index 063fe7b..64e01b4 100644 --- a/lib/fog/compute/xen_server/models/pif_metrics.rb +++ b/lib/fog/compute/xen_server/models/pif_metrics.rb @@ -1,5 +1,3 @@ -require 'fog/core/model' - module Fog module Compute class XenServer diff --git a/lib/fog/compute/xen_server/models/pool.rb b/lib/fog/compute/xen_server/models/pool.rb index b050ae3..9689264 100644 --- a/lib/fog/compute/xen_server/models/pool.rb +++ b/lib/fog/compute/xen_server/models/pool.rb @@ -1,5 +1,3 @@ -require 'fog/core/model' - module Fog module Compute class XenServer @@ -11,8 +9,6 @@ class Pool < Fog::Model identity :reference attribute :blobs - attribute :__crash_dump_sr, :aliases => :crash_dump_SR - attribute :__default_sr, :aliases => :default_SR attribute :description, :aliases => :name_description attribute :gui_config attribute :ha_allow_overcommit @@ -22,14 +18,11 @@ class Pool < Fog::Model attribute :ha_overcommitted attribute :ha_plan_exists_for attribute :ha_statefiles - attribute :__master, :aliases => :master - attribute :__metadata_vdis, :aliases => :metadata_VDIs attribute :name, :aliases => :name_label attribute :other_config attribute :redo_log_enabled attribute :redo_log_vdi attribute :restrictions - attribute :__suspend_image_sr, :aliases => :suspend_image_SR attribute :tags attribute :uuid attribute :vswitch_controller @@ -38,31 +31,23 @@ class Pool < Fog::Model attribute :wlb_username attribute :wlb_verify_cert - def default_sr - service.storage_repositories.get __default_sr - end + has_one :crash_dump_sr, :storage_repositories, :aliases => :crash_dump_SR + has_one :default_sr, :storage_repositories, :aliases => :default_SR + has_one :master, :hosts + has_many :metadata_vdis, :vdis, :aliases => :metadata_VDIs + has_one :suspend_image_sr, :storage_repositories, :aliases => :suspend_image_SR + + alias_method :default_storage_repository, :default_sr def default_sr=(sr) service.set_attribute( 'pool', reference, 'default_SR', sr.reference ) end alias :default_storage_repository= :default_sr= - def default_storage_repository - default_sr - end - def suspend_image_sr=(sr) service.set_attribute( 'pool', reference, 'suspend_image_SR', sr.reference ) end - def suspend_image_sr - service.storage_repositories.get __suspend_image_sr - end - - def master - service.hosts.get __master - end - def set_attribute(name, *val) data = service.set_attribute( 'pool', reference, name, *val ) # Do not reload automatically for performance reasons diff --git a/lib/fog/compute/xen_server/models/pool_patch.rb b/lib/fog/compute/xen_server/models/pool_patch.rb index c739cdb..a805bbf 100644 --- a/lib/fog/compute/xen_server/models/pool_patch.rb +++ b/lib/fog/compute/xen_server/models/pool_patch.rb @@ -1,5 +1,3 @@ -require 'fog/core/model' - module Fog module Compute class XenServer @@ -12,13 +10,14 @@ class PoolPatch < Fog::Model attribute :after_apply_guidance attribute :description, :aliases => :name_description - attribute :__host_patches, :aliases => :host_patches attribute :name, :aliases => :name_label attribute :other_config attribute :pool_applied attribute :size attribute :uuid attribute :version + + has_many :host_patches, :host_patchs end end end diff --git a/lib/fog/compute/xen_server/models/role.rb b/lib/fog/compute/xen_server/models/role.rb index 0819b5c..f0485fc 100644 --- a/lib/fog/compute/xen_server/models/role.rb +++ b/lib/fog/compute/xen_server/models/role.rb @@ -1,5 +1,3 @@ -require 'fog/core/model' - module Fog module Compute class XenServer @@ -12,8 +10,9 @@ class Role < Fog::Model attribute :description, :aliases => :name_description attribute :name, :aliases => :name_label - attribute :__subroles, :aliases => :subroles attribute :uuid + + has_many :subroles, :roles end end end diff --git a/lib/fog/compute/xen_server/models/server.rb b/lib/fog/compute/xen_server/models/server.rb index 6ba8fe8..dad89f4 100644 --- a/lib/fog/compute/xen_server/models/server.rb +++ b/lib/fog/compute/xen_server/models/server.rb @@ -13,21 +13,15 @@ class Server < Fog::Compute::Server attribute :actions_after_crash attribute :actions_after_reboot attribute :actions_after_shutdown - attribute :__attached_pcis, :aliases => :attached_PCIs - attribute :__affinity, :aliases => :affinity attribute :allowed_operations attribute :blobs attribute :blocked_operations attribute :bios_strings - attribute :__children, :aliases => :children - attribute :__consoles, :aliases => :consoles - attribute :__crash_dumps, :aliases => :crash_dumps attribute :current_operations attribute :domarch attribute :domid attribute :description, :aliases => :name_description attribute :generation_id - attribute :__guest_metrics, :aliases => :guest_metrics attribute :ha_always_run attribute :ha_restart_priority attribute :hvm_boot_params, :aliases => :HVM_boot_params @@ -45,15 +39,12 @@ class Server < Fog::Compute::Server attribute :memory_static_max attribute :memory_static_min attribute :memory_target - attribute :__metrics, :aliases => :metrics attribute :name, :aliases => :name_label attribute :order attribute :other_config - attribute :__parent, :aliases => :parent attribute :pci_bus, :aliases => :PCI_bus attribute :platform attribute :power_state - attribute :protection_policy attribute :pv_args, :aliases => :PV_args attribute :pv_bootloader, :aliases => :PV_bootloader attribute :pv_bootloader_args, :aliases => :PV_bootloader_args @@ -61,42 +52,41 @@ class Server < Fog::Compute::Server attribute :pv_legacy_args, :aliases => :PV_legacy_args attribute :pv_ramdisk, :aliases => :PV_ramdisk attribute :recommendations - attribute :__resident_on, :aliases => :resident_on attribute :shutdown_delay - attribute :snapshots attribute :snapshot_info attribute :snapshot_metadata - attribute :__snapshot_of, :aliases => :snapshot_of attribute :snapshot_time attribute :start_delay - attribute :__suspend_sr, :aliases => :suspend_sr - attribute :__suspend_vdi, :aliases => :suspend_VDI attribute :tags attribute :template_name attribute :transportable_snapshot_id attribute :user_version attribute :uuid - attribute :__vbds, :aliases => :VBDs attribute :vcpus_at_startup, :aliases => :VCPUs_at_startup attribute :vcpus_max, :aliases => :VCPUs_max attribute :vcpus_params, :aliases => :VCPUs_params attribute :version - attribute :__vifs, :aliases => :VIFs - attribute :__vgpus, :aliases => :VGPUs - attribute :__vtpms, :aliases => :VTPMs attribute :xenstore_data - def vbds - __vbds.collect {|vbd| service.vbds.get vbd } - end - - def affinity - service.hosts.get __affinity - end - - def consoles - __consoles.collect {|console| service.consoles.get console } - end + has_one :affinity, :hosts + has_one :appliance, :server_appliances + has_many :attached_pcis, :pcis, :aliases => :attached_PCIs + has_many :children, :servers + has_many :consoles, :consoles + has_many :crash_dumps, :crash_dumps + has_one :guest_metrics, :guests_metrics + has_one :metrics, :servers_metrics + has_one :parent, :servers + has_one :protection_policy, :vmpps + has_one :resident_on, :hosts + has_many :snapshots, :servers + has_one :snapshot_of, :servers + has_one :suspend_sr, :storage_repositories, :aliases => :suspend_SR + has_one :suspend_vdi, :vdis, :aliases => :suspend_VDI + has_many :vbds, :vbds, :aliases => :VBDs + has_many :vgpus, :vgpus, :aliases => :VGPUs + has_many :vifs, :vifs, :aliases => :VIFs + has_many :vtpms, :vtpms, :aliases => :VTPMs def destroy # Make sure it's halted @@ -127,28 +117,6 @@ def refresh true end - def vifs - __vifs.collect { |vif| service.vifs.get vif } - end - - # associations - def networks - vifs.collect { |v| v.network } - end - - def resident_on - service.hosts.get __resident_on - end - - # - # This is not always present in XenServer VMs - # Guest needs XenTools installed to report this AFAIK - def guest_metrics - return nil unless __guest_metrics - rec = service.get_record( __guest_metrics, 'VM_guest_metrics' ) - Fog::Compute::XenServer::GuestMetrics.new(rec) - end - def tools_installed? !guest_metrics.nil? end diff --git a/lib/fog/compute/xen_server/models/server_appliance.rb b/lib/fog/compute/xen_server/models/server_appliance.rb index 25cb67d..24ce4ba 100644 --- a/lib/fog/compute/xen_server/models/server_appliance.rb +++ b/lib/fog/compute/xen_server/models/server_appliance.rb @@ -1,5 +1,3 @@ -require 'fog/core/model' - module Fog module Compute class XenServer @@ -15,7 +13,8 @@ class ServerAppliance < Fog::Model attribute :description, :aliases => :name_description attribute :name, :aliases => :name_label attribute :uuid - attribute :__vms, :aliases => :VMs + + has_many :vms, :servers, :aliases => :VMs end end end diff --git a/lib/fog/compute/xen_server/models/server_metrics.rb b/lib/fog/compute/xen_server/models/server_metrics.rb new file mode 100644 index 0000000..c7cd91a --- /dev/null +++ b/lib/fog/compute/xen_server/models/server_metrics.rb @@ -0,0 +1,27 @@ +module Fog + module Compute + class XenServer + module Models + class ServerMetrics < Fog::Model + # API Reference here: + # http://docs.vmd.citrix.com/XenServer/6.2.0/1.0/en_gb/api/?c=VM_metrics + + identity :reference + + attribute :install_time + attribute :last_updated + attribute :memory_actual + attribute :other_config + attribute :start_time + attribute :state + attribute :uuid + attribute :vcpus_cpu, :aliases => :VCPUs_CPU + attribute :vcpus_flags, :aliases => :VCPUs_flags + attribute :vcpus_number, :aliases => :VCPUs_number + attribute :vcpus_params, :aliases => :VCPUs_params + attribute :vcpus_utilisation, :aliases => :VCPUs_utilisation + end + end + end + end +end \ No newline at end of file diff --git a/lib/fog/compute/xen_server/models/servers_metrics.rb b/lib/fog/compute/xen_server/models/servers_metrics.rb new file mode 100644 index 0000000..e168949 --- /dev/null +++ b/lib/fog/compute/xen_server/models/servers_metrics.rb @@ -0,0 +1,26 @@ +require 'fog/core/collection' + +module Fog + module Compute + class XenServer + module Model + class ServersMetrics < Fog::Collection + model Fog::Compute::XenServer::Models::ServerMetrics + + def all(options={}) + data = service.get_records 'VM_metrics' + load(data) + end + + def get( vm_metrics ) + if vm_metrics_ref && vm_metrics = service.get_record( vm_metrics_ref, 'VM_metrics' ) + new(vm_metrics) + else + nil + end + end + end + end + end + end +end \ No newline at end of file diff --git a/lib/fog/compute/xen_server/models/storage_manager.rb b/lib/fog/compute/xen_server/models/storage_manager.rb index 27386ad..0a165f7 100644 --- a/lib/fog/compute/xen_server/models/storage_manager.rb +++ b/lib/fog/compute/xen_server/models/storage_manager.rb @@ -1,5 +1,3 @@ -require 'fog/core/model' - module Fog module Compute class XenServer diff --git a/lib/fog/compute/xen_server/models/storage_repository.rb b/lib/fog/compute/xen_server/models/storage_repository.rb index 832dbe2..ecc9235 100644 --- a/lib/fog/compute/xen_server/models/storage_repository.rb +++ b/lib/fog/compute/xen_server/models/storage_repository.rb @@ -1,5 +1,3 @@ -require 'fog/core/model' - module Fog module Compute class XenServer @@ -19,7 +17,6 @@ class StorageRepository < Fog::Model attribute :local_cache_enabled attribute :name, :aliases => :name_label attribute :other_config - attribute :__pbds, :aliases => :PBDs attribute :physical_size attribute :physical_utilisation attribute :shared @@ -27,16 +24,10 @@ class StorageRepository < Fog::Model attribute :tags attribute :type attribute :uuid - attribute :__vdis, :aliases => :VDIs attribute :virtual_allocation - def vdis - __vdis.collect { |vdi| service.vdis.get vdi } - end - - def pbds - __pbds.collect { |pbd| service.pbds.get pbd } - end + has_many :pbds, :pbds, :aliases => :PBDs + has_many :vdis, :vdis, :aliases => :VDIs def scan service.scan_sr reference diff --git a/lib/fog/compute/xen_server/models/tunnel.rb b/lib/fog/compute/xen_server/models/tunnel.rb index d3b41f4..19b8df4 100644 --- a/lib/fog/compute/xen_server/models/tunnel.rb +++ b/lib/fog/compute/xen_server/models/tunnel.rb @@ -1,5 +1,3 @@ -require 'fog/core/model' - module Fog module Compute class XenServer @@ -10,11 +8,12 @@ class Tunnel < Fog::Model identity :reference - attribute :access_pif, :aliases => :access_PIF attribute :other_config attribute :status - attribute :transport_pif, :aliases => :transport_PIF attribute :uuid + + has_one :access_pif, :pifs, :aliases => :access_PIF + has_one :transport_pif, :pifs, :aliases => :transport_PIF end end end diff --git a/lib/fog/compute/xen_server/models/vbd.rb b/lib/fog/compute/xen_server/models/vbd.rb index 589bc1d..7034fe9 100644 --- a/lib/fog/compute/xen_server/models/vbd.rb +++ b/lib/fog/compute/xen_server/models/vbd.rb @@ -1,5 +1,3 @@ -require 'fog/core/model' - module Fog module Compute class XenServer @@ -16,7 +14,6 @@ class Vbd < Fog::Model attribute :current_operations attribute :device attribute :empty - attribute :__metrics, :aliases => :metrics attribute :mode attribute :other_config attribute :qos_supported_algorithms @@ -27,25 +24,15 @@ class Vbd < Fog::Model attribute :status_detail attribute :storage_lock attribute :type - attribute :__vdi, :aliases => :VDI - attribute :__vm, :aliases => :VM attribute :unpluggable attribute :userdevice attribute :uuid - # - # May return nil - # - def vdi - service.vdis.get __vdi - end + has_one :metrics, :vbds_metrics + has_one :vdi, :vdis, :aliases => :VDI + has_one :vm, :servers, :aliases => :VM - # - # TODO: May it return nil? - # - def server - service.servers.get __vm - end + alias_method :server, :vm def save requires :vdi, :server @@ -68,19 +55,6 @@ def eject def insert(vdi) service.insert_vbd reference, vdi.reference end - - # - # return nil if the VBD is not attached - # - # TODO: Confirm that the VBD_metrics handle is invalid - # when the VBD is NOT attached. I get a HANDLE_INVALID - # exception in that case. - # - def metrics - return nil unless currently_attached - rec = service.get_record( __metrics, 'VBD_metrics' ) - Fog::Compute::XenServer::VbdMetrics.new(rec) - end end end end diff --git a/lib/fog/compute/xen_server/models/vbd_metrics.rb b/lib/fog/compute/xen_server/models/vbd_metrics.rb index 64ecb91..be8cdde 100644 --- a/lib/fog/compute/xen_server/models/vbd_metrics.rb +++ b/lib/fog/compute/xen_server/models/vbd_metrics.rb @@ -1,5 +1,3 @@ -require 'fog/core/model' - module Fog module Compute class XenServer diff --git a/lib/fog/compute/xen_server/models/vbds_metrics.rb b/lib/fog/compute/xen_server/models/vbds_metrics.rb new file mode 100644 index 0000000..a3435c5 --- /dev/null +++ b/lib/fog/compute/xen_server/models/vbds_metrics.rb @@ -0,0 +1,26 @@ +require 'fog/core/collection' + +module Fog + module Compute + class XenServer + module Models + class VbdsMetrics < Fog::Collection + model Fog::Compute::XenServer::Models::VbdMetrics + + def all(options={}) + data = service.get_records 'VBD_metrics' + load(data) + end + + def get( vbd_metrics_ref ) + if vbd_metrics_ref && vbd_metrics = service.get_record( vbd_metrics_ref, 'VBD_metrics' ) + new(vbd_metrics) + else + nil + end + end + end + end + end + end +end \ No newline at end of file diff --git a/lib/fog/compute/xen_server/models/vdi.rb b/lib/fog/compute/xen_server/models/vdi.rb index 06f9e9f..22c9c04 100644 --- a/lib/fog/compute/xen_server/models/vdi.rb +++ b/lib/fog/compute/xen_server/models/vdi.rb @@ -1,5 +1,3 @@ -require 'fog/core/model' - module Fog module Compute class XenServer @@ -12,7 +10,6 @@ class Vdi < Fog::Model attribute :allowed_operations attribute :allow_caching - attribute :__crash_dumps, :aliases => :crash_dumps attribute :current_operations attribute :description, :aliases => :name_description attribute :is_a_snapshot @@ -24,23 +21,27 @@ class Vdi < Fog::Model attribute :name, :aliases => :name_label attribute :on_boot attribute :other_config - attribute :__parent, :aliases => :parent attribute :physical_utilisation attribute :read_only attribute :sharable attribute :sm_config - attribute :__snapshots, :aliases => :snapshots - attribute :__snapshot_of, :aliases => :snapshot_of attribute :snapshot_time - attribute :__sr, :aliases => :SR attribute :storage_lock attribute :tags attribute :type attribute :uuid - attribute :__vbds, :aliases => :VBDs attribute :virtual_size attribute :xenstore_data + has_many :crash_dumps, :crash_dumps + has_one :parent, :vdis + has_many :snapshots, :vdis + has_one :snapshot_of, :vdis + has_one :sr, :storage_repositories, :aliases => :SR + has_many :vbds, :vbds, :aliases => :VBDs + + alias_method :storage_repository, :sr + # # Default VDI type is system # Default size 8GB @@ -60,26 +61,6 @@ def set_attribute(name, *val) data = service.set_attribute( 'VDI', reference, name, *val ) end - def snapshot_of - service.vdis.get __sr - end - - def parent - service.vdis.get __parent - end - - def snapshots - __snapshots.collect do |ref| - service.vdis.get ref - end - end - - def vbds - __vbds.collect do |ref| - service.vbds.get ref - end - end - def save requires :name, :storage_repository ref = service.create_vdi attributes @@ -89,14 +70,6 @@ def save def destroy service.destroy_vdi reference end - - def storage_repository - service.storage_repositories.get __sr - end - - def sr - storage_repository - end end end end diff --git a/lib/fog/compute/xen_server/models/vif.rb b/lib/fog/compute/xen_server/models/vif.rb index 7851645..a4cf6d4 100644 --- a/lib/fog/compute/xen_server/models/vif.rb +++ b/lib/fog/compute/xen_server/models/vif.rb @@ -1,5 +1,3 @@ -require 'fog/core/model' - module Fog module Compute class XenServer @@ -19,9 +17,7 @@ class Vif < Fog::Model attribute :locking_mode attribute :mac, :aliases => :MAC attribute :mac_autogenerated, :aliases => :MAC_autogenerated - attribute :__metrics, :aliases => :metrics attribute :mtu, :aliases => :MTU - attribute :__network, :aliases => :network attribute :other_config attribute :qos_algorithm_params attribute :qos_algorithm_type @@ -30,18 +26,15 @@ class Vif < Fog::Model attribute :status_code attribute :status_detail attribute :uuid - attribute :__vm, :aliases => :VM - def destroy - service.destroy_vif reference - end + has_one :metrics, :vifs_metrics + has_one :network, :networks + has_one :vm, :servers, :aliases => :VM - def network - service.networks.get __network - end + alias_method :server, :vm - def server - service.servers.get __vm + def destroy + service.destroy_vif reference end def save diff --git a/lib/fog/compute/xen_server/models/vif_metrics.rb b/lib/fog/compute/xen_server/models/vif_metrics.rb new file mode 100644 index 0000000..fec0a85 --- /dev/null +++ b/lib/fog/compute/xen_server/models/vif_metrics.rb @@ -0,0 +1,20 @@ +module Fog + module Compute + class XenServer + module Models + class VifMetrics < Fog::Model + # API Reference here: + # http://docs.vmd.citrix.com/XenServer/6.2.0/1.0/en_gb/api/?c=VIF_metrics + + identity :reference + + attribute :io_read_kbs + attribute :io_write_kbs + attribute :last_updated + attribute :other_config + attribute :uuid + end + end + end + end +end \ No newline at end of file diff --git a/lib/fog/compute/xen_server/models/vifs_metrics.rb b/lib/fog/compute/xen_server/models/vifs_metrics.rb new file mode 100644 index 0000000..97c6415 --- /dev/null +++ b/lib/fog/compute/xen_server/models/vifs_metrics.rb @@ -0,0 +1,26 @@ +require 'fog/core/collection' + +module Fog + module Compute + class XenServer + module Models + class VifsMetrics < Fog::Collection + model Fog::Compute::XenServer::Models::VifMetrics + + def all(options={}) + data = service.get_records 'VIF_metrics' + load(data) + end + + def get( vif_metrics_ref ) + if vif_metrics_ref && vif_metrics = service.get_record( vif_metrics_ref, 'VIF_metrics' ) + new(vif_metrics) + else + nil + end + end + end + end + end + end +end \ No newline at end of file diff --git a/lib/fog/compute/xen_server/models/vlan.rb b/lib/fog/compute/xen_server/models/vlan.rb index c93d08a..8ac75f5 100644 --- a/lib/fog/compute/xen_server/models/vlan.rb +++ b/lib/fog/compute/xen_server/models/vlan.rb @@ -1,5 +1,3 @@ -require 'fog/core/model' - module Fog module Compute class XenServer @@ -12,25 +10,10 @@ class Vlan < Fog::Model attribute :other_config attribute :tag, :type => :integer - attribute :__tagged_pif, :aliases => :tagged_PIF - attribute :__untagged_pif, :aliases => :untagged_PIF attribute :uuid - # @return [Fog::Compute::XenServer::PIF] interface on which traffic is tagged - # - # @see http://docs.vmd.citrix.com/XenServer/6.1.0/1.0/en_gb/api/?c=VLAN - # - def untagged_pif - service.pifs.get __untagged_pif - end - - # @return [Fog::Compute::XenServer::PIF] interface on which traffic is untagged - # - # @see http://docs.vmd.citrix.com/XenServer/6.1.0/1.0/en_gb/api/?c=VLAN - # - def tagged_pif - service.pifs.get __tagged_pif - end + has_one :tagged_pif, :pifs, :aliases => :tagged_PIF + has_one :untagged_pif, :pifs, :aliases => :untagged_PIF # Creates a new VLAN. # diff --git a/lib/fog/compute/xen_server/models/vmpp.rb b/lib/fog/compute/xen_server/models/vmpp.rb index c09a800..800af6f 100644 --- a/lib/fog/compute/xen_server/models/vmpp.rb +++ b/lib/fog/compute/xen_server/models/vmpp.rb @@ -1,5 +1,3 @@ -require 'fog/core/model' - module Fog module Compute class XenServer @@ -29,7 +27,8 @@ class Vmpp < Fog::Model attribute :name, :aliases => :name_label attribute :recent_alerts attribute :uuid - attribute :__vms, :aliases => :VMs + + has_many :vms, :servers, :aliases => :VMs end end end diff --git a/lib/fog/compute/xen_server/models/vtpm.rb b/lib/fog/compute/xen_server/models/vtpm.rb index 4ac2f0e..a9a4d42 100644 --- a/lib/fog/compute/xen_server/models/vtpm.rb +++ b/lib/fog/compute/xen_server/models/vtpm.rb @@ -1,5 +1,3 @@ -require 'fog/core/model' - module Fog module Compute class XenServer @@ -10,9 +8,10 @@ class Vtpm < Fog::Model identity :reference - attribute :__backend, :aliases => :backend attribute :uuid - attribute :__vm, :aliases => :vm + + has_one :backend, :servers + has_one :vm, :servers end end end diff --git a/lib/fog/model.rb b/lib/fog/model.rb new file mode 100644 index 0000000..078f5cc --- /dev/null +++ b/lib/fog/model.rb @@ -0,0 +1,27 @@ +require 'fog/core/model' + +module Fog + class Model + def self.has_one(association, collection_name, options = {}) + options[:aliases] = Array(options[:aliases]) + options[:aliases] << association.to_sym + attribute("__#{association}".to_sym, options) + define_method(association) do + begin + service.send(collection_name).get(send("__#{association}")) + rescue Fog::XenServer::RequestFailed => e + nil + end + end + end + + def self.has_many(associations, collection_name, options = {}) + options[:aliases] = Array(options[:aliases]) + options[:aliases] << associations.to_sym + attribute("__#{associations}".to_sym, options) + define_method(associations) do + send("__#{associations}").collect { |association| service.send(collection_name).get(association) } + end + end + end +end \ No newline at end of file diff --git a/lib/fog/xenserver.rb b/lib/fog/xenserver.rb index 8b6fc86..177c875 100644 --- a/lib/fog/xenserver.rb +++ b/lib/fog/xenserver.rb @@ -1,6 +1,7 @@ require 'fog/core' require 'fog/xml' require 'fog/utilities' +require 'fog/model' module Fog module XenServer diff --git a/test/fog/compute/xen_server/models/bond_test.rb b/test/fog/compute/xen_server/models/bond_test.rb index 4ebcd47..7535446 100644 --- a/test/fog/compute/xen_server/models/bond_test.rb +++ b/test/fog/compute/xen_server/models/bond_test.rb @@ -14,15 +14,16 @@ def self.read_identity bond_class.read_identity.must_equal(:reference) end - it 'should have 6 attributes' do + it 'should have 9 attributes' do bond_class.attributes.must_equal([ :reference, :links_up, - :__master, :mode, :other_config, - :__primary_slave, :properties, - :__slaves, :uuid ]) + :uuid, + :__master, + :__primary_slave, + :__slaves ]) end it 'should have 3 aliases' do diff --git a/test/fog/compute/xen_server/models/console_test.rb b/test/fog/compute/xen_server/models/console_test.rb index b6df895..c84dcb0 100644 --- a/test/fog/compute/xen_server/models/console_test.rb +++ b/test/fog/compute/xen_server/models/console_test.rb @@ -23,7 +23,8 @@ def self.read_identity :__vm ]) end - it 'should have 1 alias' do - console_class.aliases.must_equal({ :VM => :__vm }) + it 'should have 2 aliases' do + console_class.aliases.must_equal({ :VM => :__vm, + :vm => :__vm }) end end \ No newline at end of file diff --git a/test/fog/compute/xen_server/models/crash_dump_test.rb b/test/fog/compute/xen_server/models/crash_dump_test.rb index 885c530..7105300 100644 --- a/test/fog/compute/xen_server/models/crash_dump_test.rb +++ b/test/fog/compute/xen_server/models/crash_dump_test.rb @@ -14,7 +14,7 @@ def self.read_identity crash_dump_class.read_identity.must_equal(:reference) end - it 'should have 6 attributes' do + it 'should have 5 attributes' do crash_dump_class.attributes.must_equal([ :reference, :other_config, :uuid, @@ -22,8 +22,10 @@ def self.read_identity :__vm ]) end - it 'should have 2 aliases' do + it 'should have 4 aliases' do crash_dump_class.aliases.must_equal({ :VDI => :__vdi, - :VM => :__vm }) + :vdi => :__vdi, + :VM => :__vm, + :vm => :__vm }) end end \ No newline at end of file diff --git a/test/fog/compute/xen_server/models/dr_task_test.rb b/test/fog/compute/xen_server/models/dr_task_test.rb index 8e40590..51b386f 100644 --- a/test/fog/compute/xen_server/models/dr_task_test.rb +++ b/test/fog/compute/xen_server/models/dr_task_test.rb @@ -16,11 +16,12 @@ def self.read_identity it 'should have 3 attributes' do dr_task_class.attributes.must_equal([ :reference, - :__introduced_srs, - :uuid ]) + :uuid, + :__introduced_srs ]) end - it 'should have 1 alias' do - dr_task_class.aliases.must_equal({ :introduced_SRs => :__introduced_srs }) + it 'should have 2 aliases' do + dr_task_class.aliases.must_equal({ :introduced_SRs => :__introduced_srs, + :introduced_srs => :__introduced_srs }) end end \ No newline at end of file diff --git a/test/fog/compute/xen_server/models/gpu_group_test.rb b/test/fog/compute/xen_server/models/gpu_group_test.rb index 4136c3b..5bdc1b6 100644 --- a/test/fog/compute/xen_server/models/gpu_group_test.rb +++ b/test/fog/compute/xen_server/models/gpu_group_test.rb @@ -20,16 +20,18 @@ def self.read_identity :gpu_types, :name, :other_config, - :__pgpus, :uuid, + :__pgpus, :__vgpus ]) end - it 'should have 5 aliases' do + it 'should have 7 aliases' do gpu_group_class.aliases.must_equal({ :GPU_types => :gpu_types, :name_description => :description, :name_label => :name, :PGPUs => :__pgpus, - :VGPUs => :__vgpus }) + :pgpus => :__pgpus, + :VGPUs => :__vgpus, + :vgpus => :__vgpus }) end end \ No newline at end of file diff --git a/test/fog/compute/xen_server/models/host_cpu_test.rb b/test/fog/compute/xen_server/models/host_cpu_test.rb index a76fbe6..93450ce 100644 --- a/test/fog/compute/xen_server/models/host_cpu_test.rb +++ b/test/fog/compute/xen_server/models/host_cpu_test.rb @@ -19,7 +19,6 @@ def self.read_identity :family, :features, :flags, - :__host, :model, :model_name, :number, @@ -28,7 +27,8 @@ def self.read_identity :stepping, :utilisation, :uuid, - :vendor ]) + :vendor, + :__host ]) end it 'should have 2 aliases' do diff --git a/test/fog/compute/xen_server/models/host_crash_dump_test.rb b/test/fog/compute/xen_server/models/host_crash_dump_test.rb index 0f28094..a808eb2 100644 --- a/test/fog/compute/xen_server/models/host_crash_dump_test.rb +++ b/test/fog/compute/xen_server/models/host_crash_dump_test.rb @@ -16,11 +16,11 @@ def self.read_identity it 'should have 6 attributes' do host_crash_dump_class.attributes.must_equal([ :reference, - :__host, :other_config, :size, :timestamp, - :uuid ]) + :uuid, + :__host ]) end it 'should have 1 alias' do diff --git a/test/fog/compute/xen_server/models/host_patch_test.rb b/test/fog/compute/xen_server/models/host_patch_test.rb index 348dfe1..350284f 100644 --- a/test/fog/compute/xen_server/models/host_patch_test.rb +++ b/test/fog/compute/xen_server/models/host_patch_test.rb @@ -18,14 +18,14 @@ def self.read_identity host_patch_class.attributes.must_equal([ :reference, :applied, :description, - :__host, :name, :other_config, - :__pool_patch, :size, :timestamp_applied, :uuid, - :version ]) + :version, + :__host, + :__pool_patch ]) end it 'should have 4 aliases' do diff --git a/test/fog/compute/xen_server/models/host_test.rb b/test/fog/compute/xen_server/models/host_test.rb index d97d058..fb76fc9 100644 --- a/test/fog/compute/xen_server/models/host_test.rb +++ b/test/fog/compute/xen_server/models/host_test.rb @@ -28,8 +28,6 @@ def self.read_identity :chipset_info, :cpu_configuration, :cpu_info, - :__crashdumps, - :__crash_dump_sr, :current_operations, :description, :edition, @@ -41,32 +39,34 @@ def self.read_identity :ha_network_peers, :ha_statefiles, :hostname, - :__host_cpus, :license_params, :license_server, - :__local_cache_sr, :logging, :memory_overhead, - :__metrics, :name, :other_config, :patches, - :__pbds, - :__pcis, - :__pgpus, - :__pifs, :power_on_config, :power_on_mode, - :__resident_vms, :sched_policy, :software_version, :supported_bootloaders, :suspend_image_sr, :tags, - :uuid ]) + :uuid, + :__crashdumps, + :__crash_dump_sr, + :__host_cpus, + :__local_cache_sr, + :__metrics, + :__pbds, + :__pcis, + :__pgpus, + :__pifs, + :__resident_vms ]) end - it 'should have 17 aliases' do + it 'should have 23 aliases' do host_class.aliases.must_equal({ :name_label => :name, :API_version_major => :api_version_major, :API_version_minor => :api_version_minor, @@ -79,10 +79,16 @@ def self.read_identity :metrics => :__metrics, :name_description => :description, :PBDs => :__pbds, + :pbds => :__pbds, :PCIs => :__pcis, + :pcis => :__pcis, :PGPUs => :__pgpus, + :pgpus => :__pgpus, :PIFs => :__pifs, + :pifs => :__pifs, :resident_VMs => :__resident_vms, - :host_CPUs => :__host_cpus }) + :resident_vms => :__resident_vms, + :host_CPUs => :__host_cpus, + :host_cpus => :__host_cpus }) end end \ No newline at end of file diff --git a/test/fog/compute/xen_server/models/network_test.rb b/test/fog/compute/xen_server/models/network_test.rb index bfbc6ea..0052d4d 100644 --- a/test/fog/compute/xen_server/models/network_test.rb +++ b/test/fog/compute/xen_server/models/network_test.rb @@ -25,17 +25,19 @@ def self.read_identity :mtu, :name, :other_config, - :__pifs, :tags, :uuid, + :__pifs, :__vifs ]) end - it 'should have 5 aliases' do + it 'should have 7 aliases' do network_class.aliases.must_equal({ :VIFs => :__vifs, + :vifs => :__vifs, :MTU => :mtu, :name_description => :description, - :name_label => :name, - :PIFs => :__pifs }) + :name_label => :name, + :PIFs => :__pifs, + :pifs => :__pifs }) end end \ No newline at end of file diff --git a/test/fog/compute/xen_server/models/pbd_test.rb b/test/fog/compute/xen_server/models/pbd_test.rb index c8f419d..32f374c 100644 --- a/test/fog/compute/xen_server/models/pbd_test.rb +++ b/test/fog/compute/xen_server/models/pbd_test.rb @@ -18,14 +18,15 @@ def self.read_identity pbd_class.attributes.must_equal([ :reference, :currently_attached, :device_config, - :__host, :other_config, - :__sr, - :uuid ]) + :uuid, + :__host, + :__sr ]) end - it 'should have 2 aliases' do + it 'should have 3 aliases' do pbd_class.aliases.must_equal({ :host => :__host, - :SR => :__sr }) + :SR => :__sr, + :sr => :__sr }) end end \ No newline at end of file diff --git a/test/fog/compute/xen_server/models/pci_test.rb b/test/fog/compute/xen_server/models/pci_test.rb index e20cae4..6043570 100644 --- a/test/fog/compute/xen_server/models/pci_test.rb +++ b/test/fog/compute/xen_server/models/pci_test.rb @@ -16,13 +16,13 @@ def self.read_identity it 'should have 8 attributes' do pci_class.attributes.must_equal([ :reference, - :__dependencies, :device_name, - :__host, :other_config, :pci_id, :uuid, - :vendor_name ]) + :vendor_name, + :__dependencies, + :__host ]) end it 'should have 2 aliases' do diff --git a/test/fog/compute/xen_server/models/pgpu_test.rb b/test/fog/compute/xen_server/models/pgpu_test.rb index cbbcbc6..970763f 100644 --- a/test/fog/compute/xen_server/models/pgpu_test.rb +++ b/test/fog/compute/xen_server/models/pgpu_test.rb @@ -16,16 +16,18 @@ def self.read_identity it 'should have 6 attributes' do pgpu_class.attributes.must_equal([ :reference, + :other_config, + :uuid, :__gpu_group, :__host, - :other_config, - :__pci, - :uuid ]) + :__pci ]) end - it 'should have 3 aliases' do + it 'should have 5 aliases' do pgpu_class.aliases.must_equal({ :GPU_group => :__gpu_group, + :gpu_group => :__gpu_group, :host => :__host, - :PCI => :__pci }) + :PCI => :__pci, + :pci => :__pci }) end end \ No newline at end of file diff --git a/test/fog/compute/xen_server/models/pif_test.rb b/test/fog/compute/xen_server/models/pif_test.rb index ea405c1..ad166ce 100644 --- a/test/fog/compute/xen_server/models/pif_test.rb +++ b/test/fog/compute/xen_server/models/pif_test.rb @@ -16,15 +16,12 @@ def self.read_identity it 'should have 32 attributes' do pif_class.attributes.must_equal([ :reference, - :__bond_master_of, - :__bond_slave_of, :disallow_unplug, :currently_attached, :device, :device_name, :dns, :gateway, - :__host, :ip, :ip_configuration_mode, :ipv6, @@ -32,24 +29,27 @@ def self.read_identity :ipv6_gateway, :mac, :management, - :metrics, :mtu, :netmask, - :__network, :other_config, :physical, :primary_address_type, :status_code, :status_detail, + :vlan, + :uuid, + :__bond_master_of, + :__bond_slave_of, + :__host, + :__metrics, + :__network, :__tunnel_access_pif_of, :__tunnel_transport_pif_of, - :vlan, - :vlan_master_of, - :vlan_slave_of, - :uuid ]) + :__vlan_master_of, + :__vlan_slave_of ]) end - it 'should have 14 aliases' do + it 'should have 19 aliases' do pif_class.aliases.must_equal({ :bond_master_of => :__bond_master_of, :bond_slave_of => :__bond_slave_of, :MAC => :mac, @@ -57,12 +57,17 @@ def self.read_identity :IP => :ip, :IPv6 => :ipv6, :MTU => :mtu, - :network => :__network, - :tunnel_access_PIF_of => :__tunnel_access_pif_of, - :tunnel_transport_PIF_of => :__tunnel_transport_pif_of, - :VLAN => :vlan, - :VLAN_master_of => :vlan_master_of, - :VLAN_slave_of => :vlan_slave_of, + :network => :__network, + :metrics => :__metrics, + :tunnel_access_PIF_of => :__tunnel_access_pif_of, + :tunnel_access_pif_of => :__tunnel_access_pif_of, + :tunnel_transport_PIF_of => :__tunnel_transport_pif_of, + :tunnel_transport_pif_of => :__tunnel_transport_pif_of, + :VLAN => :vlan, + :VLAN_master_of => :__vlan_master_of, + :vlan_master_of => :__vlan_master_of, + :VLAN_slave_of => :__vlan_slave_of, + :vlan_slave_of => :__vlan_slave_of, :host => :__host }) end end \ No newline at end of file diff --git a/test/fog/compute/xen_server/models/pool_patch_test.rb b/test/fog/compute/xen_server/models/pool_patch_test.rb index 6e23eb7..96b131a 100644 --- a/test/fog/compute/xen_server/models/pool_patch_test.rb +++ b/test/fog/compute/xen_server/models/pool_patch_test.rb @@ -18,13 +18,13 @@ def self.read_identity pool_patch_class.attributes.must_equal([ :reference, :after_apply_guidance, :description, - :__host_patches, :name, :other_config, :pool_applied, :size, :uuid, - :version ]) + :version, + :__host_patches ]) end it 'should have 3 aliases' do diff --git a/test/fog/compute/xen_server/models/pool_test.rb b/test/fog/compute/xen_server/models/pool_test.rb index 14125f1..5130e02 100644 --- a/test/fog/compute/xen_server/models/pool_test.rb +++ b/test/fog/compute/xen_server/models/pool_test.rb @@ -17,8 +17,6 @@ def self.read_identity it 'should have 28 attributes' do pool_class.attributes.must_equal([ :reference, :blobs, - :__crash_dump_sr, - :__default_sr, :description, :gui_config, :ha_allow_overcommit, @@ -28,30 +26,36 @@ def self.read_identity :ha_overcommitted, :ha_plan_exists_for, :ha_statefiles, - :__master, - :__metadata_vdis, :name, :other_config, :redo_log_enabled, :redo_log_vdi, :restrictions, - :__suspend_image_sr, :tags, :uuid, :vswitch_controller, :wlb_enabled, :wlb_url, :wlb_username, - :wlb_verify_cert ]) + :wlb_verify_cert, + :__crash_dump_sr, + :__default_sr, + :__master, + :__metadata_vdis, + :__suspend_image_sr ]) end - it 'should have 14 aliases' do + it 'should have 11 aliases' do pool_class.aliases.must_equal({ :crash_dump_SR => :__crash_dump_sr, + :crash_dump_sr => :__crash_dump_sr, :name_label => :name, - :name_description => :description, - :default_SR => :__default_sr, - :master => :__master, - :metadata_VDIs => :__metadata_vdis, - :suspend_image_SR => :__suspend_image_sr }) + :name_description => :description, + :default_SR => :__default_sr, + :default_sr => :__default_sr, + :master => :__master, + :metadata_VDIs => :__metadata_vdis, + :metadata_vdis => :__metadata_vdis, + :suspend_image_SR => :__suspend_image_sr, + :suspend_image_sr => :__suspend_image_sr }) end end \ No newline at end of file diff --git a/test/fog/compute/xen_server/models/role_test.rb b/test/fog/compute/xen_server/models/role_test.rb index 2c0fe4c..883e351 100644 --- a/test/fog/compute/xen_server/models/role_test.rb +++ b/test/fog/compute/xen_server/models/role_test.rb @@ -18,8 +18,8 @@ def self.read_identity role_class.attributes.must_equal([ :reference, :description, :name, - :__subroles, - :uuid ]) + :uuid, + :__subroles ]) end it 'should have 3 aliases' do diff --git a/test/fog/compute/xen_server/models/server_appliance_test.rb b/test/fog/compute/xen_server/models/server_appliance_test.rb index 5e6485e..e0471e7 100644 --- a/test/fog/compute/xen_server/models/server_appliance_test.rb +++ b/test/fog/compute/xen_server/models/server_appliance_test.rb @@ -24,9 +24,10 @@ def self.read_identity :__vms ]) end - it 'should have 3 aliases' do + it 'should have 4 aliases' do server_appliance_class.aliases.must_equal({ :name_description => :description, - :name_label => :name, - :VMs => :__vms }) + :name_label => :name, + :VMs => :__vms, + :vms => :__vms }) end end \ No newline at end of file diff --git a/test/fog/compute/xen_server/models/server_test.rb b/test/fog/compute/xen_server/models/server_test.rb index 23812f1..a2a10bd 100644 --- a/test/fog/compute/xen_server/models/server_test.rb +++ b/test/fog/compute/xen_server/models/server_test.rb @@ -14,26 +14,20 @@ def self.read_identity server_class.read_identity.must_equal(:reference) end - it 'should have 76 attributes' do + it 'should have 77 attributes' do server_class.attributes.must_equal([ :reference, :actions_after_crash, :actions_after_reboot, :actions_after_shutdown, - :__attached_pcis, - :__affinity, :allowed_operations, :blobs, :blocked_operations, :bios_strings, - :__children, - :__consoles, - :__crash_dumps, :current_operations, :domarch, :domid, :description, :generation_id, - :__guest_metrics, :ha_always_run, :ha_restart_priority, :hvm_boot_params, @@ -51,15 +45,12 @@ def self.read_identity :memory_static_max, :memory_static_min, :memory_target, - :__metrics, :name, :order, :other_config, - :__parent, :pci_bus, :platform, :power_state, - :protection_policy, :pv_args, :pv_bootloader, :pv_bootloader_args, @@ -67,41 +58,53 @@ def self.read_identity :pv_legacy_args, :pv_ramdisk, :recommendations, - :__resident_on, :shutdown_delay, - :snapshots, :snapshot_info, :snapshot_metadata, - :__snapshot_of, :snapshot_time, :start_delay, - :__suspend_sr, - :__suspend_vdi, :tags, :template_name, :transportable_snapshot_id, :user_version, :uuid, - :__vbds, :vcpus_at_startup, :vcpus_max, :vcpus_params, :version, - :__vifs, + :xenstore_data, + :__affinity, + :__appliance, + :__attached_pcis, + :__children, + :__consoles, + :__crash_dumps, + :__guest_metrics, + :__metrics, + :__parent, + :__protection_policy, + :__resident_on, + :__snapshots, + :__snapshot_of, + :__suspend_sr, + :__suspend_vdi, + :__vbds, :__vgpus, - :__vtpms, - :xenstore_data ]) + :__vifs, + :__vtpms ]) end - it 'should have 32 aliases' do + it 'should have 42 aliases' do server_class.aliases.must_equal({ :name_label => :name, :name_description => :description, - :affinity => :__affinity, - :consoles => :__consoles, - :attached_PCIs => :__attached_pcis, + :affinity => :__affinity, + :appliance => :__appliance, + :consoles => :__consoles, + :attached_PCIs => :__attached_pcis, + :attached_pcis => :__attached_pcis, :children => :__children, :crash_dumps => :__crash_dumps, - :guest_metrics => :__guest_metrics, + :guest_metrics => :__guest_metrics, :last_boot_CPU_flags => :last_boot_cpu_flags, :metrics => :__metrics, :parent => :__parent, @@ -112,16 +115,24 @@ def self.read_identity :PV_ramdisk => :pv_ramdisk, :PV_legacy_args => :pv_legacy_args, :resident_on => :__resident_on, - :snapshot_of => :__snapshot_of, - :suspend_sr => :__suspend_sr, - :suspend_VDI => :__suspend_vdi, - :VGPUs => :__vgpus, - :VTPMs => :__vtpms, - :VBDs => :__vbds, + :snapshot_of => :__snapshot_of, + :suspend_SR => :__suspend_sr, + :suspend_sr => :__suspend_sr, + :suspend_VDI => :__suspend_vdi, + :suspend_vdi => :__suspend_vdi, + :snapshots => :__snapshots, + :VGPUs => :__vgpus, + :vgpus => :__vgpus, + :VTPMs => :__vtpms, + :vtpms => :__vtpms, + :VBDs => :__vbds, + :vbds => :__vbds, + :protection_policy => :__protection_policy, :VCPUs_at_startup => :vcpus_at_startup, :VCPUs_max => :vcpus_max, - :VCPUs_params => :vcpus_params, - :VIFs => :__vifs, + :VCPUs_params => :vcpus_params, + :VIFs => :__vifs, + :vifs => :__vifs, :HVM_boot_policy => :hvm_boot_policy, :HVM_boot_params => :hvm_boot_params, :HVM_shadow_multiplier => :hvm_shadow_multiplier, diff --git a/test/fog/compute/xen_server/models/storage_repository_test.rb b/test/fog/compute/xen_server/models/storage_repository_test.rb index 0a643f6..fd8996f 100644 --- a/test/fog/compute/xen_server/models/storage_repository_test.rb +++ b/test/fog/compute/xen_server/models/storage_repository_test.rb @@ -25,7 +25,6 @@ def self.read_identity :local_cache_enabled, :name, :other_config, - :__pbds, :physical_size, :physical_utilisation, :shared, @@ -33,14 +32,17 @@ def self.read_identity :tags, :type, :uuid, - :__vdis, - :virtual_allocation ]) + :virtual_allocation, + :__pbds, + :__vdis ]) end - it 'should have 4 aliases' do + it 'should have 6 aliases' do storage_repository_class.aliases.must_equal({ :name_label => :name, - :name_description => :description, - :PBDs => :__pbds, - :VDIs => :__vdis }) + :name_description => :description, + :PBDs => :__pbds, + :pbds => :__pbds, + :VDIs => :__vdis, + :vdis => :__vdis }) end end \ No newline at end of file diff --git a/test/fog/compute/xen_server/models/tunnel_test.rb b/test/fog/compute/xen_server/models/tunnel_test.rb index a03c8db..987b015 100644 --- a/test/fog/compute/xen_server/models/tunnel_test.rb +++ b/test/fog/compute/xen_server/models/tunnel_test.rb @@ -16,15 +16,17 @@ def self.read_identity it 'should have 6 attributes' do tunnel_class.attributes.must_equal([ :reference, - :access_pif, :other_config, :status, - :transport_pif, - :uuid ]) + :uuid, + :__access_pif, + :__transport_pif ]) end - it 'should have 2 aliases' do - tunnel_class.aliases.must_equal({ :access_PIF => :access_pif, - :transport_PIF => :transport_pif }) + it 'should have 4 aliases' do + tunnel_class.aliases.must_equal({ :access_PIF => :__access_pif, + :access_pif => :__access_pif, + :transport_PIF => :__transport_pif, + :transport_pif => :__transport_pif }) end end \ No newline at end of file diff --git a/test/fog/compute/xen_server/models/vbd_test.rb b/test/fog/compute/xen_server/models/vbd_test.rb index f2a0a02..1c05ca2 100644 --- a/test/fog/compute/xen_server/models/vbd_test.rb +++ b/test/fog/compute/xen_server/models/vbd_test.rb @@ -22,7 +22,6 @@ def self.read_identity :current_operations, :device, :empty, - :__metrics, :mode, :other_config, :qos_supported_algorithms, @@ -33,16 +32,19 @@ def self.read_identity :status_detail, :storage_lock, :type, - :__vdi, - :__vm, :unpluggable, :userdevice, - :uuid ]) + :uuid, + :__metrics, + :__vdi, + :__vm ]) end - it 'should have 3 aliases' do - vbd_class.aliases.must_equal({ :VDI => :__vdi, - :VM => :__vm, + it 'should have 5 aliases' do + vbd_class.aliases.must_equal({ :VDI => :__vdi, + :vdi => :__vdi, + :VM => :__vm, + :vm => :__vm, :metrics => :__metrics }) end end \ No newline at end of file diff --git a/test/fog/compute/xen_server/models/vdi_test.rb b/test/fog/compute/xen_server/models/vdi_test.rb index 8e2dc50..3231fb7 100644 --- a/test/fog/compute/xen_server/models/vdi_test.rb +++ b/test/fog/compute/xen_server/models/vdi_test.rb @@ -18,7 +18,6 @@ def self.read_identity vdi_class.attributes.must_equal([ :reference, :allowed_operations, :allow_caching, - :__crash_dumps, :current_operations, :description, :is_a_snapshot, @@ -30,30 +29,33 @@ def self.read_identity :name, :on_boot, :other_config, - :__parent, :physical_utilisation, :read_only, :sharable, :sm_config, - :__snapshots, - :__snapshot_of, :snapshot_time, - :__sr, :storage_lock, :tags, :type, :uuid, - :__vbds, :virtual_size, - :xenstore_data ]) + :xenstore_data, + :__crash_dumps, + :__parent, + :__snapshots, + :__snapshot_of, + :__sr, + :__vbds ]) end - it 'should have 8 aliases' do + it 'should have 10 aliases' do vdi_class.aliases.must_equal({ :name_label => :name, :name_description => :description, - :parent => :__parent, - :VBDs => :__vbds, - :SR => :__sr, + :parent => :__parent, + :VBDs => :__vbds, + :vbds => :__vbds, + :SR => :__sr, + :sr => :__sr, :crash_dumps => :__crash_dumps, :snapshots => :__snapshots, :snapshot_of => :__snapshot_of }) diff --git a/test/fog/compute/xen_server/models/vif_metrics_test.rb b/test/fog/compute/xen_server/models/vif_metrics_test.rb new file mode 100644 index 0000000..be4ec18 --- /dev/null +++ b/test/fog/compute/xen_server/models/vif_metrics_test.rb @@ -0,0 +1,29 @@ +require 'minitest_helper' + +describe Fog::Compute::XenServer::Models::VifMetrics do + let(:vif_metrics_class) do + class Fog::Compute::XenServer::Models::VifMetrics + def self.read_identity + instance_variable_get('@identity') + end + end + Fog::Compute::XenServer::Models::VifMetrics + end + + it 'should return the unique id' do + vif_metrics_class.read_identity.must_equal(:reference) + end + + it 'should have 6 attributes' do + vif_metrics_class.attributes.must_equal([ :reference, + :io_read_kbs, + :io_write_kbs, + :last_updated, + :other_config, + :uuid ]) + end + + it 'should have no aliases' do + vif_metrics_class.aliases.must_equal({}) + end +end \ No newline at end of file diff --git a/test/fog/compute/xen_server/models/vif_test.rb b/test/fog/compute/xen_server/models/vif_test.rb index bc26644..b6af02b 100644 --- a/test/fog/compute/xen_server/models/vif_test.rb +++ b/test/fog/compute/xen_server/models/vif_test.rb @@ -25,9 +25,7 @@ def self.read_identity :locking_mode, :mac, :mac_autogenerated, - :__metrics, :mtu, - :__network, :other_config, :qos_algorithm_params, :qos_algorithm_type, @@ -36,15 +34,18 @@ def self.read_identity :status_code, :status_detail, :uuid, + :__metrics, + :__network, :__vm ]) end - it 'should have 6 aliases' do + it 'should have 7 aliases' do vif_class.aliases.must_equal({ :MAC => :mac, :MAC_autogenerated => :mac_autogenerated, :metrics => :__metrics, :MTU => :mtu, - :network => :__network, - :VM => :__vm }) + :network => :__network, + :VM => :__vm, + :vm => :__vm }) end end \ No newline at end of file diff --git a/test/fog/compute/xen_server/models/vlan_test.rb b/test/fog/compute/xen_server/models/vlan_test.rb index a7a4392..2cf8ccc 100644 --- a/test/fog/compute/xen_server/models/vlan_test.rb +++ b/test/fog/compute/xen_server/models/vlan_test.rb @@ -18,13 +18,15 @@ def self.read_identity vlan_class.attributes.must_equal([ :reference, :other_config, :tag, + :uuid, :__tagged_pif, - :__untagged_pif, - :uuid ]) + :__untagged_pif ]) end - it 'should have 2 aliases' do + it 'should have 4 aliases' do vlan_class.aliases.must_equal({ :untagged_PIF => :__untagged_pif, - :tagged_PIF => :__tagged_pif }) + :untagged_pif => :__untagged_pif, + :tagged_PIF => :__tagged_pif, + :tagged_pif => :__tagged_pif }) end end \ No newline at end of file diff --git a/test/fog/compute/xen_server/models/vmpp_test.rb b/test/fog/compute/xen_server/models/vmpp_test.rb index ebd8a93..14a1c00 100644 --- a/test/fog/compute/xen_server/models/vmpp_test.rb +++ b/test/fog/compute/xen_server/models/vmpp_test.rb @@ -38,9 +38,10 @@ def self.read_identity :__vms ]) end - it 'should have 3 aliases' do + it 'should have 4 aliases' do vmpp_class.aliases.must_equal({ :name_description => :description, - :name_label => :name, - :VMs => :__vms }) + :name_label => :name, + :VMs => :__vms, + :vms => :__vms }) end end \ No newline at end of file diff --git a/test/fog/compute/xen_server/models/vtpm_test.rb b/test/fog/compute/xen_server/models/vtpm_test.rb index 74e0613..f6b0657 100644 --- a/test/fog/compute/xen_server/models/vtpm_test.rb +++ b/test/fog/compute/xen_server/models/vtpm_test.rb @@ -16,8 +16,8 @@ def self.read_identity it 'should have 4 attributes' do vtpm_class.attributes.must_equal([ :reference, - :__backend, :uuid, + :__backend, :__vm ]) end diff --git a/test/minitest_helper.rb b/test/minitest_helper.rb index 0923620..1298ecb 100644 --- a/test/minitest_helper.rb +++ b/test/minitest_helper.rb @@ -23,6 +23,6 @@ add_filter '/test/' end -Dir[File.join(File.dirname(__FILE__), '../lib/**/*.rb')].sort.each { |f| require f } +require File.join(File.dirname(__FILE__), '../lib/fog/xenserver.rb') Coveralls.wear! \ No newline at end of file