def get_replacement_summary(request, cluster_name, event, current_capacity):
    host_ids = event.get('host_ids')
    state = event.get('state')
    status = event.get('status')
    progress_type = 'success' if status in ['SUCCEEDING', 'SUCCEEDED'
                                            ] else 'danger'
    if not host_ids:
        num_finished_host_ids = 0
    else:
        num_finished_host_ids = len(host_ids.split(','))
    if state == 'COMPLETED':
        if status == 'SUCCEEDED':
            # successful
            succeeded = num_finished_host_ids
            progress_rate = 100
            msg = event.get('error_message', '')
            return {
                'id':
                event.get('id'),
                'state':
                state,
                'status':
                status,
                'startDate':
                event.get('start_time'),
                'lastUpdateDate':
                event.get('last_worked_on'),
                'progressType':
                progress_type,
                'progressTip':
                'Among total {} hosts, {} successfully replaced and {} are pending'
                .format(succeeded, succeeded, 0),
                'successRatePercentage':
                progress_rate,
                'successRate':
                '{}% ({}/{})'.format(progress_rate, succeeded, succeeded),
                'description':
                msg
            }
        else:
            # failed
            succeeded = num_finished_host_ids
            progress_rate = succeeded * 100 / current_capacity
            msg = event.get('error_message', '')
            return {
                'id':
                event.get('id'),
                'state':
                state,
                'status':
                status,
                'startDate':
                event.get('start_time'),
                'lastUpdateDate':
                event.get('last_worked_on'),
                'progressType':
                progress_type,
                'progressTip':
                'Among total {} hosts, {} successfully replaced and {} are pending. Reason: {}'
                .format(current_capacity, succeeded,
                        current_capacity - succeeded, msg),
                'successRatePercentage':
                progress_rate,
                'successRate':
                '{}% ({}/{})'.format(progress_rate, succeeded,
                                     current_capacity),
                'description':
                msg
            }

    else:
        # on-going event
        replaced_and_succeeded_hosts = groups_helper.get_replaced_and_good_hosts(
            request, cluster_name)
        succeeded = len(replaced_and_succeeded_hosts)
        progress_rate = succeeded * 100 / current_capacity
        # its not necessarily error message
        on_going_msg = event.get('error_message')
        return {
            'id':
            event.get('id'),
            'state':
            state,
            'status':
            status,
            'startDate':
            event.get('start_time'),
            'lastUpdateDate':
            event.get('last_worked_on'),
            'progressType':
            progress_type,
            'progressTip':
            'Among total {} hosts, {} successfully replaced and {} are pending. {}'
            .format(current_capacity, succeeded, current_capacity - succeeded,
                    on_going_msg),
            'successRatePercentage':
            progress_rate,
            'successRate':
            '{}% ({}/{})'.format(progress_rate, succeeded, current_capacity)
        }
Esempio n. 2
0
def get_replacement_summary(request, cluster_name, event, current_capacity):
    host_ids = event.get('host_ids')
    state = event.get('state')
    status = event.get('status')
    progress_type = 'success' if status in [
        'SUCCEEDING', 'SUCCEEDED'] else 'danger'
    if not host_ids:
        num_finished_host_ids = 0
    else:
        num_finished_host_ids = len(host_ids.split(','))
    if state == 'COMPLETED':
        if status == 'SUCCEEDED':
            # successful
            succeeded = num_finished_host_ids
            progress_rate = 100
            msg = event.get('error_message', '')
            return {
                'id': event.get('id'),
                'state': state,
                'status': status,
                'startDate': event.get('start_time'),
                'lastUpdateDate': event.get('last_worked_on'),
                'progressType': progress_type,
                'progressTip': 'Among total {} hosts, {} successfully replaced and {} are pending'.format(
                    succeeded, succeeded, 0),
                'successRatePercentage': progress_rate,
                'successRate': '{}% ({}/{})'.format(progress_rate, succeeded, succeeded),
                'description': msg
            }
        else:
            # failed
            succeeded = num_finished_host_ids
            progress_rate = succeeded * 100 / current_capacity
            msg = event.get('error_message', '')
            return {
                'id': event.get('id'),
                'state': state,
                'status': status,
                'startDate': event.get('start_time'),
                'lastUpdateDate': event.get('last_worked_on'),
                'progressType': progress_type,
                'progressTip': 'Among total {} hosts, {} successfully replaced and {} are pending. Reason: {}'.format(
                    current_capacity, succeeded, current_capacity - succeeded, msg),
                'successRatePercentage': progress_rate,
                'successRate': '{}% ({}/{})'.format(progress_rate, succeeded, current_capacity),
                'description': msg
            }

    else:
        # on-going event
        replaced_and_succeeded_hosts = groups_helper.get_replaced_and_good_hosts(
            request, cluster_name)
        succeeded = len(replaced_and_succeeded_hosts)
        progress_rate = succeeded * 100 / current_capacity
        # its not necessarily error message
        on_going_msg = event.get('error_message')
        return {
            'id': event.get('id'),
            'state': state,
            'status': status,
            'startDate': event.get('start_time'),
            'lastUpdateDate': event.get('last_worked_on'),
            'progressType': progress_type,
            'progressTip': 'Among total {} hosts, {} successfully replaced and {} are pending. {}'.format(
                current_capacity, succeeded, current_capacity - succeeded, on_going_msg),
            'successRatePercentage': progress_rate,
            'successRate': '{}% ({}/{})'.format(progress_rate, succeeded, current_capacity)
        }