aws-cost-calculator-cli 1.11.1__tar.gz → 2.3.2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (23) hide show
  1. {aws_cost_calculator_cli-1.11.1/aws_cost_calculator_cli.egg-info → aws_cost_calculator_cli-2.3.2}/PKG-INFO +1 -1
  2. {aws_cost_calculator_cli-1.11.1 → aws_cost_calculator_cli-2.3.2/aws_cost_calculator_cli.egg-info}/PKG-INFO +1 -1
  3. {aws_cost_calculator_cli-1.11.1 → aws_cost_calculator_cli-2.3.2}/aws_cost_calculator_cli.egg-info/SOURCES.txt +1 -0
  4. {aws_cost_calculator_cli-1.11.1 → aws_cost_calculator_cli-2.3.2}/cost_calculator/api_client.py +18 -21
  5. {aws_cost_calculator_cli-1.11.1 → aws_cost_calculator_cli-2.3.2}/cost_calculator/cli.py +578 -308
  6. aws_cost_calculator_cli-2.3.2/cost_calculator/dimensions.py +141 -0
  7. {aws_cost_calculator_cli-1.11.1 → aws_cost_calculator_cli-2.3.2}/cost_calculator/executor.py +25 -12
  8. {aws_cost_calculator_cli-1.11.1 → aws_cost_calculator_cli-2.3.2}/setup.py +1 -1
  9. {aws_cost_calculator_cli-1.11.1 → aws_cost_calculator_cli-2.3.2}/CHANGES.md +0 -0
  10. {aws_cost_calculator_cli-1.11.1 → aws_cost_calculator_cli-2.3.2}/LICENSE +0 -0
  11. {aws_cost_calculator_cli-1.11.1 → aws_cost_calculator_cli-2.3.2}/MANIFEST.in +0 -0
  12. {aws_cost_calculator_cli-1.11.1 → aws_cost_calculator_cli-2.3.2}/README.md +0 -0
  13. {aws_cost_calculator_cli-1.11.1 → aws_cost_calculator_cli-2.3.2}/aws_cost_calculator_cli.egg-info/dependency_links.txt +0 -0
  14. {aws_cost_calculator_cli-1.11.1 → aws_cost_calculator_cli-2.3.2}/aws_cost_calculator_cli.egg-info/entry_points.txt +0 -0
  15. {aws_cost_calculator_cli-1.11.1 → aws_cost_calculator_cli-2.3.2}/aws_cost_calculator_cli.egg-info/requires.txt +0 -0
  16. {aws_cost_calculator_cli-1.11.1 → aws_cost_calculator_cli-2.3.2}/aws_cost_calculator_cli.egg-info/top_level.txt +0 -0
  17. {aws_cost_calculator_cli-1.11.1 → aws_cost_calculator_cli-2.3.2}/cost_calculator/__init__.py +0 -0
  18. {aws_cost_calculator_cli-1.11.1 → aws_cost_calculator_cli-2.3.2}/cost_calculator/cur.py +0 -0
  19. {aws_cost_calculator_cli-1.11.1 → aws_cost_calculator_cli-2.3.2}/cost_calculator/drill.py +0 -0
  20. {aws_cost_calculator_cli-1.11.1 → aws_cost_calculator_cli-2.3.2}/cost_calculator/forensics.py +0 -0
  21. {aws_cost_calculator_cli-1.11.1 → aws_cost_calculator_cli-2.3.2}/cost_calculator/monthly.py +0 -0
  22. {aws_cost_calculator_cli-1.11.1 → aws_cost_calculator_cli-2.3.2}/cost_calculator/trends.py +0 -0
  23. {aws_cost_calculator_cli-1.11.1 → aws_cost_calculator_cli-2.3.2}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: aws-cost-calculator-cli
3
- Version: 1.11.1
3
+ Version: 2.3.2
4
4
  Summary: AWS Cost Calculator CLI - Calculate daily and annual AWS costs across multiple accounts
5
5
  Home-page: https://github.com/trilogy-group/aws-cost-calculator
6
6
  Author: Cost Optimization Team
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: aws-cost-calculator-cli
3
- Version: 1.11.1
3
+ Version: 2.3.2
4
4
  Summary: AWS Cost Calculator CLI - Calculate daily and annual AWS costs across multiple accounts
