VoltTable results = new VoltTable(clusterInfoSchema);
// it would be awesome if these property names could come
// from the RestApiDescription.xml (or the equivalent thereof) someday --izzy
results.addRow("voltdbroot", cluster.getVoltroot());
Deployment deploy = cluster.getDeployment().get("deployment");
results.addRow("hostcount", Integer.toString(deploy.getHostcount()));
results.addRow("kfactor", Integer.toString(deploy.getKfactor()));
results.addRow("sitesperhost", Integer.toString(deploy.getSitesperhost()));
String http_enabled = "false";
int http_port = VoltDB.instance().getConfig().m_httpPort;
if (http_port != -1 && http_port != Integer.MAX_VALUE) {
http_enabled = "true";
results.addRow("httpport", Integer.toString(http_port));
}
results.addRow("httpenabled", http_enabled);
String json_enabled = "false";
if (cluster.getJsonapi())
{
json_enabled = "true";
}
results.addRow("jsonenabled", json_enabled);
SnapshotSchedule snaps = database.getSnapshotschedule().get("default");
String snap_enabled = "false";
if (snaps != null && snaps.getEnabled())
{
snap_enabled = "true";
String snap_freq = Integer.toString(snaps.getFrequencyvalue()) + snaps.getFrequencyunit();
results.addRow("snapshotpath", snaps.getPath());
results.addRow("snapshotprefix", snaps.getPrefix());
results.addRow("snapshotfrequency", snap_freq);
results.addRow("snapshotretain", Integer.toString(snaps.getRetain()));
}
results.addRow("snapshotenabled", snap_enabled);
Connector export_conn = database.getConnectors().get("0");
String export_enabled = "false";
if (export_conn != null && export_conn.getEnabled())
{
export_enabled = "true";
results.addRow("exportoverflowpath", cluster.getExportoverflow());
}
results.addRow("export", export_enabled);
String partition_detect_enabled = "false";
if (cluster.getNetworkpartition())
{
partition_detect_enabled = "true";
String partition_detect_snapshot_path =
cluster.getFaultsnapshots().get("CLUSTER_PARTITION").getPath();
String partition_detect_snapshot_prefix =
cluster.getFaultsnapshots().get("CLUSTER_PARTITION").getPrefix();
results.addRow("snapshotpath",
partition_detect_snapshot_path);
results.addRow("partitiondetectionsnapshotprefix",
partition_detect_snapshot_prefix);
}
results.addRow("partitiondetection", partition_detect_enabled);
results.addRow("heartbeattimeout", Integer.toString(cluster.getHeartbeattimeout()));
results.addRow("adminport", Integer.toString(VoltDB.instance().getConfig().m_adminPort));
String adminstartup = "false";
if (cluster.getAdminstartup())
{
adminstartup = "true";
}
results.addRow("adminstartup", adminstartup);
String command_log_enabled = "false";
// log name is MAGIC, you knoooow
CommandLog command_log = cluster.getLogconfig().get("log");
if (command_log.getEnabled())
{
command_log_enabled = "true";
String command_log_mode = "async";
if (command_log.getSynchronous())
{
command_log_mode = "sync";
}
String command_log_path = command_log.getLogpath();
String command_log_snaps = command_log.getInternalsnapshotpath();
String command_log_fsync_interval =
Integer.toString(command_log.getFsyncinterval());
String command_log_max_txns =
Integer.toString(command_log.getMaxtxns());
results.addRow("commandlogmode", command_log_mode);
results.addRow("commandlogfreqtime", command_log_fsync_interval);
results.addRow("commandlogfreqtxns", command_log_max_txns);
results.addRow("commandlogpath", command_log_path);
results.addRow("commandlogsnapshotpath", command_log_snaps);
}
results.addRow("commandlogenabled", command_log_enabled);
String users = "";
for (User user : database.getUsers())
{
users += addEscapes(user.getTypeName());
if (user.getGroups() != null && user.getGroups().size() > 0)
{
users += ":";
for (GroupRef gref : user.getGroups())
{
users += addEscapes(gref.getGroup().getTypeName());
users += ",";
}
users = users.substring(0, users.length() - 1);
}
users += ";";
}
results.addRow("users", users);
// Add system setting information also
// the attribute names follows the above naming rule
Systemsettings sysSettings = deploy.getSystemsettings().get("systemsettings");
results.addRow("elasticduration", Integer.toString(sysSettings.getElasticduration()));
results.addRow("elasticthroughput", Integer.toString(sysSettings.getElasticthroughput()));
results.addRow("snapshotpriority", Integer.toString(sysSettings.getSnapshotpriority()));
results.addRow("temptablesmaxsize", Integer.toString(sysSettings.getTemptablemaxsize()));
results.addRow("querytimeout", Integer.toString(sysSettings.getQuerytimeout()));