Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
34 changes: 33 additions & 1 deletion cloud/sample/resources_gcloud.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,44 @@
"project": "redhat-marketplace-dev",
"instances": [
{
"image": "rhel-9-v20220524",
"image": "rhel-9-v20220719",
"region": "us-east1",
"zone": "us-east1-c",
"instance_type": "",
"username": "google",
"name": "rhel-9.0-x86_64"
},
{
"image": "rhel-8-v20220719",
"region": "us-east1",
"zone": "us-east1-c",
"instance_type": "",
"username": "google",
"name": "rhel-8.x-x86_64"
},
{
"image": "rhel-8-6-sap-v20220801",
"region": "us-east1",
"zone": "us-east1-c",
"instance_type": "",
"username": "google",
"name": "rhel-8.6-sap-x86_64"
},
{
"image": "rhel-9-arm64-v20220719",
"region": "us-central1",
"zone": "us-central1-a",
"instance_type": "t2a-standard-4",
"username": "google",
"name": "rhel-9.0-aarch64"
},
{
"image": "rhel-7-v20220719",
"region": "us-east1",
"zone": "us-east1-c",
"instance_type": "",
"username": "google",
"name": "rhel-7.x-x86_64"
}
]
}
5 changes: 3 additions & 2 deletions cloud/terraform/aws_config_builder.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ def __init__(self, resources_dict, ssh_key_path):
def build_providers(self):
all_regions = self.__get_all_regions_from_resources_file()
for region in all_regions:
self.providers_tf['provider'][self.cloud_providers[self.cloud_name]]\
self.providers_tf['provider'][self.cloud_providers[self.cloud_name]] \
.append(self.__new_aws_provider(region))

return self.providers_tf
Expand Down Expand Up @@ -60,7 +60,8 @@ def __new_aws_instance(self, instance):
name_tag = instance['name'].replace('.', '-')
name = self.create_resource_name([name_tag])

aliases = [provider['alias'] for provider in self.providers_tf['provider'][self.cloud_name]]
aliases = [provider['alias'] for provider in
self.providers_tf['provider'][self.cloud_providers[self.cloud_name]]]
if instance['region'] not in aliases:
raise Exception('Cannot add an instance if region provider is not set up')

Expand Down
23 changes: 14 additions & 9 deletions cloud/terraform/gcloud_config_builder.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ def __init__(self, resources_dict, ssh_key_path):
def build_providers(self):
all_regions = self.__get_all_regions_from_resources_file()
for region in all_regions:
self.providers_tf['provider'][self.cloud_providers[self.cloud_name]]\
self.providers_tf['provider'][self.cloud_providers[self.cloud_name]] \
.append(self.__new_gcloud_provider(self.project, region))

return self.providers_tf
Expand All @@ -35,33 +35,35 @@ def __new_gcloud_provider(self, project, region):
'project': project,
'region': region,
'zone': zone,
'alias': region,
}

def build_resources(self):
self.resources_tf['resource']['google_compute_network'] = {}
self.resources_tf['resource']['google_compute_firewall'] = {}
self.resources_tf['resource']['google_compute_instance'] = {}

network_name = self.create_resource_name(['vpc'])
for instance in self.resources_dict['instances']:
network_name = self.create_resource_name(['vpc', instance['region']])

self.__new_gcloud_network(network_name)
self.__new_gcloud_firewall_rule(network_name)
self.__new_gcloud_network(network_name, instance)
self.__new_gcloud_firewall_rule(network_name, instance)

for instance in self.resources_dict['instances']:
instance['google_compute_network'] = network_name
self.__new_gcloud_instance(instance)

return self.resources_tf

def __new_gcloud_firewall_rule(self, network_name):
name = self.create_resource_name(['firewall-rule'])
def __new_gcloud_firewall_rule(self, network_name, instance):
name = self.create_resource_name(['firewall-rule', instance['region']])

allow_rule = {
'protocol': 'tcp',
'ports': ['22'],
}

new_rule = {
'provider': f'google.{instance["region"]}',
'name': name,
'network': network_name,
'target_tags': [self.ssh_enabled_tag],
Expand All @@ -74,8 +76,9 @@ def __new_gcloud_firewall_rule(self, network_name):

self.resources_tf['resource']['google_compute_firewall'][name] = new_rule

def __new_gcloud_network(self, network_name):
def __new_gcloud_network(self, network_name, instance):
new_vpc = {
'provider': f'google.{instance["region"]}',
'name': network_name,
'auto_create_subnetworks': True
}
Expand All @@ -90,7 +93,8 @@ def __new_gcloud_instance(self, instance):
formatted_name = instance['name'].replace('.', '-').replace('_', '-')
name = self.create_resource_name([formatted_name])

aliases = [provider['region'] for provider in self.providers_tf['provider'][self.cloud_providers[self.cloud_name]]]
aliases = [provider['alias'] for provider in
self.providers_tf['provider'][self.cloud_providers[self.cloud_name]]]
if instance['region'] not in aliases:
raise Exception('Cannot add an instance if region provider is not set up')

Expand All @@ -117,6 +121,7 @@ def __new_gcloud_instance(self, instance):
}

new_instance = {
'provider': f'google.{instance["region"]}',
'name': name,
'machine_type': instance['instance_type'],
'boot_disk': boot_disk,
Expand Down