Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

dynamic host volumes: add -type flag to volume init #24667

Merged
merged 1 commit into from
Dec 16, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 12 additions & 0 deletions command/asset/asset.go
Original file line number Diff line number Diff line change
Expand Up @@ -22,3 +22,15 @@ var NodePoolSpec []byte

//go:embed pool.nomad.json
var NodePoolSpecJSON []byte

//go:embed volume.csi.hcl
var CSIVolumeSpecHCL []byte

//go:embed volume.csi.json
var CSIVolumeSpecJSON []byte

//go:embed volume.host.hcl
var HostVolumeSpecHCL []byte

//go:embed volume.host.json
var HostVolumeSpecJSON []byte
70 changes: 70 additions & 0 deletions command/asset/volume.csi.hcl
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
id = "ebs_prod_db1"
namespace = "default"
name = "database"
type = "csi"
plugin_id = "plugin_id"

# For 'nomad volume register', provide the external ID from the storage
# provider. This field should be omitted when creating a volume with
# 'nomad volume create'
external_id = "vol-23452345"

# For 'nomad volume create', specify a snapshot ID or volume to clone. You can
# specify only one of these two fields.
snapshot_id = "snap-12345"
# clone_id = "vol-abcdef"

# Optional: for 'nomad volume create', specify a maximum and minimum capacity.
# Registering an existing volume will record but ignore these fields.
capacity_min = "10GiB"
capacity_max = "20G"

# Required (at least one): for 'nomad volume create', specify one or more
# capabilities to validate. Registering an existing volume will record but
# ignore these fields.
capability {
access_mode = "single-node-writer"
attachment_mode = "file-system"
}

capability {
access_mode = "single-node-reader"
attachment_mode = "block-device"
}

# Optional: for 'nomad volume create', specify mount options to validate for
# 'attachment_mode = "file-system". Registering an existing volume will record
# but ignore these fields.
mount_options {
fs_type = "ext4"
mount_flags = ["ro"]
}

# Optional: specify one or more locations where the volume must be accessible
# from. Refer to the plugin documentation for what segment values are supported.
topology_request {
preferred {
topology { segments { rack = "R1" } }
}
required {
topology { segments { rack = "R1" } }
topology { segments { rack = "R2", zone = "us-east-1a" } }
}
}

# Optional: provide any secrets specified by the plugin.
secrets {
example_secret = "xyzzy"
}

# Optional: provide a map of keys to string values expected by the plugin.
parameters {
skuname = "Premium_LRS"
}

# Optional: for 'nomad volume register', provide a map of keys to string
# values expected by the plugin. This field will populated automatically by
# 'nomad volume create'.
context {
endpoint = "http://192.168.1.101:9425"
}
72 changes: 72 additions & 0 deletions command/asset/volume.csi.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
{
"id": "ebs_prod_db1",
"namespace": "default",
"name": "database",
"type": "csi",
"plugin_id": "plugin_id",
"external_id": "vol-23452345",
"snapshot_id": "snap-12345",
"capacity_min": "10GiB",
"capacity_max": "20G",
"capability": [
{
"access_mode": "single-node-writer",
"attachment_mode": "file-system"
},
{
"access_mode": "single-node-reader",
"attachment_mode": "block-device"
}
],
"context": [
{
"endpoint": "http://192.168.1.101:9425"
}
],
"mount_options": [
{
"fs_type": "ext4",
"mount_flags": [
"ro"
]
}
],
"topology_request": {
"preferred": [
{
"topology": {
"segments": {
"rack": "R1"
}
}
}
],
"required": [
{
"topology": {
"segments": {
"rack": "R1"
}
}
},
{
"topology": {
"segments": {
"rack": "R2",
"zone": "us-east-1a"
}
}
}
]
},
"parameters": [
{
"skuname": "Premium_LRS"
}
],
"secrets": [
{
"example_secret": "xyzzy"
}
]
}
28 changes: 28 additions & 0 deletions command/asset/volume.host.hcl
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
id = "disk_prod_db1"
namespace = "default"
name = "database"
type = "host"
plugin_id = "plugin_id"

# Optional: for 'nomad volume create', specify a maximum and minimum capacity.
# Registering an existing volume will record but ignore these fields.
capacity_min = "10GiB"
capacity_max = "20G"

# Required (at least one): for 'nomad volume create', specify one or more
# capabilities to validate. Registering an existing volume will record but
# ignore these fields.
capability {
access_mode = "single-node-writer"
attachment_mode = "file-system"
}

capability {
access_mode = "single-node-reader"
attachment_mode = "block-device"
}

# Optional: provide a map of keys to string values expected by the plugin.
parameters {
skuname = "Premium_LRS"
}
24 changes: 24 additions & 0 deletions command/asset/volume.host.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
{
"id": "disk_prod_db1",
"namespace": "default",
"name": "database",
"type": "host",
"plugin_id": "plugin_id",
"capacity_min": "10GiB",
"capacity_max": "20G",
"capability": [
{
"access_mode": "single-node-writer",
"attachment_mode": "file-system"
},
{
"access_mode": "single-node-reader",
"attachment_mode": "block-device"
}
],
"parameters": [
{
"skuname": "Premium_LRS"
}
]
}
Loading
Loading