+++ /dev/null
-# -*- coding: utf-8 -*-
-#
-# Copyright (C) 2014 Deutsche Telekom AG
-#
-# Author: Thomas Bechtold <t.bechtold@telekom.de>
-#
-# 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_aggregate type
-#
-# == Parameters
-# [*name*]
-# Name for the new aggregate
-# Required
-#
-# [*availability_zone*]
-# The availability zone. ie "zone1"
-# Optional
-#
-# [*metadata*]
-# String with key/value pairs. ie "key=value,key=value"
-# Optional
-#
-# [*hosts*]
-# A comma seperated list with hosts or a single host. ie "host1,host2"
-# Optional
-#
-
-require 'puppet'
-
-Puppet::Type.newtype(:nova_aggregate) do
-
- @doc = "Manage creation of nova aggregations."
-
- ensurable
-
- autorequire(:nova_config) do
- ['auth_host', 'auth_port', 'auth_protocol', 'admin_tenant_name', 'admin_user', 'admin_password']
- end
-
- newparam(:name, :namevar => true) do
- desc 'Name for the new aggregate'
- validate do |value|
- if not value.is_a? String
- raise ArgumentError, "name parameter must be a String"
- end
- unless value =~ /[a-z0-9]+/
- raise ArgumentError, "#{value} is not a valid name"
- end
- end
- end
-
- newproperty(:id) do
- desc 'The unique Id of the aggregate'
- validate do |v|
- raise ArgumentError, 'This is a read only property'
- end
- end
-
- newproperty(:availability_zone) do
- desc 'The availability zone of the aggregate'
- validate do |value|
- if not value.is_a? String
- raise ArgumentError, "availability zone must be a String"
- end
- end
- end
-
- newproperty(:metadata) do
- desc 'The metadata of the aggregate'
- #convert DSL/string form to internal form which is a single hash
- munge do |value|
- internal = Hash.new
- value.split(",").map{|el| el.strip()}.each do |pair|
- key, value = pair.split("=", 2)
- internal[key.strip()] = value.strip()
- end
- return internal
- end
-
- validate do |value|
- value.split(",").each do |kv|
- raise ArgumentError, "Key/value pairs must be separated by an =" unless value.include?("=")
- end
- end
- end
-
- newproperty(:hosts) do
- desc 'Single host or comma seperated list of hosts'
- #convert DSL/string form to internal form
- munge do |value|
- return value.split(",").map{|el| el.strip()}
- end
- end
-
- validate do
- raise ArgumentError, 'Name type must be set' unless self[:name]
- end
-
-end