72 lines
2.3 KiB
Python
72 lines
2.3 KiB
Python
import requests
|
|
import yaml
|
|
import json
|
|
import base64
|
|
|
|
# The file path for the YAML file to be read
|
|
# You can change this to the path of your YAML file
|
|
YAML_FILE_PATH = 'blueprint.yaml'
|
|
|
|
# The API endpoint and headers from the curl request
|
|
API_URL = 'http://localhost:3004/v1/org/test/blueprint'
|
|
HEADERS = {
|
|
'accept': '*/*',
|
|
'Authorization': 'Bearer v7ix7xha1bmq2on.tzsden374mtmkeczm3tx44uzxsljnrst7nmg7ccr',
|
|
'Content-Type': 'application/json'
|
|
}
|
|
|
|
def convert_and_send(file_path, url, headers):
|
|
"""
|
|
Reads a YAML file, converts its content to a JSON payload,
|
|
and sends it via a PUT request to a specified URL.
|
|
"""
|
|
try:
|
|
# Read the YAML file content
|
|
with open(file_path, 'r') as file:
|
|
yaml_content = file.read()
|
|
|
|
# Parse the YAML string to a Python dictionary
|
|
# This will be used to ensure the YAML is valid before sending
|
|
parsed_yaml = yaml.safe_load(yaml_content)
|
|
|
|
# convert the parsed YAML to a JSON string
|
|
json_payload = json.dumps(parsed_yaml)
|
|
print("Converted JSON payload:")
|
|
print(json_payload)
|
|
|
|
# Encode the JSON string to Base64
|
|
encoded_json = base64.b64encode(json_payload.encode('utf-8')).decode('utf-8')
|
|
|
|
# Create the final payload with the base64 encoded data
|
|
final_payload = {
|
|
"blueprint": encoded_json
|
|
}
|
|
|
|
print("Sending the following Base64 encoded JSON payload:")
|
|
print(final_payload)
|
|
print("-" * 20)
|
|
|
|
# Make the PUT request with the base64 encoded payload
|
|
response = requests.put(url, headers=headers, json=final_payload)
|
|
|
|
# Print the API response for debugging
|
|
print(f"API Response Status Code: {response.status_code}")
|
|
print("API Response Content:")
|
|
print(response.text)
|
|
|
|
# Raise an exception for bad status codes (4xx or 5xx)
|
|
response.raise_for_status()
|
|
|
|
except FileNotFoundError:
|
|
print(f"Error: The file '{file_path}' was not found.")
|
|
except yaml.YAMLError as e:
|
|
print(f"Error parsing YAML file: {e}")
|
|
except requests.exceptions.RequestException as e:
|
|
print(f"An error occurred during the API request: {e}")
|
|
except Exception as e:
|
|
print(f"An unexpected error occurred: {e}")
|
|
|
|
# Run the function
|
|
if __name__ == "__main__":
|
|
convert_and_send(YAML_FILE_PATH, API_URL, HEADERS)
|
|
|