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" "edge-infra.dev/pkg/edge/api/graph/model" chariotClientApi "edge-infra.dev/pkg/edge/chariot/client" "edge-infra.dev/pkg/lib/crypto" "github.com/hashicorp/go-multierror" ) // CreateTerminal is the resolver for the createTerminal field. func (r *mutationResolver) CreateTerminal(ctx context.Context, newTerminal model.TerminalCreateInput) (*model.Terminal, error) { activationCode, err := crypto.GenerateRandomActivationCode() if err != nil { return nil, err } terminal, err := r.TerminalService.CreateTerminalEntry(ctx, &newTerminal, activationCode) if err != nil { return nil, err } terminal, err = r.TerminalService.UpdateTerminalEntry(ctx, &model.TerminalIDInput{ TerminalID: terminal.TerminalID, TerminalValues: &model.TerminalUpdateInput{ PrimaryInterface: &terminal.Interfaces[0].TerminalInterfaceID, }, }) if err != nil { return nil, err } if secretErr := r.ActivationCodeService.Create(ctx, activationCode, terminal); secretErr != nil { if err := r.TerminalService.DeleteTerminalEntry(ctx, terminal.TerminalID); err != nil { secretErr = multierror.Append(secretErr, err) } return nil, secretErr } return terminal, r.UpdateIENodeViaChariot(ctx, terminal, chariotClientApi.Create) } // DeleteTerminal is the resolver for the deleteTerminal field. func (r *mutationResolver) DeleteTerminal(ctx context.Context, terminalID string) (bool, error) { getLabel := false terminal, err := r.TerminalService.GetTerminal(ctx, terminalID, &getLabel) if err != nil { return false, err } if err := r.ActivationCodeService.CleanupTerminal(ctx, terminalID, terminal.ClusterEdgeID); err != nil { return false, err } err = r.TerminalService.DeleteTerminalEntry(ctx, terminalID) if err != nil { return false, err } return true, r.UpdateIENodeViaChariot(ctx, terminal, chariotClientApi.Delete) } // UpdateTerminal is the resolver for the updateTerminal field. func (r *mutationResolver) UpdateTerminal(ctx context.Context, terminal model.TerminalIDInput) (*model.Terminal, error) { updatedTerminal, err := r.TerminalService.UpdateTerminalEntry(ctx, &terminal) if err != nil { return nil, err } return updatedTerminal, r.UpdateIENodeViaChariot(ctx, updatedTerminal, chariotClientApi.Create) } // CreateTerminalInterface is the resolver for the createTerminalInterface field. func (r *mutationResolver) CreateTerminalInterface(ctx context.Context, terminalID string, newTerminalInterface model.TerminalInterfaceCreateInput) (*model.TerminalInterface, error) { iface, err := r.TerminalService.CreateTerminalInterfaceEntry(ctx, terminalID, &newTerminalInterface) if err != nil { return nil, err } getLabel := false terminal, err := r.TerminalService.GetTerminal(ctx, terminalID, &getLabel) if err != nil { return nil, err } return iface, r.UpdateIENodeViaChariot(ctx, terminal, chariotClientApi.Create) } // DeleteTerminalInterface is the resolver for the deleteTerminalInterface field. func (r *mutationResolver) DeleteTerminalInterface(ctx context.Context, terminalInterfaceID string) (bool, error) { terminal, err := r.TerminalService.DeleteTerminalInterfaceEntry(ctx, terminalInterfaceID) if err != nil { return false, err } return true, r.UpdateIENodeViaChariot(ctx, terminal, chariotClientApi.Create) } // UpdateTerminalInterface is the resolver for the updateTerminalInterface field. func (r *mutationResolver) UpdateTerminalInterface(ctx context.Context, interfaceArg model.TerminalInterfaceIDInput) (*model.TerminalInterface, error) { updatedTerminalIface, err := r.TerminalService.UpdateTerminalInterfaceEntry(ctx, &interfaceArg) if err != nil { return nil, err } terminal, err := r.TerminalService.GetTerminalFromInterface(ctx, interfaceArg.TerminalInterfaceID) if err != nil { return nil, err } return updatedTerminalIface, r.UpdateIENodeViaChariot(ctx, terminal, chariotClientApi.Create) } // CreateTerminalAddress is the resolver for the createTerminalAddress field. func (r *mutationResolver) CreateTerminalAddress(ctx context.Context, terminalInterfaceID string, newTerminalAddress model.TerminalAddressCreateInput) (*model.TerminalAddress, error) { address, err := r.TerminalService.CreateTerminalAddressEntry(ctx, terminalInterfaceID, &newTerminalAddress) if err != nil { return nil, err } terminal, err := r.TerminalService.GetTerminalFromInterface(ctx, terminalInterfaceID) if err != nil { return nil, err } return address, r.UpdateIENodeViaChariot(ctx, terminal, chariotClientApi.Create) } // DeleteTerminalAddress is the resolver for the deleteTerminalAddress field. func (r *mutationResolver) DeleteTerminalAddress(ctx context.Context, terminalAddressID string) (bool, error) { terminal, err := r.TerminalService.DeleteTerminalAddressEntry(ctx, terminalAddressID) if err != nil { return false, err } return true, r.UpdateIENodeViaChariot(ctx, terminal, chariotClientApi.Create) } // UpdateTerminalAddress is the resolver for the updateTerminalAddress field. func (r *mutationResolver) UpdateTerminalAddress(ctx context.Context, address model.TerminalAddressIDInput) (*model.TerminalAddress, error) { updatedTerminalAddr, err := r.TerminalService.UpdateTerminalAddressEntry(ctx, &address) if err != nil { return nil, err } terminal, err := r.TerminalService.GetTerminalFromAddress(ctx, updatedTerminalAddr.TerminalAddressID) if err != nil { return nil, err } return updatedTerminalAddr, r.UpdateIENodeViaChariot(ctx, terminal, chariotClientApi.Create) } // RefreshActivationCode is the resolver for the refreshActivationCode field. func (r *mutationResolver) RefreshActivationCode(ctx context.Context, terminalID string) (string, error) { return r.ActivationCodeService.Refresh(ctx, terminalID) } // CreateTerminalDisk is the resolver for the createTerminalDisk field. func (r *mutationResolver) CreateTerminalDisk(ctx context.Context, terminalID string, newTerminalDisk model.TerminalDiskCreateInput) (*model.TerminalDisk, error) { getLabel := false terminal, err := r.TerminalService.GetTerminal(ctx, terminalID, &getLabel) if err != nil { return nil, err } disk, err := r.TerminalService.CreateTerminalDiskEntry(ctx, terminalID, &newTerminalDisk) if err != nil { return nil, err } return disk, r.UpdateIENodeViaChariot(ctx, terminal, chariotClientApi.Create) } // DeleteTerminalDisk is the resolver for the deleteTerminalDisk field. func (r *mutationResolver) DeleteTerminalDisk(ctx context.Context, terminalDiskID string) (bool, error) { terminal, err := r.TerminalService.DeleteTerminalDiskEntry(ctx, terminalDiskID) if err != nil { return false, err } return true, r.UpdateIENodeViaChariot(ctx, terminal, chariotClientApi.Create) } // UpdateTerminalDisk is the resolver for the updateTerminalDisk field. func (r *mutationResolver) UpdateTerminalDisk(ctx context.Context, terminalDisk model.TerminalDiskIDInput) (*model.TerminalDisk, error) { updatedDisk, err := r.TerminalService.UpdateTerminalDiskEntry(ctx, terminalDisk.TerminalDiskID, *terminalDisk.TerminalDiskValues) if err != nil { return nil, err } getLabel := false terminal, err := r.TerminalService.GetTerminal(ctx, updatedDisk.TerminalID, &getLabel) if err != nil { return nil, err } return updatedDisk, r.UpdateIENodeViaChariot(ctx, terminal, chariotClientApi.Create) } // Terminal is the resolver for the terminal field. func (r *queryResolver) Terminal(ctx context.Context, terminalID string) (*model.Terminal, error) { getLabel := true terminal, err := r.TerminalService.GetTerminal(ctx, terminalID, &getLabel) if err != nil { return nil, err } return terminal, nil } // Terminals is the resolver for the terminals field. func (r *queryResolver) Terminals(ctx context.Context, clusterEdgeID *string, terminalHostname *string) ([]*model.Terminal, error) { terminals, err := r.TerminalService.GetTerminals(ctx, clusterEdgeID, terminalHostname) if err != nil { return nil, err } return terminals, nil } // BannerTerminals is the resolver for the bannerTerminals field. func (r *queryResolver) BannerTerminals(ctx context.Context, bannerEdgeID string, terminalLabels *bool) ([]*model.Terminal, error) { projectID, err := r.BannerService.GetBannerProjectID(ctx, bannerEdgeID) if err != nil { return nil, err } terminals, err := r.TerminalService.GetBannerTerminals(ctx, bannerEdgeID, projectID) if err == nil && terminalLabels != nil && *terminalLabels { return r.TerminalLabelService.GetTerminalLabelsInfo(ctx, terminals) } return terminals, err } // ActivationCode is the resolver for the activationCode field. func (r *queryResolver) ActivationCode(ctx context.Context, terminalID string) (string, error) { return r.ActivationCodeService.FetchFromSecret(ctx, terminalID) } // TerminalDevices is the resolver for the terminalDevices field. func (r *queryResolver) TerminalDevices(ctx context.Context, terminalID string) (*model.TerminalDevices, error) { return r.TerminalService.TerminalDevices(ctx, terminalID) }