Class: Fog::Compute::QingCloud::Address

Inherits:
QingCloud::Model show all
Defined in:
lib/fog/qingcloud/models/compute/address.rb

Instance Method Summary collapse

Methods inherited from QingCloud::Model

#changing?, inherited, #wait_for

Constructor Details

#initialize(attributes = {}) ⇒ Address

Returns a new instance of Address.



20
21
22
23
24
# File 'lib/fog/qingcloud/models/compute/address.rb', line 20

def initialize(attributes = {})
  # assign server first to prevent race condition with persisted?
  self.server = attributes.delete(:server)
  super
end

Instance Method Details

#change_bandwidth(bw) ⇒ Object



88
89
90
91
92
93
94
# File 'lib/fog/qingcloud/models/compute/address.rb', line 88

def change_bandwidth(bw)
  if persisted?
    service.change_address_bandwidth(id, bw)
  else
    bandwidth = bw
  end
end

#destroyObject



26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/fog/qingcloud/models/compute/address.rb', line 26

def destroy
  requires_one :public_ip, :id
  unless self.id
    self.id = public_ip
    self.reload
  end
  service.release_address(id)
  true
rescue Fog::QingCloud::Errors::PermissionDenied => e
  raise e unless e.message =~ /has already been deleted/i
  true
end

#ready?Boolean

Returns:

  • (Boolean)


47
48
49
# File 'lib/fog/qingcloud/models/compute/address.rb', line 47

def ready?
  status == 'available' and transition_status == ''
end

#routerObject



55
56
57
# File 'lib/fog/qingcloud/models/compute/address.rb', line 55

def router
  service.routers.get(router_id)
end

#router=(router) ⇒ Object



59
60
61
62
63
64
65
66
67
68
69
70
71
# File 'lib/fog/qingcloud/models/compute/address.rb', line 59

def router=(router)
  rtid = router.respond_to?(:id) ? router.id : router
  if rtid
    # Associate
    service.routers.new('id' => rtid).eip = self
    self.router_id = rtid
  elsif router_id
    # Dissociate
    service.routers.new('id' => router_id).eip = nil
    self.router_id = nil
  end
  true
end

#saveObject



73
74
75
76
77
78
79
80
81
82
83
84
85
86
# File 'lib/fog/qingcloud/models/compute/address.rb', line 73

def save
  requires :bandwidth
  unless persisted?
    eip_id = service.allocate_address(bandwidth, 1, name, need_icp).body['eips'].first
    self.id = eip_id
    wait_for {ready?}
    if @server
      self.server = @server
    end
  else
    modify_attributes(name, description)
  end
  true
end

#serverObject



51
52
53
# File 'lib/fog/qingcloud/models/compute/address.rb', line 51

def server
  service.servers.get(server_id)
end

#server=(new_server) ⇒ Object



39
40
41
42
43
44
45
# File 'lib/fog/qingcloud/models/compute/address.rb', line 39

def server=(new_server)
  if new_server
    associate(new_server)
  else
    disassociate
  end
end