Skip to content

Commit 6932d4c

Browse files
authored
Partial Postman rebrand (#231)
All environment variables are still Akita-branded, but we now recognize `POSTMAN_LC_AGENT_DISABLE_TELEMETRY` in addition to the existing `AKITA_DISABLE_TELEMETRY`.
1 parent bf2fd01 commit 6932d4c

File tree

24 files changed

+73
-69
lines changed

24 files changed

+73
-69
lines changed

.github/workflows/security-scan.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,6 @@ jobs:
1111
name: Security Scan Job
1212
uses: postmanlabs/gh-security-scan-workflow/.github/workflows/security.yml@v1.0
1313
with:
14-
imagename: akita-cli
14+
imagename: postman-lc-agent
1515
language: "['go']"
1616

.gitignore

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
*.dll
55
*.so
66
*.dylib
7-
akita-cli
7+
postman-lc-agent
88
bin/
99

1010
# Test binary, built with `go test -c`

Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
export GO111MODULE = on
44

55
build: clean
6-
go build -o bin/akita .
6+
go build -o bin/postman-lc-agent .
77

88
clean:
99
go clean

apidump/apidump.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ const (
6363
)
6464

6565
const (
66-
subcommandOutputDelimiter = "======= _AKITA_SUBCOMMAND_ ======="
66+
subcommandOutputDelimiter = "======= _POSTMAN_SUBCOMMAND_ ======="
6767
)
6868

6969
type filterState string
@@ -394,7 +394,7 @@ func (a *apidump) RotateLearnSession(done <-chan struct{}, collectors []trace.Le
394394
printer.Errorf("Failed to create trace %s: %v\n", traceName, err)
395395
break
396396
}
397-
printer.Infof("Rotating to new trace on Akita Cloud: %v\n", traceName)
397+
printer.Infof("Rotating to new trace on Postman Cloud: %v\n", traceName)
398398
for _, c := range collectors {
399399
c.SwitchLearnSession(backendLrn)
400400
}
@@ -542,7 +542,7 @@ func (a *apidump) Run() error {
542542
if uri.ObjectType == nil {
543543
uri.ObjectType = akiuri.TRACE.Ptr()
544544
} else if !uri.ObjectType.IsTrace() {
545-
return errors.Errorf("%q is not an Akita trace URI", uri)
545+
return errors.Errorf("%q is not a Postman trace URI", uri)
546546
}
547547

548548
// Use a random object name by default.
@@ -580,7 +580,7 @@ func (a *apidump) Run() error {
580580
uri := a.Out.AkitaURI
581581
backendLrn, err = util.NewLearnSession(args.Domain, args.ClientID, a.backendSvc, uri.ObjectName, traceTags, nil)
582582
if err == nil {
583-
printer.Infof("Created new trace on Akita Cloud: %s\n", uri)
583+
printer.Infof("Created new trace on Postman Cloud: %s\n", uri)
584584
} else {
585585
var httpErr rest.HTTPError
586586
if ok := errors.As(err, &httpErr); ok && httpErr.StatusCode == 409 {
@@ -955,7 +955,7 @@ func createLocalCollector(interfaceName, outDir string, tags map[tags.Key]string
955955
}
956956

957957
// Check if we have permission to write to the directory.
958-
testFile := filepath.Join(outDir, "akita_test")
958+
testFile := filepath.Join(outDir, "postman_test")
959959
if err := ioutil.WriteFile(testFile, []byte{1}, 0644); err == nil {
960960
os.Remove(testFile)
961961
} else {

apidump/net.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ func showPermissionErrors(sampleError error) error {
4747
printer.Warningf("It might be that you are in a PaaS that disallows packet capture, or the local configuration has disabled that privilege by default.\n")
4848
return NewApidumpError(api_schema.ApidumpError_PCAPPermission, "Insufficient permissions in container.")
4949
} else {
50-
printer.Warningf("Although you are running as root, the Akita agent lacks the CAP_NET_RAW capability.\n")
50+
printer.Warningf("Although you are running as root, the Postman Live Collections Agent lacks the CAP_NET_RAW capability.\n")
5151
printer.Warningf("It might be that you are in a restricted environment which disallows packet capture, even as the root user.\n")
5252
return NewApidumpError(api_schema.ApidumpError_PCAPPermission, "Insufficient permissions.")
5353
}
@@ -63,23 +63,23 @@ func showPermissionErrors(sampleError error) error {
6363

6464
printer.Warningf(
6565
"The agent received \"Function not implemented\" when trying to read from your network interfaces. "+
66-
"This often indicates that the Akita agent was built for a different architecture than your host architecture. "+
67-
"This Akita agent binary was built for %s.\n",
66+
"This often indicates that the Postman Live Collections Agent was built for a different architecture than your host architecture. "+
67+
"This Postman Live Collections Agent binary was built for %s.\n",
6868
arch,
6969
)
7070

7171
if env.InDocker() {
7272
return NewApidumpErrorf(
7373
api_schema.ApidumpError_PCAPInterfaceNotImplemented,
7474
"Unable to read network interfaces. If your host architecture is not %s, try using "+
75-
"`docker pull --platform $YOUR_ARCHITECTURE docker.postman.com/postman-lc-agent:latest` to pull an Akita agent "+
75+
"`docker pull --platform $YOUR_ARCHITECTURE docker.postman.com/postman-lc-agent:latest` to pull a Postman Live Collections Agent "+
7676
"built for your architecture.",
7777
arch,
7878
)
7979
} else {
8080
return NewApidumpErrorf(
8181
api_schema.ApidumpError_PCAPInterfaceNotImplemented,
82-
"Unable to read network interfaces. If your host architecture is not %s, try using the Akita install script: `bash -c \"$(curl -L https://releases.akita.software/scripts/install_akita.sh)\"`",
82+
"Unable to read network interfaces. If your host architecture is not %s, try using the Postman Live Collections Agent install script: `bash -c \"$(curl -L https://releases.observability.postman.com/scripts/install-postman-lc-agent.sh)\"`",
8383
arch,
8484
)
8585
}

apidump/summary.go

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -133,10 +133,10 @@ func (s *Summary) printPortHighlights(top *client_telemetry.PacketCountSummary)
133133
if thisPort.TLSHello > 0 {
134134
printer.Stderr.Infof("TCP Port %5d: appears to contain a mix of encrypted and unencrypted traffic.\n", p)
135135
} else if thisPort.Unparsed > thisPort.TCPPackets*3/10 {
136-
printer.Stderr.Infof("TCP Port %5d: has an unusually high amount of traffic that Akita cannot parse.\n", p)
136+
printer.Stderr.Infof("TCP Port %5d: has an unusually high amount of traffic that Postman cannot parse.\n", p)
137137
}
138138
if thisPort.HTTP2Prefaces > 0 {
139-
printer.Stderr.Infof("TCP Port %5d: Contains HTTP/2 traffic (%d connections detected), which Akita cannot parse.\n", p, thisPort.HTTP2Prefaces)
139+
printer.Stderr.Infof("TCP Port %5d: Contains HTTP/2 traffic (%d connections detected), which Postman cannot parse.\n", p, thisPort.HTTP2Prefaces)
140140
}
141141
continue
142142
}
@@ -158,7 +158,7 @@ func (s *Summary) printPortHighlights(top *client_telemetry.PacketCountSummary)
158158

159159
// If we saw HTTP/2, report it.
160160
if thisPort.HTTP2Prefaces > 0 {
161-
printer.Stderr.Infof("TCP port %5d: %5d packets (%d%% of total), no HTTP/1.1 requests or responses, %d HTTP/2 connection attempts. Akita cannot currently parse HTTP/2.\n",
161+
printer.Stderr.Infof("TCP port %5d: %5d packets (%d%% of total), no HTTP/1.1 requests or responses, %d HTTP/2 connection attempts. Postman cannot currently parse HTTP/2.\n",
162162
p, thisPort.TCPPackets, pct, thisPort.HTTP2Prefaces)
163163
continue
164164
}
@@ -170,7 +170,8 @@ func (s *Summary) printPortHighlights(top *client_telemetry.PacketCountSummary)
170170
}
171171

172172
// XXX(cns): Not all metrics can be associated with a host. We currently have
173-
// HTTP requests and TLS handshakes.
173+
//
174+
// HTTP requests and TLS handshakes.
174175
func (s *Summary) printHostHighlights(top *client_telemetry.PacketCountSummary) {
175176
// Sort by HTTP traffic volume, then TLS handshake counts, both descending.
176177
// We do not have TCP packet counts for hosts.
@@ -300,7 +301,7 @@ func (s *Summary) PrintWarnings() {
300301
s.PrefilterSummary.Total().HTTPRequests)
301302
}
302303
if env.InDocker() && env.HasDockerInternalHostAddress() {
303-
printer.Stderr.Infof("If you're using macOS and your service is not running in a Docker container, try using the native Akita agent with `brew install akita-cli`. See docs.akita.software/docs/macos-local for details.\n")
304+
printer.Stderr.Infof("If you're using macOS and your service is not running in a Docker container, try using the native Postman Live Collections Agent with `brew install postman-lc-agent`.\n")
304305
}
305306
printer.Stderr.Errorf("%s 🛑\n\n", printer.Color.Red("No HTTP calls captured!"))
306307
return

apispec/har.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ func ProcessHAR(col trace.Collector, p string) (int, error) {
3131
if errs.TotalCount > 0 {
3232
entriesCount := len(harContent.Log.Entries)
3333
printer.Stderr.Warningf("Encountered errors with %d HAR file entries.\n", entriesCount-successCount)
34-
printer.Stderr.Warningf("Akita will ignore entries with errors and generate a spec from the %d entries successfully processed.\n", successCount)
34+
printer.Stderr.Warningf("Postman Live Insights will ignore entries with errors and generate a spec from the %d entries successfully processed.\n", successCount)
3535

3636
printer.Stderr.Warningf("Sample errors:\n")
3737
for _, e := range errs.Samples {

cmd/internal/apidump/apidump.go

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -196,12 +196,14 @@ func init() {
196196
&outFlag,
197197
"out",
198198
"The location to store the trace. Can be an AkitaURI or a local directory. Defaults to a trace on the Akita Cloud. Exactly one of --out or --project must be specified.")
199+
Cmd.Flags().MarkDeprecated("out", "For use by Akita users")
199200

200201
Cmd.Flags().StringVar(
201202
&serviceFlag,
202203
"project",
203204
"",
204205
"Your Akita project. Exactly one of --out or --project must be specified.")
206+
Cmd.Flags().MarkDeprecated("project", "For use by Akita users")
205207

206208
Cmd.Flags().StringVar(
207209
&postmanCollectionID,
@@ -263,7 +265,7 @@ func init() {
263265
&appendByTagFlag,
264266
"append-by-tag",
265267
false,
266-
"Add to the most recent Akita trace with matching tag.")
268+
"Add to the most recent trace with matching tag.")
267269
Cmd.Flags().MarkDeprecated("append-by-tag", "and is no longer necessary. All traces in a project are now combined into a single model. Please remove this flag.")
268270

269271
Cmd.Flags().StringSliceVar(
@@ -314,7 +316,7 @@ func init() {
314316
&pluginsFlag,
315317
"plugins",
316318
nil,
317-
"Paths of third-party Akita plugins. They are executed in the order given.",
319+
"Paths of third-party plugins. They are executed in the order given.",
318320
)
319321
Cmd.Flags().MarkHidden("plugins")
320322

cmd/internal/cmderr/checks.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ func RequirePostmanAPICredentials(explanation string) (string, error) {
3535
if env.InDocker() {
3636
printer.Infof("Please set the POSTMAN_API_KEY environment variables on the Docker command line.\n")
3737
} else {
38-
printer.Infof("Use the POSTMAN_API_KEY environment variables, or run 'akita login'.\n")
38+
printer.Infof("Use the POSTMAN_API_KEY environment variables, or run 'postman-lc-agent login'.\n")
3939
}
4040

4141
return "", AkitaErr{Err: errors.New("could not find an Postman API key to use")}

cmd/internal/ecs/add.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,7 @@ const (
9696
defaultKeyIDName = akitaSecretPrefix + "api_key_id"
9797
defaultKeySecretName = akitaSecretPrefix + "api_key_secret"
9898

99-
// Akita agent image locations
99+
// Postman Live Collections Agent image locations
100100
akitaECRImage = "public.ecr.aws/akitasoftware/akita-cli"
101101
akitaDockerImage = "akitasoftware/cli"
102102
postmanECRImage = "docker.postman.com/postman-lc-agent"
@@ -486,7 +486,7 @@ func getTaskState(wf *AddWorkflow) (nextState optionals.Optional[AddWorkflowStat
486486
err = survey.AskOne(
487487
&survey.Select{
488488
Message: "Which task should Akita monitor?",
489-
Help: "Select the ECS task definition to modify. We will add the Akita agent as a sidecar to the task.",
489+
Help: "Select the ECS task definition to modify. We will add the Postman Live Collections Agent as a sidecar to the task.",
490490
Options: tasks,
491491
},
492492
&taskAnswer,
@@ -668,7 +668,7 @@ func (wf *AddWorkflow) showPlannedChanges() {
668668
defaultKeySecretName, wf.awsRegion)
669669
}
670670
}
671-
printer.Infof("Create a new version %d of task definition %q which includes the Akita agent as a sidecar.\n",
671+
printer.Infof("Create a new version %d of task definition %q which includes the Postman Live Collections Agent as a sidecar.\n",
672672
wf.ecsTaskDefinition.Revision+1, wf.ecsTaskDefinitionFamily)
673673
printer.Infof("Update service %q in cluster %q to the new task definition.\n",
674674
wf.ecsService, wf.ecsCluster)

cmd/internal/ecs/ecs.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ var (
3333

3434
var Cmd = &cobra.Command{
3535
Use: "ecs",
36-
Short: "Add the Akita agent to AWS ECS.",
36+
Short: "Add the Postman Live Collections Agent to AWS ECS.",
3737
Long: "The CLI will collect information from you and add the Akita container to an ECS Task.",
3838
// N.B.: this is useless because the root command makes its own determination,
3939
// need to return AkitaErr to not show the usage.
@@ -52,7 +52,7 @@ var AddToECSCmd = &cobra.Command{
5252

5353
var RemoveFromECSCmd = &cobra.Command{
5454
Use: "remove",
55-
Short: "Remove the Akita agent from AWS ECS.",
55+
Short: "Remove the Postman Live Collections Agent from AWS ECS.",
5656
Long: "Remove a previously installed Akita container from an ECS Task.",
5757
SilenceUsage: true,
5858
RunE: removeAgentFromECS,
@@ -91,7 +91,7 @@ func init() {
9191

9292
func addAgentToECS(cmd *cobra.Command, args []string) error {
9393
// Check for API key
94-
_, _, err := cmderr.RequireAkitaAPICredentials("The Akita agent must have an API key in order to capture traces.")
94+
_, _, err := cmderr.RequireAkitaAPICredentials("The Postman Live Collections Agent must have an API key in order to capture traces.")
9595
if err != nil {
9696
return err
9797
}

cmd/internal/get/cmd.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import (
1010

1111
// Parent command for listing objects from Akita.
1212
var Cmd = &cobra.Command{
13+
Deprecated: "This is no longer supported and will be removed in a future release.",
1314
Use: "get [AKITAURI]",
1415
Short: "List or download objects in the Akita cloud.",
1516
Long: "List or download objects in the Akita cloud.",

cmd/internal/kube/inject.go

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -38,12 +38,12 @@ var (
3838

3939
var injectCmd = &cobra.Command{
4040
Use: "inject",
41-
Short: "Inject Akita into a Kubernetes deployment",
42-
Long: "Inject Akita into a Kubernetes deployment or set of deployments, and output the result to stdout or a file",
41+
Short: "Inject the Postman Live Collections Agent into a Kubernetes deployment",
42+
Long: "Inject the Postman Live Collections Agent into a Kubernetes deployment or set of deployments, and output the result to stdout or a file",
4343
RunE: func(_ *cobra.Command, args []string) error {
4444
if projectNameFlag == "" && postmanCollectionID == "" {
4545
return cmderr.AkitaErr{
46-
Err: errors.New("exactly one of --project or --collection must be specified"),
46+
Err: errors.New("--collection must be specified. Or, if you are an Akita user, use --project instead."),
4747
}
4848
}
4949

@@ -60,7 +60,7 @@ var injectCmd = &cobra.Command{
6060
// their dependent Secrets, require that the user explicitly specify an output file.
6161
if secretOpts.ShouldInject && secretOpts.Filepath.IsSome() && injectOutputFlag == "" {
6262
printer.Errorln("Cannot specify a Secret file path without an output file (using --output or -o)")
63-
printer.Infoln("To generate a Secret file on its own, use `akita kube secret`")
63+
printer.Infoln("To generate a Secret file on its own, use `postman-lc-agent kube secret`")
6464
return cmderr.AkitaErr{
6565
Err: errors.New("invalid flag usage"),
6666
}
@@ -186,7 +186,7 @@ type secretGenerationOptions struct {
186186
Filepath optionals.Optional[string]
187187
}
188188

189-
// The image to use for the Akita sidecar
189+
// The image to use for the Postman LCA sidecar
190190
const akitaImage = "docker.postman.com/postman-lc-agent:latest"
191191

192192
func createAkitaSidecar(projectName string) v1.Container {
@@ -275,7 +275,7 @@ func createPostmanSidecar(postmanCollectionID string, postmanEnvironment string)
275275
}
276276

277277
sidecar := v1.Container{
278-
Name: "akita",
278+
Name: "postman-lc-agent",
279279
Image: akitaImage,
280280
Env: envs,
281281
Lifecycle: &v1.Lifecycle{
@@ -361,7 +361,7 @@ func init() {
361361
"project",
362362
"p",
363363
"",
364-
"Name of the Akita project to which the traffic will be uploaded.",
364+
"Name of the Akita project to which the traffic will be uploaded. If you are a Postman user, use --collection instead.",
365365
)
366366

367367
injectCmd.Flags().StringVarP(
@@ -378,7 +378,7 @@ func init() {
378378
&postmanCollectionID,
379379
"collection",
380380
"",
381-
"Your Postman collectionID.")
381+
"Your Postman collection ID. If you are an Akita user, use --project instead.")
382382

383383
injectCmd.MarkFlagsMutuallyExclusive("project", "collection")
384384

cmd/internal/kube/kube.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import (
66

77
var Cmd = &cobra.Command{
88
Use: "kube",
9-
Short: "Install Akita in your Kubernetes cluster",
9+
Short: "Install the Postman Live Collections Agent in your Kubernetes cluster",
1010
Aliases: []string{
1111
"k8s",
1212
"kubernetes",

cmd/internal/kube/secret.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,8 @@ import (
1717
var (
1818
secretFilePathFlag string
1919
namespaceFlag string
20-
// Store a parsed representation of /template/akita-secret.tmpl
20+
// Store a parsed representation of /template/akita-secret.tmpl or
21+
// /template/postman-secret.tmpl.
2122
secretTemplate *template.Template
2223
)
2324

cmd/root.go

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -53,9 +53,9 @@ var (
5353

5454
var (
5555
rootCmd = &cobra.Command{
56-
Use: "akita",
57-
Short: "Gateway to all Akita services.",
58-
Long: "Complete documentation is available at https://docs.akita.software",
56+
Use: "postman-lc-agent",
57+
Short: "The Postman Live Collections Agent",
58+
Long: "Documentation is available at https://voyager.postman.com/pdf/live-insights-documentation-postman.pdf",
5959
Version: version.CLIDisplayString(),
6060
SilenceErrors: true, // We print our own errors from subcommands in Execute function
6161
// Don't print usage after error, we only print help if we cannot parse
@@ -101,7 +101,7 @@ func preRun(cmd *cobra.Command, args []string) {
101101
// Somehow, this doesn't appear before "akita --version" (good) or
102102
// "akita --help" (less good), only before commands or the usage
103103
// information if no command is given.
104-
printer.Stdout.Infof("Akita Agent %s\n", version.ReleaseVersion())
104+
printer.Stdout.Infof("Postman Live Collections Agent %s\n", version.ReleaseVersion())
105105

106106
// This is after argument parsing so that rest.Domain is correct,
107107
// but won't be called if there is an error parsing the flags.
@@ -186,9 +186,9 @@ func init() {
186186

187187
// Use a proxy or permit a mismatched certificate.
188188
rootCmd.PersistentFlags().StringVar(&rest.ProxyAddress, "proxy", "", "The domain name, IP address, or URL of an HTTP proxy server to use")
189-
rootCmd.PersistentFlags().BoolVar(&rest.PermitInvalidCertificate, "skip-tls-validate", false, "Skip TLS validation on the connection to api.akita.software")
189+
rootCmd.PersistentFlags().BoolVar(&rest.PermitInvalidCertificate, "skip-tls-validate", false, "Skip TLS validation on the connection to the back end")
190190
rootCmd.PersistentFlags().MarkHidden("skip-tls-validate")
191-
rootCmd.PersistentFlags().StringVar(&rest.ExpectedServerName, "server-tls-name", "", "Provide an alternate TLS server name to accept instead of api.akita.software")
191+
rootCmd.PersistentFlags().StringVar(&rest.ExpectedServerName, "server-tls-name", "", "Provide an alternate TLS server name to accept")
192192
rootCmd.PersistentFlags().MarkHidden("server-tls-name")
193193

194194
// Semi-secret somewhat-safe flags
@@ -272,8 +272,10 @@ func init() {
272272
rootCmd.AddCommand(ci_guard.GuardCommand(apidiff.Cmd))
273273
rootCmd.AddCommand(ci_guard.GuardCommand(apidump.Cmd))
274274
rootCmd.AddCommand(ci_guard.GuardCommand(apispec.Cmd))
275+
daemon.Cmd.Hidden = true
275276
rootCmd.AddCommand(daemon.Cmd)
276277
rootCmd.AddCommand(ci_guard.GuardCommand(learn.Cmd))
278+
login.Cmd.Hidden = true
277279
rootCmd.AddCommand(login.Cmd)
278280
rootCmd.AddCommand(ci_guard.GuardCommand(setversion.Cmd))
279281

daemon/internal/cloud_client/cloud_client.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -197,7 +197,7 @@ func collectTraces(traceEventChannel <-chan *TraceEvent, learnClient rest.LearnC
197197
for _, e := range sampledErrs.Samples {
198198
sampledErrsStr = fmt.Sprintf("%s\t- %s\n", sampledErrsStr, e)
199199
}
200-
printer.Stderr.Warningf("Encountered errors with %d entries for trace %s.\nAkita will ignore entries with errors and proceed with the %d entries successfully processed.\nSample errors: %s\n", sampledErrs.TotalCount, loggingOptions.TraceID, successfulEntries, sampledErrsStr)
200+
printer.Stderr.Warningf("Encountered errors with %d entries for trace %s.\nPostman Live Insights will ignore entries with errors and proceed with the %d entries successfully processed.\nSample errors: %s\n", sampledErrs.TotalCount, loggingOptions.TraceID, successfulEntries, sampledErrsStr)
201201
}
202202
}
203203

0 commit comments

Comments
 (0)