fix: azurefile volumeid conflict in csi migration

This commit is contained in:
andyzhangx 2022-01-16 02:34:11 +00:00
parent 7bde4baac4
commit fdadc95d65
4 changed files with 19 additions and 17 deletions

View File

@ -107,7 +107,7 @@ func (t *azureDiskCSITranslator) TranslateInTreeInlineVolumeToCSI(volume *v1.Vol
ObjectMeta: metav1.ObjectMeta{ ObjectMeta: metav1.ObjectMeta{
// Must be unique per disk as it is used as the unique part of the // Must be unique per disk as it is used as the unique part of the
// staging path // staging path
Name: fmt.Sprintf("%s-%s", AzureDiskDriverName, azureSource.DiskName), Name: azureSource.DataDiskURI,
}, },
Spec: v1.PersistentVolumeSpec{ Spec: v1.PersistentVolumeSpec{
PersistentVolumeSource: v1.PersistentVolumeSource{ PersistentVolumeSource: v1.PersistentVolumeSource{

View File

@ -128,7 +128,7 @@ func TestTranslateAzureDiskInTreeStorageClassToCSI(t *testing.T) {
}, },
expVol: &corev1.PersistentVolume{ expVol: &corev1.PersistentVolume{
ObjectMeta: metav1.ObjectMeta{ ObjectMeta: metav1.ObjectMeta{
Name: "disk.csi.azure.com-diskname", Name: "datadiskuri",
}, },
Spec: corev1.PersistentVolumeSpec{ Spec: corev1.PersistentVolumeSpec{
PersistentVolumeSource: corev1.PersistentVolumeSource{ PersistentVolumeSource: corev1.PersistentVolumeSource{

View File

@ -81,19 +81,19 @@ func (t *azureFileCSITranslator) TranslateInTreeInlineVolumeToCSI(volume *v1.Vol
if podNamespace != "" { if podNamespace != "" {
secretNamespace = podNamespace secretNamespace = podNamespace
} }
volumeID := fmt.Sprintf(volumeIDTemplate, "", accountName, azureSource.ShareName, volume.Name)
var ( var (
pv = &v1.PersistentVolume{ pv = &v1.PersistentVolume{
ObjectMeta: metav1.ObjectMeta{ ObjectMeta: metav1.ObjectMeta{
// Must be unique per disk as it is used as the unique part of the // Must be unique as it is used as the unique part of the staging path
// staging path Name: volumeID,
Name: fmt.Sprintf("%s-%s", AzureFileDriverName, azureSource.ShareName),
}, },
Spec: v1.PersistentVolumeSpec{ Spec: v1.PersistentVolumeSpec{
PersistentVolumeSource: v1.PersistentVolumeSource{ PersistentVolumeSource: v1.PersistentVolumeSource{
CSI: &v1.CSIPersistentVolumeSource{ CSI: &v1.CSIPersistentVolumeSource{
Driver: AzureFileDriverName, Driver: AzureFileDriverName,
VolumeHandle: fmt.Sprintf(volumeIDTemplate, "", accountName, azureSource.ShareName, ""), VolumeHandle: volumeID,
ReadOnly: azureSource.ReadOnly, ReadOnly: azureSource.ReadOnly,
VolumeAttributes: map[string]string{shareNameField: azureSource.ShareName}, VolumeAttributes: map[string]string{shareNameField: azureSource.ShareName},
NodeStageSecretRef: &v1.SecretReference{ NodeStageSecretRef: &v1.SecretReference{
@ -129,7 +129,7 @@ func (t *azureFileCSITranslator) TranslateInTreePVToCSI(pv *v1.PersistentVolume)
resourceGroup = v resourceGroup = v
} }
} }
volumeID := fmt.Sprintf(volumeIDTemplate, resourceGroup, accountName, azureSource.ShareName, "") volumeID := fmt.Sprintf(volumeIDTemplate, resourceGroup, accountName, azureSource.ShareName, pv.ObjectMeta.Name)
var ( var (
// refer to https://github.com/kubernetes-sigs/azurefile-csi-driver/blob/master/docs/driver-parameters.md // refer to https://github.com/kubernetes-sigs/azurefile-csi-driver/blob/master/docs/driver-parameters.md

View File

@ -120,6 +120,7 @@ func TestTranslateAzureFileInTreeStorageClassToCSI(t *testing.T) {
{ {
name: "azure file volume", name: "azure file volume",
volume: &corev1.Volume{ volume: &corev1.Volume{
Name: "name",
VolumeSource: corev1.VolumeSource{ VolumeSource: corev1.VolumeSource{
AzureFile: &corev1.AzureFileVolumeSource{ AzureFile: &corev1.AzureFileVolumeSource{
ReadOnly: true, ReadOnly: true,
@ -130,7 +131,7 @@ func TestTranslateAzureFileInTreeStorageClassToCSI(t *testing.T) {
}, },
expVol: &corev1.PersistentVolume{ expVol: &corev1.PersistentVolume{
ObjectMeta: metav1.ObjectMeta{ ObjectMeta: metav1.ObjectMeta{
Name: "file.csi.azure.com-sharename", Name: "#secretname#sharename#name",
}, },
Spec: corev1.PersistentVolumeSpec{ Spec: corev1.PersistentVolumeSpec{
PersistentVolumeSource: corev1.PersistentVolumeSource{ PersistentVolumeSource: corev1.PersistentVolumeSource{
@ -142,7 +143,7 @@ func TestTranslateAzureFileInTreeStorageClassToCSI(t *testing.T) {
}, },
ReadOnly: true, ReadOnly: true,
VolumeAttributes: map[string]string{shareNameField: "sharename"}, VolumeAttributes: map[string]string{shareNameField: "sharename"},
VolumeHandle: "#secretname#sharename#", VolumeHandle: "#secretname#sharename#name",
}, },
}, },
AccessModes: []corev1.PersistentVolumeAccessMode{corev1.ReadWriteMany}, AccessModes: []corev1.PersistentVolumeAccessMode{corev1.ReadWriteMany},
@ -152,6 +153,7 @@ func TestTranslateAzureFileInTreeStorageClassToCSI(t *testing.T) {
{ {
name: "azure file volume with a pod namespace", name: "azure file volume with a pod namespace",
volume: &corev1.Volume{ volume: &corev1.Volume{
Name: "name",
VolumeSource: corev1.VolumeSource{ VolumeSource: corev1.VolumeSource{
AzureFile: &corev1.AzureFileVolumeSource{ AzureFile: &corev1.AzureFileVolumeSource{
ReadOnly: true, ReadOnly: true,
@ -163,7 +165,7 @@ func TestTranslateAzureFileInTreeStorageClassToCSI(t *testing.T) {
podNamespace: "test", podNamespace: "test",
expVol: &corev1.PersistentVolume{ expVol: &corev1.PersistentVolume{
ObjectMeta: metav1.ObjectMeta{ ObjectMeta: metav1.ObjectMeta{
Name: "file.csi.azure.com-sharename", Name: "#secretname#sharename#name",
}, },
Spec: corev1.PersistentVolumeSpec{ Spec: corev1.PersistentVolumeSpec{
PersistentVolumeSource: corev1.PersistentVolumeSource{ PersistentVolumeSource: corev1.PersistentVolumeSource{
@ -175,7 +177,7 @@ func TestTranslateAzureFileInTreeStorageClassToCSI(t *testing.T) {
}, },
ReadOnly: true, ReadOnly: true,
VolumeAttributes: map[string]string{shareNameField: "sharename"}, VolumeAttributes: map[string]string{shareNameField: "sharename"},
VolumeHandle: "#secretname#sharename#", VolumeHandle: "#secretname#sharename#name",
}, },
}, },
AccessModes: []corev1.PersistentVolumeAccessMode{corev1.ReadWriteMany}, AccessModes: []corev1.PersistentVolumeAccessMode{corev1.ReadWriteMany},
@ -225,7 +227,7 @@ func TestTranslateAzureFileInTreePVToCSI(t *testing.T) {
name: "azure file volume", name: "azure file volume",
volume: &corev1.PersistentVolume{ volume: &corev1.PersistentVolume{
ObjectMeta: metav1.ObjectMeta{ ObjectMeta: metav1.ObjectMeta{
Name: "file.csi.azure.com-sharename", Name: "uuid",
}, },
Spec: corev1.PersistentVolumeSpec{ Spec: corev1.PersistentVolumeSpec{
PersistentVolumeSource: corev1.PersistentVolumeSource{ PersistentVolumeSource: corev1.PersistentVolumeSource{
@ -240,7 +242,7 @@ func TestTranslateAzureFileInTreePVToCSI(t *testing.T) {
}, },
expVol: &corev1.PersistentVolume{ expVol: &corev1.PersistentVolume{
ObjectMeta: metav1.ObjectMeta{ ObjectMeta: metav1.ObjectMeta{
Name: "file.csi.azure.com-sharename", Name: "uuid",
}, },
Spec: corev1.PersistentVolumeSpec{ Spec: corev1.PersistentVolumeSpec{
PersistentVolumeSource: corev1.PersistentVolumeSource{ PersistentVolumeSource: corev1.PersistentVolumeSource{
@ -252,7 +254,7 @@ func TestTranslateAzureFileInTreePVToCSI(t *testing.T) {
Namespace: secretNamespace, Namespace: secretNamespace,
}, },
VolumeAttributes: map[string]string{shareNameField: "sharename"}, VolumeAttributes: map[string]string{shareNameField: "sharename"},
VolumeHandle: "#secretname#sharename#", VolumeHandle: "#secretname#sharename#uuid",
}, },
}, },
}, },
@ -262,7 +264,7 @@ func TestTranslateAzureFileInTreePVToCSI(t *testing.T) {
name: "azure file volume with rg annotation", name: "azure file volume with rg annotation",
volume: &corev1.PersistentVolume{ volume: &corev1.PersistentVolume{
ObjectMeta: metav1.ObjectMeta{ ObjectMeta: metav1.ObjectMeta{
Name: "file.csi.azure.com-sharename", Name: "uuid",
Annotations: map[string]string{resourceGroupAnnotation: "rg"}, Annotations: map[string]string{resourceGroupAnnotation: "rg"},
}, },
Spec: corev1.PersistentVolumeSpec{ Spec: corev1.PersistentVolumeSpec{
@ -278,7 +280,7 @@ func TestTranslateAzureFileInTreePVToCSI(t *testing.T) {
}, },
expVol: &corev1.PersistentVolume{ expVol: &corev1.PersistentVolume{
ObjectMeta: metav1.ObjectMeta{ ObjectMeta: metav1.ObjectMeta{
Name: "file.csi.azure.com-sharename", Name: "uuid",
Annotations: map[string]string{resourceGroupAnnotation: "rg"}, Annotations: map[string]string{resourceGroupAnnotation: "rg"},
}, },
Spec: corev1.PersistentVolumeSpec{ Spec: corev1.PersistentVolumeSpec{
@ -291,7 +293,7 @@ func TestTranslateAzureFileInTreePVToCSI(t *testing.T) {
Namespace: secretNamespace, Namespace: secretNamespace,
}, },
VolumeAttributes: map[string]string{shareNameField: "sharename"}, VolumeAttributes: map[string]string{shareNameField: "sharename"},
VolumeHandle: "rg#secretname#sharename#", VolumeHandle: "rg#secretname#sharename#uuid",
}, },
}, },
}, },