import boto3
import botocore

from services.Evaluator import Evaluator

class Ec2CostExplorerRecs(Evaluator):

    def __init__(self,ceClient):
        super().__init__()
        self.ceClient = ceClient
        self.init()

   # checks

    def _checkRIRecommendations(self):
        results = {}
        try:
            results = self.ceClient.get_reservation_purchase_recommendation(
                Service = 'Amazon Elastic Compute Cloud - Compute'
            )
            
            if len(results['Recommendations']) > 0:
                self.results['CEReservedInstance'] = ['-1','']
        except botocore.exceptions.ClientError as e:
            ecode = e.response['Error']['Code']
            emsg = e.response['Error']['Message']
            print(ecode, emsg)
        except Exception as e:
            print('Reserved Instance recommendation API call is getting the following error:')
            print(e)

        return

    def _checkSPRecommendations(self):
        try:
            results = self.ceClient.get_savings_plans_purchase_recommendation(
                LookbackPeriodInDays = 'THIRTY_DAYS',
                PaymentOption = 'NO_UPFRONT',
                SavingsPlansType = 'COMPUTE_SP',
                TermInYears = 'ONE_YEAR'
            )
            if len(results['SavingsPlansPurchaseRecommendation']) > 0:
                self.results['CESavingsPlans'] = ['-1','']
        except botocore.exceptions.ClientError as e:
            ecode = e.response['Error']['Code']
            emsg = e.response['Error']['Message']
            print(ecode, emsg)        
        except Exception as e:
            print('Compute Savings Plans recommendation API call is getting the following error:')
            print(e) 

        return