MCPcopy Create free account
hub / github.com/conforma/cli / UploadVSAEnvelope

Function UploadVSAEnvelope

internal/validate/vsa/storage.go:144–191  ·  view source on GitHub ↗

UploadVSAEnvelope uploads a VSA envelope to the configured storage backends

(ctx context.Context, envelopePath string, storageConfigs []string, signer *Signer)

Source from the content-addressed store, hash-verified

142
143// UploadVSAEnvelope uploads a VSA envelope to the configured storage backends
144func UploadVSAEnvelope(ctx context.Context, envelopePath string, storageConfigs []string, signer *Signer) error {
145 if len(storageConfigs) == 0 {
146 log.Infof("[VSA] No storage backends configured, skipping upload")
147 return nil
148 }
149
150 // Read envelope content
151 envelopeContent, err := os.ReadFile(envelopePath)
152 if err != nil {
153 return fmt.Errorf("failed to read VSA envelope from %s: %w", envelopePath, err)
154 }
155
156 // Upload to each configured backend
157 for _, storageFlag := range storageConfigs {
158 config, err := ParseStorageFlag(storageFlag)
159 if err != nil {
160 log.Warnf("invalid storage config '%s': %v", storageFlag, err)
161 continue
162 }
163
164 backend, err := CreateStorageBackend(config)
165 if err != nil {
166 log.Warnf("failed to create %s backend: %v", config.Backend, err)
167 continue
168 }
169
170 // Upload using the appropriate method
171 var uploadErr error
172 if signerAwareUploader, ok := backend.(SignerAwareUploader); ok && signer != nil {
173 payloadHash, uploadErr := signerAwareUploader.UploadWithSigner(ctx, envelopeContent, signer)
174 if uploadErr == nil && payloadHash != "" {
175 log.WithFields(log.Fields{
176 "backend": backend.Name(),
177 "payload_hash": payloadHash,
178 }).Debug("[VSA] Upload successful, payload hash available for retrieval")
179 }
180 } else {
181 uploadErr = backend.Upload(ctx, envelopeContent)
182 }
183
184 if uploadErr != nil {
185 log.Warnf("failed to upload to %s: %v", backend.Name(), uploadErr)
186 continue
187 }
188 }
189
190 return nil
191}

Calls 8

ParseStorageFlagFunction · 0.85
CreateStorageBackendFunction · 0.85
InfofMethod · 0.65
ErrorfMethod · 0.65
WarnfMethod · 0.65
UploadWithSignerMethod · 0.65
NameMethod · 0.65
UploadMethod · 0.65