in cmd/root.go [186:277]
func Deploy(cmd *cobra.Command) error {
// Convey flags for verbose and trace to Go client
whisk.SetVerbose(utils.Flags.Verbose)
whisk.SetDebug(utils.Flags.Trace)
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
// default manifests are manifest.yaml and manifest.yml
// return failure if none of the default manifest files were found
if utils.Flags.ManifestPath == "" {
if err, returnRoot := loadDefaultManifestFileFromProjectPath(wski18n.CMD_DEPLOY, projectPath, cmd); err != nil {
return err
} else if returnRoot == true {
return nil
}
}
// If deployment filename is not provided, attempt to load default deployment files from project path
// default deployments are deployment.yaml and deployment.yml
// continue processing manifest file, even if none of the default
// deployment files were found as deployment files are optional
if utils.Flags.DeploymentPath == "" {
if err := loadDefaultDeploymentFileFromProjectPath(wski18n.CMD_DEPLOY, projectPath); err != nil {
return err
}
}
if utils.MayExists(utils.Flags.ManifestPath) {
// Create an instance of ServiceDeployer
var deployer = deployers.NewServiceDeployer()
// Set Project Path, Manifest Path, and Deployment Path of ServiceDeployer
deployer.ProjectPath = projectPath
deployer.ManifestPath = utils.Flags.ManifestPath
deployer.DeploymentPath = utils.Flags.DeploymentPath
deployer.Preview = utils.Flags.Preview
deployer.Report = utils.Flags.Report
// master record of any dependency that has been downloaded
deployer.DependencyMaster = make(map[string]dependencies.DependencyRecord)
// Read credentials from Configuration file, manifest file or deployment file
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
}
// Construct Deployment Plan
err = deployer.ConstructDeploymentPlan()
if err != nil {
return err
}
// Deploy all OW entities
err = deployer.Deploy()
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})
whisk.Debug(whisk.DbgError, errString)
return wskderrors.NewErrorManifestFileNotFound(utils.Flags.ManifestPath, errString)
}
}