private NodeInfo(WorkerInfo workerInfo) { mHost = workerInfo.getAddress().getHost(); mLastContactSec = Integer.toString(workerInfo.getLastContactSec()); mWorkerState = workerInfo.getState(); mCapacityBytes = workerInfo.getCapacityBytes(); mUsedBytes = workerInfo.getUsedBytes(); if (mCapacityBytes != 0) { mUsedPercent = (int) (100L * mUsedBytes / mCapacityBytes); } else { mUsedPercent = 0; } mFreePercent = 100 - mUsedPercent; mUptimeClockTime = Utils.convertMsToShortClockTime(System.currentTimeMillis() - workerInfo.getStartTimeMs()); }
/** * Gets the worker address based on its hostname by querying the master. * * @param hostname hostname of the worker to query, empty string denotes any worker * @return NetAddress of hostname, or null if no worker found */ private synchronized NetAddress getWorkerAddress(String hostname) { BlockMasterClient masterClient = acquireMasterClient(); try { List<WorkerInfo> workers = masterClient.getWorkerInfoList(); if (hostname.isEmpty() && !workers.isEmpty()) { // TODO(calvin): Do this in a more defined way. return workers.get(0).getAddress(); } for (WorkerInfo worker : workers) { if (worker.getAddress().getHost().equals(hostname)) { return worker.getAddress(); } } } catch (IOException ioe) { Throwables.propagate(ioe); } finally { releaseMasterClient(masterClient); } return null; }
/** * @return Generated {@link WorkerInfo} for this worker */ public synchronized WorkerInfo generateClientWorkerInfo() { WorkerInfo ret = new WorkerInfo(); ret.id = mId; ret.address = mWorkerAddress; ret.lastContactSec = (int) ((CommonUtils.getCurrentMs() - mLastUpdatedTimeMs) / Constants.SECOND_MS); ret.state = "In Service"; ret.capacityBytes = mCapacityBytes; ret.usedBytes = mUsedBytes; ret.startTimeMs = mStartTimeMs; return ret; }