File: setup_test_volume.pp

package info (click to toggle)
puppet-module-cinder 27.0.0-1
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 2,512 kB
  • sloc: ruby: 6,697; python: 33; sh: 10; makefile: 10
file content (63 lines) | stat: -rw-r--r-- 1,990 bytes parent folder | download
1
2
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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
# == Class: cinder::setup_test_volume
#
# Setup a volume group on a loop device for test purposes.
#
# === Parameters
#
# [*volume_name*]
#   (Optional) Volume group name.
#   Defaults to 'cinder-volumes'.
#
# [*size*]
#   (Optional) Volume group size.
#   Defaults to '4G'.
#
# [*loopback_device*]
#   (Optional) Loop device name.
#   Defaults to '/dev/loop2'.
#
# [*volume_path*]
#   (Optional) Volume image location.
#   Defaults to '/var/lib/cinder'.
#
class cinder::setup_test_volume (
  String[1] $volume_name            = 'cinder-volumes',
  Stdlib::Absolutepath $volume_path = '/var/lib/cinder',
  $size                             = '4G',
  $loopback_device                  = '/dev/loop2'
) {
  include cinder::deps

  stdlib::ensure_packages ( 'lvm2', {
    ensure => present,
  })
  Package<| title == 'lvm2' |> { tag +> 'cinder-support-package' }

  exec { "create_${volume_path}/${volume_name}":
    command   => "dd if=/dev/zero of=\"${volume_path}/${volume_name}\" bs=1 count=0 seek=${size}",
    path      => ['/bin','/usr/bin','/sbin','/usr/sbin'],
    unless    => "stat ${volume_path}/${volume_name}",
    require   => Anchor['cinder::install::end'],
    subscribe => Package['lvm2'],
  }
  ~> file { "${volume_path}/${volume_name}":
    mode => '0640',
  }
  ~> exec { "losetup ${loopback_device} ${volume_path}/${volume_name}":
    command     => "losetup ${loopback_device} ${volume_path}/${volume_name} && udevadm settle",
    path        => ['/bin','/usr/bin','/sbin','/usr/sbin'],
    unless      => "losetup ${loopback_device}",
    refreshonly => true,
  }
  ~> exec { "pvcreate ${loopback_device}":
    path        => ['/bin','/usr/bin','/sbin','/usr/sbin'],
    unless      => "pvs ${loopback_device}",
    refreshonly => true,
  }
  ~> exec { "vgcreate ${volume_name} ${loopback_device}":
    path        => ['/bin','/usr/bin','/sbin','/usr/sbin'],
    unless      => "vgs ${volume_name}",
    refreshonly => true,
  }
  -> Anchor['cinder::service::begin']
}