Просмотр исходного кода

Merge pull request #86 from kubecost/AjayTripathy-test

Fix Configuration Bugs
Ajay Tripathy 7 лет назад
Родитель
Сommit
92bca5ae53
2 измененных файлов с 40 добавлено и 4 удалено
  1. 5 1
      cloud/gcpprovider.go
  2. 35 3
      cloud/provider.go

+ 5 - 1
cloud/gcpprovider.go

@@ -178,8 +178,12 @@ func (gcp *GCP) ExternalAllocations(start string, end string, aggregator string)
 
 // QuerySQL should query BigQuery for billing data for out of cluster costs.
 func (gcp *GCP) QuerySQL(query string) ([]*OutOfClusterAllocation, error) {
+	c, err := GetDefaultPricingData("gcp.json")
+	if err != nil {
+		return nil, err
+	}
 	ctx := context.Background()
-	client, err := bigquery.NewClient(ctx, gcp.ProjectID) // For example, "guestbook-227502"
+	client, err := bigquery.NewClient(ctx, c.ProjectID) // For example, "guestbook-227502"
 	if err != nil {
 		return nil, err
 	}

+ 35 - 3
cloud/provider.go

@@ -196,11 +196,44 @@ type CustomProvider struct {
 }
 
 func (*CustomProvider) GetConfig() (*CustomPricing, error) {
-	return nil, nil
+	return GetDefaultPricingData("default.json")
 }
 
 func (*CustomProvider) UpdateConfig(r io.Reader, updateType string) (*CustomPricing, error) {
-	return nil, nil
+	c, err := GetDefaultPricingData("default.json")
+	if err != nil {
+		return nil, err
+	}
+	path := os.Getenv("CONFIG_PATH")
+	if path == "" {
+		path = "/models/"
+	}
+	a := make(map[string]string)
+	err = json.NewDecoder(r).Decode(&a)
+	if err != nil {
+		return nil, err
+	}
+	for k, v := range a {
+		kUpper := strings.Title(k) // Just so we consistently supply / receive the same values, uppercase the first letter.
+		err := SetCustomPricingField(c, kUpper, v)
+		if err != nil {
+			return nil, err
+		}
+	}
+
+	cj, err := json.Marshal(c)
+	if err != nil {
+		return nil, err
+	}
+
+	configPath := path + "default.json"
+	err = ioutil.WriteFile(configPath, cj, 0644)
+	if err != nil {
+		return nil, err
+	}
+
+	return c, nil
+
 }
 
 func (*CustomProvider) ClusterName() ([]byte, error) {
@@ -337,5 +370,4 @@ func NewProvider(clientset *kubernetes.Clientset, apiKey string) (Provider, erro
 			Clientset: clientset,
 		}, nil
 	}
-
 }