# Copyright ETSI Contributors and Others.
#
# 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.

# This is an environment file for GCP integration tests
# The following variables are expected
GCP_PROJECT=<GCP_project_name>
GCP_REGION=<GCP_region_name>
GCP_CREDENTIALS=<GCP_credentials_file>
# Flavor/machine type used for integration tests
GCP_FLAVOR=g1-small
# GCP image id to be used for the tests with the Google Cloud format: projects/<image project>/global/images/<image name>
GCP_IMAGE_ID=projects/ubuntu-os-cloud/global/images/ubuntu-1804-bionic-v20211103
# GCP image id to be used for the tests with GCP connector format: <image project>:image-family:<family>
GCP_IMAGE_CONNECTOR_ID=ubuntu-os-cloud:image-family:ubuntu-1804-lts

