Skip to content

Commit a76f71e

Browse files
committed
Implement InstanceMetadata (tests not fixed)
1 parent 4cd9da7 commit a76f71e

1 file changed

Lines changed: 27 additions & 1 deletion

File tree

cloud/linode/instances.go

Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -267,5 +267,31 @@ func (i *instances) InstanceShutdown(ctx context.Context, node *v1.Node) (bool,
267267
}
268268

269269
func (i *instances) InstanceMetadata(ctx context.Context, node *v1.Node) (*cloudprovider.InstanceMetadata, error) {
270-
return nil, nil
270+
providerID := node.Spec.ProviderID
271+
272+
// TODO(okokes): should we at all times rely on providerID or should we include
273+
// lookups by node name as well?
274+
id, err := parseProviderID(providerID)
275+
if err != nil {
276+
return nil, err
277+
}
278+
279+
linode, err := linodeByID(ctx, i.client, id)
280+
if err != nil {
281+
return nil, err
282+
}
283+
284+
addresses, err := i.nodeAddresses(ctx, linode)
285+
if err != nil {
286+
return nil, err
287+
}
288+
289+
// note that Zone is omitted as it's not a thing in Linode
290+
meta := &cloudprovider.InstanceMetadata{
291+
ProviderID: providerID,
292+
NodeAddresses: addresses,
293+
Region: linode.Region,
294+
}
295+
296+
return meta, nil
271297
}

0 commit comments

Comments
 (0)