From 112f7a214b316df94aa9b8215b079e2d77be24ce Mon Sep 17 00:00:00 2001 From: Danny Berger Date: Sun, 13 Nov 2016 22:00:33 -0800 Subject: [PATCH] Backwards compatible final_name/name settings --- releasedir/fs_config.go | 12 ++++++++++-- releasedir/fs_config_test.go | 29 +++++++++++++++++++++++++++-- 2 files changed, 37 insertions(+), 4 deletions(-) diff --git a/releasedir/fs_config.go b/releasedir/fs_config.go index 27b665f90..45af57aba 100644 --- a/releasedir/fs_config.go +++ b/releasedir/fs_config.go @@ -10,7 +10,6 @@ import ( # final.yml --- name: cf -min_cli_version: 1.5.0.pre.1001 blobstore: provider: s3 options: @@ -30,6 +29,7 @@ type FSConfig struct { type fsConfigPublicSchema struct { Name string `yaml:"name"` + FinalName string `yaml:"final_name,omitempty"` Blobstore fsConfigSchema_Blobstore `yaml:"blobstore,omitempty"` } @@ -53,8 +53,15 @@ func (c FSConfig) Name() (string, error) { } if len(publicSchema.Name) == 0 { + if len(publicSchema.FinalName) == 0 { + return "", bosherr.Errorf( + "Expected non-empty 'name' in config '%s'", c.publicPath) + } + + return publicSchema.FinalName, nil + } else if len(publicSchema.FinalName) > 0 { return "", bosherr.Errorf( - "Expected non-empty 'name' in config '%s'", c.publicPath) + "Expected 'name' or 'final_name' but not both in config '%s'", c.publicPath) } return publicSchema.Name, nil @@ -66,6 +73,7 @@ func (c FSConfig) SaveName(name string) error { return err } + publicSchema.FinalName = "" publicSchema.Name = name bytes, err := yaml.Marshal(publicSchema) diff --git a/releasedir/fs_config_test.go b/releasedir/fs_config_test.go index 50c7873a2..cbc0dadc4 100644 --- a/releasedir/fs_config_test.go +++ b/releasedir/fs_config_test.go @@ -22,7 +22,7 @@ var _ = Describe("FSConfig", func() { }) Describe("Name", func() { - It("returns final name from public config", func() { + It("returns name from public config", func() { fs.WriteFileString("/dir/public.yml", "name: name") name, err := config.Name() @@ -30,7 +30,15 @@ var _ = Describe("FSConfig", func() { Expect(name).To(Equal("name")) }) - It("returns error if name is empty", func() { + It("returns final_name from public config", func() { + fs.WriteFileString("/dir/public.yml", "final_name: name") + + name, err := config.Name() + Expect(err).ToNot(HaveOccurred()) + Expect(name).To(Equal("name")) + }) + + It("returns error if name and final_name are empty", func() { fs.WriteFileString("/dir/public.yml", "") _, err := config.Name() @@ -38,6 +46,14 @@ var _ = Describe("FSConfig", func() { Expect(err.Error()).To(Equal("Expected non-empty 'name' in config '/dir/public.yml'")) }) + It("returns error if both name and final_name are non-empty", func() { + fs.WriteFileString("/dir/public.yml", "final_name: name\nname: name") + + _, err := config.Name() + Expect(err).To(HaveOccurred()) + Expect(err.Error()).To(Equal("Expected 'name' or 'final_name' but not both in config '/dir/public.yml'")) + }) + It("returns error if cannot read public config", func() { fs.WriteFileString("/dir/public.yml", "-") fs.RegisterReadFileError("/dir/public.yml", errors.New("fake-err")) @@ -176,6 +192,15 @@ var _ = Describe("FSConfig", func() { "name: new-name\nblobstore:\n provider: s3\n")) }) + It("migrates final_name to name", func() { + fs.WriteFileString("/dir/public.yml", "final_name: name") + + err := config.SaveName("new-name") + Expect(err).ToNot(HaveOccurred()) + + Expect(fs.ReadFileString("/dir/public.yml")).To(Equal("name: new-name\n")) + }) + It("returns error if cannot read public config", func() { fs.WriteFileString("/dir/public.yml", "-") fs.RegisterReadFileError("/dir/public.yml", errors.New("fake-err"))