93 lines
2.3 KiB
Ruby
93 lines
2.3 KiB
Ruby
#
|
|
# Copyright (C) 2013 eNovance SAS <licensing@enovance.com>
|
|
#
|
|
# Author: Emilien Macchi <emilien.macchi@enovance.com>
|
|
# Francois Charlier <francois.charlier@enovance.com>
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
|
# not use this file except in compliance with the License. You may obtain
|
|
# a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
|
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
|
# License for the specific language governing permissions and limitations
|
|
# under the License.
|
|
#
|
|
#
|
|
# nova_cells provider
|
|
#
|
|
# CELL v1 IS DEPRECATED AND WILL BE REMOVED
|
|
#
|
|
|
|
require File.join(File.dirname(__FILE__), '..','..','..', 'puppet/provider/nova')
|
|
|
|
Puppet::Type.type(:nova_cells).provide(
|
|
:nova_manage,
|
|
:parent => Puppet::Provider::Nova
|
|
) do
|
|
|
|
desc "Manage nova cells"
|
|
|
|
def self.instances
|
|
begin
|
|
cells_list = nova_manage_request("cell", "list")
|
|
rescue Exception => e
|
|
if e.message =~ /No cells defined/
|
|
return []
|
|
else
|
|
raise(e)
|
|
end
|
|
end
|
|
cells_list.split("\n")[1..-1].collect do |net|
|
|
if net =~ /^(\S+)\s+(\S+)/
|
|
new(:name => $2 )
|
|
end
|
|
end.compact
|
|
end
|
|
|
|
|
|
def create
|
|
optional_opts = []
|
|
{
|
|
:name => '--name',
|
|
:cell_type => '--cell_type',
|
|
:rabbit_username => '--username',
|
|
:rabbit_password => '--password',
|
|
:rabbit_hosts => '--hostname',
|
|
:rabbit_port => '--port',
|
|
:rabbit_virtual_host => '--virtual_host',
|
|
:weight_offset => '--woffset',
|
|
:weight_scale => '--wscale'
|
|
|
|
}.each do |param, opt|
|
|
if resource[param]
|
|
optional_opts.push(opt).push(resource[param])
|
|
end
|
|
end
|
|
|
|
nova_manage_request('cell', 'create',
|
|
optional_opts
|
|
)
|
|
end
|
|
|
|
def exists?
|
|
begin
|
|
cells_list = nova_manage_request("cell", "list")
|
|
return cells_list.split("\n")[1..-1].detect do |n|
|
|
n =~ /^(\S+)\s+(#{resource[:cells].split('/').first})/
|
|
end
|
|
rescue
|
|
return false
|
|
end
|
|
end
|
|
|
|
|
|
def destroy
|
|
nova_manage_request("cell", "delete", resource[:name])
|
|
end
|
|
|
|
end
|