blob: a08226bfe34bffbbb8b116f3de7f180f044783e4 [file] [log] [blame]
/*
* Copyright 2018-present Open Networking Foundation
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.onosproject.ovsdb.rfc.table;
import org.onosproject.ovsdb.rfc.notation.Column;
import org.onosproject.ovsdb.rfc.notation.Row;
import org.onosproject.ovsdb.rfc.schema.DatabaseSchema;
import org.onosproject.ovsdb.rfc.tableservice.AbstractOvsdbTableService;
import org.onosproject.ovsdb.rfc.tableservice.ColumnDescription;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* This class provides operations of Cpu Memory Table.
*/
public class CpuMemoryData extends AbstractOvsdbTableService {
private static final Pattern PATTERN_MEMORY = Pattern.compile(
"Mem:\\s*(\\d+) total,\\s*(\\d+) used,\\s*(\\d+) free,\\s*(\\d+) buffers");
private static final Pattern PATTERN_CPU = Pattern.compile(
":\\s*(\\d*\\.\\d+) us,\\s*(\\d*\\.\\d+) sy,\\s*(\\d*\\.\\d+) ni," +
"\\s*(\\d*\\.\\d+) id,\\s*(\\d*\\.\\d+) wa," +
"\\s*(\\d*\\.\\d+) hi,\\s*(\\d*\\.\\d+) si,\\s*(\\d*\\.\\d+) st");
private static final long BYTES_IN_KILOBYTE = 1024L;
/**
* Cpu Memory Data table column name.
*/
public enum CpuMemoryDataColumn {
CPU("cpu"), UPTIME("uptime"),
TASKS("tasks"), MEMORY("memory");
private final String columnName;
private CpuMemoryDataColumn(String columnName) {
this.columnName = columnName;
}
/**
* Returns the table column name for CpuMemoryDataColumn.
* @return the table column name
*/
public String columnName() {
return columnName;
}
}
/**
* Constructs a CpuMemoryData object. Generate Cpu Memory Data Table Description.
* @param dbSchema DatabaseSchema
* @param row Row
*/
public CpuMemoryData(DatabaseSchema dbSchema, Row row) {
super(dbSchema, row, OvsdbTable.CPUMEMORYDATA, VersionNum.VERSION010, VersionNum.VERSION010);
}
/**
* Get the Column entity with column name "memory" from the Row entity of
* attributes.
* @return the Column entity with column name "memory"
*/
public Column getMemoryColumn() {
ColumnDescription columnDescription = new ColumnDescription(
CpuMemoryDataColumn.MEMORY
.columnName(),
"getMemoryColumn",
VersionNum.VERSION010);
return super.getColumnHandler(columnDescription);
}
/**
* Get the Column entity with column name "cpu" from the Row entity of
* attributes.
* @return the Column entity with column name "cpu"
*/
public Column getCpuColumn() {
ColumnDescription columnDescription = new ColumnDescription(
CpuMemoryDataColumn.CPU
.columnName(),
"getCpuColumn",
VersionNum.VERSION010);
return super.getColumnHandler(columnDescription);
}
/**
* Get the total memory avaliable in KB.
* @return the total memory (in KB)
*/
public long getTotalMemoryStats() {
String memoryStats = getMemoryColumn().data().toString();
Matcher matcher = PATTERN_MEMORY.matcher(memoryStats);
if (!matcher.find()) {
return 0;
}
return Long.parseLong(matcher.group(1)) * BYTES_IN_KILOBYTE;
}
/**
* Get used memory stats in KB.
* @return used memory in device (in KB)
*/
public long getUsedMemoryStats() {
String memoryStats = getMemoryColumn().data().toString();
Matcher matcher = PATTERN_MEMORY.matcher(memoryStats);
if (!matcher.find()) {
return 0;
}
return Long.parseLong(matcher.group(2)) * BYTES_IN_KILOBYTE;
}
/**
* Get free memory stats in KB.
* @return free memory in device (in KB)
*/
public long getFreeMemoryStats() {
String memoryStats = getMemoryColumn().data().toString();
Matcher matcher = PATTERN_MEMORY.matcher(memoryStats);
if (!matcher.find()) {
return 0;
}
return Long.parseLong(matcher.group(3)) * BYTES_IN_KILOBYTE;
}
/**
* Get free cpu usage stats.
* @return free cpu stats
*/
public float getFreeCpuStats() {
System.out.println("COLUMN RECIVED IS {}" + getCpuColumn());
String cpuStatsStr = getCpuColumn().data().toString();
Matcher matcher = PATTERN_CPU.matcher(cpuStatsStr);
if (!matcher.find()) {
return 0;
}
return Float.parseFloat(matcher.group(4));
}
}