require 'fog/core/model' module Fog module AWS class Elasticache class Cluster < Fog::Model # simple attributes identity :id, :aliases => 'CacheClusterId' attribute :auto_upgrade, :aliases => 'AutoMinorVersionUpgrade' attribute :status, :aliases => 'CacheClusterStatus' attribute :node_type, :aliases => 'CacheNodeType' attribute :engine, :aliases => 'Engine' attribute :engine_version, :aliases => 'EngineVersion' attribute :num_nodes, :aliases => 'NumCacheNodes' attribute :zone, :aliases => 'PreferredAvailabilityZone' attribute :maintenance_window, :aliases => 'PreferredMaintenanceWindow' # complex attributes attribute :nodes, :aliases => 'CacheNodes', :type => :array attribute :parameter_group, :aliases => 'CacheParameterGroup', :type => :hash attribute :pending_values, :aliases => 'PendingModifiedValues', :type => :hash attribute :create_time, :aliases => 'CacheClusterCreateTime', :type => :date_time attribute :security_groups, :aliases => 'CacheSecurityGroupNames', :type => :array attribute :notification_config, :aliases => 'NotificationConfiguration', :type => :hash def ready? status == 'available' end def destroy requires :id connection.delete_cache_cluster(id) true end def save requires :id requires :node_type requires :security_groups requires :engine requires :num_nodes parameter_group ||= Hash.new notification_config ||= Hash.new security_groups ||= Array.new connection.create_cache_cluster( id, { :node_type => node_type, :security_group_names => security_groups, :num_nodes => num_nodes, :auto_minor_version_upgrade => auto_upgrade, :engine => engine, :engine_version => engine_version, :notification_topic_arn => notification_config['TopicArn'], :port => port, :preferred_availablility_zone => zone, :preferred_maintenance_window => maintenance_window, :parameter_group_name => parameter_group['CacheParameterGroupName'], } ) end end end end end