Sha256: e141e3f55c0379f560bab66234e0e25338c98a797df9dde28dcd9c0115a5de50

Contents?: true

Size: 1.77 KB

Versions: 6

Compression:

Stored size: 1.77 KB

Contents

require 'fog/core/model'

module Fog
  module Network
    class SakuraCloud
      class Router < Fog::Model
        identity :id, :aliases => 'ID'
        attribute :name, :aliases => 'Name'
        attribute :description, :aliases => 'Description'
        attribute :networkmasklen, :aliases => 'NetworkMaskLen'
        attribute :bandwidthmbps, :aliases => 'BandWidthMbps'
        attribute :switch, :aliases => 'Switch'


        def delete
          service.delete_router(identity)
          true
        end
        alias_method :destroy, :delete

        def save
          requires :name, :networkmasklen
          Fog::Logger.warning("Create Router with public subnet")
          attached_switch = service.create_router(@attributes).body["Internet"]
          Fog::Logger.warning("Waiting available new router...")
          new_data = switch_available?(service, attached_switch["ID"])
          id = new_data['internet']['ID']
          merge_attributes(new_data['internet'])
          self.reload
          true
        end

        def collect_monitor(start_time = nil, end_time = nil)
          service.collect_monitor_router(identity, start_time, end_time).body["Data"]
        end

        def change_bandwidth(bandwidth)
          ## change_bandwidth returns router as new one.
          new_router = service.change_router_bandwidth(identity, bandwidth).body["Internet"]
          self.id = new_router['ID']
          self.reload
        end

        def switch_available?(network, router_id)
          until network.switches.find {|r| r.internet != nil && r.internet["ID"] == router_id}
            print '.'
            sleep 2
          end
          ::JSON.parse((network.switches.find {|r| r.internet != nil && r.internet["ID"] == router_id}).to_json)
        end
      end
    end
  end
end

Version data entries

6 entries across 4 versions & 2 rubygems

Version Path
vagrant-packet-0.1.1 vendor/bundle/ruby/2.3.0/gems/fog-sakuracloud-1.7.5/lib/fog/sakuracloud/models/network/router.rb
vagrant-packet-0.1.1 vendor/bundle/ruby/2.4.0/gems/fog-sakuracloud-1.7.5/lib/fog/sakuracloud/models/network/router.rb
vagrant-packet-0.1.1 vendor/bundle/ruby/2.5.0/gems/fog-sakuracloud-1.7.5/lib/fog/sakuracloud/models/network/router.rb
fog-sakuracloud-1.7.5 lib/fog/sakuracloud/models/network/router.rb
fog-sakuracloud-1.7.4 lib/fog/sakuracloud/models/network/router.rb
fog-sakuracloud-1.7.3 lib/fog/sakuracloud/models/network/router.rb