add status subresources for volumeSnapshot & solute conflict

This commit is contained in:
zhucan
2019-05-07 14:08:37 +08:00
3 changed files with 23 additions and 9 deletions

View File

@@ -38,13 +38,24 @@ func CreateCRD(clientset apiextensionsclient.Interface) error {
Plural: crdv1.VolumeSnapshotClassResourcePlural, Plural: crdv1.VolumeSnapshotClassResourcePlural,
Kind: reflect.TypeOf(crdv1.VolumeSnapshotClass{}).Name(), Kind: reflect.TypeOf(crdv1.VolumeSnapshotClass{}).Name(),
}, },
Subresources: &apiextensionsv1beta1.CustomResourceSubresources{
Status: &apiextensionsv1beta1.CustomResourceSubresourceStatus{},
},
}, },
} }
res, err := clientset.ApiextensionsV1beta1().CustomResourceDefinitions().Create(crd)
if err != nil && !apierrors.IsAlreadyExists(err) { _, err := clientset.ApiextensionsV1beta1().CustomResourceDefinitions().Get(crd.Name, metav1.GetOptions{})
klog.Fatalf("failed to create VolumeSnapshotResource: %#v, err: %#v", if err == nil {
res, err) if res, err := clientset.ApiextensionsV1beta1().CustomResourceDefinitions().Update(crd); err != nil {
klog.Fatalf("failed to update VolumeSnapshotResource: %#v, err: %#v",
res, err)
}
} else {
res, err := clientset.ApiextensionsV1beta1().CustomResourceDefinitions().Create(crd)
if err != nil && !apierrors.IsAlreadyExists(err) {
klog.Fatalf("failed to create VolumeSnapshotResource: %#v, err: %#v",
res, err)
}
} }
crd = &apiextensionsv1beta1.CustomResourceDefinition{ crd = &apiextensionsv1beta1.CustomResourceDefinition{
@@ -61,7 +72,7 @@ func CreateCRD(clientset apiextensionsclient.Interface) error {
}, },
}, },
} }
res, err = clientset.ApiextensionsV1beta1().CustomResourceDefinitions().Create(crd) res, err := clientset.ApiextensionsV1beta1().CustomResourceDefinitions().Create(crd)
if err != nil && !apierrors.IsAlreadyExists(err) { if err != nil && !apierrors.IsAlreadyExists(err) {
klog.Fatalf("failed to create VolumeSnapshotContentResource: %#v, err: %#v", klog.Fatalf("failed to create VolumeSnapshotContentResource: %#v, err: %#v",

View File

@@ -44,9 +44,12 @@ rules:
- apiGroups: ["snapshot.storage.k8s.io"] - apiGroups: ["snapshot.storage.k8s.io"]
resources: ["volumesnapshots"] resources: ["volumesnapshots"]
verbs: ["get", "list", "watch", "update"] verbs: ["get", "list", "watch", "update"]
- apiGroups: ["snapshot.storage.k8s.io"]
resources: ["volumesnapshots/status"]
verbs: ["update"]
- apiGroups: ["apiextensions.k8s.io"] - apiGroups: ["apiextensions.k8s.io"]
resources: ["customresourcedefinitions"] resources: ["customresourcedefinitions"]
verbs: ["create", "list", "watch", "delete"] verbs: ["create", "list", "watch", "delete", "get", "update"]
--- ---
kind: ClusterRoleBinding kind: ClusterRoleBinding

View File

@@ -415,9 +415,9 @@ func (ctrl *csiSnapshotController) updateSnapshotErrorStatusWithEvent(snapshot *
Message: message, Message: message,
} }
snapshotClone.Status.Error = statusError snapshotClone.Status.Error = statusError
snapshotClone.Status.ReadyToUse = false snapshotClone.Status.ReadyToUse = false
newSnapshot, err := ctrl.clientset.VolumesnapshotV1alpha1().VolumeSnapshots(snapshotClone.Namespace).Update(snapshotClone) newSnapshot, err := ctrl.clientset.VolumesnapshotV1alpha1().VolumeSnapshots(snapshotClone.Namespace).UpdateStatus(snapshotClone)
if err != nil { if err != nil {
klog.V(4).Infof("updating VolumeSnapshot[%s] error status failed %v", snapshotKey(snapshot), err) klog.V(4).Infof("updating VolumeSnapshot[%s] error status failed %v", snapshotKey(snapshot), err)
return err return err
@@ -831,7 +831,7 @@ func (ctrl *csiSnapshotController) updateSnapshotStatus(snapshot *crdv1.VolumeSn
status.RestoreSize = resource.NewQuantity(size, resource.BinarySI) status.RestoreSize = resource.NewQuantity(size, resource.BinarySI)
} }
snapshotClone.Status = status snapshotClone.Status = status
newSnapshotObj, err := ctrl.clientset.VolumesnapshotV1alpha1().VolumeSnapshots(snapshotClone.Namespace).Update(snapshotClone) newSnapshotObj, err := ctrl.clientset.VolumesnapshotV1alpha1().VolumeSnapshots(snapshotClone.Namespace).UpdateStatus(snapshotClone)
if err != nil { if err != nil {
return nil, newControllerUpdateError(snapshotKey(snapshot), err.Error()) return nil, newControllerUpdateError(snapshotKey(snapshot), err.Error())
} }