#############################################
# This sample script creates a token, creates
# a volume, retrieves a list of volumes,
# clones a volume, and deletes a volume.
#############################################
param([string]$name="",[int]$size = "100")
$perfpolicy = "032570e019826ad7ed000000000000000000000001"
if ($name -eq "") {
write-host "`n`nUsage: new-volume -name <VOLUME> [-size <SIZE>]`n`n";
exit
}
###########################
# Enable HTTPS
###########################
[System.Net.ServicePointManager]::ServerCertificateValidationCallback = {$true}
###########################
# Get Token
###########################
$array = "c8-array8.lab.nimblestorage.com"
$username = "admin"
$password = "admin"
$data = @{
username = $username
password = $password
}
$body = convertto-json (@{ data = $data })
$uri = "https://" + $array + ":5392/v1/tokens"
$token = Invoke-RestMethod -Uri $uri -Method Post -Body $body
$token = $token.data.session_token
###########################
# Create a Volume
###########################
$data = @{
name = $name
perfpolicy_id = $perfpolicy
size = $size
}
$body = convertto-json (@{ data = $data })
$header = @{ "X-Auth-Token" = $token }
$uri = "https://" + $array + ":5392/v1/volumes"
$result = Invoke-RestMethod -Uri $uri -Method Post -Body $body -Header $header
$result.data | select name,size,description,target_name | format-table -autosize
###########################
# Get Volume List
###########################
$header = @{ "X-Auth-Token" = $token }
$uri = "https://" + $array + ":5392/v1/volumes"
$volume_list = Invoke-RestMethod -Uri $uri -Method Get -Header $header
$vol_array = @();
foreach ($volume_id in $volume_list.data.id){
$uri = "https://" + $array + ":5392/v1/volumes/" + $volume_id
$volume = Invoke-RestMethod -Uri $uri -Method Get -Header $header
#write-host $volume.data.name : $volume.data.id
$vol_array += $volume.data
}
###########################
# Print Results
###########################
$vol_array | sort-object size,name -descending | select size,name,online,agent_type,target_name | format-table -autosize
###########################
# Find a Volume by Name
###########################
$header = @{ "X-Auth-Token" = $token }
$uri = "https://" + $array + ":5392/v1/volumes"
$volume_list = Invoke-RestMethod -Uri $uri -Method Get -Header $header
foreach ($volume_id in $volume_list.data.id){
$uri = "https://" + $array + ":5392/v1/volumes/" + $volume_id
$volume = Invoke-RestMethod -Uri $uri -Method Get -Header $header
if ($volume.data.name -eq $parent){
$parent_volume_id = $volume.data.id
}
}
###########################
# Create a Volume Snapshot
###########################
$snapname = $parent + "-clone-" + $name;
$data = @{
writable = "false"
name = $snapname
description = "Insert Description Here"
online = "false"
vol_id = $parent_volume_id
}
$body = convertto-json (@{ data = $data })
$header = @{ "X-Auth-Token" = $token }
$uri = "https://" + $array + ":5392/v1/snapshots"
$result = Invoke-RestMethod -Uri $uri -Method Post -Body $body -Header $header
$base_snap_id = $result.data.id
###########################
# Create the Clone Volume
###########################
$data = @{
clone = "true"
name = $name
base_snap_id = $base_snap_id
}
$body = convertto-json (@{ data = $data })
$header = @{ "X-Auth-Token" = $token }
$uri = "https://" + $array + ":5392/v1/volumes"
$result = Invoke-RestMethod -Uri $uri -Method Post -Body $body -Header $header
$result.data | select name,size,clone,online,parent_vol_name | format-table -autosize
###########################
# Find a Volume by Name
###########################
$header = @{ "X-Auth-Token" = $token }
$uri = "https://" + $array + ":5392/v1/volumes"
$volume_list = Invoke-RestMethod -Uri $uri -Method Get -Header $header
foreach ($volume_id in $volume_list.data.id){
$uri = "https://" + $array + ":5392/v1/volumes/" + $volume_id
$volume = Invoke-RestMethod -Uri $uri -Method Get -Header $header
if ($volume.data.name -eq $vol){
$vol_id = $volume.data.id
}
}
write-host "`n`nDeleting volume $vol with ID: $vol_id`n";
###########################
# Offline a Volume
###########################
$data = @{
online = "false"
}
$body = convertto-json (@{ data = $data })
$header = @{ "X-Auth-Token" = $token }
$uri = "https://" + $array + ":5392/v1/volumes/" + $vol_id
$result = Invoke-RestMethod -Uri $uri -Method Put -Body $body -Header $header
###########################
# Delete a Volume
###########################
$header = @{ "X-Auth-Token" = $token }
$uri = "https://" + $array + ":5392/v1/volumes/" + $vol_id
$result = Invoke-RestMethod -Uri $uri -Method Delete -Header $header