Sha256: b0d791a2cb9ed839871f601e62bce0d0d83a52124f22782759e751a2fc25e583

Contents?: true

Size: 1.93 KB

Versions: 30

Compression:

Stored size: 1.93 KB

Contents

module Fog
  module Vcloud
    module Terremark
      module Ecloud
        class Network < Fog::Vcloud::Model

          identity :href

          ignore_attributes :xmlns, :xmlns_xsi, :xmlns_xsd, :xmlns_i, :Configuration

          attribute :name, :aliases => :Name
          attribute :id, :aliases => :Id
          attribute :features, :aliases => :Features, :type => :array
          attribute :links, :aliases => :Link, :type => :array
          attribute :type
          attribute :gateway, :aliases => :GatewayAddress
          attribute :broadcast, :aliases => :BroadcastAddress
          attribute :address, :aliases => :Address
          attribute :rnat, :aliases => :RnatAddress
          attribute :extension_href, :aliases => :Href

          def ips
            load_unless_loaded!
            @ips ||= Fog::Vcloud::Terremark::Ecloud::Ips.
              new( :connection => connection,
                   :href => links.detect { |link| link[:name] == "IP Addresses" }[:href] )
          end

          def rnat=(new_rnat)
            @rnat = new_rnat
            @changed = true
          end

          def save
            if @changed
              connection.configure_network( extension_href, _compose_network_data )
            end
            true
          end

          def reload
            super
            merge_attributes(extension_data.body)
          end

          private

          def extension_data
            connection.get_network_extensions( extensions_link[:href] )
          end

          def extensions_link
            links.detect { |link| link[:name] == name }
          end

          def _compose_network_data
            {
              :id => id,
              :href => extension_href,
              :name => name,
              :rnat => rnat,
              :address => address,
              :broadcast => broadcast,
              :gateway => gateway
            }
          end
        end
      end
    end
  end
end


Version data entries

30 entries across 30 versions & 2 rubygems

Version Path
fog-0.2.30 lib/fog/vcloud/terremark/ecloud/models/network.rb
fog-0.2.28 lib/fog/vcloud/terremark/ecloud/models/network.rb
fog-0.2.27 lib/fog/vcloud/terremark/ecloud/models/network.rb
fog-0.2.26 lib/fog/vcloud/terremark/ecloud/models/network.rb
fog-0.2.25 lib/fog/vcloud/terremark/ecloud/models/network.rb
fog-0.2.24 lib/fog/vcloud/terremark/ecloud/models/network.rb
tecnh-fog-0.2.23.vpc lib/fog/vcloud/terremark/ecloud/models/network.rb
fog-0.2.23 lib/fog/vcloud/terremark/ecloud/models/network.rb
fog-0.2.22 lib/fog/vcloud/terremark/ecloud/models/network.rb
fog-0.2.21 lib/fog/vcloud/terremark/ecloud/models/network.rb
fog-0.2.20 lib/fog/vcloud/terremark/ecloud/models/network.rb
fog-0.2.19 lib/fog/vcloud/terremark/ecloud/models/network.rb
fog-0.2.18 lib/fog/vcloud/terremark/ecloud/models/network.rb
fog-0.2.17 lib/fog/vcloud/terremark/ecloud/models/network.rb
fog-0.2.16 lib/fog/vcloud/terremark/ecloud/models/network.rb
fog-0.2.15 lib/fog/vcloud/terremark/ecloud/models/network.rb
fog-0.2.14 lib/fog/vcloud/terremark/ecloud/models/network.rb
fog-0.2.13 lib/fog/vcloud/terremark/ecloud/models/network.rb
fog-0.2.12 lib/fog/vcloud/terremark/ecloud/models/network.rb
fog-0.2.11 lib/fog/vcloud/terremark/ecloud/models/network.rb