package resolver // This file will be automatically regenerated based on the schema, any resolver implementations // will be copied through when generating and any unknown code will be moved to the end. // Code generated by github.com/99designs/gqlgen version v0.17.45 import ( "context" "fmt" "edge-infra.dev/pkg/edge/api/graph/model" chariotClientApi "edge-infra.dev/pkg/edge/chariot/client" edgeAgent "edge-infra.dev/pkg/edge/edgeagent/model" ) // CreateVirtualMachine is the resolver for the createVirtualMachine field. func (r *mutationResolver) CreateVirtualMachine(ctx context.Context, createVM model.VirtualMachineCreateInput) (*model.VirtualMachine, error) { virtualMachine, name, err := r.VirtualMachineService.CreateVirtualMachineEntry(ctx, &createVM) if err != nil { return nil, err } cluster, err := r.StoreClusterService.GetCluster(ctx, createVM.ClusterEdgeID) if err != nil { return nil, err } namespaces, err := r.NamespaceService.GetClusterNamespaces(ctx, createVM.ClusterEdgeID, &name) if err != nil { return nil, err } if len(namespaces) != 1 { return nil, fmt.Errorf("failed to retrieve namespace for VM") } err = r.UpdateKubeNamespaceViaChariot(ctx, namespaces[0], cluster, chariotClientApi.Create) if err != nil { return nil, err } return virtualMachine, r.UpdateKubeVirtualMachineViaChariot(ctx, virtualMachine, chariotClientApi.Create) } // DeleteVirtualMachine is the resolver for the deleteVirtualMachine field. func (r *mutationResolver) DeleteVirtualMachine(ctx context.Context, virtualMachineID string) (bool, error) { virtualMachine, err := r.VirtualMachineService.GetVirtualMachineWithDisks(ctx, virtualMachineID) if err != nil { return false, err } err = r.VirtualMachineService.DeleteVirtualMachineEntry(ctx, virtualMachineID) if err != nil { return false, err } return true, r.UpdateKubeVirtualMachineViaChariot(ctx, virtualMachine, chariotClientApi.Delete) } // UpdateVirtualMachine is the resolver for the updateVirtualMachine field. func (r *mutationResolver) UpdateVirtualMachine(ctx context.Context, updateVM model.VirtualMachineIDInput) (*model.VirtualMachine, error) { updatedVM, err := r.VirtualMachineService.UpdateVirtualMachineEntry(ctx, &updateVM) if err != nil { return nil, err } return updatedVM, r.UpdateKubeVirtualMachineViaChariot(ctx, updatedVM, chariotClientApi.Create) } // CreateVirtualMachineDisks is the resolver for the createVirtualMachineDisks field. func (r *mutationResolver) CreateVirtualMachineDisks(ctx context.Context, virtualMachineID string, createDisks []*model.VirtualMachineDiskCreateInput) ([]*model.VirtualMachineDisk, error) { createdDisks, err := r.VirtualMachineService.CreateVirtualMachineDiskEntries(ctx, virtualMachineID, createDisks) if err != nil { return nil, err } virtualMachine, err := r.VirtualMachineService.GetVirtualMachineWithDisks(ctx, virtualMachineID) if err != nil { return nil, err } return createdDisks, r.UpdateKubeVirtualMachineViaChariot(ctx, virtualMachine, chariotClientApi.Create) } // DeleteVirtualMachineDisk is the resolver for the deleteVirtualMachineDisk field. func (r *mutationResolver) DeleteVirtualMachineDisk(ctx context.Context, diskID string) (bool, error) { deletedDisk, err := r.VirtualMachineService.DeleteVirtualMachineDiskEntry(ctx, diskID) if err != nil { return false, err } virtualMachineID := deletedDisk.VirtualMachineID virtualMachine, err := r.VirtualMachineService.GetVirtualMachineWithDisks(ctx, virtualMachineID) if err != nil { return false, err } return true, r.UpdateKubeVirtualMachineViaChariot(ctx, virtualMachine, chariotClientApi.Create) } // UpdateVirtualMachineDisks is the resolver for the updateVirtualMachineDisks field. func (r *mutationResolver) UpdateVirtualMachineDisks(ctx context.Context, updateDisks []*model.VirtualMachineDiskIDInput) ([]*model.VirtualMachineDisk, error) { updatedDisks, err := r.VirtualMachineService.UpdateVirtualMachineDiskEntries(ctx, updateDisks) if err != nil { return nil, err } if len(updatedDisks) == 0 { return nil, fmt.Errorf("vm disks failed to update") } virtualMachineID := updatedDisks[0].VirtualMachineID virtualMachine, err := r.VirtualMachineService.GetVirtualMachineWithDisks(ctx, virtualMachineID) if err != nil { return nil, err } return updatedDisks, r.UpdateKubeVirtualMachineViaChariot(ctx, virtualMachine, chariotClientApi.Create) } // StartVirtualMachine is the resolver for the startVirtualMachine field. func (r *mutationResolver) StartVirtualMachine(ctx context.Context, clusterEdgeID string, virtualMachines []*model.VirtualMachineMetadataInput) (bool, error) { if virtualMachines == nil { return false, fmt.Errorf("virtual machines list cannot be empty") } notification, err := r.buildVMEdgeAgentNotification(ctx, virtualMachines, clusterEdgeID, edgeAgent.EventTypeStart) if err != nil { return false, err } //get cluster for project id publish notification to cluster, err := r.StoreClusterService.GetCluster(ctx, clusterEdgeID) if err != nil { return false, err } if err := r.EdgeAgentService.InvokeEdgeAgentPubsub(ctx, notification, cluster.ProjectID); err != nil { return false, err } return true, nil } // StopVirtualMachine is the resolver for the stopVirtualMachine field. func (r *mutationResolver) StopVirtualMachine(ctx context.Context, clusterEdgeID string, virtualMachines []*model.VirtualMachineMetadataInput) (bool, error) { if virtualMachines == nil { return false, fmt.Errorf("virtual machines list cannot be empty") } notification, err := r.buildVMEdgeAgentNotification(ctx, virtualMachines, clusterEdgeID, edgeAgent.EventTypeStop) if err != nil { return false, err } //get cluster for project id publish notification to cluster, err := r.StoreClusterService.GetCluster(ctx, clusterEdgeID) if err != nil { return false, err } if err := r.EdgeAgentService.InvokeEdgeAgentPubsub(ctx, notification, cluster.ProjectID); err != nil { return false, err } return true, nil } // RestartVirtualMachine is the resolver for the restartVirtualMachine field. func (r *mutationResolver) RestartVirtualMachine(ctx context.Context, clusterEdgeID string, virtualMachines []*model.VirtualMachineMetadataInput) (bool, error) { if virtualMachines == nil { return false, fmt.Errorf("virtual machines list cannot be empty") } notification, err := r.buildVMEdgeAgentNotification(ctx, virtualMachines, clusterEdgeID, edgeAgent.EventTypeRestart) if err != nil { return false, err } //get cluster for project id publish notification to cluster, err := r.StoreClusterService.GetCluster(ctx, clusterEdgeID) if err != nil { return false, err } if err := r.EdgeAgentService.InvokeEdgeAgentPubsub(ctx, notification, cluster.ProjectID); err != nil { return false, err } return true, nil } // VirtualMachine is the resolver for the virtualMachine field. func (r *queryResolver) VirtualMachine(ctx context.Context, virtualMachineID string) (*model.VirtualMachine, error) { return r.VirtualMachineService.GetVirtualMachine(ctx, virtualMachineID) } // VirtualMachines is the resolver for the virtualMachines field. func (r *queryResolver) VirtualMachines(ctx context.Context, clusterEdgeID *string, hostname *string) ([]*model.VirtualMachine, error) { return r.VirtualMachineService.GetVirtualMachines(ctx, clusterEdgeID, hostname) } // VirtualMachineDisk is the resolver for the virtualMachineDisk field. func (r *queryResolver) VirtualMachineDisk(ctx context.Context, diskID string) (*model.VirtualMachineDisk, error) { return r.VirtualMachineService.GetVirtualMachineDisk(ctx, diskID) } // VirtualMachineDisks is the resolver for the virtualMachineDisks field. func (r *queryResolver) VirtualMachineDisks(ctx context.Context, virtualMachineID string) ([]*model.VirtualMachineDisk, error) { return r.VirtualMachineService.GetVirtualMachineDisks(ctx, virtualMachineID) }