in plugins/rbd.go [217:253]
func (p rbdCSITranslator) TranslateCSIPVToInTree(pv *v1.PersistentVolume) (*v1.PersistentVolume, error) {
if pv == nil || pv.Spec.CSI == nil {
return nil, fmt.Errorf("pv is nil or CSI source not defined on pv")
}
var rbdImageName string
monSlice := []string{""}
csiSource := pv.Spec.CSI
rbdImageName = csiSource.VolumeAttributes[imgNameKey]
rbdPool := csiSource.VolumeAttributes[poolKey]
radosUser := csiSource.VolumeAttributes[adminIDKey]
if radosUser == "" {
radosUser = defaultAdminUser
}
RBDSource := &v1.RBDPersistentVolumeSource{
CephMonitors: monSlice,
RBDImage: rbdImageName,
FSType: csiSource.FSType,
RBDPool: rbdPool,
RadosUser: radosUser,
ReadOnly: csiSource.ReadOnly,
}
if pv.Annotations == nil {
pv.Annotations = make(map[string]string)
}
fillAnnotationsFromCSISource(pv, csiSource)
nodeSecret := csiSource.NodeStageSecretRef
if nodeSecret != nil {
RBDSource.SecretRef = &v1.SecretReference{Name: nodeSecret.Name, Namespace: nodeSecret.Namespace}
}
pv.Spec.CSI = nil
pv.Spec.RBD = RBDSource
return pv, nil
}