Răsfoiți Sursa

AWS Reserved Instance parsing.

Matt Bolt 6 ani în urmă
părinte
comite
5600f1fc93
2 a modificat fișierele cu 40 adăugiri și 9 ștergeri
  1. 35 4
      cloud/awsprovider.go
  2. 5 5
      cloud/gcpprovider.go

+ 35 - 4
cloud/awsprovider.go

@@ -1398,12 +1398,26 @@ func parseSpotData(bucket string, prefix string, projectID string, region string
 	return spots, nil
 	return spots, nil
 }
 }
 
 
+type AWSReservedInstance struct {
+	Zone           string
+	InstanceType   string
+	InstanceCount  int64
+	InstanceTenacy string
+	StartDate      time.Time
+	EndDate        time.Time
+	PricePerHour   float64
+}
+
+type AWSReservedCounter struct {
+	RemainingInstances int64
+	Instance           *AWSReservedInstance
+}
+
 func (aws *AWS) ApplyReservedInstancePricing(nodes map[string]*Node) {
 func (aws *AWS) ApplyReservedInstancePricing(nodes map[string]*Node) {
 
 
 }
 }
 
 
-/*
-func (aws *AWS) getReservedInstances() ([]interface{}, error) {
+func (a *AWS) getReservedInstances() ([]*AWSReservedInstance, error) {
 	customPricing, err := a.GetConfig()
 	customPricing, err := a.GetConfig()
 	if err != nil {
 	if err != nil {
 		return nil, err
 		return nil, err
@@ -1437,6 +1451,23 @@ func (aws *AWS) getReservedInstances() ([]interface{}, error) {
 	s := session.Must(session.NewSession(c))
 	s := session.Must(session.NewSession(c))
 	svc := ec2.New(s)
 	svc := ec2.New(s)
 
 
-	svc.DescribeReservedInstances()
+	response, err := svc.DescribeReservedInstances(&ec2.DescribeReservedInstancesInput{})
+	if err != nil {
+		return nil, err
+	}
+
+	var reservedInstances []*AWSReservedInstance
+	for _, ri := range response.ReservedInstances {
+		reservedInstances = append(reservedInstances, &AWSReservedInstance{
+			Zone:           *ri.AvailabilityZone,
+			InstanceType:   *ri.InstanceType,
+			InstanceCount:  *ri.InstanceCount,
+			InstanceTenacy: *ri.InstanceTenancy,
+			StartDate:      *ri.Start,
+			EndDate:        *ri.End,
+		})
+	}
+
+	return reservedInstances, nil
+
 }
 }
-*/

+ 5 - 5
cloud/gcpprovider.go

@@ -776,14 +776,14 @@ type GCPReservedInstance struct {
 	Region      string
 	Region      string
 }
 }
 
 
-type ReservedCounter struct {
+type GCPReservedCounter struct {
 	RemainingCPU int64
 	RemainingCPU int64
 	RemainingRAM int64
 	RemainingRAM int64
 	Instance     *GCPReservedInstance
 	Instance     *GCPReservedInstance
 }
 }
 
 
-func newReservedCounter(instance *GCPReservedInstance) *ReservedCounter {
-	return &ReservedCounter{
+func newReservedCounter(instance *GCPReservedInstance) *GCPReservedCounter {
+	return &GCPReservedCounter{
 		RemainingCPU: instance.ReservedCPU,
 		RemainingCPU: instance.ReservedCPU,
 		RemainingRAM: instance.ReservedRAM,
 		RemainingRAM: instance.ReservedRAM,
 		Instance:     instance,
 		Instance:     instance,
@@ -815,7 +815,7 @@ func (gcp *GCP) ApplyReservedInstancePricing(nodes map[string]*Node) {
 
 
 	now := time.Now()
 	now := time.Now()
 
 
-	counters := make(map[string][]*ReservedCounter)
+	counters := make(map[string][]*GCPReservedCounter)
 	for _, r := range gcp.ReservedInstances {
 	for _, r := range gcp.ReservedInstances {
 		if now.Before(r.StartDate) || now.After(r.EndDate) {
 		if now.Before(r.StartDate) || now.After(r.EndDate) {
 			klog.V(1).Infof("[Reserved] Skipped Reserved Instance due to dates")
 			klog.V(1).Infof("[Reserved] Skipped Reserved Instance due to dates")
@@ -825,7 +825,7 @@ func (gcp *GCP) ApplyReservedInstancePricing(nodes map[string]*Node) {
 		_, ok := counters[r.Region]
 		_, ok := counters[r.Region]
 		counter := newReservedCounter(r)
 		counter := newReservedCounter(r)
 		if !ok {
 		if !ok {
-			counters[r.Region] = []*ReservedCounter{counter}
+			counters[r.Region] = []*GCPReservedCounter{counter}
 		} else {
 		} else {
 			counters[r.Region] = append(counters[r.Region], counter)
 			counters[r.Region] = append(counters[r.Region], counter)
 		}
 		}