Skip to content

Commit

Permalink
fixup! Validate stack during analyze phase
Browse files Browse the repository at this point in the history
Signed-off-by: Jesse Brown <jabrown85@gmail.com>
  • Loading branch information
jabrown85 committed Jun 14, 2021
1 parent efa1357 commit cc21037
Show file tree
Hide file tree
Showing 3 changed files with 45 additions and 41 deletions.
70 changes: 35 additions & 35 deletions cmd/lifecycle/analyzer.go
Original file line number Diff line number Diff line change
Expand Up @@ -161,10 +161,6 @@ func (a *analyzeCmd) Exec() error {
}
}

if err := a.validateStack(); err != nil {
return cmd.FailErr(err, "validate stack")
}

analyzedMD, err := a.analyze()
if err != nil {
return err
Expand All @@ -177,7 +173,29 @@ func (a *analyzeCmd) Exec() error {
return nil
}

func (aa analyzeArgs) validateStack() error {
if !aa.supportsStackValidation() {
return nil
}

var stackMD platform.StackMetadata
if _, err := toml.DecodeFile(aa.stackPath, &stackMD); err != nil && !os.IsNotExist(err) {
return cmd.FailErr(err, "get stack metadata")
}

runImage, err := aa.getRunImage(stackMD)
if err != nil {
return cmd.FailErr(err, "resolve run image")
}

return lifecycle.ValidateStack(stackMD, runImage)
}

func (aa analyzeArgs) analyze() (platform.AnalyzedMetadata, error) {
if err := aa.validateStack(); err != nil {
return platform.AnalyzedMetadata{}, cmd.FailErr(err, "validate stack")
}

var (
img imgutil.Image
err error
Expand Down Expand Up @@ -213,46 +231,28 @@ func (aa analyzeArgs) analyze() (platform.AnalyzedMetadata, error) {
return analyzedMD, nil
}

func (a *analyzeCmd) validateStack() error {
if !a.supportsStackValidation() {
return nil
}

var stackMD platform.StackMetadata
if _, err := toml.DecodeFile(a.stackPath, &stackMD); err != nil && !os.IsNotExist(err) {
return cmd.FailErr(err, "get stack metadata")
}

runImage, err := a.getRunImage(stackMD)
if err != nil {
return cmd.FailErr(err, "resolve run image")
}

return lifecycle.ValidateStack(stackMD, runImage)
}

func (a *analyzeCmd) getRunImage(stackMD platform.StackMetadata) (imgutil.Image, error) {
if a.runImageRef == "" {
runImageRef, err := lifecycle.ResolveRunImage(stackMD, a.imageName)
func (aa *analyzeArgs) getRunImage(stackMD platform.StackMetadata) (imgutil.Image, error) {
if aa.runImageRef == "" {
runImageRef, err := lifecycle.ResolveRunImage(stackMD, aa.imageName)
if err != nil {
return nil, err
}
a.runImageRef = runImageRef
aa.runImageRef = runImageRef
}

var runImage imgutil.Image
var err error
if a.useDaemon {
if aa.useDaemon {
runImage, err = local.NewImage(
a.runImageRef,
a.docker,
local.FromBaseImage(a.runImageRef),
aa.runImageRef,
aa.docker,
local.FromBaseImage(aa.runImageRef),
)
} else {
runImage, err = remote.NewImage(
a.runImageRef,
a.keychain,
remote.FromBaseImage(a.runImageRef),
aa.runImageRef,
aa.keychain,
remote.FromBaseImage(aa.runImageRef),
)
}
return runImage, err
Expand All @@ -273,8 +273,8 @@ func (a *analyzeCmd) restoresLayerMetadata() bool {
return !a.platformAPIVersionGreaterThan06()
}

func (a *analyzeCmd) supportsStackValidation() bool {
return a.platformAPIVersionGreaterThan06()
func (aa *analyzeArgs) supportsStackValidation() bool {
return api.MustParse(aa.platform.API()).Compare(api.MustParse("0.7")) >= 0
}

func (a *analyzeCmd) platformAPIVersionGreaterThan06() bool {
Expand Down
14 changes: 8 additions & 6 deletions cmd/lifecycle/creator.go
Original file line number Diff line number Diff line change
Expand Up @@ -154,12 +154,14 @@ func (c *createCmd) Exec() error {
if api.MustParse(c.platform.API()).Compare(api.MustParse("0.7")) >= 0 {
cmd.DefaultLogger.Phase("ANALYZING")
analyzedMD, err = analyzeArgs{
imageName: c.previousImage,
keychain: c.keychain,
layersDir: c.layersDir,
platform: c.platform,
useDaemon: c.useDaemon,
docker: c.docker,
imageName: c.imageName,
keychain: c.keychain,
layersDir: c.layersDir,
platform: c.platform,
runImageRef: c.runImageRef,
stackPath: c.stackPath,
useDaemon: c.useDaemon,
docker: c.docker,
}.analyze()
if err != nil {
return err
Expand Down
2 changes: 2 additions & 0 deletions tools/go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -244,6 +244,8 @@ github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/
github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/go-cmp v0.5.5 h1:Khx7svrCpmxxtHBq5j2mp/xVjsi8hQMfNLvJFAlrGgU=
github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/go-cmp v0.5.6 h1:BKbKCqvP6I+rmFHt06ZmyQtvB8xAkWdhFyr0ZUNZcxQ=
github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/go-containerregistry v0.5.0/go.mod h1:Ct15B4yir3PLOP5jsy0GNeYVaIZs/MK/Jz5any1wFW0=
github.com/google/go-containerregistry v0.5.1 h1:/+mFTs4AlwsJ/mJe8NDtKb7BxLtbZFpcn8vDsneEkwQ=
github.com/google/go-containerregistry v0.5.1/go.mod h1:Ct15B4yir3PLOP5jsy0GNeYVaIZs/MK/Jz5any1wFW0=
Expand Down

0 comments on commit cc21037

Please sign in to comment.