Skip to content

Commit 64afdf6

Browse files
feat: list environments services (#386)
1 parent 3475db3 commit 64afdf6

File tree

3 files changed

+112
-0
lines changed

3 files changed

+112
-0
lines changed

cmd/list.go

Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import (
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+
12921363
func 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)")

docs/commands/lagoon_list.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ List projects, environments, deployments, variables or notifications
3838
* [lagoon list deployments](lagoon_list_deployments.md) - List deployments for an environment (alias: d)
3939
* [lagoon list deploytarget-configs](lagoon_list_deploytarget-configs.md) - List deploytarget configs for a project
4040
* [lagoon list deploytargets](lagoon_list_deploytargets.md) - List all DeployTargets in Lagoon
41+
* [lagoon list environment-services](lagoon_list_environment-services.md) - Get information about an environments services
4142
* [lagoon list environments](lagoon_list_environments.md) - List environments for a project (alias: e)
4243
* [lagoon list group-projects](lagoon_list_group-projects.md) - List projects in a group (alias: gp)
4344
* [lagoon list group-users](lagoon_list_group-users.md) - List all users in groups
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
## lagoon list environment-services
2+
3+
Get information about an environments services
4+
5+
```
6+
lagoon list environment-services [flags]
7+
```
8+
9+
### Options
10+
11+
```
12+
-h, --help help for environment-services
13+
```
14+
15+
### Options inherited from parent commands
16+
17+
```
18+
--config-file string Path to the config file to use (must be *.yml or *.yaml)
19+
--debug Enable debugging output (if supported)
20+
-e, --environment string Specify an environment to use
21+
--force Force yes on prompts (if supported)
22+
-l, --lagoon string The Lagoon instance to interact with
23+
--no-header No header on table (if supported)
24+
--output-csv Output as CSV (if supported)
25+
--output-json Output as JSON (if supported)
26+
--pretty Make JSON pretty (if supported)
27+
-p, --project string Specify a project to use
28+
--skip-update-check Skip checking for updates
29+
-i, --ssh-key string Specify path to a specific SSH key to use for lagoon authentication
30+
--ssh-publickey string Specify path to a specific SSH public key to use for lagoon authentication using ssh-agent.
31+
This will override any public key identities defined in configuration
32+
--strict-host-key-checking string Similar to SSH StrictHostKeyChecking (accept-new, no, ignore) (default "accept-new")
33+
-v, --verbose Enable verbose output to stderr (if supported)
34+
```
35+
36+
### SEE ALSO
37+
38+
* [lagoon list](lagoon_list.md) - List projects, environments, deployments, variables or notifications
39+

0 commit comments

Comments
 (0)