clusterservice.go 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. package services
  2. import "github.com/kubecost/cost-model/pkg/services/clusters"
  3. // NewClusterManagerService creates a new HTTPService implementation driving cluster definition management
  4. // for the frontend
  5. func NewClusterManagerService() HTTPService {
  6. return clusters.NewClusterManagerHTTPService(newClusterManager())
  7. }
  8. // newClusterManager creates a new cluster manager instance for use in the service
  9. func newClusterManager() *clusters.ClusterManager {
  10. clustersConfigFile := "/var/configs/clusters/default-clusters.yaml"
  11. // Return a memory-backed cluster manager populated by configmap
  12. return clusters.NewConfiguredClusterManager(clusters.NewMapDBClusterStorage(), clustersConfigFile)
  13. // NOTE: The following should be used with a persistent disk store. Since the
  14. // NOTE: configmap approach is currently the "persistent" source (entries are read-only
  15. // NOTE: on the backend), we don't currently need to store on disk.
  16. /*
  17. path := env.GetConfigPath()
  18. db, err := bolt.Open(path+"costmodel.db", 0600, nil)
  19. if err != nil {
  20. klog.V(1).Infof("[Error] Failed to create costmodel.db: %s", err.Error())
  21. return cm.NewConfiguredClusterManager(cm.NewMapDBClusterStorage(), clustersConfigFile)
  22. }
  23. store, err := clusters.NewBoltDBClusterStorage("clusters", db)
  24. if err != nil {
  25. klog.V(1).Infof("[Error] Failed to Create Cluster Storage: %s", err.Error())
  26. return clusters.NewConfiguredClusterManager(clusters.NewMapDBClusterStorage(), clustersConfigFile)
  27. }
  28. return clusters.NewConfiguredClusterManager(store, clustersConfigFile)
  29. */
  30. }