44 "context"
55 "fmt"
66 "strconv"
7+ "strings"
78
89 "github.com/spf13/cobra"
910 "github.com/uselagoon/lagoon-cli/pkg/output"
@@ -1246,6 +1247,76 @@ var listOrganizationsCmd = &cobra.Command{
12461247 },
12471248}
12481249
1250+ var listEnvironmentServicesCmd = & cobra.Command {
1251+ Use : "environment-services" ,
1252+ Aliases : []string {"e" },
1253+ Short : "Get information about an environments services" ,
1254+ PreRunE : func (_ * cobra.Command , _ []string ) error {
1255+ return validateTokenE (lagoonCLIConfig .Current )
1256+ },
1257+ RunE : func (cmd * cobra.Command , args []string ) error {
1258+ debug , err := cmd .Flags ().GetBool ("debug" )
1259+ if err != nil {
1260+ return err
1261+ }
1262+ if err := requiredInputCheck ("Project name" , cmdProjectName , "Environment name" , cmdProjectEnvironment ); err != nil {
1263+ return err
1264+ }
1265+ current := lagoonCLIConfig .Current
1266+ token := lagoonCLIConfig .Lagoons [current ].Token
1267+ lc := lclient .New (
1268+ lagoonCLIConfig .Lagoons [current ].GraphQL ,
1269+ lagoonCLIVersion ,
1270+ lagoonCLIConfig .Lagoons [current ].Version ,
1271+ & token ,
1272+ debug )
1273+
1274+ project , err := lagoon .GetProjectByName (context .TODO (), cmdProjectName , lc )
1275+ if err != nil {
1276+ return err
1277+ }
1278+ environment , err := lagoon .GetEnvironmentByName (context .TODO (), cmdProjectEnvironment , project .ID , lc )
1279+ if err != nil {
1280+ return err
1281+ }
1282+
1283+ if project .Name == "" || environment .Name == "" {
1284+ if project .Name == "" {
1285+ return handleNilResults ("Project '%s' not found\n " , cmd , cmdProjectName )
1286+ } else {
1287+ return handleNilResults ("Environment '%s' not found in project '%s'\n " , cmd , cmdProjectEnvironment , cmdProjectName )
1288+ }
1289+ }
1290+
1291+ data := []output.Data {}
1292+ envHeader := []string {"EnvironmentID" , "EnvironmentName" , "ServiceID" , "ServiceName" , "ServiceType" , "Containers" , "Updated" , "Created" }
1293+ for _ , es := range environment .Services {
1294+ containers := []string {}
1295+ for _ , c := range es .Containers {
1296+ containers = append (containers , c .Name )
1297+ }
1298+ envData := []string {
1299+ returnNonEmptyString (fmt .Sprintf ("%d" , environment .ID )),
1300+ returnNonEmptyString (fmt .Sprintf ("%v" , environment .Name )),
1301+ returnNonEmptyString (fmt .Sprintf ("%d" , es .ID )),
1302+ returnNonEmptyString (fmt .Sprintf ("%v" , es .Name )),
1303+ returnNonEmptyString (fmt .Sprintf ("%v" , es .Type )),
1304+ returnNonEmptyString (fmt .Sprintf ("%v" , strings .Join (containers , "," ))),
1305+ returnNonEmptyString (fmt .Sprintf ("%v" , es .Updated )),
1306+ returnNonEmptyString (fmt .Sprintf ("%v" , es .Created )),
1307+ }
1308+ data = append (data , envData )
1309+ }
1310+ dataMain := output.Table {
1311+ Header : envHeader ,
1312+ Data : data ,
1313+ }
1314+ r := output .RenderOutput (dataMain , outputOptions )
1315+ fmt .Fprintf (cmd .OutOrStdout (), "%s" , r )
1316+ return nil
1317+ },
1318+ }
1319+
12491320func init () {
12501321 listCmd .AddCommand (listDeployTargetsCmd )
12511322 listCmd .AddCommand (listDeploymentsCmd )
@@ -1269,6 +1340,7 @@ func init() {
12691340 listCmd .AddCommand (listOrganizationGroupsCmd )
12701341 listCmd .AddCommand (listOrganizationDeployTargetsCmd )
12711342 listCmd .AddCommand (listOrganizationsCmd )
1343+ listCmd .AddCommand (listEnvironmentServicesCmd )
12721344 listAllUsersCmd .Flags ().StringP ("email" , "E" , "" , "The email address of a user" )
12731345 listUsersGroupsCmd .Flags ().StringP ("email" , "E" , "" , "The email address of a user" )
12741346 listCmd .Flags ().BoolVarP (& listAllProjects , "all-projects" , "" , false , "All projects (if supported)" )
0 commit comments