def describe_cluster(ClusterId=None):
    """
    Provides cluster-level details including status, hardware and software configuration, VPC settings, and so on. For information about the cluster steps, see  ListSteps .
    See also: AWS API Documentation
    
    
    :example: response = client.describe_cluster(
        ClusterId='string'
    )
    
    
    :type ClusterId: string
    :param ClusterId: [REQUIRED]
            The identifier of the cluster to describe.
            

    :rtype: dict
    :return: {
        'Cluster': {
            'Id': 'string',
            'Name': 'string',
            'Status': {
                'State': 'STARTING'|'BOOTSTRAPPING'|'RUNNING'|'WAITING'|'TERMINATING'|'TERMINATED'|'TERMINATED_WITH_ERRORS',
                'StateChangeReason': {
                    'Code': 'INTERNAL_ERROR'|'VALIDATION_ERROR'|'INSTANCE_FAILURE'|'BOOTSTRAP_FAILURE'|'USER_REQUEST'|'STEP_FAILURE'|'ALL_STEPS_COMPLETED',
                    'Message': 'string'
                },
                'Timeline': {
                    'CreationDateTime': datetime(2015, 1, 1),
                    'ReadyDateTime': datetime(2015, 1, 1),
                    'EndDateTime': datetime(2015, 1, 1)
                }
            },
            'Ec2InstanceAttributes': {
                'Ec2KeyName': 'string',
                'Ec2SubnetId': 'string',
                'RequestedEc2SubnetIds': [
                    'string',
                ],
                'Ec2AvailabilityZone': 'string',
                'RequestedEc2AvailabilityZones': [
                    'string',
                ],
                'IamInstanceProfile': 'string',
                'EmrManagedMasterSecurityGroup': 'string',
                'EmrManagedSlaveSecurityGroup': 'string',
                'ServiceAccessSecurityGroup': 'string',
                'AdditionalMasterSecurityGroups': [
                    'string',
                ],
                'AdditionalSlaveSecurityGroups': [
                    'string',
                ]
            },
            'InstanceCollectionType': 'INSTANCE_FLEET'|'INSTANCE_GROUP',
            'LogUri': 'string',
            'RequestedAmiVersion': 'string',
            'RunningAmiVersion': 'string',
            'ReleaseLabel': 'string',
            'AutoTerminate': True|False,
            'TerminationProtected': True|False,
            'VisibleToAllUsers': True|False,
            'Applications': [
                {
                    'Name': 'string',
                    'Version': 'string',
                    'Args': [
                        'string',
                    ],
                    'AdditionalInfo': {
                        'string': 'string'
                    }
                },
            ],
            'Tags': [
                {
                    'Key': 'string',
                    'Value': 'string'
                },
            ],
            'ServiceRole': 'string',
            'NormalizedInstanceHours': 123,
            'MasterPublicDnsName': 'string',
            'Configurations': [
                {
                    'Classification': 'string',
                    'Configurations': {'... recursive ...'},
                    'Properties': {
                        'string': 'string'
                    }
                },
            ],
            'SecurityConfiguration': 'string',
            'AutoScalingRole': 'string',
            'ScaleDownBehavior': 'TERMINATE_AT_INSTANCE_HOUR'|'TERMINATE_AT_TASK_COMPLETION'
        }
    }
    
    
    :returns: 
    (string) --
    
    """
    pass
