MCPcopy
hub / github.com/moby/moby / setupNewPlugin

Method setupNewPlugin

daemon/pkg/plugin/manager_linux.go:270–296  ·  view source on GitHub ↗
(configDigest digest.Digest, privileges *plugin.Privileges)

Source from the content-addressed store, hash-verified

268}
269
270func (pm *Manager) setupNewPlugin(configDigest digest.Digest, privileges *plugin.Privileges) (plugin.Config, error) {
271 configRA, err := pm.blobStore.ReaderAt(context.TODO(), ocispec.Descriptor{Digest: configDigest})
272 if err != nil {
273 return plugin.Config{}, err
274 }
275 defer configRA.Close()
276
277 configR := content.NewReader(configRA)
278
279 var config plugin.Config
280 dec := json.NewDecoder(configR)
281 if err := dec.Decode(&config); err != nil {
282 return plugin.Config{}, errors.Wrapf(err, "failed to parse config")
283 }
284 if dec.More() {
285 return plugin.Config{}, errors.New("invalid config json")
286 }
287
288 requiredPrivileges := computePrivileges(config)
289 if privileges != nil {
290 if err := validatePrivileges(requiredPrivileges, *privileges); err != nil {
291 return plugin.Config{}, err
292 }
293 }
294
295 return config, nil
296}
297
298// createPlugin creates a new plugin. take lock before calling.
299func (pm *Manager) createPlugin(name string, configDigest, manifestDigest digest.Digest, blobsums []digest.Digest, rootFSDir string, privileges *plugin.Privileges, opts ...CreateOpt) (_ *v2.Plugin, retErr error) {

Callers 2

upgradePluginMethod · 0.95
createPluginMethod · 0.95

Calls 6

DecodeMethod · 0.95
computePrivilegesFunction · 0.85
validatePrivilegesFunction · 0.85
ReaderAtMethod · 0.65
CloseMethod · 0.65
NewMethod · 0.65

Tested by

no test coverage detected