fog/fog-azure-rm

View on GitHub
lib/fog/azurerm/models/network/local_network_gateway.rb

Summary

Maintainability
A
0 mins
Test Coverage
F
59%
module Fog
  module Network
    class AzureRM
      # LocalNetworkGateway model class for Network Service
      class LocalNetworkGateway < Fog::Model
        identity :name
        attribute :id
        attribute :location
        attribute :type
        attribute :resource_group
        attribute :tags
        attribute :local_network_address_space_prefixes
        attribute :gateway_ip_address
        attribute :asn
        attribute :bgp_peering_address
        attribute :peer_weight
        attribute :provisioning_state
        attribute :tags

        def self.parse(local_network_gateway)
          local_network_gateway_hash = get_hash_from_object(local_network_gateway)
          bgp_settings = local_network_gateway.bgp_settings
          unless bgp_settings.nil?
            local_network_gateway_hash['asn'] = bgp_settings.asn
            local_network_gateway_hash['bgp_peering_address'] = bgp_settings.bgp_peering_address
            local_network_gateway_hash['peer_weight'] = bgp_settings.peer_weight
          end
          local_network_address_space = local_network_gateway.local_network_address_space
          local_network_gateway_hash['local_network_address_space_prefixes'] = local_network_address_space.address_prefixes unless local_network_address_space.nil?
          local_network_gateway_hash['resource_group'] = get_resource_group_from_id(local_network_gateway.id)
          local_network_gateway_hash
        end

        def save
          requires :name, :location, :resource_group, :local_network_address_space_prefixes, :gateway_ip_address, :asn, :bgp_peering_address, :peer_weight
          local_network_gateway = service.create_or_update_local_network_gateway(local_network_gateway_parameters)
          merge_attributes(Fog::Network::AzureRM::LocalNetworkGateway.parse(local_network_gateway))
        end

        def destroy
          service.delete_local_network_gateway(resource_group, name)
        end

        private

        def local_network_gateway_parameters
          {
            name: name,
            location: location,
            resource_group: resource_group,
            local_network_address_space_prefixes: local_network_address_space_prefixes,
            gateway_ip_address: gateway_ip_address,
            asn: asn,
            bgp_peering_address: bgp_peering_address,
            peer_weight: peer_weight,
            tags: tags
          }
        end
      end
    end
  end
end