mirror of
https://github.com/fog/fog-aws.git
synced 2022-11-09 13:50:52 -05:00
144 lines
5.7 KiB
Ruby
144 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
|