44 "context"
55 "fmt"
66 "strconv"
7+ "strings"
78
89 "github.com/spf13/cobra"
910 "github.com/uselagoon/lagoon-cli/pkg/output"
@@ -1289,6 +1290,76 @@ var listOrganizationsCmd = &cobra.Command{
12891290 },
12901291}
12911292
1293+ var listEnvironmentServicesCmd = & cobra.Command {
1294+ Use : "environment-services" ,
1295+ Aliases : []string {"es" },
1296+ Short : "Get information about an environments services" ,
1297+ PreRunE : func (_ * cobra.Command , _ []string ) error {
1298+ return validateTokenE (lagoonCLIConfig .Current )
1299+ },
1300+ RunE : func (cmd * cobra.Command , args []string ) error {
1301+ debug , err := cmd .Flags ().GetBool ("debug" )
1302+ if err != nil {
1303+ return err
1304+ }
1305+ if err := requiredInputCheck ("Project name" , cmdProjectName , "Environment name" , cmdProjectEnvironment ); err != nil {
1306+ return err
1307+ }
1308+ current := lagoonCLIConfig .Current
1309+ token := lagoonCLIConfig .Lagoons [current ].Token
1310+ lc := lclient .New (
1311+ lagoonCLIConfig .Lagoons [current ].GraphQL ,
1312+ lagoonCLIVersion ,
1313+ lagoonCLIConfig .Lagoons [current ].Version ,
1314+ & token ,
1315+ debug )
1316+
1317+ project , err := lagoon .GetProjectByName (context .TODO (), cmdProjectName , lc )
1318+ if err != nil {
1319+ return err
1320+ }
1321+ environment , err := lagoon .GetEnvironmentByName (context .TODO (), cmdProjectEnvironment , project .ID , lc )
1322+ if err != nil {
1323+ return err
1324+ }
1325+
1326+ if project .Name == "" || environment .Name == "" {
1327+ if project .Name == "" {
1328+ return handleNilResults ("Project '%s' not found\n " , cmd , cmdProjectName )
1329+ } else {
1330+ return handleNilResults ("Environment '%s' not found in project '%s'\n " , cmd , cmdProjectEnvironment , cmdProjectName )
1331+ }
1332+ }
1333+
1334+ data := []output.Data {}
1335+ envHeader := []string {"EnvironmentID" , "EnvironmentName" , "ServiceID" , "ServiceName" , "ServiceType" , "Containers" , "Updated" , "Created" }
1336+ for _ , es := range environment .Services {
1337+ containers := []string {}
1338+ for _ , c := range es .Containers {
1339+ containers = append (containers , c .Name )
1340+ }
1341+ envData := []string {
1342+ returnNonEmptyString (fmt .Sprintf ("%d" , environment .ID )),
1343+ returnNonEmptyString (fmt .Sprintf ("%v" , environment .Name )),
1344+ returnNonEmptyString (fmt .Sprintf ("%d" , es .ID )),
1345+ returnNonEmptyString (fmt .Sprintf ("%v" , es .Name )),
1346+ returnNonEmptyString (fmt .Sprintf ("%v" , es .Type )),
1347+ returnNonEmptyString (fmt .Sprintf ("%v" , strings .Join (containers , "," ))),
1348+ returnNonEmptyString (fmt .Sprintf ("%v" , es .Updated )),
1349+ returnNonEmptyString (fmt .Sprintf ("%v" , es .Created )),
1350+ }
1351+ data = append (data , envData )
1352+ }
1353+ dataMain := output.Table {
1354+ Header : envHeader ,
1355+ Data : data ,
1356+ }
1357+ r := output .RenderOutput (dataMain , outputOptions )
1358+ fmt .Fprintf (cmd .OutOrStdout (), "%s" , r )
1359+ return nil
1360+ },
1361+ }
1362+
12921363func init () {
12931364 listCmd .AddCommand (listDeployTargetsCmd )
12941365 listCmd .AddCommand (listDeploymentsCmd )
@@ -1313,6 +1384,7 @@ func init() {
13131384 listCmd .AddCommand (listOrganizationGroupsCmd )
13141385 listCmd .AddCommand (listOrganizationDeployTargetsCmd )
13151386 listCmd .AddCommand (listOrganizationsCmd )
1387+ listCmd .AddCommand (listEnvironmentServicesCmd )
13161388 listAllUsersCmd .Flags ().StringP ("email" , "E" , "" , "The email address of a user" )
13171389 listUsersGroupsCmd .Flags ().StringP ("email" , "E" , "" , "The email address of a user" )
13181390 listCmd .Flags ().BoolVarP (& listAllProjects , "all-projects" , "" , false , "All projects (if supported)" )
0 commit comments