package resolver import ( "context" "edge-infra.dev/pkg/edge/api/graph/model" chariotClientApi "edge-infra.dev/pkg/edge/chariot/client" ) func (r *Resolver) UpdateClusterIENodesViaChariot(ctx context.Context, clusterEdgeID *string, operation chariotClientApi.Operation) error { terminals, err := r.TerminalService.GetTerminals(ctx, clusterEdgeID, nil) if err != nil { return err } for _, terminal := range terminals { if err = r.UpdateIENodeViaChariot(ctx, terminal, operation); err != nil { return err } } return nil } func (r *Resolver) UpdateIENodeViaChariot(ctx context.Context, terminal *model.Terminal, operation chariotClientApi.Operation) error { cluster, err := r.StoreClusterService.GetCluster(ctx, terminal.ClusterEdgeID) if err != nil { return err } clusterNetworkServices, err := r.StoreClusterService.GetClusterNetworkServices(ctx, cluster.ClusterEdgeID) if err != nil { return err } customLabels, err := r.getTerminalCustomLabels(ctx, terminal.TerminalID) if err != nil { return err } ienNodeCRBase64, err := r.TerminalService.CreateDSDSIENodeCR(terminal, clusterNetworkServices, customLabels, cluster.FleetVersion) if err != nil { return err } err = r.sendChariotMessage(ctx, cluster.ProjectID, cluster.ClusterEdgeID, operation, ienNodeCRBase64) if err != nil { return err } // Call updateTerminalViaChariot to ensure the IENode is also updated on the // cic return r.updateTerminalViaChariot(ctx, terminal, operation) } func (r *Resolver) updateTerminalViaChariot(ctx context.Context, terminal *model.Terminal, operation chariotClientApi.Operation) error { storeCluster, err := r.StoreClusterService.GetCluster(ctx, terminal.ClusterEdgeID) if err != nil { return err } clusterNetworkServices, err := r.StoreClusterService.GetClusterNetworkServices(ctx, storeCluster.ClusterEdgeID) if err != nil { return err } clusterInfraCluster, err := r.BannerService.GetClusterInfraInfo(ctx, storeCluster.BannerEdgeID) if err != nil { return err } customLabels, err := r.getTerminalCustomLabels(ctx, terminal.TerminalID) if err != nil { return err } terminalCRBase64, err := r.TerminalService.CreateCICIENodeCR(terminal, clusterNetworkServices, customLabels, storeCluster.FleetVersion) if err != nil { return err } return r.sendChariotMessage(ctx, clusterInfraCluster.ProjectID, clusterInfraCluster.ClusterEdgeID, operation, terminalCRBase64) }