123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101 |
- require 'puppet'
- require 'spec_helper'
- require 'puppet/provider/nova_aggregate/openstack'
- provider_class = Puppet::Type.type(:nova_aggregate).provider(:openstack)
- describe provider_class do
- shared_examples 'authenticated with environment variables' do
- ENV['OS_USERNAME'] = 'test'
- ENV['OS_PASSWORD'] = 'abc123'
- ENV['OS_PROJECT_NAME'] = 'test'
- ENV['OS_AUTH_URL'] = 'http://127.0.0.1:35357/v3'
- end
- describe 'managing aggregates' do
- let(:aggregate_attrs) do
- {
- :name => 'just',
- :availability_zone => 'simple',
- :hosts => ['example'],
- :ensure => 'present',
- :metadata => 'nice=cookie',
- }
- end
- let(:resource) do
- Puppet::Type::Nova_aggregate.new(aggregate_attrs)
- end
- let(:provider) do
- provider_class.new(resource)
- end
- it_behaves_like 'authenticated with environment variables' do
- describe '#instances' do
- it 'finds existing aggregates' do
- provider_class.expects(:openstack)
- .with('aggregate', 'list', '--quiet', '--format', 'csv', [])
- .returns('"ID","Name","Availability Zone"
- just,"simple","just"
- ')
- provider_class.expects(:openstack)
- .with('aggregate', 'show', '--format', 'shell', 'simple')
- .returns('"id="just"
- name="simple"
- availability_zone=just"
- properties="key=\'2value\'"
- hosts="[]"
- ')
- instances = provider_class.instances
- expect(instances.count).to eq(1)
- expect(instances[0].name).to eq('simple')
- end
- end
- describe '#create' do
- it 'creates aggregate' do
- provider.class.stubs(:openstack)
- .with('aggregate', 'list', '--quiet', '--format', 'csv', '--long')
- .returns('"ID","Name","Availability Zone","Properties"
- ')
- provider.class.stubs(:openstack)
- .with('aggregate', 'create', '--format', 'shell', ['just', '--zone', 'simple', '--property', 'nice=cookie' ])
- .returns('name="just"
- id="just"
- availability_zone="simple"
- properties="{u\'nice\': u\'cookie\'}"
- hosts="[]"
- ')
- provider.class.stubs(:openstack)
- .with('aggregate', 'add host', ['just', 'example'])
- .returns('name="just"
- id="just"
- availability_zone="simple"
- properties="{u\'nice\': u\'cookie\'}"
- hosts="[u\'example\']"
- ')
- provider.exists?
- provider.create
- expect(provider.exists?).to be_falsey
- end
- end
- describe '#destroy' do
- it 'removes aggregate with hosts' do
- provider_class.expects(:openstack)
- .with('aggregate', 'remove host', ['just', 'example'])
- provider_class.expects(:openstack)
- .with('aggregate', 'delete', 'just')
- provider.instance_variable_set(:@property_hash, aggregate_attrs)
- provider.destroy
- expect(provider.exists?).to be_falsey
- end
- end
- end
- end
- end
|