1
0
Fork 0
mirror of https://github.com/fog/fog-aws.git synced 2022-11-09 13:50:52 -05:00
fog--fog-aws/lib/fog/aws/parsers/redshift/cluster_parser.rb
Josh Lane d48d376e9c initial import
* take the liberty of correcting Aws naming
2014-12-31 09:17:51 -08:00

143 lines
5.7 KiB
Ruby

module Fog
module Parsers
module Redshift
module AWS
class ClusterParser < Fog::Parsers::Base
# :cluster_identifier - (String)
# :node_type - (String)
# :cluster_status - (String)
# :modify_status - (String)
# :master_username - (String)
# :db_name - (String)
# :endpoint - (Hash)
# :address - (String)
# :port - (Integer)
# :cluster_create_time - (Time)
# :automated_snapshot_retention_period - (Integer)
# :cluster_security_groups - (Array)
# :cluster_security_group_name - (String)
# :status - (String)
# :vpc_security_groups - (Array)
# :vpc_security_group_id - (String)
# :status - (String)
# :cluster_parameter_groups - (Array)
# :parameter_group_name - (String)
# :parameter_apply_status - (String)
# :cluster_subnet_group_name - (String)
# :vpc_id - (String)
# :availability_zone - (String)
# :preferred_maintenance_window - (String)
# :pending_modified_values - (Hash)
# :master_user_password - (String)
# :node_type - (String)
# :number_of_nodes - (Integer)
# :cluster_type - (String)
# :cluster_version - (String)
# :automated_snapshot_retention_period - (Integer)
# :cluster_version - (String)
# :allow_version_upgrade - (Boolean)
# :number_of_nodes - (Integer)
# :publicly_accessible - (Boolean)
# :encrypted - (Boolean)
# :restore_status - (Hash)
# :status - (String)
# :current_restore_rate_in_mega_bytes_per_second - (Numeric)
# :snapshot_size_in_mega_bytes - (Integer)
# :progress_in_mega_bytes - (Integer)
# :elapsed_time_in_seconds - (Integer)
# :estimated_time_to_completion_in_seconds - (Integer)
def reset
@cluster = fresh_cluster
end
def fresh_cluster
{ 'ClusterParameterGroups' => [], 'ClusterSecurityGroups' => [], 'VpcSecurityGroups' => [],
'EndPoint' => {}, 'PendingModifiedValues'=> {}, 'RestoreStatus' => {}}
end
def start_element(name, attrs = [])
super
case name
when 'ClusterSecurityGroups'
@in_cluster_security_groups = true
@cluster_security_group = {}
when 'ClusterParameterGroups'
@cluster_parameter_group = {}
when 'VpcSecurityGroups'
@in_vpc_security_groups = true
@vpc_security_group = {}
when 'PendingModifiedValues'
@in_pending_modified_values = true
end
end
def end_element(name)
case name
when 'AvailabilityZone', 'ClusterIdentifier', 'ClusterStatus', 'ClusterSubnetGroupName', 'DBName',
'MasterUsername', 'ModifyStatus', 'PreferredMaintenanceWindow', 'VpcId'
@cluster[name] = value
when 'ClusterCreateTime'
@cluster[name] = Time.parse(value)
when 'AllowVersionUpgrade', 'Encrypted', 'PubliclyAccessible'
@cluster[name] = (value == "true")
when 'Address'
@cluster['EndPoint'][name] = value
when 'Port'
@cluster['EndPoint'][name] = value.to_i
when 'NodeType', 'ClusterVersion'
if @in_pending_modified_values
@cluster['PendingModifiedValues'][name] = value
else
@cluster[name] = value
end
when 'NumberOfNodes', 'AutomatedSnapshotRetentionPeriod'
if @in_pending_modified_values
@cluster['PendingModifiedValues'][name] = value.to_i
else
@cluster[name] = value.to_i
end
when 'MasterUserPassword', 'ClusterType'
@cluster['PendingModifiedValues'][name] = value
when 'Status'
if @in_vpc_security_groups
@vpc_security_group[name] = value
elsif @in_cluster_security_groups
@cluster_security_group[name] = value
else
@cluster['RestoreStatus'][name] = value
end
when 'ParameterGroupName', 'ParameterApplyStatus'
@cluster_parameter_group[name] = value
when 'ClusterSecurityGroupName'
@cluster_security_group[name] = value
when 'VpcSecurityGroupId'
@vpc_security_group[name] = value
when 'SnapshotSizeInMegaBytes', 'ProgressInMegaBytes', 'ElapsedTimeInSeconds', 'EstimatedTimeToCompletionInSeconds'
@cluster['RestoreStatus'][name] = value.to_i
when 'CurrentRestoreRateInMegaBytesPerSecond'
@cluster['RestoreStatus'][name] = value.to_f
when 'ClusterSecurityGroups'
@in_cluster_security_groups = false
when 'VpcSecurityGroups'
@in_vpc_security_groups = false
when 'PendingModifiedValues'
@in_pending_modified_values = false
when 'ClusterParameterGroup'
@cluster['ClusterParameterGroups'] << {name => @cluster_parameter_group}
@cluster_parameter_group = {}
when 'ClusterSecurityGroup'
@cluster['ClusterSecurityGroups'] << {name => @cluster_security_group}
@cluster_security_group = {}
when 'VpcSecurityGroup'
@cluster['VpcSecurityGroups'] << {name => @vpc_security_group}
@vpc_security_group = {}
end
end
end
end
end
end
end