'Destroy this cluster by first detaching all volumes, shutting down all
instances, canceling all spot requests (if any), removing its placement
group (if any), and removing its security group.'

def terminate_cluster(self, force=False):

    try:
        self.run_plugins(method_name='on_shutdown', reverse=True)
    except exception.MasterDoesNotExist as e:
        if force:
            log.warn(('Cannot    run    plugins:    %s' % e))
        else:
            raise
    self.detach_volumes()
    nodes = self.nodes
    for node in nodes:
        node.terminate()
    for spot in self.spot_requests:
        if (spot.state not in ['cancelled', 'closed']):
            log.info(('Canceling    spot    instance    request:    %s' % spot.id))
            spot.cancel()
    s = utils.get_spinner('Waiting    for    cluster    to    terminate...')
    try:
        while (not self.is_cluster_terminated()):
            time.sleep(5)
    finally:
        s.stop()
    region = self.ec2.region.name
    if (region in static.PLACEMENT_GROUP_REGIONS):
        pg = self.ec2.get_placement_group_or_none(self._security_group)
        if pg:
            self.ec2.delete_group(pg)
    sg = self.ec2.get_group_or_none(self._security_group)
    if sg:
        self.ec2.delete_group(sg)
