9
9
"strconv"
10
10
11
11
metadata "github.com/linode/go-metadata"
12
+ "github.com/linode/linode-blockstorage-csi-driver/pkg/logger"
12
13
"github.com/linode/linodego"
13
14
)
14
15
@@ -26,22 +27,39 @@ type Metadata struct {
26
27
// function otherwise returns a non-nil error, callers should call
27
28
// [GetMetadataFromAPI].
28
29
func GetMetadata (ctx context.Context ) (Metadata , error ) {
30
+ log := logger .GetLogger (ctx )
31
+
32
+ log .V (2 ).Info ("Processing request" )
33
+
34
+ log .V (4 ).Info ("Creating new metadata client" )
29
35
client , err := metadata .NewClient (ctx )
30
36
if err != nil {
37
+ log .Error (err , "Failed to create new metadata client" )
31
38
return Metadata {}, fmt .Errorf ("new metadata client: %w" , err )
32
39
}
33
40
41
+ log .V (4 ).Info ("Retrieving instance data from metadata service" )
34
42
data , err := client .GetInstance (ctx )
35
43
if err != nil {
44
+ log .Error (err , "Failed to get instance data from metadata service" )
36
45
return Metadata {}, fmt .Errorf ("get instance data: %w" , err )
37
46
}
38
47
39
- return Metadata {
48
+ log .V (4 ).Info ("Successfully retrieved metadata" ,
49
+ "instanceID" , data .ID ,
50
+ "instanceLabel" , data .Label ,
51
+ "region" , data .Region ,
52
+ "memory" , data .Specs .Memory )
53
+
54
+ metadata := Metadata {
40
55
ID : data .ID ,
41
56
Label : data .Label ,
42
57
Region : data .Region ,
43
58
Memory : memoryToBytes (data .Specs .Memory ),
44
- }, nil
59
+ }
60
+
61
+ log .V (2 ).Info ("Successfully completed" )
62
+ return metadata , nil
45
63
}
46
64
47
65
// memoryToBytes converts the given amount of memory in MB, to bytes.
@@ -69,31 +87,42 @@ var errNilClient = errors.New("nil client")
69
87
// GetMetadataFromAPI attempts to retrieve metadata about the current
70
88
// node/instance directly from the Linode API.
71
89
func GetMetadataFromAPI (ctx context.Context , client * linodego.Client ) (Metadata , error ) {
90
+ log , ctx , done := logger .GetLogger (ctx ).WithMethod ("GetMetadataFromAPI" )
91
+ defer done ()
92
+
93
+ log .V (2 ).Info ("Processing request" )
94
+
72
95
if client == nil {
73
96
return Metadata {}, errNilClient
74
97
}
75
98
99
+ log .V (4 ).Info ("Checking LinodeIDPath" , "path" , LinodeIDPath )
76
100
if _ , err := os .Stat (LinodeIDPath ); err != nil {
77
101
return Metadata {}, fmt .Errorf ("stat %s: %w" , LinodeIDPath , err )
78
102
}
103
+
104
+ log .V (4 ).Info ("Opening LinodeIDPath" , "path" , LinodeIDPath )
79
105
f , err := os .Open (LinodeIDPath )
80
106
if err != nil {
81
107
return Metadata {}, fmt .Errorf ("open: %w" , err )
82
108
}
83
109
defer f .Close ()
84
110
111
+ log .V (4 ).Info ("Reading LinodeID from file" )
85
112
// Read in the file, but use a LimitReader to make sure we are not
86
113
// reading in junk.
87
114
data , err := io .ReadAll (io .LimitReader (f , 1 << 10 ))
88
115
if err != nil {
89
116
return Metadata {}, fmt .Errorf ("read all: %w" , err )
90
117
}
91
118
119
+ log .V (4 ).Info ("Parsing LinodeID" )
92
120
linodeID , err := strconv .Atoi (string (data ))
93
121
if err != nil {
94
122
return Metadata {}, fmt .Errorf ("atoi: %w" , err )
95
123
}
96
124
125
+ log .V (4 ).Info ("Retrieving instance data from API" , "linodeID" , linodeID )
97
126
instance , err := client .GetInstance (ctx , linodeID )
98
127
if err != nil {
99
128
return Metadata {}, fmt .Errorf ("get instance: %w" , err )
@@ -104,10 +133,19 @@ func GetMetadataFromAPI(ctx context.Context, client *linodego.Client) (Metadata,
104
133
memory = memoryToBytes (instance .Specs .Memory )
105
134
}
106
135
107
- return Metadata {
136
+ metadata := Metadata {
108
137
ID : linodeID ,
109
138
Label : instance .Label ,
110
139
Region : instance .Region ,
111
140
Memory : memory ,
112
- }, nil
141
+ }
142
+
143
+ log .V (4 ).Info ("Successfully retrieved metadata" ,
144
+ "instanceID" , metadata .ID ,
145
+ "instanceLabel" , metadata .Label ,
146
+ "region" , metadata .Region ,
147
+ "memory" , metadata .Memory )
148
+
149
+ log .V (2 ).Info ("Successfully completed" )
150
+ return metadata , nil
113
151
}
0 commit comments