mirror of
https://github.com/ansible-collections/community.general.git
synced 2026-05-07 05:42:50 +00:00
[cloud] New GCP module: DNS Managed Zones (gcp_dns_managed_zone.py) (#35014)
This commit is contained in:
17
test/integration/cloud-config-gcp.yml.template
Normal file
17
test/integration/cloud-config-gcp.yml.template
Normal file
@@ -0,0 +1,17 @@
|
||||
# This is the configuration template for ansible-test GCP integration tests.
|
||||
#
|
||||
# You do not need this template if you are:
|
||||
#
|
||||
# 1) Running integration tests without using ansible-test.
|
||||
# 2) Using the automatically provisioned cloudstack-sim docker container in ansible-test.
|
||||
#
|
||||
# If you do not want to use the automatically provided GCP simulator,
|
||||
# fill in the @VAR placeholders below and save this file without the .template extension.
|
||||
# This will cause ansible-test to use the given configuration and not launch the simulator.
|
||||
#
|
||||
# It is recommended that you DO NOT use this template unless you cannot use the simulator.
|
||||
|
||||
gcp_project: @PROJECT
|
||||
gcp_cred_file: @CRED_FILE
|
||||
gcp_cred_kind: @CRED_KIND
|
||||
gcp_cred_email: @CRED_EMAIL
|
||||
1
test/integration/targets/gcp_dns_managed_zone/aliases
Normal file
1
test/integration/targets/gcp_dns_managed_zone/aliases
Normal file
@@ -0,0 +1 @@
|
||||
cloud/gcp
|
||||
@@ -0,0 +1,3 @@
|
||||
---
|
||||
# defaults file
|
||||
resource_name: '{{resource_prefix}}'
|
||||
86
test/integration/targets/gcp_dns_managed_zone/tasks/main.yml
Normal file
86
test/integration/targets/gcp_dns_managed_zone/tasks/main.yml
Normal file
@@ -0,0 +1,86 @@
|
||||
---
|
||||
# ----------------------------------------------------------------------------
|
||||
#
|
||||
# *** AUTO GENERATED CODE *** AUTO GENERATED CODE ***
|
||||
#
|
||||
# ----------------------------------------------------------------------------
|
||||
#
|
||||
# This file is automatically generated by Magic Modules and manual
|
||||
# changes will be clobbered when the file is regenerated.
|
||||
#
|
||||
# Please read more about how to change this file at
|
||||
# https://www.github.com/GoogleCloudPlatform/magic-modules
|
||||
#
|
||||
# ----------------------------------------------------------------------------
|
||||
#----------------------------------------------------------
|
||||
- name: create a managed zone
|
||||
gcp_dns_managed_zone:
|
||||
name: "{{ resource_name }}"
|
||||
dns_name: test.somewild2.example.com.
|
||||
description: 'test zone'
|
||||
project: "{{ gcp_project }}"
|
||||
auth_kind: "{{ gcp_cred_kind }}"
|
||||
service_account_file: "{{ gcp_cred_file }}"
|
||||
scopes:
|
||||
- https://www.googleapis.com/auth/ndev.clouddns.readwrite
|
||||
state: present
|
||||
register: result
|
||||
- name: assert changed is true
|
||||
assert:
|
||||
that:
|
||||
- result.changed == true
|
||||
- "result.kind == 'dns#managedZone'"
|
||||
# ----------------------------------------------------------------------------
|
||||
- name: create a managed zone that already exists
|
||||
gcp_dns_managed_zone:
|
||||
name: "{{ resource_name }}"
|
||||
dns_name: test.somewild2.example.com.
|
||||
description: 'test zone'
|
||||
project: "{{ gcp_project }}"
|
||||
auth_kind: "{{ gcp_cred_kind }}"
|
||||
service_account_file: "{{ gcp_cred_file }}"
|
||||
scopes:
|
||||
- https://www.googleapis.com/auth/ndev.clouddns.readwrite
|
||||
state: present
|
||||
register: result
|
||||
- name: assert changed is false
|
||||
assert:
|
||||
that:
|
||||
- result.changed == false
|
||||
- "result.kind == 'dns#managedZone'"
|
||||
#----------------------------------------------------------
|
||||
- name: delete a managed zone
|
||||
gcp_dns_managed_zone:
|
||||
name: "{{ resource_name }}"
|
||||
dns_name: test.somewild2.example.com.
|
||||
description: 'test zone'
|
||||
project: "{{ gcp_project }}"
|
||||
auth_kind: "{{ gcp_cred_kind }}"
|
||||
service_account_file: "{{ gcp_cred_file }}"
|
||||
scopes:
|
||||
- https://www.googleapis.com/auth/ndev.clouddns.readwrite
|
||||
state: absent
|
||||
register: result
|
||||
- name: assert changed is true
|
||||
assert:
|
||||
that:
|
||||
- result.changed == true
|
||||
- result.has_key('kind') == False
|
||||
# ----------------------------------------------------------------------------
|
||||
- name: delete a managed zone that does not exist
|
||||
gcp_dns_managed_zone:
|
||||
name: "{{ resource_name }}"
|
||||
dns_name: test.somewild2.example.com.
|
||||
description: 'test zone'
|
||||
project: "{{ gcp_project }}"
|
||||
auth_kind: "{{ gcp_cred_kind }}"
|
||||
service_account_file: "{{ gcp_cred_file }}"
|
||||
scopes:
|
||||
- https://www.googleapis.com/auth/ndev.clouddns.readwrite
|
||||
state: absent
|
||||
register: result
|
||||
- name: assert changed is false
|
||||
assert:
|
||||
that:
|
||||
- result.changed == false
|
||||
- result.has_key('kind') == False
|
||||
67
test/runner/lib/cloud/gcp.py
Normal file
67
test/runner/lib/cloud/gcp.py
Normal file
@@ -0,0 +1,67 @@
|
||||
# Copyright: (c) 2018, Google Inc.
|
||||
# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
|
||||
"""GCP plugin for integration tests."""
|
||||
from __future__ import absolute_import, print_function
|
||||
|
||||
import os
|
||||
|
||||
from lib.util import (
|
||||
ApplicationError,
|
||||
display,
|
||||
is_shippable,
|
||||
)
|
||||
|
||||
from lib.cloud import (
|
||||
CloudProvider,
|
||||
CloudEnvironment,
|
||||
)
|
||||
|
||||
from lib.core_ci import (
|
||||
AnsibleCoreCI, )
|
||||
|
||||
|
||||
class GcpCloudProvider(CloudProvider):
|
||||
"""GCP cloud provider plugin. Sets up cloud resources before delegation."""
|
||||
|
||||
def filter(self, targets, exclude):
|
||||
"""Filter out the cloud tests when the necessary config and resources are not available.
|
||||
:type targets: tuple[TestTarget]
|
||||
:type exclude: list[str]
|
||||
"""
|
||||
|
||||
if os.path.isfile(self.config_static_path):
|
||||
return
|
||||
|
||||
super(GcpCloudProvider, self).filter(targets, exclude)
|
||||
|
||||
def setup(self):
|
||||
"""Setup the cloud resource before delegation and register a cleanup callback."""
|
||||
super(GcpCloudProvider, self).setup()
|
||||
|
||||
if not self._use_static_config():
|
||||
display.notice(
|
||||
'static configuration could not be used. are you missing a template file?'
|
||||
)
|
||||
|
||||
|
||||
class GcpCloudEnvironment(CloudEnvironment):
|
||||
"""GCP cloud environment plugin. Updates integration test environment after delegation."""
|
||||
|
||||
def configure_environment(self, env, cmd):
|
||||
"""
|
||||
:type env: dict[str, str]
|
||||
:type cmd: list[str]
|
||||
"""
|
||||
cmd.append('-e')
|
||||
cmd.append('@%s' % self.config_path)
|
||||
|
||||
cmd.append('-e')
|
||||
cmd.append('resource_prefix=%s' % self.resource_prefix)
|
||||
|
||||
def on_failure(self, target, tries):
|
||||
"""
|
||||
:type target: TestTarget
|
||||
:type tries: int
|
||||
"""
|
||||
if not tries and self.managed:
|
||||
display.notice('%s failed' % target.name)
|
||||
Reference in New Issue
Block a user