Puppet Plan: powerstore::delete_multiple_volumes

Defined in:
plans/delete_multiple_volumes.pp

Overview

This plan deletes multiple volumes after first removing them from a group if they are a group member.

Parameters:

  • volume_count (Integer[1,100])

    Number of volumes to delete. The volume names are “vol_$i” with $i ranging from 1 to $volume_count.

  • targets (TargetSpec)


3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# File 'plans/delete_multiple_volumes.pp', line 3

plan powerstore::delete_multiple_volumes(
  TargetSpec $targets,
  Integer[1,100] $volume_count,
){
  $volumes = run_task('powerstore::volume_collection_query', $targets, 'Fetching volumes', {'query_string' => 'select=*,volume_groups'})[0].value

  $volumes_in_group = $volumes.filter | $k, $v | { !$v['volume_groups'].empty }

  Integer[1,$volume_count].each |$i| {
    $volume_name = "vol_${i}"
    unless $volume_name in $volumes_in_group {
      next()
    }
    $volume_groups = $volumes_in_group[$volume_name]['volume_groups']
    if $volume_groups {
      $volume_groups.each | $vg | {
        out::message("Removing volume ${volume_name} from volume group ${vg}")
        run_task('powerstore::volume_group_remove_members', $targets, {'id' => $vg['id'], 'volume_ids' => [$volumes[$volume_name]['id']]})
      }
    }
  }
  apply($targets) {
    Integer[1,$volume_count].each |$i| {
      $volume_name = "vol_${i}"
      notice("Deleting volume vol_${i}")
      powerstore_volume { "vol_${i}":
        ensure => 'absent',
      }
    }
  }
}