...

Source file src/edge-infra.dev/pkg/edge/api/services/virtualmachine/status/service.go

Documentation: edge-infra.dev/pkg/edge/api/services/virtualmachine/status

     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  // New returns an instance of the VirtualMachine Status service
    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