github.com/loafoe/cli@v7.1.0+incompatible/command/v7/security_group_command.go (about)

     1  package v7
     2  
     3  import (
     4  	"encoding/json"
     5  
     6  	"code.cloudfoundry.org/cli/command/flag"
     7  	"code.cloudfoundry.org/cli/util/ui"
     8  )
     9  
    10  type SecurityGroupCommand struct {
    11  	BaseCommand
    12  
    13  	RequiredArgs    flag.SecurityGroup `positional-args:"yes"`
    14  	usage           interface{}        `usage:"CF_NAME security-group SECURITY_GROUP"`
    15  	relatedCommands interface{}        `related_commands:"bind-running-security-group, bind-security-group, bind-staging-security-group"`
    16  }
    17  
    18  func (cmd SecurityGroupCommand) Execute(args []string) error {
    19  	err := cmd.SharedActor.CheckTarget(false, false)
    20  	if err != nil {
    21  		return err
    22  	}
    23  
    24  	user, err := cmd.Config.CurrentUser()
    25  	if err != nil {
    26  		return err
    27  	}
    28  
    29  	cmd.UI.DisplayTextWithFlavor("Getting info for security group {{.GroupName}} as {{.Username}}...", map[string]interface{}{
    30  		"GroupName": cmd.RequiredArgs.SecurityGroup,
    31  		"Username":  user.Name,
    32  	})
    33  	cmd.UI.DisplayNewline()
    34  
    35  	securityGroupSummary, warnings, err := cmd.Actor.GetSecurityGroupSummary(cmd.RequiredArgs.SecurityGroup)
    36  	cmd.UI.DisplayWarnings(warnings)
    37  	if err != nil {
    38  		return err
    39  	}
    40  
    41  	cmd.UI.DisplayKeyValueTable("", [][]string{
    42  		{cmd.UI.TranslateText("name:"), securityGroupSummary.Name},
    43  		{cmd.UI.TranslateText("rules:"), ""},
    44  	}, 3)
    45  
    46  	jsonRules, err := json.MarshalIndent(securityGroupSummary.Rules, "\t", "\t")
    47  	if err != nil {
    48  		return err
    49  	}
    50  
    51  	cmd.UI.DisplayText("\t" + string(jsonRules))
    52  
    53  	cmd.UI.DisplayNewline()
    54  
    55  	if len(securityGroupSummary.SecurityGroupSpaces) > 0 {
    56  		table := [][]string{{"organization", "space"}}
    57  		for _, securityGroupSpace := range securityGroupSummary.SecurityGroupSpaces {
    58  			table = append(table, []string{securityGroupSpace.OrgName, securityGroupSpace.SpaceName})
    59  		}
    60  		cmd.UI.DisplayTableWithHeader("", table, ui.DefaultTableSpacePadding)
    61  	} else {
    62  		cmd.UI.DisplayText("No spaces assigned")
    63  	}
    64  
    65  	return nil
    66  }