1
0
Fork 0
mirror of https://github.com/fog/fog.git synced 2022-11-09 13:51:43 -05:00
fog--fog/lib/fog/xenserver/models/compute/network.rb
2013-03-26 17:33:39 +01:00

91 lines
2.3 KiB
Ruby

require 'fog/core/model'
module Fog
module Compute
class XenServer
class Network < Fog::Model
# API Reference here:
# http://docs.vmd.citrix.com/XenServer/5.6.0/1.0/en_gb/api/?c=network
identity :reference
attribute :uuid
attribute :__vifs, :aliases => :VIFs
attribute :tags
attribute :mtu, :aliases => :MTU
attribute :bridge
attribute :description, :aliases => :name_description
attribute :name, :aliases => :name_label
attribute :other_config
attribute :__pifs, :aliases => :PIFs
attribute :allowed_operations
attribute :current_operations
attribute :blobs
def refresh
data = service.get_record( reference, 'network' )
merge_attributes( data )
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]
#
# # create network 'foonet'
# net = service.networks.create :name => 'foonet',
# :description => 'test network'
#
# @returns [Boolean]
#
def save
requires :name
ref = service.create_network name, attributes
data = service.get_record ref, 'network'
merge_attributes data
true
end
# Destroys a network
#
# service = Fog::Compute[:xenserver]
#
# # find network 'foonet' and destroy it
# net = service.networks.find { |net| net.name == 'foonet' }
# net.destroy
#
# @returns [Boolean]
#
def destroy
requires :reference
service.destroy_network reference
true
end
end
end
end
end