github.com/cloudfoundry-attic/cli-with-i18n@v6.32.1-0.20171002233121-7401370d3b85+incompatible/command/v3/v3_create_package_command.go (about) 1 package v3 2 3 import ( 4 "net/http" 5 6 "code.cloudfoundry.org/cli/actor/sharedaction" 7 "code.cloudfoundry.org/cli/actor/v3action" 8 "code.cloudfoundry.org/cli/api/cloudcontroller/ccerror" 9 "code.cloudfoundry.org/cli/api/cloudcontroller/ccversion" 10 "code.cloudfoundry.org/cli/command" 11 "code.cloudfoundry.org/cli/command/flag" 12 "code.cloudfoundry.org/cli/command/translatableerror" 13 "code.cloudfoundry.org/cli/command/v3/shared" 14 ) 15 16 //go:generate counterfeiter . V3CreatePackageActor 17 18 type V3CreatePackageActor interface { 19 CloudControllerAPIVersion() string 20 CreateDockerPackageByApplicationNameAndSpace(appName string, spaceGUID string, dockerImageCredentials v3action.DockerImageCredentials) (v3action.Package, v3action.Warnings, error) 21 CreateAndUploadBitsPackageByApplicationNameAndSpace(appName string, spaceGUID string, bitsPath string) (v3action.Package, v3action.Warnings, error) 22 } 23 24 type V3CreatePackageCommand struct { 25 RequiredArgs flag.AppName `positional-args:"yes"` 26 DockerImage flag.DockerImage `long:"docker-image" short:"o" description:"Docker-image to be used (e.g. user/docker-image-name)"` 27 usage interface{} `usage:"CF_NAME v3-create-package APP_NAME [--docker-image [REGISTRY_HOST:PORT/]IMAGE[:TAG]]"` 28 29 UI command.UI 30 Config command.Config 31 SharedActor command.SharedActor 32 Actor V3CreatePackageActor 33 34 PackageDisplayer shared.PackageDisplayer 35 } 36 37 func (cmd *V3CreatePackageCommand) Setup(config command.Config, ui command.UI) error { 38 cmd.UI = ui 39 cmd.Config = config 40 sharedActor := sharedaction.NewActor(config) 41 cmd.SharedActor = sharedActor 42 43 client, _, err := shared.NewClients(config, ui, true) 44 if err != nil { 45 if v3Err, ok := err.(ccerror.V3UnexpectedResponseError); ok && v3Err.ResponseCode == http.StatusNotFound { 46 return translatableerror.MinimumAPIVersionNotMetError{MinimumVersion: ccversion.MinVersionV3} 47 } 48 49 return err 50 } 51 cmd.Actor = v3action.NewActor(sharedActor, client, config) 52 53 cmd.PackageDisplayer = shared.NewPackageDisplayer(cmd.UI, cmd.Config) 54 55 return nil 56 } 57 58 func (cmd V3CreatePackageCommand) Execute(args []string) error { 59 cmd.UI.DisplayText(command.ExperimentalWarning) 60 cmd.UI.DisplayNewline() 61 62 err := command.MinimumAPIVersionCheck(cmd.Actor.CloudControllerAPIVersion(), ccversion.MinVersionV3) 63 if err != nil { 64 return err 65 } 66 67 err = cmd.SharedActor.CheckTarget(cmd.Config, true, true) 68 if err != nil { 69 return shared.HandleError(err) 70 } 71 72 isDockerImage := (cmd.DockerImage.Path != "") 73 err = cmd.PackageDisplayer.DisplaySetupMessage(cmd.RequiredArgs.AppName, isDockerImage) 74 if err != nil { 75 return shared.HandleError(err) 76 } 77 78 var ( 79 pkg v3action.Package 80 warnings v3action.Warnings 81 ) 82 if isDockerImage { 83 pkg, warnings, err = cmd.Actor.CreateDockerPackageByApplicationNameAndSpace(cmd.RequiredArgs.AppName, cmd.Config.TargetedSpace().GUID, v3action.DockerImageCredentials{Path: cmd.DockerImage.Path}) 84 } else { 85 pkg, warnings, err = cmd.Actor.CreateAndUploadBitsPackageByApplicationNameAndSpace(cmd.RequiredArgs.AppName, cmd.Config.TargetedSpace().GUID, "") 86 } 87 88 cmd.UI.DisplayWarnings(warnings) 89 if err != nil { 90 return shared.HandleError(err) 91 } 92 93 cmd.UI.DisplayText("package guid: {{.PackageGuid}}", map[string]interface{}{ 94 "PackageGuid": pkg.GUID, 95 }) 96 cmd.UI.DisplayOK() 97 98 return nil 99 }