in lib/dam/dam.go [1383:1450]
func ImportConfig(store storage.Store, service string, warehouse clouds.ResourceTokenCreator, cfgVars map[string]string, importConfig, importSecrets, importPermission bool) (ferr error) {
fs := getFileStore(store, service)
glog.Infof("import DAM config %q into data store", fs.Info()["service"])
tx, err := store.Tx(true)
if err != nil {
return err
}
defer func() {
err := tx.Finish()
if ferr == nil {
ferr = err
}
}()
history := &cpb.HistoryEntry{
Revision: 1,
User: "admin",
CommitTime: float64(time.Now().Unix()),
Desc: "Initial config",
}
cfg := &pb.DamConfig{}
if err = fs.Read(storage.ConfigDatatype, storage.DefaultRealm, storage.DefaultUser, storage.DefaultID, storage.LatestRev, cfg); err != nil {
return err
}
if importConfig {
history.Revision = cfg.Revision
if err = storage.ReplaceContentVariables(cfg, cfgVars); err != nil {
return fmt.Errorf("replacing variables on config file: %v", err)
}
if err = store.WriteTx(storage.ConfigDatatype, storage.DefaultRealm, storage.DefaultUser, storage.DefaultID, cfg.Revision, cfg, history, tx); err != nil {
return err
}
}
if importSecrets {
secrets := &pb.DamSecrets{}
if err = fs.Read(storage.SecretsDatatype, storage.DefaultRealm, storage.DefaultUser, storage.DefaultID, storage.LatestRev, secrets); err != nil {
return err
}
history.Revision = secrets.Revision
if err = storage.ReplaceContentVariables(secrets, cfgVars); err != nil {
return fmt.Errorf("replacing variables on secrets file: %v", err)
}
if err = store.WriteTx(storage.SecretsDatatype, storage.DefaultRealm, storage.DefaultUser, storage.DefaultID, secrets.Revision, secrets, history, tx); err != nil {
return err
}
}
if importPermission {
perm := &cpb.Permissions{}
if err = fs.Read(storage.PermissionsDatatype, storage.DefaultRealm, storage.DefaultUser, storage.DefaultID, storage.LatestRev, perm); err != nil {
return err
}
history.Revision = perm.Revision
if err = storage.ReplaceContentVariables(perm, cfgVars); err != nil {
return fmt.Errorf("replacing variables on permissions file: %v", err)
}
if err = store.WriteTx(storage.PermissionsDatatype, storage.DefaultRealm, storage.DefaultUser, storage.DefaultID, perm.Revision, perm, history, tx); err != nil {
return err
}
}
if warehouse == nil {
return nil
}
return warehouse.RegisterAccountProject(cfg.Options.GcpServiceAccountProject, tx)
}