github.com/asifdxtreme/cli@v6.1.3-0.20150123051144-9ead8700b4ae+incompatible/cf/commands/securitygroup/unbind_staging_security_group.go (about) 1 package securitygroup 2 3 import ( 4 "strings" 5 6 "github.com/cloudfoundry/cli/cf/api/security_groups" 7 "github.com/cloudfoundry/cli/cf/api/security_groups/defaults/staging" 8 "github.com/cloudfoundry/cli/cf/command" 9 "github.com/cloudfoundry/cli/cf/command_metadata" 10 "github.com/cloudfoundry/cli/cf/configuration/core_config" 11 "github.com/cloudfoundry/cli/cf/errors" 12 . "github.com/cloudfoundry/cli/cf/i18n" 13 "github.com/cloudfoundry/cli/cf/requirements" 14 "github.com/cloudfoundry/cli/cf/terminal" 15 "github.com/codegangsta/cli" 16 ) 17 18 type unbindFromStagingGroup struct { 19 ui terminal.UI 20 configRepo core_config.Reader 21 securityGroupRepo security_groups.SecurityGroupRepo 22 stagingGroupRepo staging.StagingSecurityGroupsRepo 23 } 24 25 func NewUnbindFromStagingGroup(ui terminal.UI, configRepo core_config.Reader, securityGroupRepo security_groups.SecurityGroupRepo, stagingGroupRepo staging.StagingSecurityGroupsRepo) command.Command { 26 return &unbindFromStagingGroup{ 27 ui: ui, 28 configRepo: configRepo, 29 securityGroupRepo: securityGroupRepo, 30 stagingGroupRepo: stagingGroupRepo, 31 } 32 } 33 34 func (cmd *unbindFromStagingGroup) Metadata() command_metadata.CommandMetadata { 35 primaryUsage := T("CF_NAME unbind-staging-security-group SECURITY_GROUP") 36 tipUsage := T("TIP: Changes will not apply to existing running applications until they are restarted.") 37 return command_metadata.CommandMetadata{ 38 Name: "unbind-staging-security-group", 39 Description: T("Unbind a security group from the set of security groups for staging applications"), 40 Usage: strings.Join([]string{primaryUsage, tipUsage}, "\n\n"), 41 } 42 } 43 44 func (cmd *unbindFromStagingGroup) GetRequirements(requirementsFactory requirements.Factory, context *cli.Context) ([]requirements.Requirement, error) { 45 if len(context.Args()) != 1 { 46 cmd.ui.FailWithUsage(context) 47 } 48 49 return []requirements.Requirement{ 50 requirementsFactory.NewLoginRequirement(), 51 }, nil 52 } 53 54 func (cmd *unbindFromStagingGroup) Run(context *cli.Context) { 55 name := context.Args()[0] 56 57 cmd.ui.Say(T("Unbinding security group {{.security_group}} from defaults for staging as {{.username}}", 58 map[string]interface{}{ 59 "security_group": terminal.EntityNameColor(name), 60 "username": terminal.EntityNameColor(cmd.configRepo.Username()), 61 })) 62 63 securityGroup, err := cmd.securityGroupRepo.Read(name) 64 switch (err).(type) { 65 case nil: 66 case *errors.ModelNotFoundError: 67 cmd.ui.Ok() 68 cmd.ui.Warn(T("Security group {{.security_group}} {{.error_message}}", 69 map[string]interface{}{ 70 "security_group": terminal.EntityNameColor(name), 71 "error_message": terminal.WarningColor(T("does not exist.")), 72 })) 73 return 74 default: 75 cmd.ui.Failed(err.Error()) 76 } 77 78 err = cmd.stagingGroupRepo.UnbindFromStagingSet(securityGroup.Guid) 79 if err != nil { 80 cmd.ui.Failed(err.Error()) 81 } 82 83 cmd.ui.Ok() 84 cmd.ui.Say("\n\n") 85 cmd.ui.Say(T("TIP: Changes will not apply to existing running applications until they are restarted.")) 86 }