Merge pull request #99367 from jsafrane/cinder-translation-labels

cinder: Translate CSI topology affinity into in-tree labels
This commit is contained in:
Kubernetes Prow Robot 2021-03-03 14:40:55 -08:00 committed by GitHub
commit e7d9320b0d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 48 additions and 0 deletions

View File

@ -421,6 +421,48 @@ func TestTranslateTopologyFromCSIToInTree(t *testing.T) {
v1.LabelTopologyRegion: "us-east1",
},
},
{
name: "cinder translation",
key: CinderTopologyKey,
expErr: false,
regionParser: nil,
pv: &v1.PersistentVolume{
ObjectMeta: metav1.ObjectMeta{
Name: "cinder", Namespace: "myns",
},
Spec: v1.PersistentVolumeSpec{
NodeAffinity: &v1.VolumeNodeAffinity{
Required: &v1.NodeSelector{
NodeSelectorTerms: []v1.NodeSelectorTerm{
{
MatchExpressions: []v1.NodeSelectorRequirement{
{
Key: CinderTopologyKey,
Operator: v1.NodeSelectorOpIn,
Values: []string{"nova"},
},
},
},
},
},
},
},
},
expectedNodeSelectorTerms: []v1.NodeSelectorTerm{
{
MatchExpressions: []v1.NodeSelectorRequirement{
{
Key: v1.LabelTopologyZone,
Operator: v1.NodeSelectorOpIn,
Values: []string{"nova"},
},
},
},
},
expectedLabels: map[string]string{
v1.LabelTopologyZone: "nova",
},
},
}
for _, tc := range testCases {

View File

@ -144,6 +144,12 @@ func (t *osCinderCSITranslator) TranslateCSIPVToInTree(pv *v1.PersistentVolume)
ReadOnly: csiSource.ReadOnly,
}
// translate CSI topology to In-tree topology for rollback compatibility.
// It is not possible to guess Cinder Region from the Zone, therefore leave it empty.
if err := translateTopologyFromCSIToInTree(pv, CinderTopologyKey, nil); err != nil {
return nil, fmt.Errorf("failed to translate topology. PV:%+v. Error:%v", *pv, err)
}
pv.Spec.CSI = nil
pv.Spec.Cinder = cinderSource
return pv, nil