Skip to content

Commit a01d795

Browse files
committed
feat: list environments services
1 parent 83c2884 commit a01d795

3 files changed

Lines changed: 112 additions & 0 deletions

File tree

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"
@@ -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+
12491320
func 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)")

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)