openstack-chef/test/integration/orchestration/inspec/orchestration_spec.rb

127 lines
3.7 KiB
Ruby

openrc = 'bash -c "source /root/openrc && '
%w(
8000
8004
).each do |p|
describe port p do
it { should be_listening }
its('addresses') { should include '127.0.0.1' }
end
end
heat_services =
if os.family == 'redhat'
%w(
openstack-heat-api-cfn
openstack-heat-api
openstack-heat-engine
)
else
%w(
heat-api-cfn
heat-api
heat-engine
)
end
heat_services.each do |heat_service|
describe service heat_service do
it { should be_enabled }
it { should be_running }
end
end
describe command "#{openrc} heat-manage db_version\"" do
its('exit_status') { should eq 0 }
its('stdout') { should match /^86$/ }
end
describe command("#{openrc} openstack stack create -t /tmp/heat.yml stack\"") do
its('exit_status') { should eq 0 }
end
describe command("#{openrc} openstack stack show stack -c stack_status -f value\"") do
its('exit_status') { should eq 0 }
its('stdout') { should match(/^CREATE_IN_PROGRESS|CREATE_COMPLETE$/) }
end
describe command("#{openrc} openstack stack delete -y stack\"") do
its('exit_status') { should eq 0 }
end
describe command "#{openrc} openstack user list -f value -c Name\"" do
its('exit_status') { should eq 0 }
its('stdout') { should match /^heat_domain_admin$/ }
its('stdout') { should match /^heat$/ }
end
describe command "#{openrc} openstack service list -f value -c Name -c Type\"" do
its('exit_status') { should eq 0 }
its('stdout') { should match /^heat-cfn cloudformation$/ }
its('stdout') { should match /^heat orchestration$/ }
end
describe command "#{openrc} openstack endpoint list -f value -c 'Service Name' -c 'Service Type' -c Enabled -c Interface -c URL\"" do
its('exit_status') { should eq 0 }
its('stdout') { should match %r{heat orchestration True internal http://127.0.0.1:8004/v1/%\(tenant_id\)s} }
its('stdout') { should match %r{heat orchestration True public http://127.0.0.1:8004/v1/%\(tenant_id\)s} }
its('stdout') { should match %r{heat-cfn cloudformation True public http://127.0.0.1:8000/v1} }
its('stdout') { should match %r{heat-cfn cloudformation True internal http://127.0.0.1:8000/v1} }
end
describe command "#{openrc} openstack orchestration resource type list -f value\"" do
its('exit_status') { should eq 0 }
%w(
AWS::AutoScaling::AutoScalingGroup
AWS::AutoScaling::LaunchConfiguration
AWS::AutoScaling::ScalingPolicy
AWS::CloudFormation::Stack
AWS::CloudFormation::WaitCondition
AWS::CloudFormation::WaitConditionHandle
AWS::EC2::InternetGateway
AWS::EC2::SecurityGroup
AWS::ElasticLoadBalancing::LoadBalancer
AWS::IAM::AccessKey
AWS::IAM::User
AWS::RDS::DBInstance
OS::Heat::AccessPolicy
OS::Heat::AutoScalingGroup
OS::Heat::CloudConfig
OS::Heat::Delay
OS::Heat::DeployedServer
OS::Heat::InstanceGroup
OS::Heat::MultipartMime
OS::Heat::None
OS::Heat::RandomString
OS::Heat::ResourceChain
OS::Heat::ResourceGroup
OS::Heat::ScalingPolicy
OS::Heat::SoftwareComponent
OS::Heat::SoftwareConfig
OS::Heat::SoftwareDeployment
OS::Heat::SoftwareDeploymentGroup
OS::Heat::Stack
OS::Heat::StructuredConfig
OS::Heat::StructuredDeployment
OS::Heat::StructuredDeploymentGroup
OS::Heat::TestResource
OS::Heat::UpdateWaitConditionHandle
OS::Heat::Value
OS::Heat::WaitCondition
OS::Heat::WaitConditionHandle
OS::Keystone::Domain
OS::Keystone::Endpoint
OS::Keystone::Group
OS::Keystone::GroupRoleAssignment
OS::Keystone::Project
OS::Keystone::Region
OS::Keystone::Role
OS::Keystone::Service
OS::Keystone::User
OS::Keystone::UserRoleAssignment
).each do |resource|
its('stdout') { should match /^#{resource}$/ }
end
end