|
11 | 11 | ) |
12 | 12 |
|
13 | 13 |
|
| 14 | +def get_aws_client(request): |
| 15 | + aws_access_key_id = request.args.get("aws_access_key_id") |
| 16 | + aws_secret_access_key = request.args.get("aws_secret_access_key") |
| 17 | + region_name = request.args.get("region_name") |
| 18 | + return boto3.client('ec2', |
| 19 | + aws_access_key_id=aws_access_key_id, |
| 20 | + aws_secret_access_key=aws_secret_access_key, |
| 21 | + region_name=region_name |
| 22 | + ) |
| 23 | + |
| 24 | + |
14 | 25 | # Endpoint: http://<api_host>:<api_port>/ec2/list |
15 | | -@app.route('/ec2/list', methods=['POST', 'GET']) |
| 26 | +@ app.route('/ec2/list', methods=['GET']) |
16 | 27 | def aws_list(): |
17 | 28 | try: |
18 | | - aws_access_key_id = request.args.get("aws_access_key_id") |
19 | | - aws_secret_access_key = request.args.get("aws_secret_access_key") |
20 | | - region_name = request.args.get("region_name") |
21 | | - client = boto3.client('ec2', |
22 | | - aws_access_key_id=aws_access_key_id, |
23 | | - aws_secret_access_key=aws_secret_access_key, |
24 | | - region_name=region_name |
25 | | - ) |
| 29 | + client = get_aws_client(request) |
| 30 | + |
| 31 | + instances = client.describe_instances() |
| 32 | + output = [] |
| 33 | + for reservation in instances['Reservations']: |
| 34 | + for instance in reservation['Instances']: |
| 35 | + output.append( |
| 36 | + { |
| 37 | + 'id': instance['InstanceId'], |
| 38 | + "instance-type": instance['InstanceType'], |
| 39 | + "instance-state": instance['State']['Name'], |
| 40 | + "private-ip": instance['PrivateIpAddress'], |
| 41 | + "key-name": instance['KeyName'], |
| 42 | + "image-id": instance['ImageId'], |
| 43 | + "vpc-id": instance['VpcId'], |
| 44 | + "subnet-id": instance['SubnetId'], |
| 45 | + "security-group-ids": instance['SecurityGroups'], |
| 46 | + } |
| 47 | + ) |
| 48 | + |
| 49 | + print(output) |
| 50 | + return jsonify(output), 200 |
26 | 51 |
|
27 | 52 | except Exception as error: |
28 | 53 | print(str(error)) |
29 | | - return jsonify({'Error': "Unexpected Error occured"}), 500 |
30 | | - |
31 | | - instances = client.describe_instances() |
32 | | - output = [] |
33 | | - for reservation in instances['Reservations']: |
34 | | - output.extend([ |
35 | | - { |
36 | | - 'id': instance['InstanceId'], |
37 | | - "instance-type": instance['InstanceType'], |
38 | | - "instance-state": instance['State']['Name'] |
39 | | - } |
40 | | - for instance in reservation['Instances']]) |
41 | | - |
42 | | - # print(output) |
43 | | - return jsonify(output), 200 |
| 54 | + return jsonify({'Message': "Unexpected Error occured", 'Error': str(error)}), 500 |
44 | 55 |
|
45 | 56 |
|
46 | 57 | # Endpoint: http://<api_host>:<api_port>/ec2/start |
47 | | -@app.route("/ec2/start", methods=["POST", "GET"]) |
| 58 | +@app.route("/ec2/start", methods=["POST"]) |
48 | 59 | def start_ec2_instances(): |
49 | 60 | try: |
50 | | - aws_access_key_id = request.args.get("aws_access_key_id") |
51 | | - aws_secret_access_key = request.args.get("aws_secret_access_key") |
52 | | - region_name = request.args.get("region_name") |
53 | | - InstanceIds = request.args.get("InstanceId") |
54 | | - client = boto3.client('ec2', |
55 | | - aws_access_key_id=aws_access_key_id, |
56 | | - aws_secret_access_key=aws_secret_access_key, |
57 | | - region_name=region_name, |
58 | | - ) |
59 | | - |
60 | | - except Exception as error: |
61 | | - print(str(error)) |
62 | | - return jsonify({'Error': "Unexpected Error occured"}), 500 |
| 61 | + client = get_aws_client(request) |
| 62 | + InstanceId = request.args.get("InstanceId") |
63 | 63 |
|
64 | | - response = client.describe_instances() |
65 | | - InstanceIds = [] |
66 | | - for instance in response["Reservations"][0]["Instances"]: |
67 | | - InstanceIds.append(instance["InstanceId"]) |
| 64 | + response = client.start_instances( |
| 65 | + InstanceIds=[InstanceId] |
| 66 | + ) |
68 | 67 |
|
69 | | - response = client.start_instances( |
70 | | - InstanceIds=InstanceIds |
71 | | - ) |
| 68 | + return jsonify(response["StartingInstances"][0]), 200 |
72 | 69 |
|
73 | | - return jsonify(response["StartingInstances"][0]), 200 |
| 70 | + except Exception as error: |
| 71 | + print(str(error)) |
| 72 | + return jsonify({'Message': "Unexpected Error occured", 'Error': str(error)}), 500 |
74 | 73 |
|
75 | 74 |
|
76 | 75 | # Endpoint: http://<api_host>:<api_port>/ec2/stop |
77 | | -@app.route("/ec2/stop", methods=["POST", "GET"]) |
| 76 | +@app.route("/ec2/stop", methods=["POST"]) |
78 | 77 | def stop_ec2_instances(): |
79 | 78 | try: |
80 | | - aws_access_key_id = request.args.get("aws_access_key_id") |
81 | | - aws_secret_access_key = request.args.get("aws_secret_access_key") |
82 | | - region_name = request.args.get("region_name") |
83 | | - InstanceIds = request.args.get("InstanceId") |
84 | | - client = boto3.client('ec2', |
85 | | - aws_access_key_id=aws_access_key_id, |
86 | | - aws_secret_access_key=aws_secret_access_key, |
87 | | - region_name=region_name, |
88 | | - ) |
| 79 | + client = get_aws_client(request) |
| 80 | + InstanceId = request.args.get("InstanceId") |
89 | 81 |
|
90 | | - except Exception as error: |
91 | | - print(str(error)) |
92 | | - return jsonify({'Error': "Unexpected Error occured"}), 500 |
| 82 | + response = client.stop_instances( |
| 83 | + InstanceIds=[InstanceId] |
| 84 | + ) |
93 | 85 |
|
94 | | - response = client.describe_instances() |
95 | | - InstanceIds = [] |
96 | | - for instance in response["Reservations"][0]["Instances"]: |
97 | | - InstanceIds.append(instance["InstanceId"]) |
| 86 | + return jsonify(response["StoppingInstances"][0]), 200 |
98 | 87 |
|
99 | | - response = client.stop_instances( |
100 | | - InstanceIds=InstanceIds |
101 | | - ) |
102 | | - |
103 | | - return jsonify(response["StoppingInstances"][0]), 200 |
| 88 | + except Exception as error: |
| 89 | + print(str(error)) |
| 90 | + return jsonify({'Message': "Unexpected Error occured", 'Error': str(error)}), 500 |
104 | 91 |
|
105 | 92 |
|
106 | 93 | if __name__ == "__main__": |
|
0 commit comments