Class parameters
A VolumeAttributesClass with driverName: git.liken.sh carries a
commit and push policy in parameters. Every parameter has a default,
so an empty class arms a volume with the defaults. The controller
refuses a class with an unknown or malformed parameter, naming the
first bad one.
| Parameter | Values | Default |
|---|---|---|
push.quiesce |
A Go duration, at least 5s. The driver commits and pushes after the tree has been quiet this long. |
30s |
push.maxLatency |
A Go duration, at least push.quiesce, or never. The driver pushes when the oldest unpushed commit is this old, whatever the tree is doing. |
5m, or push.quiesce when that is longer |
commit.maxFileSize |
A Kubernetes quantity such as 1Mi, or 0 for no limit. A larger file is not committed and is named in the events and the log. |
1Mi |
commit.author |
Name <email>. The author and committer of every commit. |
git-csi-driver <git-csi-driver@liken.sh> |
ignore |
Comma-separated .gitignore patterns, added to the repository’s own. |
empty |
metadata |
true or false. Whether modes, owners, and empty directories are recorded on refs/git-csi/metadata and replayed at restore. |
true |
Events
| Reason | When |
|---|---|
GitVolumeArmed |
The claim named a class of this driver. |
GitVolumeUnarmed |
The claim names no class of this driver. |
GitVolumePending |
The tree holds paths the driver has not committed. Posted when the set first becomes non-empty. |
GitVolumePushed |
A push succeeded, with the commit and the count of paths. |
GitVolumePushFailed |
A push failed, with git’s error. |
GitVolumeFileSkipped |
A file over commit.maxFileSize was left out of a commit. |
GitVolumeRebased |
A rejected push rebased the tree onto upstream and landed, with the count of commits and the upstream commit. |
GitVolumeDiverged |
The volume moved to its side branch, after a push still rejected after three rebases, an aborted rebase, or a file the application and upstream both changed. |
GitVolumeHealed |
Upstream took the side branch’s work, and the volume is back on its ref. |
GitVolumeNoPublishSecret |
The PersistentVolume names nodeStageSecretRef and no nodePublishSecretRef, so a restart of the driver loses the credential. Posted once for each stage and for each restart. |
GitVolumeUpstreamMoved |
The stage found that upstream moved while the tree held uncommitted writes, so it left the tree as it was. Posted on the claim when the driver finds it after the stage. |
GitVolumeRefDeleted |
The stage found that the remote no longer holds the ref, so the driver pushes nothing until the ref exists again. Posted on the claim when the driver finds it after the stage. |
Each fault, a failed push, a failed fetch, and an upstream that moved, posts its event at the first failure after a success, and does not post it again until a success ends that fault. A fault of one kind does not hold back the event of a fault of another kind.
The abnormal gauge
git_csi_volume_abnormal, labeled namespace and volume, is one for
an unarmed volume with pending paths, a failed push, a skipped file, an
unpushed commit older than push.maxLatency, an invalid class, a ref
that moved upstream while the tree held uncommitted writes, a diverged
volume, and a ref the remote no longer holds. The driver’s log says
which.
Metrics
Each gauge is labeled namespace and claim.
| Metric | Meaning |
|---|---|
git_csi_armed |
One when a class of this driver arms the volume. |
git_csi_pending_paths |
Paths the last scan found that the driver has not committed. |
git_csi_unpushed_commits |
Commits not yet on the remote. |
git_csi_last_push_timestamp_seconds |
When the last push succeeded. |
git_csi_push_failures_total |
Pushes that failed. |
git_csi_skipped_files |
Files over commit.maxFileSize in the tree. |
git_csi_diverged |
One while the volume pushes to its side branch. |
git_csi_volume_abnormal |
One while anything above is wrong. Labeled namespace and volume, not claim. |