Skip to content

Commit 343c86e

Browse files
authored
Add --tail flag to support tailing live application logs (#1004)
1 parent da4edfe commit 343c86e

File tree

13 files changed

+117
-96
lines changed

13 files changed

+117
-96
lines changed

args.go

+2
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,8 @@ const (
4444
ArgAppDeployment = "deployment"
4545
// ArgAppLogFollow follow logs.
4646
ArgAppLogFollow = "follow"
47+
// ArgAppLogTail tail logs.
48+
ArgAppLogTail = "tail"
4749
// ArgAppForceRebuild forces a deployment rebuild
4850
ArgAppForceRebuild = "force-rebuild"
4951
// ArgClusterName is a cluster name argument.

commands/apps.go

+6-1
Original file line numberDiff line numberDiff line change
@@ -170,6 +170,7 @@ Three types of logs are supported and can be configured with --`+doctl.ArgAppLog
170170
AddStringFlag(logs, doctl.ArgAppDeployment, "", "", "The deployment ID. Defaults to current deployment.")
171171
AddStringFlag(logs, doctl.ArgAppLogType, "", strings.ToLower(string(godo.AppLogTypeRun)), "The type of logs.")
172172
AddBoolFlag(logs, doctl.ArgAppLogFollow, "f", false, "Follow logs as they are emitted.")
173+
AddIntFlag(logs, doctl.ArgAppLogTail, "", -1, "Number of lines to show from the end of the log.")
173174

174175
CmdBuilder(
175176
cmd,
@@ -496,8 +497,12 @@ func RunAppsGetLogs(c *CmdConfig) error {
496497
if err != nil {
497498
return err
498499
}
500+
logTail, err := c.Doit.GetInt(c.NS, doctl.ArgAppLogTail)
501+
if err != nil {
502+
return err
503+
}
499504

500-
logs, err := c.Apps().GetLogs(appID, deploymentID, component, logType, logFollow)
505+
logs, err := c.Apps().GetLogs(appID, deploymentID, component, logType, logFollow, logTail)
501506
if err != nil {
502507
return err
503508
}

commands/apps_test.go

+2-1
Original file line numberDiff line numberDiff line change
@@ -379,7 +379,7 @@ func TestRunAppsGetLogs(t *testing.T) {
379379

380380
for typeStr, logType := range types {
381381
withTestClient(t, func(config *CmdConfig, tm *tcMocks) {
382-
tm.apps.EXPECT().GetLogs(appID, deploymentID, component, logType, true).Times(1).Return(&godo.AppLogs{LiveURL: "https://proxy-apps-prod-ams3-001.ondigitalocean.app/?token=aa-bb-11-cc-33"}, nil)
382+
tm.apps.EXPECT().GetLogs(appID, deploymentID, component, logType, true, 1).Times(1).Return(&godo.AppLogs{LiveURL: "https://proxy-apps-prod-ams3-001.ondigitalocean.app/?token=aa-bb-11-cc-33"}, nil)
383383
tm.listen.EXPECT().Start().Times(1).Return(nil)
384384

385385
tc := config.Doit.(*doctl.TestConfig)
@@ -393,6 +393,7 @@ func TestRunAppsGetLogs(t *testing.T) {
393393
config.Doit.Set(config.NS, doctl.ArgAppDeployment, deploymentID)
394394
config.Doit.Set(config.NS, doctl.ArgAppLogType, typeStr)
395395
config.Doit.Set(config.NS, doctl.ArgAppLogFollow, true)
396+
config.Doit.Set(config.NS, doctl.ArgAppLogTail, 1)
396397

397398
err := RunAppsGetLogs(config)
398399
require.NoError(t, err)

do/apps.go

+3-3
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ type AppsService interface {
3232
GetDeployment(appID, deploymentID string) (*godo.Deployment, error)
3333
ListDeployments(appID string) ([]*godo.Deployment, error)
3434

35-
GetLogs(appID, deploymentID, component string, logType godo.AppLogType, follow bool) (*godo.AppLogs, error)
35+
GetLogs(appID, deploymentID, component string, logType godo.AppLogType, follow bool, tail int) (*godo.AppLogs, error)
3636

3737
ListRegions() ([]*godo.AppRegion, error)
3838

@@ -171,8 +171,8 @@ func (s *appsService) ListDeployments(appID string) ([]*godo.Deployment, error)
171171
return list, nil
172172
}
173173

174-
func (s *appsService) GetLogs(appID, deploymentID, component string, logType godo.AppLogType, follow bool) (*godo.AppLogs, error) {
175-
logs, _, err := s.client.Apps.GetLogs(s.ctx, appID, deploymentID, component, logType, follow)
174+
func (s *appsService) GetLogs(appID, deploymentID, component string, logType godo.AppLogType, follow bool, tail int) (*godo.AppLogs, error) {
175+
logs, _, err := s.client.Apps.GetLogs(s.ctx, appID, deploymentID, component, logType, follow, tail)
176176
if err != nil {
177177
return nil, err
178178
}

do/mocks/AppsService.go

+85-85
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

go.mod

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ require (
88
github.com/containerd/continuity v0.0.0-20200413184840-d3ef23f19fbb // indirect
99
github.com/cpuguy83/go-md2man v1.0.10 // indirect
1010
github.com/creack/pty v1.1.11
11-
github.com/digitalocean/godo v1.61.0
11+
github.com/digitalocean/godo v1.63.0
1212
github.com/docker/cli v0.0.0-20200622130859-87db43814b48
1313
github.com/docker/docker v17.12.0-ce-rc1.0.20200531234253-77e06fda0c94+incompatible // indirect
1414
github.com/docker/docker-credential-helpers v0.6.3 // indirect

go.sum

+2
Original file line numberDiff line numberDiff line change
@@ -145,6 +145,8 @@ github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954 h1:RMLoZVzv4GliuW
145145
github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no=
146146
github.com/digitalocean/godo v1.61.0 h1:PChvUn5+Ajwvl7caOJoFbcM9r+y91ssQbM0W0k3pnZU=
147147
github.com/digitalocean/godo v1.61.0/go.mod h1:p7dOjjtSBqCTUksqtA5Fd3uaKs9kyTq2xcz76ulEJRU=
148+
github.com/digitalocean/godo v1.63.0 h1:WN/mv8M1DGKQ58VwnD9PjIyULpo1TZGYhoNhvEtBREk=
149+
github.com/digitalocean/godo v1.63.0/go.mod h1:p7dOjjtSBqCTUksqtA5Fd3uaKs9kyTq2xcz76ulEJRU=
148150
github.com/docker/cli v0.0.0-20200622130859-87db43814b48 h1:AC8qbhi/SjYf4iN2W3jSsofZGHWPjG8pjf5P143KUM8=
149151
github.com/docker/cli v0.0.0-20200622130859-87db43814b48/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8=
150152
github.com/docker/docker v17.12.0-ce-rc1.0.20200531234253-77e06fda0c94+incompatible h1:PmGHHCZ43l6h8aZIi+Xa+z1SWe4dFImd5EK3TNp1jlo=

integration/apps_test.go

+1
Original file line numberDiff line numberDiff line change
@@ -879,6 +879,7 @@ var _ = suite("apps/get-logs", func(t *testing.T, when spec.G, it spec.S) {
879879
"service",
880880
"--deployment="+testDeploymentUUID,
881881
"--type=run",
882+
"--tail=1",
882883
"-f",
883884
)
884885

vendor/github.com/digitalocean/godo/CHANGELOG.md

+8
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

vendor/github.com/digitalocean/godo/apps.go

+3-3
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

vendor/github.com/digitalocean/godo/droplets.go

+2
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)