5
5
  Home-page: https://github.com/trilogy-group/aws-cost-calculator
6
6
  Author: Cost Optimization Team
@@ -13,6 +13,7 @@ cost_calculator/__init__.py
13
13
  cost_calculator/api_client.py
14
14
  cost_calculator/cli.py
15
15
  cost_calculator/cur.py
16
+ cost_calculator/dimensions.py
16
17
  cost_calculator/drill.py
17
18
  cost_calculator/executor.py
18
19
  cost_calculator/forensics.py
@@ -23,14 +23,15 @@ def get_api_config():
23
23
  return None
24
24
 
25
25
 
26
- def call_lambda_api(endpoint, credentials, accounts, **kwargs):
26
+ def call_lambda_api(endpoint, credentials, accounts=None, profile=None, **kwargs):
27
27
  """
28
- Call Lambda API endpoint.
28
+ Call unified API Gateway endpoint.
29
29
 
30
30
  Args:
31
- endpoint: API endpoint name ('trends', 'monthly', 'drill')
31
+ endpoint: API endpoint name ('calculate', 'trends', 'monthly', 'drill', 'query', etc.)
32
32
  credentials: dict with AWS credentials
33
- accounts: list of account IDs
33
+ accounts: list of account IDs (deprecated - use profile instead)
34
+ profile: profile name (preferred over accounts)
34
35
  **kwargs: additional parameters for the specific endpoint
35
36
 
36
37
  Returns:
@@ -44,26 +45,22 @@ def call_lambda_api(endpoint, credentials, accounts, **kwargs):
44
45
  if not api_config:
45
46
  raise Exception("API not configured. Set COST_API_SECRET environment variable.")
46
47
 
47
- # Map endpoint names to Lambda URLs
48
- endpoint_urls = {
49
- 'trends': 'https://pq3mqntc6vuwi4zw5flulsoleq0yiqtl.lambda-url.us-east-1.on.aws/',
50
- 'monthly': 'https://6aueebodw6q4zdeu3aaexb6tle0fqhhr.lambda-url.us-east-1.on.aws/',
51
- 'drill': 'https://3ncm2gzxrsyptrhud3ua3x5lju0akvsr.lambda-url.us-east-1.on.aws/',
52
- 'analyze': 'https://y6npmidtxwzg62nrqzkbacfs5q0edwgs.lambda-url.us-east-1.on.aws/',
53
- 'profiles': 'https://64g7jq7sjygec2zmll5lsghrpi0txrzo.lambda-url.us-east-1.on.aws/',
54
- 'forensics': 'https://gaekfzz7sc2hwn4mjyk64sieke0vadfo.lambda-url.us-east-1.on.aws/' # Will be populated after deployment
55
- }
56
-
57
- url = endpoint_urls.get(endpoint)
58
-
59
- if not url:
60
- raise Exception(f"Unknown endpoint: {endpoint}")
48
+ # Get base URL from environment or use default
49
+ base_url = os.environ.get('COST_CALCULATOR_API_URL', 'https://api.costcop.cloudfix.dev')
50
+ url = f"{base_url}/{endpoint}"
61
51
 
62
52
  # Build request payload
63
53
  payload = {
64
- 'credentials': credentials,
65
- 'accounts': accounts
54
+ 'credentials': credentials
66
55
  }
56
+
57
+ # Add profile or accounts
58
+ if profile:
59
+ payload['profile'] = profile
60
+ elif accounts:
61
+ payload['accounts'] = accounts
62
+
63
+ # Add additional parameters
67
64
  payload.update(kwargs)
68
65
 
69
66
  # Make API call
@@ -72,7 +69,7 @@ def call_lambda_api(endpoint, credentials, accounts, **kwargs):
72
69
  'Content-Type': 'application/json'
73
70
  }
74
71
 
75
- response = requests.post(url, headers=headers, json=payload, timeout=300)
72
+ response = requests.post(url, headers=headers, json=payload, timeout=900) # 15 min timeout
76
73
 
77
74
  if response.status_code != 200:
78
75
  raise Exception(f"API call failed: {response.status_code} - {response.text}")