...
1 package status
2
3 import (
4 "context"
5 "database/sql"
6
7 "edge-infra.dev/pkg/edge/api/graph/model"
8 "edge-infra.dev/pkg/edge/api/services/kinform"
9 "edge-infra.dev/pkg/edge/api/services/virtualmachine/common"
10 )
11
12 type service struct {
13 SQLDB *sql.DB
14 KinformService kinform.Service
15 }
16
17 func (s *service) GetStatuses(ctx context.Context, clusterEdgeID, name, namespace *string) ([]*model.VirtualMachineStatus, error) {
18 watchedFieldObjects, err := s.KinformService.WatchedFieldObjects(ctx, "VirtualMachine", name, namespace, clusterEdgeID)
19 if err != nil {
20 return nil, err
21 }
22 return StatusesFromWatchedFields(watchedFieldObjects)
23 }
24
25 func (s *service) GetVMIFieldValue(ctx context.Context, clusterEdgeID *string, name *string, namespace *string, jsonPath string) (*string, error) {
26 watchedFieldObjects, err := s.KinformService.WatchedFieldObjects(ctx, "VirtualMachineInstance", name, namespace, clusterEdgeID)
27 if err != nil {
28 return nil, err
29 }
30 for _, watchedField := range watchedFieldObjects {
31 for _, field := range watchedField.Fields {
32 if field.JSONPath == jsonPath {
33 return &field.Value, nil
34 }
35 }
36 }
37 return nil, nil
38 }
39
40
41 func New(sqlDB *sql.DB, kinformSvc kinform.Service) common.Status {
42 return &service{
43 SQLDB: sqlDB,
44 KinformService: kinformSvc,
45 }
46 }
47
View as plain text