# # Copyright (C) 2013 eNovance SAS # # Author: Emilien Macchi # Francois Charlier # # 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