metrics.go 971 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. package logic
  2. import (
  3. "encoding/json"
  4. "github.com/gravitl/netmaker/database"
  5. "github.com/gravitl/netmaker/models"
  6. )
  7. // GetMetrics - gets the metrics
  8. func GetMetrics(nodeid string) (*models.Metrics, error) {
  9. var metrics models.Metrics
  10. record, err := database.FetchRecord(database.METRICS_TABLE_NAME, nodeid)
  11. if err != nil {
  12. if database.IsEmptyRecord(err) {
  13. return &metrics, nil
  14. }
  15. return &metrics, err
  16. }
  17. err = json.Unmarshal([]byte(record), &metrics)
  18. if err != nil {
  19. return &metrics, err
  20. }
  21. return &metrics, nil
  22. }
  23. // UpdateMetrics - updates the metrics of a given client
  24. func UpdateMetrics(nodeid string, metrics *models.Metrics) error {
  25. data, err := json.Marshal(metrics)
  26. if err != nil {
  27. return err
  28. }
  29. return database.Insert(nodeid, string(data), database.METRICS_TABLE_NAME)
  30. }
  31. // DeleteMetrics - deletes metrics of a given node
  32. func DeleteMetrics(nodeid string) error {
  33. return database.DeleteRecord(database.METRICS_TABLE_NAME, nodeid)
  34. }