package status import ( "context" "database/sql" "edge-infra.dev/pkg/edge/api/graph/model" "edge-infra.dev/pkg/edge/api/services/kinform" "edge-infra.dev/pkg/edge/api/services/virtualmachine/common" ) type service struct { SQLDB *sql.DB KinformService kinform.Service } func (s *service) GetStatuses(ctx context.Context, clusterEdgeID, name, namespace *string) ([]*model.VirtualMachineStatus, error) { watchedFieldObjects, err := s.KinformService.WatchedFieldObjects(ctx, "VirtualMachine", name, namespace, clusterEdgeID) if err != nil { return nil, err } return StatusesFromWatchedFields(watchedFieldObjects) } func (s *service) GetVMIFieldValue(ctx context.Context, clusterEdgeID *string, name *string, namespace *string, jsonPath string) (*string, error) { watchedFieldObjects, err := s.KinformService.WatchedFieldObjects(ctx, "VirtualMachineInstance", name, namespace, clusterEdgeID) if err != nil { return nil, err } for _, watchedField := range watchedFieldObjects { for _, field := range watchedField.Fields { if field.JSONPath == jsonPath { return &field.Value, nil } } } return nil, nil } // New returns an instance of the VirtualMachine Status service func New(sqlDB *sql.DB, kinformSvc kinform.Service) common.Status { return &service{ SQLDB: sqlDB, KinformService: kinformSvc, } }