105 lines
3.2 KiB
Python
105 lines
3.2 KiB
Python
# Copyright 2022 Google LLC
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
# you may not use this file except in compliance with the License.
|
|
# You may obtain a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
# See the License for the specific language governing permissions and
|
|
# limitations under the License.
|
|
|
|
_VAR_BGP = (
|
|
'{'
|
|
'session_range="169.254.63.1/29", '
|
|
'candidate_ip_ranges= ["169.254.63.0/29"], '
|
|
'advertised_route_priority=0, '
|
|
'}'
|
|
)
|
|
_VAR_CONFIG = (
|
|
'{'
|
|
'description="", '
|
|
'vlan_id=603, '
|
|
'bandwidth="BPS_10G", '
|
|
'admin_enabled=true, '
|
|
'mtu=1440, '
|
|
'}'
|
|
|
|
)
|
|
_VAR_ROUTER_CONFIG = (
|
|
'{'
|
|
'description="", '
|
|
'asn=65003, '
|
|
'advertise_config= {'
|
|
' mode="CUSTOM", '
|
|
' groups=["ALL_SUBNETS"], '
|
|
' ip_ranges = {'
|
|
' "199.36.153.8/30" = "custom" }, '
|
|
' }, '
|
|
'}'
|
|
)
|
|
|
|
|
|
def test_router_create_false(plan_runner):
|
|
"Test with no router creation."
|
|
_, resources = plan_runner(router_create='false')
|
|
assert len(resources) == 3
|
|
|
|
|
|
def test_vlanattachment(plan_runner):
|
|
"Test vlan attachment"
|
|
_, resources = plan_runner(bgp=_VAR_BGP, config=_VAR_CONFIG)
|
|
assert len(resources) == 4
|
|
for r in resources:
|
|
if r['type'] != 'google_compute_interconnect_attachment':
|
|
continue
|
|
assert r['values']['interconnect'].endswith(
|
|
'interconnects/mylab-interconnect-1')
|
|
assert r['values']['name'] == 'vlan-603'
|
|
assert r['values']['vlan_tag8021q'] == 603
|
|
assert r['values']['candidate_subnets'] == ['169.254.63.0/29']
|
|
assert r['values']['bandwidth'] == 'BPS_10G'
|
|
assert r['values']['mtu'] == '1440'
|
|
assert r['values']['admin_enabled'] == True
|
|
|
|
def test_router(plan_runner):
|
|
"Test router"
|
|
_, resources = plan_runner(router_config=_VAR_ROUTER_CONFIG)
|
|
assert len(resources) == 4
|
|
for r in resources:
|
|
if r['type'] != 'google_compute_router':
|
|
continue
|
|
assert r['values']['name'] == 'router-vlan-attachment'
|
|
assert r['values']['network'] == 'my-vpc'
|
|
assert r['values']['bgp'] == [{
|
|
'advertise_mode': 'CUSTOM',
|
|
'advertised_groups': ['ALL_SUBNETS'],
|
|
'advertised_ip_ranges': [{'description': 'custom', 'range': '199.36.153.8/30'}],
|
|
'asn': 65003,
|
|
}]
|
|
|
|
def test_router_peer(plan_runner):
|
|
"Test router peer"
|
|
_, resources = plan_runner(bgp=_VAR_BGP)
|
|
assert len(resources) == 4
|
|
for r in resources:
|
|
if r['type'] != 'google_compute_router_peer':
|
|
continue
|
|
assert r['values']['peer_ip_address'] == '169.254.63.2'
|
|
assert r['values']['peer_asn'] == 65418
|
|
assert r['values']['interface'] == 'vlan-603'
|
|
|
|
def test_router_interface(plan_runner):
|
|
"Test router interface"
|
|
_, resources = plan_runner(bgp=_VAR_BGP)
|
|
assert len(resources) == 4
|
|
for r in resources:
|
|
if r['type'] != 'google_compute_router_interface':
|
|
continue
|
|
assert r['values']['name'] == 'interface-vlan-603'
|
|
assert r['values']['ip_range'] == '169.254.63.1/29'
|
|
assert r['values']['interconnect_attachment'] == 'vlan-603'
|