X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/0f644e242ef37c911ad3dc25aca8135c339de349..e59b78c774872e33b9c69acc196989a0f565bdf4:/services/keepstore/volume.go diff --git a/services/keepstore/volume.go b/services/keepstore/volume.go index 69802abdd1..6bce05bec0 100644 --- a/services/keepstore/volume.go +++ b/services/keepstore/volume.go @@ -12,6 +12,8 @@ import ( "math/big" "sync/atomic" "time" + + "git.curoverse.com/arvados.git/sdk/go/arvados" ) type BlockWriter interface { @@ -240,6 +242,9 @@ type Volume interface { // Return a globally unique ID of the underlying storage // device if possible, otherwise "". DeviceID() string + + // Get the storage classes associated with this volume + GetStorageClasses() []string } // A VolumeWithExamples provides example configs to display in the @@ -284,12 +289,8 @@ type VolumeManager interface { // A VolumeMount is an attachment of a Volume to a VolumeManager. type VolumeMount struct { - UUID string - DeviceID string - ReadOnly bool - Replication int - Tier int - volume Volume + arvados.KeepMount + volume Volume } // Generate a UUID the way API server would for a "KeepVolumeMount" @@ -326,13 +327,19 @@ func MakeRRVolumeManager(volumes []Volume) *RRVolumeManager { } vm.mountMap = make(map[string]*VolumeMount) for _, v := range volumes { + sc := v.GetStorageClasses() + if len(sc) == 0 { + sc = []string{"default"} + } mnt := &VolumeMount{ - UUID: (*VolumeMount)(nil).generateUUID(), - DeviceID: v.DeviceID(), - ReadOnly: !v.Writable(), - Replication: v.Replication(), - Tier: 1, - volume: v, + KeepMount: arvados.KeepMount{ + UUID: (*VolumeMount)(nil).generateUUID(), + DeviceID: v.DeviceID(), + ReadOnly: !v.Writable(), + Replication: v.Replication(), + StorageClasses: sc, + }, + volume: v, } vm.iostats[v] = &ioStats{} vm.mounts = append(vm.mounts, mnt)