in deployers/servicedeployer.go [1169:1231]
func (deployer *ServiceDeployer) UnDeployDependencies() error {
for _, pack := range deployer.Deployment.Packages {
for depName, depRecord := range pack.Dependencies {
output := wski18n.T(wski18n.ID_MSG_DEPENDENCY_UNDEPLOYING_X_name_X,
map[string]interface{}{wski18n.KEY_NAME: depName})
whisk.Debug(whisk.DbgInfo, output)
if depRecord.IsBinding {
var err error
err = retry(DEFAULT_ATTEMPTS, DEFAULT_INTERVAL, func() error {
_, err := deployer.Client.Packages.Delete(depName)
return err
})
if err != nil {
return err
}
} else {
depServiceDeployer, err := deployer.getDependentDeployer(depName, depRecord)
if err != nil {
return err
}
plan, err := depServiceDeployer.ConstructUnDeploymentPlan()
if err != nil {
return err
}
dependentPackages := []string{}
for k := range depServiceDeployer.Deployment.Packages {
dependentPackages = append(dependentPackages, k)
}
// delete binding pkg if the origin package name is different
if ok := depServiceDeployer.Deployment.Packages[depName]; ok == nil {
if _, _, ok := deployer.Client.Packages.Get(depName); ok == nil {
var err error
var response *http.Response
err = retry(DEFAULT_ATTEMPTS, DEFAULT_INTERVAL, func() error {
response, err = deployer.Client.Packages.Delete(depName)
return err
})
if err != nil {
return createWhiskClientError(err.(*whisk.WskError), response, wski18n.PACKAGE_BINDING, false)
}
}
}
if err := depServiceDeployer.unDeployAssets(plan); err != nil {
errString := wski18n.T(wski18n.ID_MSG_DEPENDENCY_UNDEPLOYMENT_FAILURE_X_name_X,
map[string]interface{}{wski18n.KEY_NAME: depName})
whisk.Debug(whisk.DbgError, errString)
return err
}
}
output = wski18n.T(wski18n.ID_MSG_DEPENDENCY_UNDEPLOYMENT_SUCCESS_X_name_X,
map[string]interface{}{wski18n.KEY_NAME: depName})
whisk.Debug(whisk.DbgInfo, output)
}
}
return nil
}