====== VPC SC ====== * defining the values def create_dict(a1, a2, a3, a4): methods = [a1, a2, a3, a4] my_list = [] for method in methods: my_dict = {"method": f'"{method}"', "permission": None} my_list.append(my_dict) return my_list # Example usage inputs = ("a1", "a2", "a3", "a4") output = create_dict(*inputs) for item in output: print(item) * using yaml as input import yaml def create_dict(yaml_input): input_dict = yaml.safe_load(yaml_input) methods = input_dict["methods"] my_list = [] for method in methods: my_dict = {"method": f'"{method}"', "permission": None} my_list.append(my_dict) return my_list # Example usage yaml_input = """ methods: - a1 - a2 - a3 - a4 """ output = create_dict(yaml_input) for item in output: print(item) ====== Final version ====== import yaml def create_dict(yaml_input): input_dict = yaml.safe_load(yaml_input) methods = input_dict["methods"] my_list = [] for method in methods: my_dict = {"method": f'"{method}"', "permission": "null"} my_list.append(my_dict) return my_list # Example usage with open('input.yaml', 'r') as f: yaml_input = f.read() output = create_dict(yaml_input) for item in output: print(f"{{\n method = {item['method']}\n permission = {item['permission']}\n}},") * bash format #!/bin/bash # Load YAML input file input=$(cat input.yaml) # Parse YAML input using yq methods=$(echo $input | yq e '.methods | .[]' -) # Loop over each method and create a dictionary output="" for method in $methods do output+="\n{\n method = \"$method\"\n permission = null\n}," done # Print output echo -e $output ====== using argument input ====== import argparse import yaml def create_dict(yaml_input): input_dict = yaml.safe_load(yaml_input) methods = input_dict["methods"] my_list = [] for method in methods: my_dict = {"method": f'"{method}"', "permission": "null"} my_list.append(my_dict) return my_list # Parse command-line arguments parser = argparse.ArgumentParser() parser.add_argument("-i", "--input_file", required=True, help="path to YAML input file") args = parser.parse_args() # Read input YAML file with open(args.input_file, 'r') as f: yaml_input = f.read() # Create dictionary and print output output = create_dict(yaml_input) for item in output: print(f"{{\n method = {item['method']}\n permission = {item['permission']}\n}},") python script.py --input_file input.yaml ====== ingress policies ====== * yaml file ingress_policies: - from: sources: access_levels: - "*" # Allow Access from everywhere identities: "{{var.read_bucket_identities}}" to: resources: - "*" operations: storage.googleapis.com: methods: - "google.storage.objects.get" - "google.storage.objects.list" convert python import yaml import hcl2 # Load YAML file with open('ingress_policies.yaml', 'r') as f: data = yaml.load(f, Loader=yaml.FullLoader) # Convert YAML to HCL hcl = hcl2.dumps({'ingress_policies': data['ingress_policies']}) # Save HCL file with open('ingress_policies.hcl', 'w') as f: f.write(hcl)