mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-08-17 23:57:49 +00:00
fix azure disk translation issue
This commit is contained in:
parent
93119f4503
commit
18955db416
@ -44,6 +44,7 @@ const (
|
||||
var (
|
||||
managedDiskPathRE = regexp.MustCompile(`.*/subscriptions/(?:.*)/resourceGroups/(?:.*)/providers/Microsoft.Compute/disks/(.+)`)
|
||||
unmanagedDiskPathRE = regexp.MustCompile(`http(?:.*)://(?:.*)/vhds/(.+)`)
|
||||
managed = string(v1.AzureManagedDisk)
|
||||
)
|
||||
|
||||
var _ InTreePlugin = &azureDiskCSITranslator{}
|
||||
@ -110,7 +111,7 @@ func (t *azureDiskCSITranslator) TranslateInTreeInlineVolumeToCSI(volume *v1.Vol
|
||||
CSI: &v1.CSIPersistentVolumeSource{
|
||||
Driver: AzureDiskDriverName,
|
||||
VolumeHandle: azureSource.DataDiskURI,
|
||||
VolumeAttributes: map[string]string{azureDiskKind: "Managed"},
|
||||
VolumeAttributes: map[string]string{azureDiskKind: managed},
|
||||
},
|
||||
},
|
||||
AccessModes: []v1.PersistentVolumeAccessMode{v1.ReadWriteOnce},
|
||||
@ -127,9 +128,7 @@ func (t *azureDiskCSITranslator) TranslateInTreeInlineVolumeToCSI(volume *v1.Vol
|
||||
pv.Spec.PersistentVolumeSource.CSI.FSType = *azureSource.FSType
|
||||
pv.Spec.PersistentVolumeSource.CSI.VolumeAttributes[azureDiskFSType] = *azureSource.FSType
|
||||
}
|
||||
if azureSource.Kind != nil {
|
||||
pv.Spec.PersistentVolumeSource.CSI.VolumeAttributes[azureDiskKind] = string(*azureSource.Kind)
|
||||
}
|
||||
pv.Spec.PersistentVolumeSource.CSI.VolumeAttributes[azureDiskKind] = managed
|
||||
|
||||
return pv, nil
|
||||
}
|
||||
@ -147,7 +146,7 @@ func (t *azureDiskCSITranslator) TranslateInTreePVToCSI(pv *v1.PersistentVolume)
|
||||
// refer to https://github.com/kubernetes-sigs/azuredisk-csi-driver/blob/master/docs/driver-parameters.md
|
||||
csiSource = &v1.CSIPersistentVolumeSource{
|
||||
Driver: AzureDiskDriverName,
|
||||
VolumeAttributes: map[string]string{azureDiskKind: "Managed"},
|
||||
VolumeAttributes: map[string]string{azureDiskKind: managed},
|
||||
VolumeHandle: azureSource.DataDiskURI,
|
||||
}
|
||||
)
|
||||
@ -160,10 +159,7 @@ func (t *azureDiskCSITranslator) TranslateInTreePVToCSI(pv *v1.PersistentVolume)
|
||||
csiSource.FSType = *azureSource.FSType
|
||||
csiSource.VolumeAttributes[azureDiskFSType] = *azureSource.FSType
|
||||
}
|
||||
|
||||
if azureSource.Kind != nil {
|
||||
csiSource.VolumeAttributes[azureDiskKind] = string(*azureSource.Kind)
|
||||
}
|
||||
csiSource.VolumeAttributes[azureDiskKind] = managed
|
||||
|
||||
if azureSource.ReadOnly != nil {
|
||||
csiSource.ReadOnly = *azureSource.ReadOnly
|
||||
@ -208,11 +204,7 @@ func (t *azureDiskCSITranslator) TranslateCSIPVToInTree(pv *v1.PersistentVolume)
|
||||
if fsType, ok := csiSource.VolumeAttributes[azureDiskFSType]; ok && fsType != "" {
|
||||
azureSource.FSType = &fsType
|
||||
}
|
||||
|
||||
if kind, ok := csiSource.VolumeAttributes[azureDiskKind]; ok && kind != "" {
|
||||
diskKind := v1.AzureDataDiskKind(kind)
|
||||
azureSource.Kind = &diskKind
|
||||
}
|
||||
azureSource.Kind = &managed
|
||||
}
|
||||
|
||||
pv.Spec.CSI = nil
|
||||
|
@ -166,6 +166,7 @@ func TestTranslateAzureDiskInTreePVToCSI(t *testing.T) {
|
||||
cachingMode := corev1.AzureDataDiskCachingMode("cachingmode")
|
||||
fsType := "fstype"
|
||||
readOnly := true
|
||||
diskURI := "/subscriptions/12/resourceGroups/23/providers/Microsoft.Compute/disks/name"
|
||||
|
||||
cases := []struct {
|
||||
name string
|
||||
@ -178,18 +179,18 @@ func TestTranslateAzureDiskInTreePVToCSI(t *testing.T) {
|
||||
expErr: true,
|
||||
},
|
||||
{
|
||||
name: "no azure file volume",
|
||||
name: "no azure disk volume",
|
||||
volume: &corev1.PersistentVolume{},
|
||||
expErr: true,
|
||||
},
|
||||
{
|
||||
name: "azure file volume",
|
||||
name: "azure disk volume",
|
||||
volume: &corev1.PersistentVolume{
|
||||
Spec: corev1.PersistentVolumeSpec{
|
||||
PersistentVolumeSource: corev1.PersistentVolumeSource{
|
||||
AzureDisk: &corev1.AzureDiskVolumeSource{
|
||||
CachingMode: &cachingMode,
|
||||
DataDiskURI: "datadiskuri",
|
||||
DataDiskURI: diskURI,
|
||||
FSType: &fsType,
|
||||
ReadOnly: &readOnly,
|
||||
},
|
||||
@ -208,7 +209,7 @@ func TestTranslateAzureDiskInTreePVToCSI(t *testing.T) {
|
||||
azureDiskFSType: fsType,
|
||||
azureDiskKind: "Managed",
|
||||
},
|
||||
VolumeHandle: "datadiskuri",
|
||||
VolumeHandle: diskURI,
|
||||
},
|
||||
},
|
||||
},
|
||||
@ -233,6 +234,74 @@ func TestTranslateAzureDiskInTreePVToCSI(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestTranslateTranslateCSIPVToInTree(t *testing.T) {
|
||||
cachingMode := corev1.AzureDataDiskCachingMode("cachingmode")
|
||||
fsType := "fstype"
|
||||
readOnly := true
|
||||
diskURI := "/subscriptions/12/resourceGroups/23/providers/Microsoft.Compute/disks/name"
|
||||
managed := v1.AzureManagedDisk
|
||||
|
||||
translator := NewAzureDiskCSITranslator()
|
||||
cases := []struct {
|
||||
name string
|
||||
volume *corev1.PersistentVolume
|
||||
expVol *corev1.PersistentVolume
|
||||
expErr bool
|
||||
}{
|
||||
{
|
||||
name: "azure disk volume",
|
||||
volume: &corev1.PersistentVolume{
|
||||
Spec: corev1.PersistentVolumeSpec{
|
||||
PersistentVolumeSource: corev1.PersistentVolumeSource{
|
||||
CSI: &corev1.CSIPersistentVolumeSource{
|
||||
Driver: "disk.csi.azure.com",
|
||||
FSType: "fstype",
|
||||
ReadOnly: true,
|
||||
VolumeAttributes: map[string]string{
|
||||
azureDiskCachingMode: "cachingmode",
|
||||
azureDiskFSType: fsType,
|
||||
azureDiskKind: "managed",
|
||||
},
|
||||
VolumeHandle: diskURI,
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
expVol: &corev1.PersistentVolume{
|
||||
Spec: corev1.PersistentVolumeSpec{
|
||||
PersistentVolumeSource: corev1.PersistentVolumeSource{
|
||||
AzureDisk: &corev1.AzureDiskVolumeSource{
|
||||
CachingMode: &cachingMode,
|
||||
DataDiskURI: diskURI,
|
||||
FSType: &fsType,
|
||||
ReadOnly: &readOnly,
|
||||
Kind: &managed,
|
||||
DiskName: "name",
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
expErr: false,
|
||||
},
|
||||
}
|
||||
|
||||
for _, tc := range cases {
|
||||
t.Logf("Testing %v", tc.name)
|
||||
got, err := translator.TranslateCSIPVToInTree(tc.volume)
|
||||
if err != nil && !tc.expErr {
|
||||
t.Errorf("Did not expect error but got: %v", err)
|
||||
}
|
||||
|
||||
if err == nil && tc.expErr {
|
||||
t.Errorf("Expected error, but did not get one.")
|
||||
}
|
||||
|
||||
if !reflect.DeepEqual(got, tc.expVol) {
|
||||
t.Errorf("Got parameters: %v, expected :%v", got, tc.expVol)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestTranslateInTreeStorageClassToCSI(t *testing.T) {
|
||||
translator := NewAzureDiskCSITranslator()
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user