Skip to content

Commit 16b940e

Browse files
committed
Merge branch 'main' of ssh://github.com/mongodb/docs-code-examples into docsp-46221
2 parents 2c37b2c + 4f7f6d0 commit 16b940e

File tree

16 files changed

+492
-105
lines changed

16 files changed

+492
-105
lines changed

config.json

Lines changed: 67 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,79 @@
11
[
22
{
3-
"notes": "Copy Go project files to Arch Center artifact repo",
4-
"source_directory" : "generated-usage-examples/go/atlas-sdk-go/full-example",
3+
"notes": "Copy atlas-sdk-go project files to user-facing Atlas Architecture Center artifact repo root",
4+
"source_directory" : "generated-usage-examples/go/atlas-sdk-go/copied-project/",
55
"target_repo" : "atlas-architecture-go-sdk",
66
"target_branch" : "main",
7-
"target_directory" : ""
7+
"target_directory" : "."
88
},
99
{
10-
"notes": "This is a test config. It can be safely deleted.",
11-
"source_directory" : "generated-examples/go",
12-
"target_repo" : "docs-code-examples-test-target",
10+
"notes": "atlas-sdk-go/copied-project/cmd subdirectory",
11+
"source_directory" : "generated-usage-examples/go/atlas-sdk-go/copied-project/cmd",
12+
"target_repo" : "atlas-architecture-go-sdk",
13+
"target_branch" : "main",
14+
"target_directory" : "cmd"
15+
},
16+
{
17+
"notes": "atlas-sdk-go/copied-project/cmd/get_logs subdirectory",
18+
"source_directory" : "generated-usage-examples/go/atlas-sdk-go/copied-project/cmd/get_logs",
19+
"target_repo" : "atlas-architecture-go-sdk",
20+
"target_branch" : "main",
21+
"target_directory" : "cmd/get_logs"
22+
},
23+
{
24+
"notes": "atlas-sdk-go/copied-project/cmd/get_metrics_process subdirectory",
25+
"source_directory" : "generated-usage-examples/go/atlas-sdk-go/copied-project/cmd/get_metrics_process",
26+
"target_repo" : "atlas-architecture-go-sdk",
27+
"target_branch" : "main",
28+
"target_directory" : "cmd/get_metrics_process"
29+
},
30+
{
31+
"notes": "atlas-sdk-go/copied-project/cmd/get_metrics_disk subdirectory",
32+
"source_directory" : "generated-usage-examples/go/atlas-sdk-go/copied-project/cmd/get_metrics_disk",
33+
"target_repo" : "atlas-architecture-go-sdk",
34+
"target_branch" : "main",
35+
"target_directory" : "cmd/get_metrics_disk"
36+
},
37+
{
38+
"notes": "atlas-sdk-go/copied-project/configs",
39+
"source_directory" : "generated-usage-examples/go/atlas-sdk-go/copied-project/configs",
40+
"target_repo" : "atlas-architecture-go-sdk",
41+
"target_branch" : "main",
42+
"target_directory" : "configs"
43+
},
44+
{
45+
"notes": "atlas-sdk-go/copied-project/internal subdirectory",
46+
"source_directory" : "generated-usage-examples/go/atlas-sdk-go/copied-project/internal",
47+
"target_repo" : "atlas-architecture-go-sdk",
48+
"target_branch" : "main",
49+
"target_directory" : "internal"
50+
},
51+
{
52+
"notes": "atlas-sdk-go/copied-project/internal/auth subdirectory",
53+
"source_directory" : "generated-usage-examples/go/atlas-sdk-go/copied-project/internal/auth",
54+
"target_repo" : "atlas-architecture-go-sdk",
55+
"target_branch" : "main",
56+
"target_directory" : "internal/auth"
57+
},
58+
{
59+
"notes": "Copy atlas-sdk-go project files to user-facing Atlas Architecture Center artifact repo root",
60+
"source_directory" : "generated-usage-examples/go/atlas-sdk-go/copied-project/",
61+
"target_repo" : "atlas-architecture-go-sdk",
62+
"target_branch" : "copy-test-2",
63+
"target_directory" : "."
64+
},
65+
{
66+
"notes": "Example config for copying files from a directory to another repo",
67+
"source_directory" : "generated-examples",
68+
"target_repo" : "my-target-repo-name",
1369
"target_branch" : "main",
14-
"target_directory" : "go"
70+
"target_directory" : "examples"
1571
},
1672
{
17-
"notes":"This is a test config that copies fake v2 code examples to the v2.2 driver branch.",
18-
"source_directory" : "generated-examples/go/v2",
19-
"target_repo" : "docs-code-examples-test-target",
73+
"notes":"Example config for copying a subset of files to another repo and branch",
74+
"source_directory" : "generated-examples/v2",
75+
"target_repo" : "my-target-repo-name",
2076
"target_branch" : "v2.2",
21-
"target_directory" : "go"
77+
"target_directory" : "v2-examples"
2278
}
2379
]

