Advertisement
sasa2742002

Untitled

Sep 26th, 2023
1,161
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 10.42 KB | None | 0 0
  1. from venv import create
  2. import requests
  3. import json
  4. import boto3
  5.  
  6.  
  7. def get_data(url, region_name):
  8.     response = requests.get(url)
  9.     data_info = response.json()
  10.  
  11.     if response.status_code == 200:
  12.         instances = []
  13.         region_data = data_info['regions'].get(region_name, {})
  14.  
  15.         for instance_name, instance_attributes in region_data.items():
  16.             instance = {
  17.                 'Instance Name': instance_name,
  18.                 'Rate Code': instance_attributes.get('rateCode', ''),
  19.                 'Price': instance_attributes.get('price', ''),
  20.                 'Location': instance_attributes.get('Location', ''),
  21.                 'Instance Family': instance_attributes.get('Instance Family', ''),
  22.                 'vCPU': instance_attributes.get('vCPU', ''),
  23.                 'Memory': instance_attributes.get('Memory', ''),
  24.                 'Storage': instance_attributes.get('Storage', ''),
  25.                 'Network Performance': instance_attributes.get('Network Performance', ''),
  26.                 'Operating System': instance_attributes.get('Operating System', ''),
  27.                 'Pre Installed S/W': instance_attributes.get('Pre Installed S/W', ''),
  28.                 'License Model': instance_attributes.get('License Model', ''),
  29.             }
  30.             instances.append(instance)
  31.  
  32.         return instances
  33.     else:
  34.         return None
  35.  
  36.  
  37. def north_america():
  38.     north_america_urls = [
  39.         ["US East (N. Virginia)", "https://b0.p.awsstatic.com/pricing/2.0/meteredUnitMaps/ec2/USD/current/ec2-ondemand-without-sec-sel/US%20East%20(N.%20Virginia)/Linux/index.json?timestamp=1695335197182"],
  40.         ["US East (N. California)", "https://b0.p.awsstatic.com/pricing/2.0/meteredUnitMaps/ec2/USD/current/ec2-ondemand-without-sec-sel/US%20West%20(N.%20California)/Linux/index.json?timestamp=1695335943885"],
  41.         ["US West (Oregon)", "https://b0.p.awsstatic.com/pricing/2.0/meteredUnitMaps/ec2/USD/current/ec2-ondemand-without-sec-sel/US%20West%20(Oregon)/Linux/index.json?timestamp=1695336005767"],
  42.         ["Canada (Central)", "https://b0.p.awsstatic.com/pricing/2.0/meteredUnitMaps/ec2/USD/current/ec2-ondemand-without-sec-sel/Canada%20(Central)/Linux/index.json?timestamp=1695336038545"],
  43.         ["AWS GovCloud (US-East)", "https://b0.p.awsstatic.com/pricing/2.0/meteredUnitMaps/ec2/USD/current/ec2-ondemand-without-sec-sel/AWS%20GovCloud%20(US-East)/Linux/index.json?timestamp=1695336076977"],
  44.         ["AWS GovCloud (US-West)", "https://b0.p.awsstatic.com/pricing/2.0/meteredUnitMaps/ec2/USD/current/ec2-ondemand-without-sec-sel/AWS%20GovCloud%20(US)/Linux/index.json?timestamp=1695336143250"]
  45.     ]
  46.  
  47.     north_america = []
  48.     for region_info in north_america_urls:
  49.         region = region_info[0]
  50.         url = region_info[1]
  51.         data = get_data(url, region)
  52.         north_america.append(data)
  53.  
  54.     return north_america
  55.  
  56.  
  57. def africa():
  58.     africa_urls = [
  59.         ["Africa (Cape Town)", "https://b0.p.awsstatic.com/pricing/2.0/meteredUnitMaps/ec2/USD/current/ec2-ondemand-without-sec-sel/Africa%20(Cape%20Town)/Linux/index.json?timestamp=1695336201165"]
  60.     ]
  61.  
  62.     africa = []
  63.     for region_info in africa_urls:
  64.         region = region_info[0]
  65.         url = region_info[1]
  66.         data = get_data(url, region)
  67.         africa.append(data)
  68.  
  69.     return africa
  70.  
  71.  
  72. def asia_pacific():
  73.     asia_pacific = [
  74.         ["Asia Pacific (Hong Kong)", "https://b0.p.awsstatic.com/pricing/2.0/meteredUnitMaps/ec2/USD/current/ec2-ondemand-without-sec-sel/Asia%20Pacific%20(Hong%20Kong)/Linux/index.json?timestamp=1695336236566"],
  75.         ["Asia Pacific (Hyderabad)", "https://b0.p.awsstatic.com/pricing/2.0/meteredUnitMaps/ec2/USD/current/ec2-ondemand-without-sec-sel/Asia%20Pacific%20(Hyderabad)/Linux/index.json?timestamp=1695336267211"],
  76.         ["Asia Pacific (Jakarta)", "https://b0.p.awsstatic.com/pricing/2.0/meteredUnitMaps/ec2/USD/current/ec2-ondemand-without-sec-sel/Asia%20Pacific%20(Jakarta)/Linux/index.json?timestamp=1695336335452"],
  77.         ["Asia Pacific (Melbourne)", "https://b0.p.awsstatic.com/pricing/2.0/meteredUnitMaps/ec2/USD/current/ec2-ondemand-without-sec-sel/Asia%20Pacific%20(Melbourne)/Linux/index.json?timestamp=1695336377353"],
  78.         ["Asia Pacific (Mumbai)", "https://b0.p.awsstatic.com/pricing/2.0/meteredUnitMaps/ec2/USD/current/ec2-ondemand-without-sec-sel/Asia%20Pacific%20(Mumbai)/Linux/index.json?timestamp=1695336414559"],
  79.         ["Asia Pacific (Osaka)", "https://b0.p.awsstatic.com/pricing/2.0/meteredUnitMaps/ec2/USD/current/ec2-ondemand-without-sec-sel/Asia%20Pacific%20(Osaka)/Linux/index.json?timestamp=1695336448367"],
  80.         ["Asia Pacific (Seoul)", "https://b0.p.awsstatic.com/pricing/2.0/meteredUnitMaps/ec2/USD/current/ec2-ondemand-without-sec-sel/Asia%20Pacific%20(Seoul)/Linux/index.json?timestamp=1695336489384"],
  81.         ["Asia Pacific (Singapore)", "https://b0.p.awsstatic.com/pricing/2.0/meteredUnitMaps/ec2/USD/current/ec2-ondemand-without-sec-sel/Asia%20Pacific%20(Singapore)/Linux/index.json?timestamp=1695336516652"],
  82.         ["Asia Pacific (Sydney)", "https://b0.p.awsstatic.com/pricing/2.0/meteredUnitMaps/ec2/USD/current/ec2-ondemand-without-sec-sel/Australia%20(Sydney)/Linux/index.json?timestamp=1695336549342"],
  83.         ["Asia Pacific (Tokyo)", "https://b0.p.awsstatic.com/pricing/2.0/meteredUnitMaps/ec2/USD/current/ec2-ondemand-without-sec-sel/Australia%20(Tokyo)/Linux/index.json?timestamp=1695336572681"]
  84.     ]
  85.  
  86.     asia_pacific = []
  87.     for region_info in asia_pacific:
  88.         region = region_info[0]
  89.         url = region_info[1]
  90.         data = get_data(url, region)
  91.         asia_pacific.append(data)
  92.  
  93.     return asia_pacific
  94.  
  95.  
  96. def europe():
  97.     europe = [
  98.         ["Europe (Frankfurt)", "https://b0.p.awsstatic.com/pricing/2.0/meteredUnitMaps/ec2/USD/current/ec2-ondemand-without-sec-sel/EU%20(Frankfurt)/Linux/index.json?timestamp=1695336606682"],
  99.         ["Europe (Ireland)", "https://b0.p.awsstatic.com/pricing/2.0/meteredUnitMaps/ec2/USD/current/ec2-ondemand-without-sec-sel/EU%20(Ireland)/Linux/index.json?timestamp=1695336640824"],
  100.         ["Europe (London)", "https://b0.p.awsstatic.com/pricing/2.0/meteredUnitMaps/ec2/USD/current/ec2-ondemand-without-sec-sel/EU%20(London)/Linux/index.json?timestamp=1695336671834"],
  101.         ["Europe (Milan)", "https://b0.p.awsstatic.com/pricing/2.0/meteredUnitMaps/ec2/USD/current/ec2-ondemand-without-sec-sel/EU%20(Milan)/Linux/index.json?timestamp=1695336709113"],
  102.         ["Europe (Paris)", "https://b0.p.awsstatic.com/pricing/2.0/meteredUnitMaps/ec2/USD/current/ec2-ondemand-without-sec-sel/EU%20(Paris)/Linux/index.json?timestamp=1695336734334"],
  103.         ["Europe (Spain)", "https://b0.p.awsstatic.com/pricing/2.0/meteredUnitMaps/ec2/USD/current/ec2-ondemand-without-sec-sel/EU%20(Spain)/Linux/index.json?timestamp=1695336756525"],
  104.         ["Europe (Stockholm)", "https://b0.p.awsstatic.com/pricing/2.0/meteredUnitMaps/ec2/USD/current/ec2-ondemand-without-sec-sel/EU%20(Stockholm)/Linux/index.json?timestamp=1695336795677"],
  105.         ["Europe (Zurich)", "https://b0.p.awsstatic.com/pricing/2.0/meteredUnitMaps/ec2/USD/current/ec2-ondemand-without-sec-sel/EU%20(Zurich)/Linux/index.json?timestamp=1695336817871"]
  106.     ]
  107.  
  108.     europe = []
  109.     for region_info in europe:
  110.         region = region_info[0]
  111.         url = region_info[1]
  112.         data = get_data(url, region)
  113.         europe.append(data)
  114.  
  115.     return europe
  116.  
  117.  
  118. def middle_east():
  119.     middle_east = [
  120.         ["Middle East (Bahrain)", "https://b0.p.awsstatic.com/pricing/2.0/meteredUnitMaps/ec2/USD/current/ec2-ondemand-without-sec-sel/Middle%20East%20(Bahrain)/Linux/index.json?timestamp=1695336880976"],
  121.         ["Middle East (UAE)", "https://b0.p.awsstatic.com/pricing/2.0/meteredUnitMaps/ec2/USD/current/ec2-ondemand-without-sec-sel/Middle%20East%20(UAE)/Linux/index.json?timestamp=1695336906621"]
  122.     ]
  123.  
  124.     middle_east = []
  125.     for region_info in middle_east:
  126.         region = region_info[0]
  127.         url = region_info[1]
  128.         data = get_data(url, region)
  129.         middle_east.append(data)
  130.  
  131.     return middle_east
  132.  
  133.  
  134. def south_america():
  135.     south_america = [
  136.         ["South America (Sao Paulo)", "https://b0.p.awsstatic.com/pricing/2.0/meteredUnitMaps/ec2/USD/current/ec2-ondemand-without-sec-sel/South%20America%20(Sao%20Paulo)/Linux/index.json?timestamp=1695336944637"]
  137.     ]
  138.  
  139.     south_america = []
  140.     for region_info in south_america:
  141.         region = region_info[0]
  142.         url = region_info[1]
  143.         data = get_data(url, region)
  144.         south_america.append(data)
  145.  
  146.     return south_america
  147.  
  148.  
  149. def excute_sql(sql):
  150.     response = rds_client.execute_statement(
  151.         secretArn=db_credentials_secrets_store_arn,
  152.         database=database_name,
  153.         resourceArn=db_cluster_arn,
  154.         sql=sql
  155.     )
  156.     return response
  157.  
  158.  
  159. def create_tables_if_not_exists():
  160.  
  161.     regions = 'CREATE TABLE IF NOT EXISTS regions (region_id INT PRIMARY KEY,region_short_name VARCHAR(15),region_long_name VARCHAR(15));'
  162.     excute_sql(regions)
  163.  
  164.     operating_systems = 'CREATE TABLE IF NOT EXISTS operating_systems (operating_system_id INT PRIMARY KEY,operating_system_name VARCHAR(25));'
  165.     excute_sql(operating_systems)
  166.  
  167.     vcpu_cores = 'CREATE TABLE IF NOT EXISTS vcpu_cores (vcpu_id INT PRIMARY KEY,core_count INT);'
  168.     excute_sql(vcpu_cores)
  169.  
  170.     ec2_instances = 'CREATE TABLE IF NOT EXISTS ec2_instances (instance_id INT PRIMARY KEY,vcpu_id INT,memory INT,storage VARCHAR(20),network_performance DECIMAL(10, 5),operating_system_id INT,instance_name VARCHAR(15),FOREIGN KEY (vcpu_id) REFERENCES vcpu_cores(vcpu_id),FOREIGN KEY (operating_system_id) REFERENCES operating_systems(operating_system_id));'
  171.     excute_sql(ec2_instances)
  172.  
  173.     region_instances = 'CREATE TABLE IF NOT EXISTS region_instances (region_id INT,instance_id INT,price_per_hour DECIMAL(6, 4),FOREIGN KEY (region_id) REFERENCES regions(region_id),FOREIGN KEY (instance_id) REFERENCES ec2_instances(instance_id));'
  174.     excute_sql(region_instances)
  175.  
  176.     return
  177.  
  178.  
  179. def main():
  180.     create_tables_if_not_exists()
  181.     # north_america_data = north_america()
  182.     # africa_data = africa()
  183.     # asia_pacific_data = asia_pacific()
  184.     # europe_data = europe()
  185.     # middle_east_data = middle_east()
  186.     # south_america_data = south_america()
  187.  
  188.     # save_africa_data(africa_data)
  189.     # save_north_america_data(north_america_data)
  190.     # save_asia_pacific_data(asia_pacific_data)
  191.     # save_europe_data(europe_data)
  192.     # save_middle_east_data(middle_east_data)
  193.     # save_south_america_data(south_america_data)
  194.  
  195.  
  196. main()
  197.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement