REST API Reference Version 5.1.1.0Search

PowerShell Code Sample

#############################################
# 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