in server/server.go [268:296]
func (s *CSIDriverProviderServer) getRegionFromNode(ctx context.Context, namespace string, podName string) (reg string, err error) {
// Check if AWS_REGION environment variable is set
if envRegion := os.Getenv("AWS_REGION"); envRegion != "" {
return envRegion, nil
}
// Describe the pod to find the node: kubectl -o yaml -n <namespace> get pod <podid>
pod, err := s.k8sClient.Pods(namespace).Get(ctx, podName, metav1.GetOptions{})
if err != nil {
return "", err
}
// Describe node to get region: kubectl -o yaml -n <namespace> get node <nodeid>
nodeName := pod.Spec.NodeName
node, err := s.k8sClient.Nodes().Get(ctx, nodeName, metav1.GetOptions{})
if err != nil {
return "", err
}
labels := node.ObjectMeta.Labels
region := labels[regionLabel]
if len(region) == 0 {
return "", fmt.Errorf("Region not found")
}
return region, nil
}