Removes deprecated type midonet_network
Change-Id: If1fade7e6af25dfbfde6ddd2ff0197b59ba32698
This commit is contained in:
parent
a348017113
commit
e5e94d788b
@ -1,148 +0,0 @@
|
||||
if RUBY_VERSION == '1.8.7'
|
||||
require 'rubygems'
|
||||
end
|
||||
|
||||
require 'uri'
|
||||
require 'faraday' if Puppet.features.faraday?
|
||||
require 'json'
|
||||
|
||||
Puppet::Type.type(:midonet_network).provide(:midonet_api_caller) do
|
||||
|
||||
confine :feature => :faraday
|
||||
|
||||
def create
|
||||
define_connection(resource[:midonet_api_url])
|
||||
tenants = call_get_tenant(resource[:tenant_name])
|
||||
if tenants.empty?
|
||||
raise "Tenant with specified name #{resource[:tenant_name]} does not exist"
|
||||
end
|
||||
tenant_id = tenants[0]['id']
|
||||
network = call_get_network(resource[:netname],tenant_id)
|
||||
if !network.empty?
|
||||
raise "Network #{resource[:netname]} for tenant #{resource[:tenant_name]} already exists"
|
||||
end
|
||||
|
||||
message = Hash.new
|
||||
message['name'] = resource[:netname]
|
||||
message['tenant_id'] = tenant_id
|
||||
message['shared'] = resource[:shared]
|
||||
message['external'] = resource[:external]
|
||||
|
||||
call_create_network(message)
|
||||
end
|
||||
|
||||
def destroy
|
||||
define_connection(resource[:midonet_api_url])
|
||||
|
||||
tenants = call_get_tenant(resource[:tenant_name])
|
||||
|
||||
if tenants.empty?
|
||||
return
|
||||
end
|
||||
tenant_id = tenants[0]['id']
|
||||
network = call_get_network(resource[:netname],tenant_id)
|
||||
if network.empty?
|
||||
return
|
||||
else
|
||||
call_delete_network(network)
|
||||
end
|
||||
end
|
||||
|
||||
def exists?
|
||||
define_connection(resource[:midonet_api_url])
|
||||
|
||||
tenants = call_get_tenant(resource[:tenant_name])
|
||||
if tenants.empty?
|
||||
raise "Tenant with specified name #{resource[:tenant_name]} does not exist"
|
||||
end
|
||||
tenant_id = tenant[0]['id']
|
||||
network = call_get_network(resource[:netname],tenant_id)
|
||||
if network.empty?
|
||||
return false
|
||||
else
|
||||
return true
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
def define_connection(url)
|
||||
|
||||
@connection = Faraday.new(:url => url,
|
||||
:ssl => { :verify =>false }) do |builder|
|
||||
builder.request(:retry, {
|
||||
:max => 5,
|
||||
:interval => 0.05,
|
||||
:exceptions => [
|
||||
Faraday::Error::TimeoutError,
|
||||
Faraday::ConnectionFailed,
|
||||
Errno::ETIMEDOUT,
|
||||
'Timeout::Error',
|
||||
],
|
||||
})
|
||||
builder.request(:basic_auth, resource[:username], resource[:password])
|
||||
builder.adapter(:net_http)
|
||||
end
|
||||
|
||||
@connection.headers['X-Auth-Token'] = call_get_token()
|
||||
end
|
||||
|
||||
def call_get_token()
|
||||
res = @connection.get do |req|
|
||||
req.url "/midonet-api/login"
|
||||
end
|
||||
return JSON.parse(res.body)['key']
|
||||
end
|
||||
|
||||
def call_get_tenant(tenant_name)
|
||||
res = @connection.get do |req|
|
||||
req.url "/midonet-api/tenants"
|
||||
end
|
||||
|
||||
output = JSON.parse(res.body)
|
||||
return output.select{ |tenant| tenant['name'] == tenant_name.to_s }
|
||||
end
|
||||
|
||||
def call_get_network(network_name,tenant_id)
|
||||
res = @connection.get do |req|
|
||||
req.url "/midonet-api/neutron/networks"
|
||||
end
|
||||
|
||||
output = JSON.parse(res.body)
|
||||
return output.select{ |network| network['name'] == network_name.to_s and network['tenant_id'] == tenant_id }
|
||||
end
|
||||
|
||||
def call_get_networks()
|
||||
res = @connection.get do |req|
|
||||
req.url "/midonet-api/neutron/networks"
|
||||
end
|
||||
|
||||
output = JSON.parse(res.body)
|
||||
return output
|
||||
end
|
||||
|
||||
def call_create_network(message)
|
||||
|
||||
res = @connection.post do |req|
|
||||
req.url "/midonet-api/neutron/networks"
|
||||
req.headers['Content-Type'] = "application/vnd.org.midonet.Network-v1+json"
|
||||
req.body = message.to_json
|
||||
end
|
||||
|
||||
return call_get_networks()
|
||||
|
||||
end
|
||||
|
||||
|
||||
def call_delete_network(network_id)
|
||||
res = @connection.delete do |req|
|
||||
req.url "/midonet-api/neutron/networks/#{network_id}"
|
||||
end
|
||||
end
|
||||
|
||||
private :call_create_network,
|
||||
:call_delete_network,
|
||||
:call_get_tenant,
|
||||
:call_get_network,
|
||||
:define_connection
|
||||
|
||||
end
|
@ -1,77 +0,0 @@
|
||||
require 'uri'
|
||||
require 'facter'
|
||||
require 'puppet/parameter/boolean'
|
||||
|
||||
Puppet::Type.newtype(:midonet_network) do
|
||||
@doc = %q{Register a Network to a Neutron
|
||||
through the MidoNet API
|
||||
|
||||
Example:
|
||||
|
||||
midonet_network {'netname':
|
||||
$midonet_api_url => 'http://controller:8080',
|
||||
$username => 'admin',
|
||||
$password => 'admin',
|
||||
$tenant_name => 'admin',
|
||||
$shared => true,
|
||||
$external => true,
|
||||
}
|
||||
}
|
||||
ensurable
|
||||
|
||||
newparam(:netname, :namevar => true) do
|
||||
desc 'Name of the networks that wants to be created in Neutron'
|
||||
validate do |value|
|
||||
unless value =~ /\w+/
|
||||
raise ArgumentError, "'%s' is not a valid network name" % value
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
newparam(:midonet_api_url) do
|
||||
desc 'MidoNet API endpoint to connect to'
|
||||
validate do |value|
|
||||
unless value =~ /\A#{URI::regexp(['http', 'https'])}\z/
|
||||
raise ArgumentError, "'%s' is not a valid URI" % value
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
newparam(:username) do
|
||||
desc 'Username of the admin user in keystone'
|
||||
validate do |value|
|
||||
unless value =~ /^[\w\-\_]+$/
|
||||
raise ArgumentError, "'%s' is not a valid username" % value
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
newparam(:password) do
|
||||
desc 'Password of the admin user in keystone'
|
||||
validate do |value|
|
||||
unless value =~ /^[\w\-\_]+$/
|
||||
raise ArgumentError, "'%s' is not a valid password" % value
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
newparam(:tenant_name) do
|
||||
desc 'Tenant name of the admin user'
|
||||
defaultto :'admin'
|
||||
validate do |value|
|
||||
unless value =~ /^[\w\-\_]+$/
|
||||
raise ArgumentError, "'%s' is not a tenant name" % value
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
newparam(:external, :boolean => true, :parent => Puppet::Parameter::Boolean) do
|
||||
desc "Switch to mark the network as external or not"
|
||||
end
|
||||
|
||||
newparam(:shared, :boolean => true, :parent => Puppet::Parameter::Boolean) do
|
||||
desc "Switch to mark the network as shared or not"
|
||||
end
|
||||
|
||||
|
||||
end
|
@ -1,160 +0,0 @@
|
||||
require 'spec_helper'
|
||||
|
||||
describe Puppet::Type.type(:midonet_network).provider(:midonet_api_caller) do
|
||||
|
||||
let(:provider) { described_class.new(resource) }
|
||||
|
||||
let(:resource) { Puppet::Type.type(:midonet_network).new(
|
||||
{
|
||||
:ensure => :present,
|
||||
:netname => 'testnet',
|
||||
:midonet_api_url => 'http://controller:8080',
|
||||
:username => 'admin',
|
||||
:password => 'admin',
|
||||
:tenant_name => 'admin',
|
||||
:shared => true,
|
||||
:external => true
|
||||
}
|
||||
)}
|
||||
|
||||
describe 'network happy path' do
|
||||
# - Tenant Existing
|
||||
# - Network not previously existing
|
||||
|
||||
let(:tenants) {
|
||||
[
|
||||
{
|
||||
"name" => "admin",
|
||||
"id" => "bd69f96a-005b-4d58-9f6c-b8dd9fbb6339",
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
let(:networks) {
|
||||
[
|
||||
{
|
||||
"name" => "testnet",
|
||||
"id" => "by82a88d-005b-4d58-9f6c-aaaaaaaa1111",
|
||||
"tenant_id" => "admin",
|
||||
"shared" => "true",
|
||||
"external" => "true"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
|
||||
before :each do
|
||||
allow(provider).to receive(:call_get_tenant).and_return(tenants)
|
||||
allow(provider).to receive(:call_get_network).and_return(networks)
|
||||
allow(provider).to receive(:call_delete_network)
|
||||
allow(provider).to receive(:call_create_network)
|
||||
allow(provider).to receive(:call_get_token).and_return('thisisafaketoken')
|
||||
end
|
||||
|
||||
it 'registers the network successfully' do
|
||||
# Expectations over 'create' call
|
||||
expect(provider).to receive(:call_get_tenant).and_return(tenants)
|
||||
expect(provider).to receive(:call_get_network).and_return([])
|
||||
expect(provider).to receive(:call_create_network).with({'name' => 'testnet', 'tenant_id' => 'bd69f96a-005b-4d58-9f6c-b8dd9fbb6339', 'shared' => true, 'external' => true})
|
||||
provider.create
|
||||
end
|
||||
|
||||
it 'unregisters the network successfully' do
|
||||
# Expectations over 'create' call
|
||||
expect(provider).to receive(:call_get_tenant).and_return(tenants)
|
||||
expect(provider).to receive(:call_get_network).and_return(networks)
|
||||
expect(provider).to receive(:call_delete_network).and_return([])
|
||||
provider.destroy
|
||||
end
|
||||
|
||||
|
||||
end
|
||||
|
||||
|
||||
##
|
||||
|
||||
describe 'try to create a network for an unexisting tenant' do
|
||||
# - Tenant Existing
|
||||
# - Network not previously existing
|
||||
|
||||
let(:tenants) {
|
||||
[
|
||||
{
|
||||
"name" => "admin",
|
||||
"id" => "bd69f96a-005b-4d58-9f6c-b8dd9fbb6339",
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
let(:networks) {
|
||||
[
|
||||
{
|
||||
"name" => "testnet",
|
||||
"id" => "by82a88d-005b-4d58-9f6c-aaaaaaaa1111",
|
||||
"tenant_id" => "admin",
|
||||
"shared" => "true",
|
||||
"external" => "true"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
it 'should raise an exception' do
|
||||
# Expectations over 'create' call
|
||||
allow(provider).to receive(:call_get_tenant).and_return([])
|
||||
allow(provider).to receive(:call_get_token).and_return('thisisafaketoken')
|
||||
expect {
|
||||
provider.create
|
||||
}.to raise_error(RuntimeError)
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
##
|
||||
|
||||
describe 'try to delete a network that does not exist' do
|
||||
# - Tenant Existing
|
||||
# - Network not previously existing
|
||||
|
||||
let(:tenants) {
|
||||
[
|
||||
{
|
||||
"name" => "admin",
|
||||
"id" => "bd69f96a-005b-4d58-9f6c-b8dd9fbb6339",
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
let(:networks) {
|
||||
[
|
||||
{
|
||||
"name" => "testnet",
|
||||
"id" => "by82a88d-005b-4d58-9f6c-aaaaaaaa1111",
|
||||
"tenant_id" => "admin",
|
||||
"shared" => "true",
|
||||
"external" => "true"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
it 'should not fail' do
|
||||
# Expectations over 'create' call
|
||||
allow(provider).to receive(:call_get_tenant).and_return(tenants)
|
||||
allow(provider).to receive(:call_get_network).and_return([])
|
||||
allow(provider).to receive(:call_get_token).and_return('thisisafaketoken')
|
||||
|
||||
expect(provider).not_to receive(:call_delete_network)
|
||||
provider.destroy
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
|
||||
end
|
@ -1,32 +0,0 @@
|
||||
require 'spec_helper'
|
||||
require 'puppet'
|
||||
require 'puppet/type/midonet_network'
|
||||
require 'facter'
|
||||
|
||||
describe Puppet::Type::type(:midonet_network) do
|
||||
|
||||
context 'on default values' do
|
||||
let(:resource) do
|
||||
Puppet::Type.type(:midonet_network).new(
|
||||
:netname => 'testnet',
|
||||
:midonet_api_url => 'http://87.23.43.2:8080/midonet-api',
|
||||
:username => 'admin',
|
||||
:password => 'admin',
|
||||
:tenant_name => 'admin',
|
||||
:shared => true,
|
||||
:external => true,)
|
||||
end
|
||||
|
||||
it 'assign the default values' do
|
||||
expect(resource[:midonet_api_url]).to eq 'http://87.23.43.2:8080/midonet-api'
|
||||
expect(resource[:username]).to eq 'admin'
|
||||
expect(resource[:password]).to eq 'admin'
|
||||
expect(resource[:tenant_name]).to eq 'admin'
|
||||
expect(resource[:shared]).to eq true
|
||||
expect(resource[:external]).to eq true
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
end
|
Loading…
x
Reference in New Issue
Block a user