mirror of
https://github.com/TECHNOFAB11/zfs-localpv.git
synced 2025-12-11 22:10:11 +01:00
adding topology support for zfspv (#7)
This PR adds support to allow the CSI driver to pick up a node matching the topology specified in the storage class. Admin can specify allowedTopologies in the StorageClass to specify the nodes where the zfs pools are setup
```yaml
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: openebs-zfspv
allowVolumeExpansion: true
parameters:
blocksize: "4k"
compression: "on"
dedup: "on"
thinprovision: "yes"
poolname: "zfspv-pool"
provisioner: zfs-localpv
volumeBindingMode: WaitForFirstConsumer
allowedTopologies:
- matchLabelExpressions:
- key: kubernetes.io/hostname
values:
- gke-zfspv-pawan-default-pool-c8929518-cgd4
- gke-zfspv-pawan-default-pool-c8929518-dxzc
```
Note: This PR picks up the first node from the list of nodes available.
Signed-off-by: Pawan <pawan@mayadata.io>
This commit is contained in:
parent
0218dacea0
commit
d0e97cddb2
11 changed files with 88 additions and 48 deletions
|
|
@ -85,7 +85,17 @@ func (c *ZVController) syncZV(zv *apis.ZFSVolume) error {
|
|||
zvol.RemoveZvolFinalizer(zv)
|
||||
}
|
||||
} else {
|
||||
err = zvol.SetZvolProp(zv)
|
||||
// if finalizer is not set then it means we are creating
|
||||
// the volume. And if it is set then volume has already been
|
||||
// created and this event is for property change only.
|
||||
if zv.Finalizers != nil {
|
||||
err = zvol.SetZvolProp(zv)
|
||||
} else {
|
||||
err = zvol.CreateZvol(zv)
|
||||
if err == nil {
|
||||
err = zvol.UpdateZvolInfo(zv)
|
||||
}
|
||||
}
|
||||
}
|
||||
return err
|
||||
}
|
||||
|
|
@ -101,11 +111,8 @@ func (c *ZVController) addZV(obj interface{}) {
|
|||
if zvol.NodeID != zv.Spec.OwnerNodeID {
|
||||
return
|
||||
}
|
||||
// TODO(pawan) scheduler will schedule the volume
|
||||
// on a node and populate the OwnerNodeID accordingly.
|
||||
// We need to create the zfs volume in that case.
|
||||
logrus.Infof("Got add event for ZV %s/%s", zv.Spec.PoolName, zv.Name)
|
||||
//c.enqueueZV(zv)
|
||||
c.enqueueZV(zv)
|
||||
}
|
||||
|
||||
// updateZV is the update event handler for CstorVolumeClaim
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue