github.com/elopio/cli@v6.21.2-0.20160902224010-ea909d1fdb2f+incompatible/cf/commands/securitygroup/bind_staging_security_group.go (about) 1 package securitygroup 2 3 import ( 4 "fmt" 5 6 "code.cloudfoundry.org/cli/cf/api/securitygroups" 7 "code.cloudfoundry.org/cli/cf/api/securitygroups/defaults/staging" 8 "code.cloudfoundry.org/cli/cf/commandregistry" 9 "code.cloudfoundry.org/cli/cf/configuration/coreconfig" 10 "code.cloudfoundry.org/cli/cf/flags" 11 . "code.cloudfoundry.org/cli/cf/i18n" 12 "code.cloudfoundry.org/cli/cf/requirements" 13 "code.cloudfoundry.org/cli/cf/terminal" 14 ) 15 16 type bindToStagingGroup struct { 17 ui terminal.UI 18 configRepo coreconfig.Reader 19 securityGroupRepo securitygroups.SecurityGroupRepo 20 stagingGroupRepo staging.SecurityGroupsRepo 21 } 22 23 func init() { 24 commandregistry.Register(&bindToStagingGroup{}) 25 } 26 27 func (cmd *bindToStagingGroup) MetaData() commandregistry.CommandMetadata { 28 return commandregistry.CommandMetadata{ 29 Name: "bind-staging-security-group", 30 Description: T("Bind a security group to the list of security groups to be used for staging applications"), 31 Usage: []string{ 32 T("CF_NAME bind-staging-security-group SECURITY_GROUP"), 33 }, 34 } 35 } 36 37 func (cmd *bindToStagingGroup) Requirements(requirementsFactory requirements.Factory, fc flags.FlagContext) ([]requirements.Requirement, error) { 38 if len(fc.Args()) != 1 { 39 cmd.ui.Failed(T("Incorrect Usage. Requires an argument\n\n") + commandregistry.Commands.CommandUsage("bind-staging-security-group")) 40 return nil, fmt.Errorf("Incorrect usage: %d arguments of %d required", len(fc.Args()), 1) 41 } 42 43 reqs := []requirements.Requirement{ 44 requirementsFactory.NewLoginRequirement(), 45 } 46 return reqs, nil 47 } 48 49 func (cmd *bindToStagingGroup) SetDependency(deps commandregistry.Dependency, pluginCall bool) commandregistry.Command { 50 cmd.ui = deps.UI 51 cmd.configRepo = deps.Config 52 cmd.securityGroupRepo = deps.RepoLocator.GetSecurityGroupRepository() 53 cmd.stagingGroupRepo = deps.RepoLocator.GetStagingSecurityGroupsRepository() 54 return cmd 55 } 56 57 func (cmd *bindToStagingGroup) Execute(context flags.FlagContext) error { 58 name := context.Args()[0] 59 60 securityGroup, err := cmd.securityGroupRepo.Read(name) 61 if err != nil { 62 return err 63 } 64 65 cmd.ui.Say(T("Binding security group {{.security_group}} to staging as {{.username}}", 66 map[string]interface{}{ 67 "security_group": terminal.EntityNameColor(securityGroup.Name), 68 "username": terminal.EntityNameColor(cmd.configRepo.Username()), 69 })) 70 71 err = cmd.stagingGroupRepo.BindToStagingSet(securityGroup.GUID) 72 if err != nil { 73 return err 74 } 75 76 cmd.ui.Ok() 77 return nil 78 }