(ctx context.Context, provider *pb.Provider)
| 594 | } |
| 595 | |
| 596 | func (serv *MetadataServer) CreateProvider(ctx context.Context, provider *pb.Provider) (*pb.Empty, error) { |
| 597 | // The existence of a provider is part of the determination for checking provider health, hence why it |
| 598 | // needs to happen prior to the call to CreateProvider, which is an upsert operation. |
| 599 | shouldCheckProviderHealth, err := serv.shouldCheckProviderHealth(ctx, provider) |
| 600 | if err != nil { |
| 601 | return nil, err |
| 602 | } |
| 603 | serv.Logger.Infow("Creating Provider", "name", provider.Name) |
| 604 | _, err = serv.meta.CreateProvider(ctx, provider) |
| 605 | if err != nil && status.Code(err) != codes.AlreadyExists { |
| 606 | serv.Logger.Errorw("Failed to create provider", "error", err) |
| 607 | return nil, err |
| 608 | } |
| 609 | if !serv.health.IsSupportedProvider(pt.Type(provider.Type)) { |
| 610 | serv.Logger.Infow("Provider type is currently not supported for health check", "type", provider.Type) |
| 611 | return &pb.Empty{}, nil |
| 612 | } |
| 613 | if shouldCheckProviderHealth { |
| 614 | serv.Logger.Infow("Checking provider health", "name", provider.Name) |
| 615 | err := serv.checkProviderHealth(ctx, provider.Name) |
| 616 | if err != nil { |
| 617 | serv.Logger.Errorw("Failed to set provider status", "error", err, "health check error", err) |
| 618 | return nil, err |
| 619 | } |
| 620 | } |
| 621 | return &pb.Empty{}, err |
| 622 | } |
| 623 | |
| 624 | func (serv *MetadataServer) shouldCheckProviderHealth(ctx context.Context, provider *pb.Provider) (bool, error) { |
| 625 | var existingProvider *pb.Provider |
nothing calls this directly
no test coverage detected