Skip to content

Commit

Permalink
Backwards compatible final_name/name settings
Browse files Browse the repository at this point in the history
  • Loading branch information
dpb587 committed Nov 14, 2016
1 parent 6668d19 commit 112f7a2
Show file tree
Hide file tree
Showing 2 changed files with 37 additions and 4 deletions.
12 changes: 10 additions & 2 deletions releasedir/fs_config.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@ import (
# final.yml
---
name: cf
min_cli_version: 1.5.0.pre.1001
blobstore:
provider: s3
options:
Expand All @@ -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"`
}

Expand All @@ -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
Expand All @@ -66,6 +73,7 @@ func (c FSConfig) SaveName(name string) error {
return err
}

publicSchema.FinalName = ""
publicSchema.Name = name

bytes, err := yaml.Marshal(publicSchema)
Expand Down
29 changes: 27 additions & 2 deletions releasedir/fs_config_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -22,22 +22,38 @@ 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()
Expect(err).ToNot(HaveOccurred())
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()
Expect(err).To(HaveOccurred())
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"))
Expand Down Expand Up @@ -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"))
Expand Down

0 comments on commit 112f7a2

Please sign in to comment.