...

Source file src/edge-infra.dev/pkg/edge/api/graph/resolver/vm_queries.resolvers.go

Documentation: edge-infra.dev/pkg/edge/api/graph/resolver

     1  package resolver
     2  
     3  // This file will be automatically regenerated based on the schema, any resolver implementations
     4  // will be copied through when generating and any unknown code will be moved to the end.
     5  // Code generated by github.com/99designs/gqlgen version v0.17.45
     6  
     7  import (
     8  	"context"
     9  	"fmt"
    10  
    11  	"edge-infra.dev/pkg/edge/api/graph/model"
    12  	chariotClientApi "edge-infra.dev/pkg/edge/chariot/client"
    13  	edgeAgent "edge-infra.dev/pkg/edge/edgeagent/model"
    14  )
    15  
    16  // CreateVirtualMachine is the resolver for the createVirtualMachine field.
    17  func (r *mutationResolver) CreateVirtualMachine(ctx context.Context, createVM model.VirtualMachineCreateInput) (*model.VirtualMachine, error) {
    18  	virtualMachine, name, err := r.VirtualMachineService.CreateVirtualMachineEntry(ctx, &createVM)
    19  	if err != nil {
    20  		return nil, err
    21  	}
    22  
    23  	cluster, err := r.StoreClusterService.GetCluster(ctx, createVM.ClusterEdgeID)
    24  	if err != nil {
    25  		return nil, err
    26  	}
    27  
    28  	namespaces, err := r.NamespaceService.GetClusterNamespaces(ctx, createVM.ClusterEdgeID, &name)
    29  	if err != nil {
    30  		return nil, err
    31  	}
    32  	if len(namespaces) != 1 {
    33  		return nil, fmt.Errorf("failed to retrieve namespace for VM")
    34  	}
    35  
    36  	err = r.UpdateKubeNamespaceViaChariot(ctx, namespaces[0], cluster, chariotClientApi.Create)
    37  	if err != nil {
    38  		return nil, err
    39  	}
    40  
    41  	return virtualMachine, r.UpdateKubeVirtualMachineViaChariot(ctx, virtualMachine, chariotClientApi.Create)
    42  }
    43  
    44  // DeleteVirtualMachine is the resolver for the deleteVirtualMachine field.
    45  func (r *mutationResolver) DeleteVirtualMachine(ctx context.Context, virtualMachineID string) (bool, error) {
    46  	virtualMachine, err := r.VirtualMachineService.GetVirtualMachineWithDisks(ctx, virtualMachineID)
    47  	if err != nil {
    48  		return false, err
    49  	}
    50  	err = r.VirtualMachineService.DeleteVirtualMachineEntry(ctx, virtualMachineID)
    51  	if err != nil {
    52  		return false, err
    53  	}
    54  
    55  	return true, r.UpdateKubeVirtualMachineViaChariot(ctx, virtualMachine, chariotClientApi.Delete)
    56  }
    57  
    58  // UpdateVirtualMachine is the resolver for the updateVirtualMachine field.
    59  func (r *mutationResolver) UpdateVirtualMachine(ctx context.Context, updateVM model.VirtualMachineIDInput) (*model.VirtualMachine, error) {
    60  	updatedVM, err := r.VirtualMachineService.UpdateVirtualMachineEntry(ctx, &updateVM)
    61  	if err != nil {
    62  		return nil, err
    63  	}
    64  
    65  	return updatedVM, r.UpdateKubeVirtualMachineViaChariot(ctx, updatedVM, chariotClientApi.Create)
    66  }
    67  
    68  // CreateVirtualMachineDisks is the resolver for the createVirtualMachineDisks field.
    69  func (r *mutationResolver) CreateVirtualMachineDisks(ctx context.Context, virtualMachineID string, createDisks []*model.VirtualMachineDiskCreateInput) ([]*model.VirtualMachineDisk, error) {
    70  	createdDisks, err := r.VirtualMachineService.CreateVirtualMachineDiskEntries(ctx, virtualMachineID, createDisks)
    71  	if err != nil {
    72  		return nil, err
    73  	}
    74  	virtualMachine, err := r.VirtualMachineService.GetVirtualMachineWithDisks(ctx, virtualMachineID)
    75  	if err != nil {
    76  		return nil, err
    77  	}
    78  	return createdDisks, r.UpdateKubeVirtualMachineViaChariot(ctx, virtualMachine, chariotClientApi.Create)
    79  }
    80  
    81  // DeleteVirtualMachineDisk is the resolver for the deleteVirtualMachineDisk field.
    82  func (r *mutationResolver) DeleteVirtualMachineDisk(ctx context.Context, diskID string) (bool, error) {
    83  	deletedDisk, err := r.VirtualMachineService.DeleteVirtualMachineDiskEntry(ctx, diskID)
    84  	if err != nil {
    85  		return false, err
    86  	}
    87  	virtualMachineID := deletedDisk.VirtualMachineID
    88  	virtualMachine, err := r.VirtualMachineService.GetVirtualMachineWithDisks(ctx, virtualMachineID)
    89  	if err != nil {
    90  		return false, err
    91  	}
    92  	return true, r.UpdateKubeVirtualMachineViaChariot(ctx, virtualMachine, chariotClientApi.Create)
    93  }
    94  
    95  // UpdateVirtualMachineDisks is the resolver for the updateVirtualMachineDisks field.
    96  func (r *mutationResolver) UpdateVirtualMachineDisks(ctx context.Context, updateDisks []*model.VirtualMachineDiskIDInput) ([]*model.VirtualMachineDisk, error) {
    97  	updatedDisks, err := r.VirtualMachineService.UpdateVirtualMachineDiskEntries(ctx, updateDisks)
    98  	if err != nil {
    99  		return nil, err
   100  	}
   101  	if len(updatedDisks) == 0 {
   102  		return nil, fmt.Errorf("vm disks failed to update")
   103  	}
   104  	virtualMachineID := updatedDisks[0].VirtualMachineID
   105  	virtualMachine, err := r.VirtualMachineService.GetVirtualMachineWithDisks(ctx, virtualMachineID)
   106  	if err != nil {
   107  		return nil, err
   108  	}
   109  	return updatedDisks, r.UpdateKubeVirtualMachineViaChariot(ctx, virtualMachine, chariotClientApi.Create)
   110  }
   111  
   112  // StartVirtualMachine is the resolver for the startVirtualMachine field.
   113  func (r *mutationResolver) StartVirtualMachine(ctx context.Context, clusterEdgeID string, virtualMachines []*model.VirtualMachineMetadataInput) (bool, error) {
   114  	if virtualMachines == nil {
   115  		return false, fmt.Errorf("virtual machines list cannot be empty")
   116  	}
   117  
   118  	notification, err := r.buildVMEdgeAgentNotification(ctx, virtualMachines, clusterEdgeID, edgeAgent.EventTypeStart)
   119  	if err != nil {
   120  		return false, err
   121  	}
   122  
   123  	//get cluster for project id publish notification to
   124  	cluster, err := r.StoreClusterService.GetCluster(ctx, clusterEdgeID)
   125  	if err != nil {
   126  		return false, err
   127  	}
   128  
   129  	if err := r.EdgeAgentService.InvokeEdgeAgentPubsub(ctx, notification, cluster.ProjectID); err != nil {
   130  		return false, err
   131  	}
   132  	return true, nil
   133  }
   134  
   135  // StopVirtualMachine is the resolver for the stopVirtualMachine field.
   136  func (r *mutationResolver) StopVirtualMachine(ctx context.Context, clusterEdgeID string, virtualMachines []*model.VirtualMachineMetadataInput) (bool, error) {
   137  	if virtualMachines == nil {
   138  		return false, fmt.Errorf("virtual machines list cannot be empty")
   139  	}
   140  
   141  	notification, err := r.buildVMEdgeAgentNotification(ctx, virtualMachines, clusterEdgeID, edgeAgent.EventTypeStop)
   142  	if err != nil {
   143  		return false, err
   144  	}
   145  
   146  	//get cluster for project id publish notification to
   147  	cluster, err := r.StoreClusterService.GetCluster(ctx, clusterEdgeID)
   148  	if err != nil {
   149  		return false, err
   150  	}
   151  
   152  	if err := r.EdgeAgentService.InvokeEdgeAgentPubsub(ctx, notification, cluster.ProjectID); err != nil {
   153  		return false, err
   154  	}
   155  	return true, nil
   156  }
   157  
   158  // RestartVirtualMachine is the resolver for the restartVirtualMachine field.
   159  func (r *mutationResolver) RestartVirtualMachine(ctx context.Context, clusterEdgeID string, virtualMachines []*model.VirtualMachineMetadataInput) (bool, error) {
   160  	if virtualMachines == nil {
   161  		return false, fmt.Errorf("virtual machines list cannot be empty")
   162  	}
   163  
   164  	notification, err := r.buildVMEdgeAgentNotification(ctx, virtualMachines, clusterEdgeID, edgeAgent.EventTypeRestart)
   165  	if err != nil {
   166  		return false, err
   167  	}
   168  
   169  	//get cluster for project id publish notification to
   170  	cluster, err := r.StoreClusterService.GetCluster(ctx, clusterEdgeID)
   171  	if err != nil {
   172  		return false, err
   173  	}
   174  
   175  	if err := r.EdgeAgentService.InvokeEdgeAgentPubsub(ctx, notification, cluster.ProjectID); err != nil {
   176  		return false, err
   177  	}
   178  	return true, nil
   179  }
   180  
   181  // VirtualMachine is the resolver for the virtualMachine field.
   182  func (r *queryResolver) VirtualMachine(ctx context.Context, virtualMachineID string) (*model.VirtualMachine, error) {
   183  	return r.VirtualMachineService.GetVirtualMachine(ctx, virtualMachineID)
   184  }
   185  
   186  // VirtualMachines is the resolver for the virtualMachines field.
   187  func (r *queryResolver) VirtualMachines(ctx context.Context, clusterEdgeID *string, hostname *string) ([]*model.VirtualMachine, error) {
   188  	return r.VirtualMachineService.GetVirtualMachines(ctx, clusterEdgeID, hostname)
   189  }
   190  
   191  // VirtualMachineDisk is the resolver for the virtualMachineDisk field.
   192  func (r *queryResolver) VirtualMachineDisk(ctx context.Context, diskID string) (*model.VirtualMachineDisk, error) {
   193  	return r.VirtualMachineService.GetVirtualMachineDisk(ctx, diskID)
   194  }
   195  
   196  // VirtualMachineDisks is the resolver for the virtualMachineDisks field.
   197  func (r *queryResolver) VirtualMachineDisks(ctx context.Context, virtualMachineID string) ([]*model.VirtualMachineDisk, error) {
   198  	return r.VirtualMachineService.GetVirtualMachineDisks(ctx, virtualMachineID)
   199  }
   200  

View as plain text