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/compute/models/ninefold/ip_forwarding_rule.rb
2011-06-04 20:02:14 +10:00

79 lines
1.7 KiB
Ruby

require 'fog/core/model'
module Fog
module Ninefold
class Compute
class IpForwardingRule < Fog::Model
identity :id
attribute :protocol
attribute :virtualmachineid
attribute :virtualmachinename
attribute :ipaddressid
attribute :ipaddress
attribute :startport
attribute :endport
attribute :state
attribute :jobid
def initialize(attributes={})
super
end
def destroy
requires :identity
self.jobid = extract_job_id(connection.delete_ip_forwarding_rule(:id => identity))
true
end
def ready?
if jobid && connection.query_async_job_result(:jobid => jobid)['jobstatus'] == 0
false
else # No running job, we are ready. Refresh data.
reload
true
end
end
def address
Ninefold.address.get(ipaddressid)
end
def address=(addr)
self.ipaddressid = addr.identity
end
def save
raise "Operation not supported" if self.identity
requires :ipaddressid
requires :protocol
requires :startport
options = {
:ipaddressid => ipaddressid,
:protocol => protocol,
:startport => startport,
:endport => endport
}.delete_if {|k,v| v.nil? || v == "" }
data = connection.create_ip_forwarding_rule(options)
merge_attributes(data)
true
end
private
def extract_job_id(job)
if job.kind_of? Integer
job
else
job['jobid'] || job['id']
end
end
end
end
end
end