MCPcopy
hub / github.com/baetyl/baetyl / applyApp

Method applyApp

engine/engine.go:388–436  ·  view source on GitHub ↗
(ns string, info specv1.AppInfo)

Source from the content-addressed store, hash-verified

386}
387
388func (e *engineImpl) applyApp(ns string, info specv1.AppInfo) error {
389 if err := e.syn.SyncResource(info); err != nil {
390 e.log.Error("failed to sync resource", log.Any("info", info), log.Error(err))
391 return errors.Trace(err)
392 }
393 key := makeKey(specv1.KindApplication, info.Name, info.Version)
394 app := new(specv1.Application)
395 err := e.sto.Get(key, app)
396 if err != nil {
397 return errors.Errorf("failed to get app name: (%s) version: (%s) with error: %s", app.Name, app.Version, err.Error())
398 }
399 cfgs := make(map[string]specv1.Configuration)
400 secs := make(map[string]specv1.Secret)
401 for _, v := range app.Volumes {
402 if cfg := v.VolumeSource.Config; cfg != nil {
403 key := makeKey(specv1.KindConfiguration, cfg.Name, cfg.Version)
404 if key == "" {
405 return errors.Errorf("failed to get config name: (%s) version: (%s)", cfg.Name, cfg.Version)
406 }
407 var config specv1.Configuration
408 if err := e.sto.Get(key, &config); err != nil {
409 return errors.Errorf("failed to get config name: (%s) version: (%s) with error: %s", cfg.Name, cfg.Version, err.Error())
410 }
411 cfgs[config.Name] = config
412 } else if sec := v.VolumeSource.Secret; sec != nil {
413 key := makeKey(specv1.KindSecret, sec.Name, sec.Version)
414 if key == "" {
415 return errors.Errorf("failed to get secret name: (%s) version: (%s)", sec.Name, sec.Version)
416 }
417 var secret specv1.Secret
418 if err := e.sto.Get(key, &secret); err != nil {
419 return errors.Errorf("failed to get secret name: (%s) version: (%s) with error: %s", sec.Name, sec.Version, err.Error())
420 }
421 secs[secret.Name] = secret
422 }
423 }
424 if err := sync.PrepareApp(e.hostHostPath, e.objectHostPath, app, cfgs); err != nil {
425 e.log.Error("failed to revise applications", log.Any("app", app), log.Error(err))
426 return errors.Trace(err)
427 }
428 // inject system cert
429 if e.sec != nil && !strings.Contains(app.Name, specv1.BaetylCore) && !strings.Contains(app.Name, specv1.BaetylInit) {
430 if err := e.injectCert(app, secs); err != nil {
431 return errors.Trace(err)
432 }
433 }
434 // apply app
435 return errors.Trace(e.ami.ApplyApp(ns, *app, cfgs, secs))
436}
437
438func (e *engineImpl) injectCert(app *specv1.Application, secs map[string]specv1.Secret) error {
439 ca, err := e.sec.GetCA()

Callers 2

applyAppsMethod · 0.95
TestApplyAppFunction · 0.95

Calls 6

injectCertMethod · 0.95
PrepareAppFunction · 0.92
makeKeyFunction · 0.70
SyncResourceMethod · 0.65
GetMethod · 0.65
ApplyAppMethod · 0.65

Tested by 1

TestApplyAppFunction · 0.76