Skip to content

Commit 4a67bd6

Browse files
Merge pull request #548 from devppratik/update-vault-path-for-dt-command
OSD-20175: Minor fixes to dynatrace logs commands
2 parents dee885e + 2bb7253 commit 4a67bd6

File tree

3 files changed

+35
-35
lines changed

3 files changed

+35
-35
lines changed

cmd/cluster/dynatrace/logsCmd.go

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -25,26 +25,22 @@ var (
2525

2626
func NewCmdLogs() *cobra.Command {
2727
logsCmd := &cobra.Command{
28-
Use: "logs",
28+
Use: "logs <cluster-id>",
2929
Short: "Fetch logs from Dynatrace",
30-
Args: cobra.NoArgs,
30+
Args: cobra.ExactArgs(1),
3131
DisableAutoGenTag: true,
3232
Run: func(cmd *cobra.Command, args []string) {
33-
err := main()
33+
err := main(args[0])
3434
if err != nil {
3535
cmdutil.CheckErr(err)
3636
}
3737
},
3838
}
3939

40-
// set cluster flag as required
41-
logsCmd.MarkFlagRequired("cluster")
42-
4340
logsCmd.Flags().BoolVar(&dryRun, "dry-run", false, "Only builds the query without fetching any logs from the tenant")
4441
logsCmd.Flags().IntVar(&tail, "tail", 100, "Last 'n' logs to fetch (defaults to 100)")
4542
logsCmd.Flags().IntVar(&since, "since", 1, "Number of hours (integer) since which to search (defaults to 1 hour)")
4643
logsCmd.Flags().StringVar(&contains, "contains", "", "Include logs which contain a phrase")
47-
logsCmd.Flags().StringVar(&cluster, "cluster", "", "Cluster identifier (name / internal ID / external ID) to search")
4844
logsCmd.Flags().StringVar(&sortOrder, "sort", "desc", "Sort the results by timestamp in either ascending or descending order. Accepted values are 'asc' and 'desc'")
4945
logsCmd.Flags().BoolVar(&hcp, "hcp", false, "Set true to Include the HCP Namespace")
5046
logsCmd.Flags().StringSliceVar(&namespaceList, "namespace", []string{}, "Namespace(s) (comma-separated)")
@@ -60,12 +56,12 @@ func getLinkToWebConsole(dtURL string, since int, base64Url string) string {
6056
return fmt.Sprintf("\nLink to Web Console - \n%sui/apps/dynatrace.classic.logs.events/ui/logs-events?gtf=-%dh&gf=all&sortDirection=desc&advancedQueryMode=true&isDefaultQuery=false&visualizationType=table#%s\n\n", dtURL, since, base64Url)
6157
}
6258

63-
func main() error {
59+
func main(clusterID string) error {
6460
if since <= 0 {
6561
return fmt.Errorf("invalid time duration")
6662
}
6763

68-
clusterInternalID, mgmtClusterName, DTURL, err := fetchClusterDetails(cluster)
64+
clusterInternalID, mgmtClusterName, DTURL, err := fetchClusterDetails(clusterID)
6965
if err != nil {
7066
return fmt.Errorf("failed to acquire cluster details %v", err)
7167
}

cmd/cluster/dynatrace/requests.go

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,8 @@ import (
1414

1515
const (
1616
authURL string = "https://sso.dynatrace.com/sso/oauth2/token"
17-
clientIDKey string = "dt_client_id_key"
17+
DTVaultPath string = "dt_vault_path"
18+
VaultAddr string = "vault_address"
1819
)
1920

2021
type Requester struct {
@@ -65,22 +66,27 @@ func (rh *Requester) send() (string, error) {
6566
return string(body), nil
6667
}
6768

68-
func getClientID() (id string, error error) {
69-
if !viper.IsSet(clientIDKey) {
70-
return "", fmt.Errorf("key %s is not set in config file", clientIDKey)
69+
func getVaultPath() (addr, path string, error error) {
70+
if !viper.IsSet(VaultAddr) {
71+
return "", "", fmt.Errorf("key %s is not set in config file", VaultAddr)
7172
}
72-
clientID := viper.GetString(clientIDKey)
73+
vaultAddr := viper.GetString(VaultAddr)
7374

74-
return clientID, nil
75+
if !viper.IsSet(DTVaultPath) {
76+
return "", "", fmt.Errorf("key %s is not set in config file", DTVaultPath)
77+
}
78+
vaultPath := viper.GetString(DTVaultPath)
79+
80+
return vaultAddr, vaultPath, nil
7581
}
7682

7783
func getAccessToken() (string, error) {
78-
clientID, err := getClientID()
84+
vaultAddr, vaultPath, err := getVaultPath()
7985
if err != nil {
8086
return "", err
8187
}
8288

83-
clientSecret, err := getSecretFromVault(clientID)
89+
clientID, clientSecret, err := getSecretFromVault(vaultAddr, vaultPath)
8490
if err != nil {
8591
return "", err
8692
}

cmd/cluster/dynatrace/vault.go

Lines changed: 16 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -7,52 +7,50 @@ import (
77
"os/exec"
88
)
99

10-
const (
11-
path string = "osd-sre/dynatrace/sd-sre-platform-oauth-client-grail"
12-
address string = "https://vault.devshift.net"
13-
)
14-
1510
type response struct {
1611
Data struct {
1712
Data map[string]interface{} `json:"data"`
1813
} `json:"data"`
1914
}
2015

21-
func getSecretFromVault(clientID string) (secret string, error error) {
22-
err := os.Setenv("VAULT_ADDR", address)
16+
func getSecretFromVault(vaultAddr, vaultPath string) (id string, secret string, error error) {
17+
err := os.Setenv("VAULT_ADDR", vaultAddr)
2318
if err != nil {
2419
fmt.Printf("Error setting environment variable: %v\n", err)
25-
return "", err
20+
return "", "", err
2621
}
2722
cmd := exec.Command("vault", "login", "-method=oidc", "-no-print")
2823
cmd.Stdout = nil
2924
cmd.Stderr = nil
3025
if err = cmd.Run(); err != nil {
3126
fmt.Println("Error running 'vault login':", err)
32-
return "", nil
27+
return "", "", nil
3328
}
3429

35-
err = os.Setenv("VAULT_ADDR", address)
30+
err = os.Setenv("VAULT_ADDR", vaultAddr)
3631
if err != nil {
37-
return "", fmt.Errorf("error setting environment variable: %v", err)
32+
return "", "", fmt.Errorf("error setting environment variable: %v", err)
3833
}
3934

40-
kvGetCommand := exec.Command("vault", "kv", "get", "-format=json", path)
35+
kvGetCommand := exec.Command("vault", "kv", "get", "-format=json", vaultPath)
4136
output, err := kvGetCommand.Output()
4237
if err != nil {
4338
fmt.Println("Error running 'vault kv get':", err)
44-
return "", nil
39+
return "", "", nil
4540
}
4641

4742
var resp response
4843
if err := json.Unmarshal(output, &resp); err != nil {
49-
return "", fmt.Errorf("error unmarshaling JSON response: %v", err)
44+
return "", "", fmt.Errorf("error unmarshaling JSON response: %v", err)
5045
}
51-
52-
secretData, ok := resp.Data.Data[clientID].(string)
46+
clientID, ok := resp.Data.Data["client_id"].(string)
47+
if !ok {
48+
return "", "", fmt.Errorf("error extracting secret data from JSON response")
49+
}
50+
clientSecret, ok := resp.Data.Data["client_secret"].(string)
5351
if !ok {
54-
return "", fmt.Errorf("error extracting secret data from JSON response")
52+
return "", "", fmt.Errorf("error extracting secret data from JSON response")
5553
}
5654

57-
return secretData, nil
55+
return clientID, clientSecret, nil
5856
}

0 commit comments

Comments
 (0)