File: spec_helper.rb

package info (click to toggle)
ruby-azure-sdk 0.8.0-1
  • links: PTS, VCS
  • area: main
  • in suites: stretch
  • size: 22,400 kB
  • ctags: 12,388
  • sloc: ruby: 168,299; sh: 6; makefile: 2
file content (174 lines) | stat: -rw-r--r-- 6,074 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
# encoding: utf-8
# Copyright (c) Microsoft Corporation. All rights reserved.
# Licensed under the MIT License. See License.txt in the project root for license information.

require File.join(File.dirname(__FILE__), '../../../vcr_helper')
require 'azure_mgmt_network'
require 'azure_mgmt_resources'
require 'ms_rest_azure'

include MsRest
include MsRestAzure
include Azure::ARM::Resources
include Azure::ARM::Network
include Azure::ARM::Network::Models

class ResourceHelper
  attr_reader :network_client, :resource_client

  def initialize
    tenant_id = ENV['AZURE_TENANT_ID']
    client_id = ENV['AZURE_CLIENT_ID']
    secret = ENV['AZURE_CLIENT_SECRET']
    @subscription_id = ENV['AZURE_SUBSCRIPTION_ID']

    token_provider = ApplicationTokenProvider.new(tenant_id, client_id, secret)
    @credentials = TokenCredentials.new(token_provider)
  end

  def resource_client
    if @resource_client.nil?
      @resource_client = ResourceManagementClient.new(@credentials)
      @resource_client.subscription_id = @subscription_id
      @resource_client.long_running_operation_retry_timeout = ENV.fetch('RETRY_TIMEOUT', 30).to_i
    end
    @resource_client
  end

  def network_client
    if @network_client.nil?
      @network_client = NetworkManagementClient.new(@credentials)
      @network_client.long_running_operation_retry_timeout = ENV.fetch('RETRY_TIMEOUT', 30).to_i
      @network_client.subscription_id = @subscription_id
    end
    @network_client
  end

  def create_resource_group
    resource_group_name = 'RubySDKTest_azure_mgmt_network'
    params = Azure::ARM::Resources::Models::ResourceGroup.new()
    params.location = 'westus'

    resource_client.resource_groups.create_or_update(resource_group_name, params)
  end

  def delete_resource_group(name)
    resource_client.resource_groups.delete(name)
  end

  def build_virtual_network_params(location)
    address_space = AddressSpace.new
    address_space.address_prefixes = ['10.0.0.0/16']

    dhcp_options = DhcpOptions.new
    dhcp_options.dns_servers = %w(10.1.1.1 10.1.2.4)

    sub2 = Subnet.new
    sub2.name = 'subnet1234'
    sub2.address_prefix = '10.0.2.0/24'

    params = VirtualNetwork.new
    params.location = location
    params.address_space = address_space
    params.dhcp_options = dhcp_options
    params.subnets = [sub2]

    params
  end

  def create_virtual_network(resource_group_name)
    virtualNetworkName = "test_vnet"
    params = build_virtual_network_params('westus')
    network_client.virtual_networks.create_or_update(resource_group_name, virtualNetworkName, params)
  end

  def create_subnet(virtual_network, resource_group, subnet_client)
    subnet_name = 'subnet4857647'
    params = build_subnet_params
    subnet_client.create_or_update(resource_group.name, virtual_network.name, subnet_name, params)
  end

  def build_subnet_params
    params = Subnet.new
    params.address_prefix = '10.0.1.0/24'
    params
  end

  def create_local_network_gateway(resource_group, location, name = nil)
    params = build_local_network_gateway_params(location)
    params.name = name.nil? ? params.name : name
    network_client.local_network_gateways.create_or_update(resource_group.name, params.name, params)
  end

  def build_local_network_gateway_params(location)
    params = LocalNetworkGateway.new
    params.location = location
    params.name = 'local_gateway2579'
    params.gateway_ip_address = "192.168.3.7"
    address_space = AddressSpace.new
    params.local_network_address_space = address_space
    address_space.address_prefixes = %w(192.168.0.0/16)
    params
  end

  def create_network_security_group(resource_group, location)
    params = build_network_security_group_params(location)
    network_client.network_security_groups.create_or_update(resource_group.name, params.name, params)
  end

  def build_network_security_group_params(location)
    network_security_group_name = 'sec73484'
    params = NetworkSecurityGroup.new
    params.name = network_security_group_name
    params.location = location
    params
  end

  def create_virtual_network_gateway(location, resource_group,name = nil)
    params = build_virtual_network_gateway_params(location, resource_group)
    params.name = name || params.name
    network_client.virtual_network_gateways.create_or_update(resource_group.name, params.name, params)
  end

  def build_virtual_network_gateway_params(location, resource_group)
    params = VirtualNetworkGateway.new
    params.location = location
    params.name = 'vnet_gateway6373'
    props = VirtualNetworkGatewayPropertiesFormat.new
    params.properties = props
    props.enable_bgp = false
    props.gateway_type = 'Vpn'
    props.vpn_type = 'RouteBased'
    ip_config = VirtualNetworkGatewayIpConfiguration.new
    props.ip_configurations = [ip_config]
    ip_config.name = 'ip_config843943'
    ip_config_props = VirtualNetworkGatewayIpConfigurationPropertiesFormat.new
    ip_config.properties = ip_config_props
    ip_config_props.private_ipallocation_method = 'Dynamic'
    vnet = create_virtual_network(resource_group.name)
    public_ip = create_public_ip_address(location, resource_group)
    subnet_params = build_subnet_params
    subnet_params.name = 'GatewaySubnet'
    subnet = network_client.subnets.create_or_update(resource_group.name, vnet.name, subnet_params.name, subnet_params)
    ip_config_props.public_ipaddress = public_ip
    ip_config_props.subnet = subnet
    params
  end

  def build_public_ip_params(location)
    public_ip = PublicIPAddress.new
    public_ip.location = location
    public_ip.public_ipallocation_method = 'Dynamic'
    domain_name = 'domain734843'
    dns_settings = PublicIPAddressDnsSettings.new
    dns_settings.domain_name_label = domain_name
    public_ip.dns_settings = dns_settings
    public_ip
  end

  def create_public_ip_address(location, resource_group)
    public_ip_address_name = 'ip_name8363'
    params = build_public_ip_params(location)
    network_client.public_ipaddresses.create_or_update(resource_group.name, public_ip_address_name, params)
  end
end