deprecated_examples.json

Lines changed: 5 additions & 89 deletions
Original file line numberDiff line numberDiff line change
@@ -1,98 +1,14 @@
11
[
22
{
3-
"filename": "go/delete_me.go",
4-
"repo": "",
5-
"branch": "",
6-
"deleted_on": "2025-03-07T21:53:21Z"
7-
},
8-
{
9-
"filename": "go/newgotestfile.go",
10-
"repo": "docs-code-examples-test-target",
11-
"branch": "v2.2",
12-
"deleted_on": "2025-03-19T16:11:53-07:00"
13-
},
14-
{
15-
"filename": "go/ohhai_detete_me",
16-
"repo": "docs-code-examples-test-target",
17-
"branch": "v2.2",
18-
"deleted_on": "2025-03-19T16:11:54-07:00"
19-
},
20-
{
21-
"filename": "go/v22testfile2.go",
22-
"repo": "docs-code-examples-test-target",
23-
"branch": "v2.2",
24-
"deleted_on": "2025-03-19T16:11:55-07:00"
25-
},
26-
{
27-
"filename": "go/newgotestfile.go",
3+
"filename": "go/gcloud24march.go",
284
"repo": "docs-code-examples-test-target",
29-
"branch": "v2.2",
30-
"deleted_on": "2025-03-19T16:33:15-07:00"
31-
},
32-
{
33-
"filename": "go/ohhai_detete_me",
34-
"repo": "docs-code-examples-test-target",
35-
"branch": "v2.2",
36-
"deleted_on": "2025-03-19T16:33:15-07:00"
37-
},
38-
{
39-
"filename": "go/v22testfile2.go",
40-
"repo": "docs-code-examples-test-target",
41-
"branch": "v2.2",
42-
"deleted_on": "2025-03-19T16:33:16-07:00"
43-
},
44-
{
45-
"filename": "go/newgotestfile.go",
46-
"repo": "docs-code-examples-test-target",
47-
"branch": "v2.2",
48-
"deleted_on": "2025-03-19T16:37:04-07:00"
49-
},
50-
{
51-
"filename": "go/ohhai_detete_me",
52-
"repo": "docs-code-examples-test-target",
53-
"branch": "v2.2",
54-
"deleted_on": "2025-03-19T16:37:05-07:00"
55-
},
56-
{
57-
"filename": "go/v22testfile2.go",
58-
"repo": "docs-code-examples-test-target",
59-
"branch": "v2.2",
60-
"deleted_on": "2025-03-19T16:37:06-07:00"
61-
},
62-
{
63-
"filename": "go/ohhai_detete_me",
64-
"repo": "docs-code-examples-test-target",
65-
"branch": "v2.2",
66-
"deleted_on": "2025-03-19T16:43:04-07:00"
67-
},
68-
{
69-
"filename": "go/v22testfile2.go",
70-
"repo": "docs-code-examples-test-target",
71-
"branch": "v2.2",
72-
"deleted_on": "2025-03-19T16:43:04-07:00"
73-
},
74-
{
75-
"filename": "go/newgotestfile.go",
76-
"repo": "docs-code-examples-test-target",
77-
"branch": "v2.2",
78-
"deleted_on": "2025-03-19T16:43:04-07:00"
79-
},
80-
{
81-
"filename": "go/newgotestfile.go",
82-
"repo": "docs-code-examples-test-target",
83-
"branch": "v2.2",
84-
"deleted_on": "2025-03-19T16:43:46-07:00"
85-
},
86-
{
87-
"filename": "go/ohhai_detete_me",
88-
"repo": "docs-code-examples-test-target",
89-
"branch": "v2.2",
90-
"deleted_on": "2025-03-19T16:43:46-07:00"
5+
"branch": "main",
6+
"deleted_on": "2025-03-24T18:16:30Z"
917
},
928
{
93-
"filename": "go/v22testfile2.go",
9+
"filename": "go/gcloud24march_v2.go",
9410
"repo": "docs-code-examples-test-target",
9511
"branch": "v2.2",
96-
"deleted_on": "2025-03-19T16:43:46-07:00"
12+
"deleted_on": "2025-03-24T18:16:30Z"
9713
}
9814
]
Lines changed: 110 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,110 @@
1+
package main
2+
3+
import (
4+
"atlas-sdk-go/internal/auth"
5+
"compress/gzip"
6+
"context"
7+
"fmt"
8+
"go.mongodb.org/atlas-sdk/v20250219001/admin"
9+
"io"
10+
"log"
11+
"os"
12+
"strings"
13+
)
14+
15+
// getHostLogs downloads a compressed .gz file that contains the MongoDB logs for
16+
// the specified host in your project.
17+
func getHostLogs(ctx context.Context, atlasClient admin.APIClient, params *admin.GetHostLogsApiParams) (string, error) {
18+
logFileName := fmt.Sprintf("logs_%s_%s.gz", params.GroupId, params.HostName)
19+
fmt.Printf("Fetching %s log for host %s in project %s\n", params.LogName, params.HostName, params.GroupId)
20+
21+
if err := downloadLogs(ctx, atlasClient, params, logFileName); err != nil {
22+
return "", err
23+
}
24+
25+
fmt.Printf("Logs saved to %s\n", logFileName)
26+
return logFileName, nil
27+
}
28+
29+
func SafeClose(c io.Closer) {
30+
if c != nil {
31+
if err := c.Close(); err != nil {
32+
log.Printf("Warning: failed to close resource: %v", err)
33+
}
34+
}
35+
}
36+
37+
func downloadLogs(ctx context.Context, atlasClient admin.APIClient, params *admin.GetHostLogsApiParams, filePath string) error {
38+
resp, _, err := atlasClient.MonitoringAndLogsApi.GetHostLogsWithParams(ctx, params).Execute()
39+
if err != nil {
40+
return fmt.Errorf("fetch logs: %w", err)
41+
}
42+
defer SafeClose(resp)
43+
44+
file, err := os.Create(filePath)
45+
if err != nil {
46+
return fmt.Errorf("create %q: %w", filePath, err)
47+
}
48+
defer SafeClose(file)
49+
50+
if _, err := io.Copy(file, resp); err != nil {
51+
return fmt.Errorf("write to %q: %w", filePath, err)
52+
}
53+
54+
return nil
55+
}
56+
57+
func unzipGzFile(srcPath, destPath string) error {
58+
srcFile, err := os.Open(srcPath)
59+
if err != nil {
60+
return fmt.Errorf("open gz file: %w", err)
61+
}
62+
defer SafeClose(srcFile)
63+
64+
gzReader, err := gzip.NewReader(srcFile)
65+
if err != nil {
66+
return fmt.Errorf("create gzip reader: %w", err)
67+
}
68+
defer SafeClose(gzReader)
69+
70+
destFile, err := os.Create(destPath)
71+
if err != nil {
72+
return fmt.Errorf("create destination file: %w", err)
73+
}
74+
defer SafeClose(destFile)
75+
76+
if _, err := io.Copy(destFile, gzReader); err != nil {
77+
return fmt.Errorf("unzip copy error: %w", err)
78+
}
79+
80+
fmt.Printf("Unzipped logs to %s\n", destPath)
81+
return nil
82+
}
83+
84+
func main() {
85+
ctx := context.Background()
86+
87+
// Create an Atlas client authenticated using OAuth2 with service account credentials
88+
client, _, config, err := auth.CreateAtlasClient()
89+
if err != nil {
90+
log.Fatalf("Failed to create Atlas client: %v", err)
91+
}
92+
93+
params := &admin.GetHostLogsApiParams{
94+
GroupId: config.ProjectID,
95+
HostName: config.HostName,
96+
LogName: "mongodb", // Type of log ("mongodb" or "mongos")
97+
}
98+
99+
logFileName, err := getHostLogs(ctx, *client, params)
100+
if err != nil {
101+
log.Fatalf("Failed to download logs: %v", err)
102+
}
103+
104+
plainTextLog := strings.TrimSuffix(logFileName, ".gz") + ".log"
105+
if err := unzipGzFile(logFileName, plainTextLog); err != nil {
106+
log.Fatalf("Failed to unzip log file: %v", err)
107+
}
108+
109+
}
110+
Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
package main
2+
3+
import (
4+
"atlas-sdk-go/internal/auth"
5+
"context"
6+
"encoding/json"
7+
"fmt"
8+
"go.mongodb.org/atlas-sdk/v20250219001/admin"
9+
"log"
10+
)
11+
12+
// getDiskMetrics fetches metrics for a specified disk partition in a project and prints results to the console
13+
func getDiskMetrics(ctx context.Context, atlasClient admin.APIClient, params *admin.GetDiskMeasurementsApiParams) (*admin.ApiMeasurementsGeneralViewAtlas, error) {
14+
15+
resp, _, err := atlasClient.MonitoringAndLogsApi.GetDiskMeasurementsWithParams(ctx, params).Execute()
16+
if err != nil {
17+
if apiError, ok := admin.AsError(err); ok {
18+
return nil, fmt.Errorf("failed to get metrics for partition: %s (API error: %v)", err, apiError.GetDetail())
19+
}
20+
return nil, fmt.Errorf("failed to get metrics: %w", err)
21+
}
22+
if resp == nil || resp.HasMeasurements() == false {
23+
return nil, fmt.Errorf("no metrics found for partition %s in project %s", params.PartitionName, params.GroupId)
24+
}
25+
jsonData, err := json.MarshalIndent(resp, "", " ")
26+
if err != nil {
27+
return nil, fmt.Errorf("failed to marshal response: %w", err)
28+
}
29+
fmt.Println(string(jsonData))
30+
return resp, nil
31+
}
32+
33+
func main() {
34+
ctx := context.Background()
35+
36+
// Create an Atlas client authenticated using OAuth2 with service account credentials
37+
atlasClient, _, config, err := auth.CreateAtlasClient()
38+
if err != nil {
39+
log.Fatalf("Failed to create Atlas client: %v", err)
40+
}
41+
42+
// Fetch disk metrics using the following parameters:
43+
partitionName := "data"
44+
diskMetricsGranularity := admin.PtrString("P1D")
45+
diskMetricsPeriod := admin.PtrString("P1D")
46+
diskMetrics := []string{
47+
"DISK_PARTITION_SPACE_FREE", "DISK_PARTITION_SPACE_USED",
48+
}
49+
50+
diskMeasurementsParams := &admin.GetDiskMeasurementsApiParams{
51+
GroupId: config.ProjectID,
52+
ProcessId: config.ProcessID,
53+
PartitionName: partitionName,
54+
M: &diskMetrics,
55+
Granularity: diskMetricsGranularity,
56+
Period: diskMetricsPeriod,
57+
}
58+
_, err = getDiskMetrics(ctx, *atlasClient, diskMeasurementsParams)
59+
if err != nil {
60+
fmt.Printf("Error fetching disk metrics: %v", err)
61+
}
62+
}
63+

0 commit comments

Comments
 (0)