in cmd/root.go [279:381]
func Undeploy(cmd *cobra.Command) error {
// Convey flags for verbose and trace to Go client
whisk.SetVerbose(utils.Flags.Verbose)
whisk.SetDebug(utils.Flags.Trace)
if len(utils.Flags.ProjectName) != 0 {
var deployer = deployers.NewServiceDeployer()
deployer.Preview = utils.Flags.Preview
clientConfig, error := deployers.NewWhiskConfig(utils.Flags.CfgFile, "", "")
if error != nil {
return error
}
whiskClient, error := deployers.CreateNewClient(clientConfig)
if error != nil {
return error
}
deployer.Client = whiskClient
deployer.ClientConfig = clientConfig
// The auth, apihost and namespace have been chosen, so that we can check the supported runtimes here.
err := setSupportedRuntimes(clientConfig.Host)
if err != nil {
return err
}
err = deployer.UnDeployProject()
if err != nil {
return err
}
return nil
}
project_Path := strings.TrimSpace(utils.Flags.ProjectPath)
if len(project_Path) == 0 {
project_Path = utils.DEFAULT_PROJECT_PATH
}
projectPath, _ := filepath.Abs(project_Path)
// If manifest filename is not provided, attempt to load default manifests from project path
if utils.Flags.ManifestPath == "" {
if err, returnRoot := loadDefaultManifestFileFromProjectPath(wski18n.CMD_UNDEPLOY, projectPath, cmd); err != nil {
return err
} else if returnRoot == true {
return nil
}
}
if utils.Flags.DeploymentPath == "" {
if err := loadDefaultDeploymentFileFromProjectPath(wski18n.CMD_UNDEPLOY, projectPath); err != nil {
return err
}
}
if utils.FileExists(utils.Flags.ManifestPath) {
var deployer = deployers.NewServiceDeployer()
deployer.ProjectPath = utils.Flags.ProjectPath
deployer.ManifestPath = utils.Flags.ManifestPath
deployer.DeploymentPath = utils.Flags.DeploymentPath
deployer.Preview = utils.Flags.Preview
clientConfig, error := deployers.NewWhiskConfig(utils.Flags.CfgFile, utils.Flags.DeploymentPath, utils.Flags.ManifestPath)
if error != nil {
return error
}
whiskClient, error := deployers.CreateNewClient(clientConfig)
if error != nil {
return error
}
deployer.Client = whiskClient
deployer.ClientConfig = clientConfig
// The auth, apihost and namespace have been chosen, so that we can check the supported runtimes here.
err := setSupportedRuntimes(clientConfig.Host)
if err != nil {
return err
}
verifiedPlan, err := deployer.ConstructUnDeploymentPlan()
if err != nil {
return err
}
err = deployer.UnDeploy(verifiedPlan)
if err != nil {
return err
} else {
return nil
}
} else {
errString := wski18n.T(wski18n.ID_ERR_MANIFEST_FILE_NOT_FOUND_X_path_X,
map[string]interface{}{wski18n.KEY_PATH: utils.Flags.ManifestPath})
return wskderrors.NewErrorManifestFileNotFound(utils.Flags.ManifestPath, errString)
}
}