<%inherit file="//layout/admin_lite.html"/> <%page expression_filter="h"/> <%namespace name="lib" file="/lib.html" import="stylesheet_tags, add_script_block, csrf_hidden_input, sort_link" /> <%def name="title()">${_('Clustering')} - ${_(parent.title())} <%def name="get_breadcrumbs()"> <% return [ [_('Manager'), ['manager']], [_('Clustering'), ['manager','system','clustering']], [_('Dashboard'),''] ] %>

${_('Clustering Dashboard')}

${_('Configure')}

${_('Master Node Details')}

${_('Master name')} ${master_info.label if master_info.label else master_guid}
${_('Replication factor')} ${clusterStatus.replication_factor}
${_('Search factor')} ${clusterStatus.search_factor}

${_('Cluster Overview')}


<% if isClusterSearchable: statusLabel = _('Searchable') icon = 'green_check_mark_big' else: statusLabel = _('Not Completely Searchable') icon = 'red_warning_big' showWarning = isPeerDown or (not isReplicationFactorMet) or (not isSearchFactorMet) or (numUnsearchableIndexes > 0) or isGenerationCommitFailure numSearchablePeers = peer_statuses.get("Up",0) numUnsearchablePeers = len(peers) - numSearchablePeers %> % if len(peers) == 0:
${_('No Peers Configured')}
${_('To learn how to configure peers, refer to the documentation.')}
${_('Learn more.')}
% else:
 ${statusLabel}
% if showWarning:
    % if isPeerDown:
  •  ${_('A peer is down.')}
  • % endif % if not isReplicationFactorMet:
  •  ${_('Replication factor not met.')}
  • % endif % if not isSearchFactorMet:
  •  ${_('Search factor not met.')}
  • % endif % if numUnsearchableIndexes > 0:
  •  ${_('Indexed data is not completely searchable.')}
  • % endif % if isGenerationCommitFailure:
  •  ${_('Cluster master failed to commit last generation.')}
  • % endif
% else:
${_('All peers and indexes are searchable.')}
% endif
${numSearchablePeers} ${_('peers')}
${_('SEARCHABLE')}
${numUnsearchablePeers} ${_('peers')}
${_('NOT SEARCHABLE')}
${numSearchableIndexes} ${_('indexes')}
${_('SEARCHABLE')}
${numUnsearchableIndexes} ${_('indexes')}
${_('NOT SEARCHABLE')}

${_('Peer Details')}


% for (peer, peer_data) in sorted(peers.items(), key=(lambda x: x[1].get('label'))): <% if peer_data.get('up',False): searchStatus = "Yes" searchableIcon = "green_success_small" else: searchStatus = "No" searchableIcon = "red_warning_small" %> % endfor
${_('Peer Name')} ${_('Searchable')} ${_('Status')} ${_('Buckets')}
${peer_data['label'] if peer_data['label'] else peer_data.get('name', 'None')}  ${_(searchStatus)} ${_(peer_data.get('status','None'))} ${len(peer_data.get('buckets',[]))}

${_('Index Details')}


% for (index, index_data) in sorted(indexes.items(), cmp=(lambda x,y: (x[0][0] == '_' and y[0][0] != '_') and 1 or ((x[0][0] != '_' and y[0][0] == '_') and -1 or cmp(x[0],y[0])))): <% searchable_icon = '' searchable_copies_icon = '' copies_icon = '' index_size = index_data.get('size', 0) num_buckets = index_data.get('buckets',0) if index_data.get('isSearchable',"No") == "Yes" and not isGenerationCommitFailure: searchable = "Yes" searchable_icon = "green_success_small" else: searchable = "No" searchable_icon = "red_warning_small" min_searchable_copies = index_data.get('min_searchable_copies',0) if min_searchable_copies == 0: searchable_copies_icon = "red_warning_small" elif min_searchable_copies < clusterStatus.search_factor: searchable_copies_icon = "yellow_warning_small" min_copies = index_data.get('min_copies',0) if min_copies <= 1: copies_icon = "red_warning_small" elif min_copies < clusterStatus.replication_factor: copies_icon = "yellow_warning_small" %> <% # 1024 * 1024 * 1024 * .005 min_index_size = 5368710 %> % endfor
${_('Index')} ${_('Searchable')} ${_('Replicated Copies')} ${_('Searchable Copies')} ${_('Buckets')} ${_('Size')}
${index}  ${_(searchable)}  ${min_copies}  ${min_searchable_copies} ${num_buckets}${'%.2f GB' % (index_size/(1024.*1024*1024)) if index_size >= min_index_size else '<0.01 GB' }
%endif