class Fog::Network::AzureRM::VirtualNetworkGateway

VirtualNetworkGateway model class for Network Service

Public Class Methods

parse(network_gateway) click to toggle source
# File lib/fog/azurerm/models/network/virtual_network_gateway.rb, line 28
def self.parse(network_gateway)
  hash = {}
  hash['id'] = network_gateway.id
  hash['name'] = network_gateway.name
  hash['location'] = network_gateway.location
  hash['resource_group'] = get_resource_group_from_id(network_gateway.id)
  hash['tags'] = network_gateway.tags
  unless network_gateway.sku.nil?
    hash['sku_name'] = network_gateway.sku.name
    hash['sku_tier'] = network_gateway.sku.tier
    hash['sku_capacity'] = network_gateway.sku.capacity
  end
  hash['gateway_type'] = network_gateway.gateway_type
  hash['gateway_default_site'] = network_gateway.gateway_default_site
  hash['vpn_type'] = network_gateway.vpn_type
  hash['enable_bgp'] = network_gateway.enable_bgp
  hash['provisioning_state'] = network_gateway.provisioning_state
  bgp_settings = network_gateway.bgp_settings

  unless bgp_settings.nil?
    hash['asn'] = bgp_settings.asn
    hash['bgp_peering_address'] = bgp_settings.bgp_peering_address
    hash['peer_weight'] = bgp_settings.peer_weight
  end

  hash['ip_configurations'] = []
  network_gateway.ip_configurations.each do |ip_config|
    ip_configuration = Fog::Network::AzureRM::FrontendIPConfiguration.new
    hash['ip_configurations'] << ip_configuration.merge_attributes(Fog::Network::AzureRM::FrontendIPConfiguration.parse(ip_config))
  end unless network_gateway.ip_configurations.nil?

  unless network_gateway.vpn_client_configuration.nil?
    vpn_client_configuration = Fog::Network::AzureRM::VpnClientConfiguration.new
    hash['vpn_client_configuration'] = vpn_client_configuration.merge_attributes(Fog::Network::AzureRM::VpnClientConfiguration.parse(network_gateway.vpn_client_configuration))
  end

  hash
end

Public Instance Methods

destroy() click to toggle source
# File lib/fog/azurerm/models/network/virtual_network_gateway.rb, line 74
def destroy
  service.delete_virtual_network_gateway(resource_group, name)
end
save() click to toggle source
# File lib/fog/azurerm/models/network/virtual_network_gateway.rb, line 67
def save
  requires :name, :location, :resource_group, :gateway_type, :enable_bgp
  validate_ip_configurations(ip_configurations) unless ip_configurations.nil?
  network_gateway = service.create_or_update_virtual_network_gateway(virtual_gateway_parameters)
  merge_attributes(Fog::Network::AzureRM::VirtualNetworkGateway.parse(network_gateway))
end

Private Instance Methods

validate_ip_configuration_params(ip_configuration) click to toggle source
# File lib/fog/azurerm/models/network/virtual_network_gateway.rb, line 121
def validate_ip_configuration_params(ip_configuration)
  required_params = [
    :name,
    :private_ipallocation_method
  ]
  missing = required_params.select { |p| p unless ip_configuration.key?(p) }
  if missing.length == 1 || missing.any?
    raise(ArgumentError, "#{missing[0...-1].join(', ')} and #{missing[-1]} are required for this operation")
  end
  unless ip_configuration.key?(:subnet_id) || ip_configuration.key?(:public_ipaddress_id)
    raise(ArgumentError, 'subnet_id and public_id can not be empty at the same time.')
  end
end
validate_ip_configurations(ip_configurations) click to toggle source
# File lib/fog/azurerm/models/network/virtual_network_gateway.rb, line 105
def validate_ip_configurations(ip_configurations)
  unless ip_configurations.is_a?(Array)
    raise(ArgumentError, ':ip_configurations must be an Array')
  end
  unless ip_configurations.any?
    raise(ArgumentError, ':ip_configurations must not be an empty Array')
  end
  ip_configurations.each do |ip_configuration|
    if ip_configuration.is_a?(Hash)
      validate_ip_configuration_params(ip_configuration)
    else
      raise(ArgumentError, ':ip_configurations must be an Array of Hashes')
    end
  end
end
virtual_gateway_parameters() click to toggle source
# File lib/fog/azurerm/models/network/virtual_network_gateway.rb, line 80
def virtual_gateway_parameters
  {
    resource_group_name: resource_group,
    name: name,
    location: location,
    tags: tags,
    gateway_type: gateway_type,
    gateway_size: gateway_size,
    vpn_type: vpn_type,
    enable_bgp: enable_bgp,
    provisioning_state: provisioning_state,
    sku_name: sku_name,
    sku_tier: sku_tier,
    sku_capacity: sku_capacity,
    vpn_client_address_pool: vpn_client_address_pool,
    default_sites: default_sites,
    gateway_default_site: gateway_default_site,
    ip_configurations: ip_configurations,
    vpn_client_configuration: vpn_client_configuration,
    asn: asn,
    bgp_peering_address: bgp_peering_address,
    peer_weight: peer_weight
  }
end