Update project module to v4.0.0, update test framework module to v1.0.1
* update project module to v4.0.0 * bump tftest version in test requirements file * update plan test fixture to new syntax * fix foundations/environments tests * fix foundations/business-units tests * fix infrastructure/shared-vpc tests
This commit is contained in:
committed by
GitHub
parent
ed65051982
commit
fd0704670d
@@ -12,7 +12,7 @@
|
|||||||
# See the License for the specific language governing permissions and
|
# See the License for the specific language governing permissions and
|
||||||
# limitations under the License.
|
# limitations under the License.
|
||||||
|
|
||||||
# TODO(averbukh): simplify log-sink parameters once https://github.com/terraform-google-modules/terraform-google-log-export/issues/28 is done.
|
# TODO(averbukh): simplify log-sink parameters once https://github.com/terraform-google-modules/terraform-google-log-export/issues/28 is done.
|
||||||
|
|
||||||
locals {
|
locals {
|
||||||
parent_numeric_id = element(split("/", var.root_node), 1)
|
parent_numeric_id = element(split("/", var.root_node), 1)
|
||||||
@@ -39,7 +39,7 @@ module "shared-folder" {
|
|||||||
|
|
||||||
module "project-tf" {
|
module "project-tf" {
|
||||||
source = "terraform-google-modules/project-factory/google//modules/fabric-project"
|
source = "terraform-google-modules/project-factory/google//modules/fabric-project"
|
||||||
version = "3.2.0"
|
version = "4.0.0"
|
||||||
parent = module.shared-folder.id
|
parent = module.shared-folder.id
|
||||||
billing_account = var.billing_account_id
|
billing_account = var.billing_account_id
|
||||||
prefix = var.prefix
|
prefix = var.prefix
|
||||||
@@ -138,7 +138,7 @@ module "business-unit-3-folders" {
|
|||||||
|
|
||||||
module "project-audit" {
|
module "project-audit" {
|
||||||
source = "terraform-google-modules/project-factory/google//modules/fabric-project"
|
source = "terraform-google-modules/project-factory/google//modules/fabric-project"
|
||||||
version = "3.2.0"
|
version = "4.0.0"
|
||||||
parent = module.shared-folder.id
|
parent = module.shared-folder.id
|
||||||
billing_account = var.billing_account_id
|
billing_account = var.billing_account_id
|
||||||
prefix = var.prefix
|
prefix = var.prefix
|
||||||
@@ -180,7 +180,7 @@ module "log-sink-audit" {
|
|||||||
|
|
||||||
module "project-shared-resources" {
|
module "project-shared-resources" {
|
||||||
source = "terraform-google-modules/project-factory/google//modules/fabric-project"
|
source = "terraform-google-modules/project-factory/google//modules/fabric-project"
|
||||||
version = "3.2.0"
|
version = "4.0.0"
|
||||||
parent = module.shared-folder.id
|
parent = module.shared-folder.id
|
||||||
billing_account = var.billing_account_id
|
billing_account = var.billing_account_id
|
||||||
prefix = var.prefix
|
prefix = var.prefix
|
||||||
|
|||||||
@@ -20,7 +20,7 @@
|
|||||||
|
|
||||||
module "project-tf" {
|
module "project-tf" {
|
||||||
source = "terraform-google-modules/project-factory/google//modules/fabric-project"
|
source = "terraform-google-modules/project-factory/google//modules/fabric-project"
|
||||||
version = "3.2.0"
|
version = "4.0.0"
|
||||||
parent = var.root_node
|
parent = var.root_node
|
||||||
billing_account = var.billing_account_id
|
billing_account = var.billing_account_id
|
||||||
prefix = var.prefix
|
prefix = var.prefix
|
||||||
@@ -102,7 +102,7 @@ module "folders-top-level" {
|
|||||||
|
|
||||||
module "project-audit" {
|
module "project-audit" {
|
||||||
source = "terraform-google-modules/project-factory/google//modules/fabric-project"
|
source = "terraform-google-modules/project-factory/google//modules/fabric-project"
|
||||||
version = "3.2.0"
|
version = "4.0.0"
|
||||||
parent = var.root_node
|
parent = var.root_node
|
||||||
billing_account = var.billing_account_id
|
billing_account = var.billing_account_id
|
||||||
prefix = var.prefix
|
prefix = var.prefix
|
||||||
@@ -146,7 +146,7 @@ module "log-sink-audit" {
|
|||||||
|
|
||||||
module "project-shared-resources" {
|
module "project-shared-resources" {
|
||||||
source = "terraform-google-modules/project-factory/google//modules/fabric-project"
|
source = "terraform-google-modules/project-factory/google//modules/fabric-project"
|
||||||
version = "3.2.0"
|
version = "4.0.0"
|
||||||
parent = var.root_node
|
parent = var.root_node
|
||||||
billing_account = var.billing_account_id
|
billing_account = var.billing_account_id
|
||||||
prefix = var.prefix
|
prefix = var.prefix
|
||||||
|
|||||||
@@ -20,7 +20,7 @@
|
|||||||
|
|
||||||
module "project-svpc-host" {
|
module "project-svpc-host" {
|
||||||
source = "terraform-google-modules/project-factory/google//modules/fabric-project"
|
source = "terraform-google-modules/project-factory/google//modules/fabric-project"
|
||||||
version = "3.3.0"
|
version = "4.0.0"
|
||||||
parent = var.root_node
|
parent = var.root_node
|
||||||
prefix = var.prefix
|
prefix = var.prefix
|
||||||
name = "vpc-host"
|
name = "vpc-host"
|
||||||
@@ -33,7 +33,7 @@ module "project-svpc-host" {
|
|||||||
|
|
||||||
module "project-service-gce" {
|
module "project-service-gce" {
|
||||||
source = "terraform-google-modules/project-factory/google//modules/fabric-project"
|
source = "terraform-google-modules/project-factory/google//modules/fabric-project"
|
||||||
version = "3.3.0"
|
version = "4.0.0"
|
||||||
parent = var.root_node
|
parent = var.root_node
|
||||||
prefix = var.prefix
|
prefix = var.prefix
|
||||||
name = "gce"
|
name = "gce"
|
||||||
@@ -47,7 +47,7 @@ module "project-service-gce" {
|
|||||||
|
|
||||||
module "project-service-gke" {
|
module "project-service-gke" {
|
||||||
source = "terraform-google-modules/project-factory/google//modules/fabric-project"
|
source = "terraform-google-modules/project-factory/google//modules/fabric-project"
|
||||||
version = "3.3.0"
|
version = "4.0.0"
|
||||||
parent = var.root_node
|
parent = var.root_node
|
||||||
prefix = var.prefix
|
prefix = var.prefix
|
||||||
name = "gke"
|
name = "gke"
|
||||||
|
|||||||
@@ -30,6 +30,6 @@ def plan():
|
|||||||
tf = tftest.TerraformTest(tfdir, _BASEDIR,
|
tf = tftest.TerraformTest(tfdir, _BASEDIR,
|
||||||
os.environ.get('TERRAFORM', 'terraform'))
|
os.environ.get('TERRAFORM', 'terraform'))
|
||||||
tf.setup(extra_files=['tests/{}/terraform.tfvars'.format(tfdir)])
|
tf.setup(extra_files=['tests/{}/terraform.tfvars'.format(tfdir)])
|
||||||
return tf.plan_out(parsed=True)
|
return tf.plan(output=True)
|
||||||
|
|
||||||
return run_plan
|
return run_plan
|
||||||
|
|||||||
@@ -21,8 +21,7 @@ import pytest
|
|||||||
def test_shared_folder(plan):
|
def test_shared_folder(plan):
|
||||||
"Shared folder resource attributes must match variables."
|
"Shared folder resource attributes must match variables."
|
||||||
root_node = plan.variables['root_node']
|
root_node = plan.variables['root_node']
|
||||||
resource = plan.modules['module.shared-folder'].get(
|
resource = plan.modules['module.shared-folder'].resources['google_folder.folders[0]']
|
||||||
'module.shared-folder.google_folder.folders[0]')
|
|
||||||
assert resource['values']['parent'] == root_node
|
assert resource['values']['parent'] == root_node
|
||||||
assert resource['values']['display_name'] == 'shared'
|
assert resource['values']['display_name'] == 'shared'
|
||||||
|
|
||||||
|
|||||||
@@ -31,15 +31,16 @@ def test_project_resource(plan, project_modules):
|
|||||||
prefix = plan.variables['prefix']
|
prefix = plan.variables['prefix']
|
||||||
billing_account = plan.variables['billing_account_id']
|
billing_account = plan.variables['billing_account_id']
|
||||||
project_names = ['%s-%s' % (prefix, name) for name in names]
|
project_names = ['%s-%s' % (prefix, name) for name in names]
|
||||||
for name, mod in project_modules.items():
|
for mod in project_modules.values():
|
||||||
resource = mod['%s.google_project.project' % name]
|
resource = mod.resources['google_project.project']
|
||||||
assert resource['values']['billing_account'] == billing_account
|
assert resource['values']['billing_account'] == billing_account
|
||||||
assert resource['values']['name'] in project_names
|
assert resource['values']['name'] in project_names
|
||||||
|
|
||||||
|
|
||||||
def test_project_services(plan, project_modules):
|
def test_project_services(plan, project_modules):
|
||||||
"Project service resource must enable APIs specified in the variable."
|
"Project service resource must enable APIs specified in the variable."
|
||||||
services = plan.variables['project_services']
|
num_services = len(plan.variables['project_services'])
|
||||||
for name, mod in project_modules.items():
|
for mod in project_modules.values():
|
||||||
resource = mod['%s.google_project_services.services[0]' % name]
|
project_services = [r for r in mod.child_modules['module.project_services'].resources if r.startswith(
|
||||||
assert resource['values']['services'] == services
|
'google_project_service.project_services')]
|
||||||
|
assert len(project_services) == num_services
|
||||||
|
|||||||
@@ -27,9 +27,8 @@ def test_accounts(plan, mod):
|
|||||||
"One service account per environment should be created."
|
"One service account per environment should be created."
|
||||||
environments = plan.variables['environments']
|
environments = plan.variables['environments']
|
||||||
prefix = plan.variables['prefix']
|
prefix = plan.variables['prefix']
|
||||||
resources = [v for k, v in mod.items() if '.google_service_account.' in k]
|
resources = [
|
||||||
|
v for k, v in mod.resources.items() if 'google_service_account.' in k]
|
||||||
assert len(resources) == len(environments)
|
assert len(resources) == len(environments)
|
||||||
assert sorted([res['values']['account_id'] for res in resources]) == sorted([
|
assert sorted([res['values']['account_id'] for res in resources]) == sorted([
|
||||||
'%s-%s' % (prefix, env) for env in environments])
|
'%s-%s' % (prefix, env) for env in environments])
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -30,14 +30,15 @@ def test_project_resource(plan, project_modules):
|
|||||||
root_node = plan.variables['root_node'].split('/')[1]
|
root_node = plan.variables['root_node'].split('/')[1]
|
||||||
billing_account = plan.variables['billing_account_id']
|
billing_account = plan.variables['billing_account_id']
|
||||||
for name, mod in project_modules.items():
|
for name, mod in project_modules.items():
|
||||||
resource = mod['%s.google_project.project' % name]
|
resource = mod.resources['google_project.project']
|
||||||
assert resource['values']['folder_id'] == root_node
|
assert resource['values']['folder_id'] == root_node
|
||||||
assert resource['values']['billing_account'] == billing_account
|
assert resource['values']['billing_account'] == billing_account
|
||||||
|
|
||||||
|
|
||||||
def test_project_services(plan, project_modules):
|
def test_project_services(plan, project_modules):
|
||||||
"Project service resource must enable APIs specified in the variable."
|
"Project service resource must enable APIs specified in the variable."
|
||||||
services = plan.variables['project_services']
|
num_services = len(plan.variables['project_services'])
|
||||||
for name, mod in project_modules.items():
|
for mod in project_modules.values():
|
||||||
resource = mod['%s.google_project_services.services[0]' % name]
|
project_services = [r for r in mod.child_modules['module.project_services'].resources if r.startswith(
|
||||||
assert resource['values']['services'] == services
|
'google_project_service.project_services')]
|
||||||
|
assert len(project_services) == num_services
|
||||||
|
|||||||
@@ -27,7 +27,8 @@ def test_accounts(plan, mod):
|
|||||||
"One service account per environment should be created."
|
"One service account per environment should be created."
|
||||||
environments = plan.variables['environments']
|
environments = plan.variables['environments']
|
||||||
prefix = plan.variables['prefix']
|
prefix = plan.variables['prefix']
|
||||||
resources = [v for k, v in mod.items() if '.google_service_account.' in k]
|
resources = [
|
||||||
|
v for k, v in mod.resources.items() if 'google_service_account.' in k]
|
||||||
assert len(resources) == len(environments)
|
assert len(resources) == len(environments)
|
||||||
assert sorted([res['values']['account_id'] for res in resources]) == sorted([
|
assert sorted([res['values']['account_id'] for res in resources]) == sorted([
|
||||||
'%s-%s' % (prefix, env) for env in environments])
|
'%s-%s' % (prefix, env) for env in environments])
|
||||||
|
|||||||
@@ -26,14 +26,14 @@ def mod(plan):
|
|||||||
def test_host_vpc(plan):
|
def test_host_vpc(plan):
|
||||||
"Test that the vpc project is set as shared vpc host."
|
"Test that the vpc project is set as shared vpc host."
|
||||||
mod = plan.modules['module.net-vpc-host']
|
mod = plan.modules['module.net-vpc-host']
|
||||||
resources = [v['values'] for v in mod.values() if v['type'] ==
|
resources = [v['values'] for v in mod.resources.values() if v['type'] ==
|
||||||
'google_compute_shared_vpc_host_project']
|
'google_compute_shared_vpc_host_project']
|
||||||
assert resources[0]['project'] == plan.outputs['host_project_id']
|
assert resources[0]['project'] == plan.outputs['host_project_id']
|
||||||
|
|
||||||
|
|
||||||
def test_service_projects(plan, mod):
|
def test_service_projects(plan, mod):
|
||||||
"Test that service projects are registered with the shared vpc."
|
"Test that service projects are registered with the shared vpc."
|
||||||
resources = [v['values'] for v in mod.values() if v['type'] ==
|
resources = [v['values'] for v in mod.resources.values() if v['type'] ==
|
||||||
'google_compute_shared_vpc_service_project']
|
'google_compute_shared_vpc_service_project']
|
||||||
assert len(resources) == 2
|
assert len(resources) == 2
|
||||||
assert set([r['host_project'] for r in resources]) == set(
|
assert set([r['host_project'] for r in resources]) == set(
|
||||||
@@ -44,7 +44,7 @@ def test_service_projects(plan, mod):
|
|||||||
|
|
||||||
def test_subnet_users(plan, mod):
|
def test_subnet_users(plan, mod):
|
||||||
"Test that the network user role is assigned on subnets."
|
"Test that the network user role is assigned on subnets."
|
||||||
resources = [v['values'] for v in mod.values() if v['type'] ==
|
resources = [v['values'] for v in mod.resources.values() if v['type'] ==
|
||||||
'google_compute_subnetwork_iam_binding']
|
'google_compute_subnetwork_iam_binding']
|
||||||
assert len(resources) == 2
|
assert len(resources) == 2
|
||||||
assert set([r['project'] for r in resources]) == set(
|
assert set([r['project'] for r in resources]) == set(
|
||||||
@@ -54,7 +54,7 @@ def test_subnet_users(plan, mod):
|
|||||||
|
|
||||||
def test_service_agent(plan, mod):
|
def test_service_agent(plan, mod):
|
||||||
"Test that the service agent role is assigned for gke only."
|
"Test that the service agent role is assigned for gke only."
|
||||||
resources = [v['values'] for v in mod.values() if v['type'] ==
|
resources = [v['values'] for v in mod.resources.values() if v['type'] ==
|
||||||
'google_project_iam_binding']
|
'google_project_iam_binding']
|
||||||
assert resources[0] == {
|
assert resources[0] == {
|
||||||
'project': plan.outputs['host_project_id'],
|
'project': plan.outputs['host_project_id'],
|
||||||
|
|||||||
@@ -1,3 +1,3 @@
|
|||||||
pytest>=4.3.1
|
pytest>=4.3.1
|
||||||
pytest-tldr>=0.2.1
|
pytest-tldr>=0.2.1
|
||||||
tftest>=0.6.4
|
tftest>=1.0.0
|
||||||
Reference in New Issue
Block a user