// XXX: What's going on here? => [csk]: magic func RenameChain(do *definitions.Do) error { if do.Name == do.NewName { return fmt.Errorf("Cannot rename to same name") } newNameBase := strings.Replace(do.NewName, filepath.Ext(do.NewName), "", 1) transformOnly := newNameBase == do.Name if util.IsKnownChain(do.Name) { log.WithFields(log.Fields{ "from": do.Name, "to": do.NewName, }).Info("Renaming chain") log.WithField("=>", do.Name).Debug("Loading chain definition file") chainDef, err := loaders.LoadChainDefinition(do.Name, false, 1) // TODO:CNUM if err != nil { return err } if !transformOnly { log.Debug("Renaming chain container") err = perform.DockerRename(chainDef.Operations, do.NewName) if err != nil { return err } } oldFile := util.GetFileByNameAndType("chains", do.Name) if err != nil { return err } if filepath.Base(oldFile) == do.NewName { log.Info("Those are the same file. Not renaming") return nil } log.Debug("Renaming chain definition file") var newFile string if filepath.Ext(do.NewName) == "" { newFile = strings.Replace(oldFile, do.Name, do.NewName, 1) } else { newFile = filepath.Join(ChainsPath, do.NewName) } chainDef.Name = newNameBase // Generally we won't want to use Service.Name // as it will be confused with the Name. chainDef.Service.Name = "" // Service.Image should be taken from the default.toml. chainDef.Service.Image = "" err = WriteChainDefinitionFile(chainDef, newFile) if err != nil { return err } if !transformOnly { log.WithFields(log.Fields{ "from": fmt.Sprintf("%s:%d", do.Name, chainDef.Operations.ContainerNumber), "to": fmt.Sprintf("%s:%d", do.NewName, chainDef.Operations.ContainerNumber), }).Info("Renaming chain data container") do.Operations.ContainerNumber = chainDef.Operations.ContainerNumber err = data.RenameData(do) if err != nil { return err } } os.Remove(oldFile) } else { return fmt.Errorf("I cannot find that chain. Please check the chain name you sent me.") } return nil }
// XXX: What's going on here? => [csk]: magic func RenameChain(do *definitions.Do) error { if do.Name == do.NewName { return fmt.Errorf("Cannot rename to same name") } newNameBase := strings.Replace(do.NewName, filepath.Ext(do.NewName), "", 1) transformOnly := newNameBase == do.Name if util.IsKnownChain(do.Name) { logger.Infof("Renaming chain =>\t\t%s:%s\n", do.Name, do.NewName) logger.Debugf("Loading Chain Def File =>\t%s\n", do.Name) chainDef, err := loaders.LoadChainDefinition(do.Name, false, 1) // TODO:CNUM if err != nil { return err } if !transformOnly { logger.Debugln("Embarking on DockerRename.") err = perform.DockerRename(chainDef.Service, chainDef.Operations, do.Name, newNameBase) if err != nil { return err } } oldFile := util.GetFileByNameAndType("chains", do.Name) if err != nil { return err } if filepath.Base(oldFile) == do.NewName { logger.Infoln("Those are the same file. Not renaming") return nil } logger.Debugln("Renaming Chain Definition File.") var newFile string if filepath.Ext(do.NewName) == "" { newFile = strings.Replace(oldFile, do.Name, do.NewName, 1) } else { newFile = filepath.Join(BlockchainsPath, do.NewName) } chainDef.Name = newNameBase chainDef.Service.Name = "" chainDef.Service.Image = "" err = WriteChainDefinitionFile(chainDef, newFile) if err != nil { return err } if !transformOnly { logger.Infof("Renaming DataC (fm ChainRaw) =>\t%s:%s\n", do.Name, do.NewName) do.Operations.ContainerNumber = chainDef.Operations.ContainerNumber logger.Debugf("\twith ContainerNumber =>\t%d\n", do.Operations.ContainerNumber) err = data.RenameData(do) if err != nil { return err } } os.Remove(oldFile) } else { return fmt.Errorf("I cannot find that chain. Please check the chain name you sent me.") } return nil }