File: openstack_spec.rb

package info (click to toggle)
puppet-module-cinder 25.0.0-4
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 2,504 kB
  • sloc: ruby: 6,697; python: 38; sh: 10; makefile: 10
file content (101 lines) | stat: -rw-r--r-- 3,623 bytes parent folder | download | duplicates (2)
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
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
require 'puppet'
require 'puppet/provider/cinder_qos/openstack'

provider_class = Puppet::Type.type(:cinder_qos).provider(:openstack)

describe provider_class do

    let(:set_creds_env) do
      ENV['OS_USERNAME']     = 'test'
      ENV['OS_PASSWORD']     = 'abc123'
      ENV['OS_PROJECT_NAME'] = 'test'
      ENV['OS_AUTH_URL']     = 'http://127.0.0.1:5000'
    end

    let(:type_attributes) do
      {
         :name       => 'QoS_1',
         :ensure     => :present,
         :properties => ['key1=value1', 'key2=value2'],
      }
    end

    let(:resource) do
      Puppet::Type::Cinder_qos.new(type_attributes)
    end

    let(:provider) do
      provider_class.new(resource)
    end

    before(:each) { set_creds_env }

    describe 'managing qos' do
      describe '#create' do
        it 'creates a qos' do
          expect(provider_class).to receive(:openstack)
            .with('volume qos', 'create', '--format', 'shell', ['--property', 'key1=value1', '--property', 'key2=value2', 'QoS_1'])
            .and_return('id="e0df397a-72d5-4494-9e26-4ac37632ff04"
name="QoS_1"
properties="key1=\'value1\', key2=\'value2\'"
')
          provider.create
          expect(provider.exists?).to be_truthy
        end
      end

      describe '#destroy' do
        it 'destroys a qos' do
          expect(provider_class).to receive(:openstack)
            .with('volume qos', 'delete', 'QoS_1')
          provider.destroy
          expect(provider.exists?).to be_falsey
        end
      end

      describe '#instances' do
        it 'finds qos' do
          expect(provider_class).to receive(:openstack)
            .with('volume qos', 'list', '--quiet', '--format', 'csv', [])
            .and_return('"ID","Name","Consumer","Associations","Specs"
"28b632e8-6694-4bba-bf68-67b19f619019","qos-1","front-end","my_type1, my_type2","read_iops=\'value1\', write_iops=\'value2\'"
"4f992f69-14ec-4132-9313-55cc06a6f1f6","qos-2","both","",""
')
          instances = provider_class.instances
          expect(instances.count).to eq(2)
          expect(instances[0].name).to eq('qos-1')
          expect(instances[0].associations).to eq(['my_type1', 'my_type2'])
          expect(instances[0].consumer).to eq('front-end')
          expect(instances[0].properties).to eq(['read_iops=value1', 'write_iops=value2'])
          expect(instances[1].name).to eq('qos-2')
          expect(instances[1].consumer).to eq('both')
          expect(instances[1].associations).to eq([])
          expect(instances[1].properties).to eq([])
        end
      end

      #Test with python-openstackclient => 3.8.0 output (column header change from 'Specs' to 'Properties')
      describe '#instances' do
        it 'finds qos' do
          expect(provider_class).to receive(:openstack)
            .with('volume qos', 'list', '--quiet', '--format', 'csv', [])
            .and_return('"ID","Name","Consumer","Associations","Properties"
"28b632e8-6694-4bba-bf68-67b19f619019","qos-1","front-end","my_type1","read_iops=\'value1\'"
')
          instances = provider_class.instances
          expect(instances.count).to eq(1)
          expect(instances[0].name).to eq('qos-1')
          expect(instances[0].associations).to eq(['my_type1'])
          expect(instances[0].consumer).to eq('front-end')
          expect(instances[0].properties).to eq(['read_iops=value1'])
        end
      end

      describe '#string2array' do
        it 'should return an array with key-value' do
          s = "key='value', key2='value2'"
          expect(provider_class.string2array(s)).to eq(['key=value', 'key2=value2'])
        end
      end
    end
end