1locals {
2  # ClusterID: Is a unique ID per cluster that the CSI instance is serving and is restricted to
3  # lengths that can be accommodated in the encoding scheme.
4  # must be less than 128 chars. must match the cluster id in the csi plugin conf.
5  ClusterID = "<clusterid>"
6
7  # EncodingVersion: Carries the version number of the encoding scheme used to encode the CSI ID,
8  # and is preserved for any future proofing w.r.t changes in the encoding scheme, and to retain
9  # ability to parse backward compatible encodings.
10  # https://github.com/ceph/ceph-csi/blob/ef1785ce4db0aa1f6878c770893bcabc71cff300/internal/cephfs/driver.go#L31
11  EncodingVersion = 1
12
13  # LocationID: 64 bit integer identifier determining the location of the volume on the Ceph cluster.
14  # It is the ID of the poolname or fsname, for RBD or CephFS backed volumes respectively.
15  # see https://docs.ceph.com/docs/mimic/rbd/rados-rbd-cmds/
16  LocationID = 7
17
18  # ObjectUUID: Is the on-disk uuid of the object (image/snapshot) name, for the CSI volume that
19  # corresponds to this CSI ID.. must be 36 chars long.
20  ObjectUUID = "abcd"
21}
22
23data "template_file" "csi_id" {
24  template = "$${versionEncodedHex}-$${clusterIDLength}-$${ciClusterID}-$${poolIDEncodedHex}-$${ciObjectUUID}"
25
26  vars = {
27    versionEncodedHex = "${format("%02X", local.EncodingVersion)}"
28    clusterIDLength   = "${format("%02X", length(local.ClusterID))}"
29    ciClusterID       = "${local.ClusterID}"
30    poolIDEncodedHex  = "${format("%016X", local.LocationID)}"
31    ciObjectUUID      = "${local.ObjectUUID}"
32  }
33}
34