@ -167,9 +167,6 @@ func (u *Upgrade) RunWithContext(ctx context.Context, name string, chart *chart.
return nil , err
return nil , err
}
}
u . cfg . Releases . MaxHistory = u . MaxHistory
u . cfg . Log ( "performing update for %s" , name )
res , err := u . performUpgrade ( ctx , currentRelease , upgradedRelease )
res , err := u . performUpgrade ( ctx , currentRelease , upgradedRelease )
if err != nil {
if err != nil {
return res , err
return res , err
@ -303,11 +300,17 @@ func (u *Upgrade) prepareUpgrade(name string, chart *chart.Chart, vals map[strin
if len ( notesTxt ) > 0 {
if len ( notesTxt ) > 0 {
upgradedRelease . Info . Notes = notesTxt
upgradedRelease . Info . Notes = notesTxt
}
}
err = validateManifest ( u . cfg . KubeClient , manifestDoc . Bytes ( ) , ! u . DisableOpenAPIValidation )
return currentRelease , upgradedRelease , nil
return currentRelease , upgradedRelease , err
}
}
func ( u * Upgrade ) performUpgrade ( ctx context . Context , originalRelease , upgradedRelease * release . Release ) ( * release . Release , error ) {
func ( u * Upgrade ) performUpgrade ( ctx context . Context , originalRelease , upgradedRelease * release . Release ) ( * release . Release , error ) {
target , err := u . cfg . KubeClient . Build ( bytes . NewBufferString ( upgradedRelease . Manifest ) , ! u . DisableOpenAPIValidation )
if err != nil {
return upgradedRelease , errors . Wrap ( err , "unable to build kubernetes objects from new release manifest" )
}
u . cfg . Releases . MaxHistory = u . MaxHistory
u . cfg . Log ( "performing update for %s" , upgradedRelease . Name )
current , err := u . cfg . KubeClient . Build ( bytes . NewBufferString ( originalRelease . Manifest ) , false )
current , err := u . cfg . KubeClient . Build ( bytes . NewBufferString ( originalRelease . Manifest ) , false )
if err != nil {
if err != nil {
// Checking for removed Kubernetes API error so can provide a more informative error message to the user
// Checking for removed Kubernetes API error so can provide a more informative error message to the user
@ -319,11 +322,6 @@ func (u *Upgrade) performUpgrade(ctx context.Context, originalRelease, upgradedR
}
}
return upgradedRelease , errors . Wrap ( err , "unable to build kubernetes objects from current release manifest" )
return upgradedRelease , errors . Wrap ( err , "unable to build kubernetes objects from current release manifest" )
}
}
target , err := u . cfg . KubeClient . Build ( bytes . NewBufferString ( upgradedRelease . Manifest ) , ! u . DisableOpenAPIValidation )
if err != nil {
return upgradedRelease , errors . Wrap ( err , "unable to build kubernetes objects from new release manifest" )
}
// It is safe to use force only on target because these are resources currently rendered by the chart.
// It is safe to use force only on target because these are resources currently rendered by the chart.
err = target . Visit ( setMetadataVisitor ( upgradedRelease . Name , upgradedRelease . Namespace , true ) )
err = target . Visit ( setMetadataVisitor ( upgradedRelease . Name , upgradedRelease . Namespace , true ) )
if err != nil {
if err != nil {
@ -589,11 +587,6 @@ func (u *Upgrade) reuseValues(chart *chart.Chart, current *release.Release, newV
return newVals , nil
return newVals , nil
}
}
func validateManifest ( c kube . Interface , manifest [ ] byte , openAPIValidation bool ) error {
_ , err := c . Build ( bytes . NewReader ( manifest ) , openAPIValidation )
return err
}
// recreate captures all the logic for recreating pods for both upgrade and
// recreate captures all the logic for recreating pods for both upgrade and
// rollback. If we end up refactoring rollback to use upgrade, this can just be
// rollback. If we end up refactoring rollback to use upgrade, this can just be
// made an unexported method on the upgrade action.
// made an unexported method on the upgrade action.