fog/fog-azure-rm

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

Summary

Maintainability
A
0 mins
Test Coverage
A
91%
module Fog
  module Network
    # Fog Service Class for AzureRM
    class AzureRM < Fog::Service
      requires :tenant_id
      requires :client_id
      requires :client_secret
      requires :subscription_id
      recognizes :environment

      request_path 'fog/azurerm/requests/network'
      request :create_or_update_virtual_network
      request :get_virtual_network
      request :add_dns_servers_in_virtual_network
      request :remove_dns_servers_from_virtual_network
      request :add_address_prefixes_in_virtual_network
      request :remove_subnets_from_virtual_network
      request :remove_address_prefixes_from_virtual_network
      request :add_subnets_in_virtual_network
      request :delete_virtual_network
      request :list_virtual_networks
      request :list_virtual_networks_in_subscription
      request :check_virtual_network_exists
      request :create_or_update_public_ip
      request :delete_public_ip
      request :get_public_ip
      request :list_public_ips
      request :check_public_ip_exists
      request :create_subnet
      request :attach_network_security_group_to_subnet
      request :detach_network_security_group_from_subnet
      request :attach_route_table_to_subnet
      request :detach_route_table_from_subnet
      request :list_subnets
      request :get_subnet
      request :get_available_ipaddresses_count
      request :delete_subnet
      request :check_subnet_exists
      request :create_or_update_network_interface
      request :delete_network_interface
      request :list_network_interfaces
      request :get_network_interface
      request :check_network_interface_exists
      request :attach_resource_to_nic
      request :detach_resource_from_nic
      request :create_load_balancer
      request :delete_load_balancer
      request :list_load_balancers
      request :get_load_balancer
      request :check_load_balancer_exists
      request :list_load_balancers_in_subscription
      request :create_or_update_network_security_group
      request :delete_network_security_group
      request :list_network_security_groups
      request :get_network_security_group
      request :check_net_sec_group_exists
      request :add_security_rules
      request :remove_security_rule
      request :delete_virtual_network_gateway
      request :create_or_update_virtual_network_gateway
      request :list_virtual_network_gateways
      request :get_virtual_network_gateway
      request :check_vnet_gateway_exists
      request :create_or_update_express_route_circuit
      request :delete_express_route_circuit
      request :get_express_route_circuit
      request :list_express_route_circuits
      request :check_express_route_circuit_exists
      request :create_or_update_express_route_circuit_peering
      request :delete_express_route_circuit_peering
      request :get_express_route_circuit_peering
      request :list_express_route_circuit_peerings
      request :create_or_update_express_route_circuit_authorization
      request :delete_express_route_circuit_authorization
      request :get_express_route_circuit_authorization
      request :list_express_route_circuit_authorizations
      request :check_express_route_cir_auth_exists
      request :list_express_route_service_providers
      request :create_or_update_local_network_gateway
      request :delete_local_network_gateway
      request :get_local_network_gateway
      request :list_local_network_gateways
      request :check_local_net_gateway_exists
      request :create_or_update_virtual_network_gateway_connection
      request :delete_virtual_network_gateway_connection
      request :get_virtual_network_gateway_connection
      request :list_virtual_network_gateway_connections
      request :check_vnet_gateway_connection_exists
      request :get_connection_shared_key
      request :reset_connection_shared_key
      request :set_connection_shared_key
      request :create_or_update_network_security_rule
      request :delete_network_security_rule
      request :get_network_security_rule
      request :list_network_security_rules
      request :check_net_sec_rule_exists

      model_path 'fog/azurerm/models/network'
      model :virtual_network
      collection :virtual_networks
      model :public_ip
      collection :public_ips
      model :subnet
      collection :subnets
      model :network_interface
      collection :network_interfaces
      model :load_balancer
      collection :load_balancers
      model :frontend_ip_configuration
      model :inbound_nat_pool
      model :inbound_nat_rule
      model :load_balancing_rule
      model :probe
      model :network_security_group
      collection :network_security_groups
      model :network_security_rule
      collection :network_security_rules
      model :path_rule
      model :vpn_client_configuration
      model :vpn_client_revoked_certificates
      model :vpn_client_root_certificates
      model :virtual_network_gateway
      collection :virtual_network_gateways
      model :express_route_circuit
      collection :express_route_circuits
      model :express_route_circuit_peering
      collection :express_route_circuit_peerings
      model :express_route_circuit_authorization
      collection :express_route_circuit_authorizations
      model :express_route_service_provider
      collection :express_route_service_providers
      model :local_network_gateway
      collection :local_network_gateways
      model :virtual_network_gateway_connection
      collection :virtual_network_gateway_connections

      # Mock class for Network Service
      class Mock
        def initialize(_options = {})
          begin
            require 'azure_mgmt_network'
          rescue LoadError => e
            retry if require('rubygems')
            raise e.message
          end
        end
      end

      # Real class for Network Service
      class Real
        def initialize(options)
          begin
            require 'azure_mgmt_network'
            require 'yaml'
          rescue LoadError => e
            retry if require('rubygems')
            raise e.message
          end

          options[:environment] = 'AzureCloud' if options[:environment].nil?

          credentials = Fog::Credentials::AzureRM.get_credentials(options[:tenant_id], options[:client_id], options[:client_secret], options[:environment])
          telemetry = "fog-azure-rm/#{Fog::AzureRM::VERSION}"
          @network_client = ::Azure::ARM::Network::NetworkManagementClient.new(credentials, resource_manager_endpoint_url(options[:environment]))
          @network_client.subscription_id = options[:subscription_id]
          @network_client.add_user_agent_information(telemetry)
          @tenant_id = options[:tenant_id]
          @client_id = options[:client_id]
          @client_secret = options[:client_secret]
          @subscription_id = options[:subscription_id]
          @environment = options[:environment]
          current_directory = File.dirname(__FILE__)
          @logger_messages = YAML.load_file("#{current_directory}/utilities/logger_messages.yml")
        end
      end
    end
  end
end