Refactored HmcClient to be stateless in regards to systems and partitions.
This commit is contained in:
parent
2b95adcb23
commit
05909c7267
|
@ -8,48 +8,14 @@ import groovy.util.logging.Slf4j
|
||||||
@Slf4j
|
@Slf4j
|
||||||
class App {
|
class App {
|
||||||
|
|
||||||
|
HmcClient hmc
|
||||||
|
|
||||||
|
Map<String,ManagedSystem> systems = new HashMap<String, ManagedSystem>()
|
||||||
|
Map<String, LogicalPartition> partitions = new HashMap<String, LogicalPartition>()
|
||||||
|
|
||||||
|
|
||||||
App(String... args) {
|
App(String... args) {
|
||||||
|
|
||||||
println("App()")
|
|
||||||
|
|
||||||
Map<String,ManagedSystem> systems = new HashMap<String, ManagedSystem>()
|
|
||||||
Map<String, LogicalPartition> partitions = new HashMap<String, LogicalPartition>()
|
|
||||||
|
|
||||||
|
|
||||||
HmcClient hmc
|
|
||||||
try {
|
|
||||||
hmc = new HmcClient("https://10.32.64.39:12443", "hmci", "hmcihmci")
|
|
||||||
hmc.login()
|
|
||||||
|
|
||||||
hmc.getManagedSystems().each { systemKey, system ->
|
|
||||||
|
|
||||||
// Add to list of known systems
|
|
||||||
systems.putIfAbsent(systemKey, system)
|
|
||||||
|
|
||||||
// Get and process metrics for this system
|
|
||||||
String json = hmc.getPcmForManagedSystemWithId(system)
|
|
||||||
system.processPcmJson(json)
|
|
||||||
|
|
||||||
|
|
||||||
/*hmc.getLogicalPartitionsForManagedSystem(systemValue).each { lparKey, lpar ->
|
|
||||||
partitions.putIfAbsent(lparKey, lpar)
|
|
||||||
//hmc.get
|
|
||||||
}*/
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
hmc.logoff()
|
|
||||||
} catch(Exception e) {
|
|
||||||
log.error(e.message)
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
static void main(String... args) {
|
|
||||||
|
|
||||||
|
|
||||||
def cli = new CliBuilder()
|
def cli = new CliBuilder()
|
||||||
cli.h(longOpt: 'help', 'display usage')
|
cli.h(longOpt: 'help', 'display usage')
|
||||||
cli.v(longOpt: 'version', 'display version')
|
cli.v(longOpt: 'version', 'display version')
|
||||||
|
@ -66,10 +32,110 @@ class App {
|
||||||
// TODO: Read configuration file or create new empty file,
|
// TODO: Read configuration file or create new empty file,
|
||||||
// pass the properties or configuration bean to App.
|
// pass the properties or configuration bean to App.
|
||||||
|
|
||||||
new App(args)
|
println("HMC Insights")
|
||||||
|
|
||||||
|
hmc = new HmcClient("https://10.32.64.39:12443", "hmci", "hmcihmci")
|
||||||
|
hmc.login()
|
||||||
|
|
||||||
|
scan()
|
||||||
|
|
||||||
|
metricsForSystems()
|
||||||
|
|
||||||
|
metricsForPartitions()
|
||||||
|
|
||||||
|
hmc?.logoff()
|
||||||
|
|
||||||
System.exit(0);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void scan() {
|
||||||
|
|
||||||
|
try {
|
||||||
|
|
||||||
|
if(hmc == null) {
|
||||||
|
hmc = new HmcClient("https://10.32.64.39:12443", "hmci", "hmcihmci")
|
||||||
|
hmc.login()
|
||||||
|
}
|
||||||
|
|
||||||
|
hmc.getManagedSystems().each { systemId, system ->
|
||||||
|
|
||||||
|
// Add to list of known systems
|
||||||
|
systems.putIfAbsent(systemId, system)
|
||||||
|
|
||||||
|
// Get LPAR's for this system
|
||||||
|
hmc.getLogicalPartitionsForManagedSystemWithId(systemId).each { partitionId, partition ->
|
||||||
|
|
||||||
|
// Add to list of known partitions
|
||||||
|
partitions.putIfAbsent(partitionId, partition)
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
} catch(Exception e) {
|
||||||
|
log.error(e.message)
|
||||||
|
hmc = null
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void metricsForSystems() {
|
||||||
|
|
||||||
|
try {
|
||||||
|
|
||||||
|
if(hmc == null) {
|
||||||
|
hmc = new HmcClient("https://10.32.64.39:12443", "hmci", "hmcihmci")
|
||||||
|
hmc.login()
|
||||||
|
}
|
||||||
|
|
||||||
|
systems.each {systemId, system ->
|
||||||
|
|
||||||
|
// Get and process metrics for this system
|
||||||
|
String tmpJsonString = hmc.getPcmDataForManagedSystem(systemId)
|
||||||
|
if(tmpJsonString && !tmpJsonString.empty) {
|
||||||
|
system.processMetrics(tmpJsonString)
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
} catch(Exception e) {
|
||||||
|
log.error(e.message)
|
||||||
|
hmc = null
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void metricsForPartitions() {
|
||||||
|
|
||||||
|
try {
|
||||||
|
|
||||||
|
if(hmc == null) {
|
||||||
|
hmc = new HmcClient("https://10.32.64.39:12443", "hmci", "hmcihmci")
|
||||||
|
hmc.login()
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// Get LPAR's for this system
|
||||||
|
partitions.each { partitionId, partition ->
|
||||||
|
|
||||||
|
// Get and process metrics for this partition
|
||||||
|
String tmpJsonString2 = hmc.getPcmDataForLogicalPartition(partition.systemId, partitionId)
|
||||||
|
if(tmpJsonString2 && !tmpJsonString2.empty) {
|
||||||
|
partition.processMetrics(tmpJsonString2)
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
} catch(Exception e) {
|
||||||
|
log.error(e.message)
|
||||||
|
hmc = null
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static void main(String... args) {
|
||||||
|
new App(args)
|
||||||
|
System.exit(0);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
|
@ -1,7 +1,5 @@
|
||||||
package biz.nellemann.hmci
|
package biz.nellemann.hmci
|
||||||
|
|
||||||
|
|
||||||
import groovy.json.JsonSlurper
|
|
||||||
import groovy.util.logging.Slf4j
|
import groovy.util.logging.Slf4j
|
||||||
import groovy.xml.XmlSlurper
|
import groovy.xml.XmlSlurper
|
||||||
import okhttp3.MediaType
|
import okhttp3.MediaType
|
||||||
|
@ -39,11 +37,17 @@ class HmcClient {
|
||||||
this.username = username
|
this.username = username
|
||||||
this.password = password
|
this.password = password
|
||||||
|
|
||||||
//this.client = new OkHttpClient()
|
//this.client = new OkHttpClient() // OR Unsafe (ignore SSL errors) below
|
||||||
this.client = getUnsafeOkHttpClient()
|
this.client = getUnsafeOkHttpClient()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Logon to the HMC and get an authentication token for further requests.
|
||||||
|
*
|
||||||
|
* @throws IOException
|
||||||
|
*/
|
||||||
void login() throws IOException {
|
void login() throws IOException {
|
||||||
|
|
||||||
String payload = """\
|
String payload = """\
|
||||||
|
@ -75,6 +79,11 @@ class HmcClient {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Logoff from the HMC and remove any session
|
||||||
|
*
|
||||||
|
*/
|
||||||
void logoff() {
|
void logoff() {
|
||||||
URL absUrl = new URL(String.format("%s/rest/api/web/Logon", baseUrl))
|
URL absUrl = new URL(String.format("%s/rest/api/web/Logon", baseUrl))
|
||||||
Request request = new Request.Builder()
|
Request request = new Request.Builder()
|
||||||
|
@ -93,6 +102,12 @@ class HmcClient {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return Map of ManagedSystems seen by this HMC
|
||||||
|
*
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
Map<String, ManagedSystem> getManagedSystems() {
|
Map<String, ManagedSystem> getManagedSystems() {
|
||||||
|
|
||||||
log.debug("getManagedSystems()")
|
log.debug("getManagedSystems()")
|
||||||
|
@ -121,21 +136,19 @@ class HmcClient {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void getLogicalPartitions() {
|
|
||||||
log.debug("getLogicalPartitions()")
|
|
||||||
managedSystems.each {
|
|
||||||
getLogicalPartitionsForManagedSystem(it.getValue())
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return Map of LogicalPartitions seen by a ManagedSystem on this HMC
|
||||||
|
|
||||||
Map<String, LogicalPartition> getLogicalPartitionsForManagedSystem(ManagedSystem system) {
|
* @param UUID of managed system
|
||||||
log.debug("getLogicalPartitionsForManagedSystem() - " + system.name)
|
* @return
|
||||||
|
*/
|
||||||
|
Map<String, LogicalPartition> getLogicalPartitionsForManagedSystemWithId(String systemId) {
|
||||||
|
log.debug("getLogicalPartitionsForManagedSystem() - systemId: " + systemId)
|
||||||
|
|
||||||
URL url = new URL(String.format("%s/rest/api/uom/ManagedSystem/%s/LogicalPartition", baseUrl, system.id))
|
URL url = new URL(String.format("%s/rest/api/uom/ManagedSystem/%s/LogicalPartition", baseUrl, systemId))
|
||||||
Response response = getResponse(url)
|
Response response = getResponse(url)
|
||||||
String responseBody = response.body.string()
|
String responseBody = response.body.string()
|
||||||
//log.debug(responseBody)
|
|
||||||
|
|
||||||
Map<String, LogicalPartition> partitionMap = new HashMap<String, LogicalPartition>() {}
|
Map<String, LogicalPartition> partitionMap = new HashMap<String, LogicalPartition>() {}
|
||||||
def feed = new XmlSlurper().parseText(responseBody)
|
def feed = new XmlSlurper().parseText(responseBody)
|
||||||
|
@ -144,11 +157,11 @@ class HmcClient {
|
||||||
entry.content.each { content ->
|
entry.content.each { content ->
|
||||||
//log.debug("Content")
|
//log.debug("Content")
|
||||||
content.LogicalPartition.each { partition ->
|
content.LogicalPartition.each { partition ->
|
||||||
LogicalPartition logicalPartition = new LogicalPartition(partition.PartitionUUID as String)
|
LogicalPartition logicalPartition = new LogicalPartition(partition.PartitionUUID as String, systemId)
|
||||||
logicalPartition.name = partition.PartitionName
|
logicalPartition.name = partition.PartitionName
|
||||||
logicalPartition.type = partition.PartitionType
|
logicalPartition.type = partition.PartitionType
|
||||||
partitionMap.put(logicalPartition.id, logicalPartition)
|
partitionMap.put(logicalPartition.id, logicalPartition)
|
||||||
log.debug("getLogicalPartitionsForManagedSystem() " + logicalPartition.toString())
|
log.debug("getLogicalPartitionsForManagedSystem() - Found partition: " + logicalPartition.toString())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -157,100 +170,83 @@ class HmcClient {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void getProcessedMetrics() {
|
|
||||||
managedSystems.each {
|
|
||||||
getPcmForManagedSystemWithId(it.getValue())
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
/**
|
||||||
String getPcmForManagedSystemWithId(String systemId) {
|
* Parse XML feed to get PCM Data in JSON format
|
||||||
log.debug("getProcessedMetricsForManagedSystem() " - systemId)
|
* @param systemId
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
String getPcmDataForManagedSystem(String systemId) {
|
||||||
|
log.debug("getPcmDataForManagedSystem() - " + systemId)
|
||||||
URL url = new URL(String.format("%s/rest/api/pcm/ManagedSystem/%s/ProcessedMetrics?NoOfSamples=1", baseUrl, systemId))
|
URL url = new URL(String.format("%s/rest/api/pcm/ManagedSystem/%s/ProcessedMetrics?NoOfSamples=1", baseUrl, systemId))
|
||||||
Response response = getResponse(url)
|
Response response = getResponse(url)
|
||||||
String responseBody = response.body.string()
|
String responseBody = response.body.string()
|
||||||
|
|
||||||
|
String jsonBody
|
||||||
|
|
||||||
|
// Parse XML and fetch JSON link
|
||||||
def feed = new XmlSlurper().parseText(responseBody)
|
def feed = new XmlSlurper().parseText(responseBody)
|
||||||
feed?.entry?.each { entry ->
|
feed?.entry?.each { entry ->
|
||||||
String link = entry.link["@href"]
|
String link = entry.link["@href"]
|
||||||
switch (entry.category["@term"]) {
|
if(entry.category["@term"] == "ManagedSystem") {
|
||||||
case "ManagedSystem":
|
jsonBody = getReponseBody(new URL(link))
|
||||||
return getPcmJsonForManagedSystem(link)
|
|
||||||
break
|
|
||||||
case "LogicalPartition":
|
|
||||||
//processPcmJsonForLogicalPartition(getPcmJsonForLogicalPartition(getProcessedMetricsForLogicalPartition(link)))
|
|
||||||
break
|
|
||||||
default:
|
|
||||||
log.warn("Unknown category: " + entry.category["@term"])
|
|
||||||
break
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return jsonBody
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Parse XML to get JSON Link
|
* Parse XML feed to get PCM Data in JSON format
|
||||||
* @param pcmUrl
|
* @param systemId
|
||||||
|
* @param partitionId
|
||||||
|
* @return
|
||||||
*/
|
*/
|
||||||
String getProcessedMetricsForLogicalPartition(String pcmUrl) {
|
String getPcmDataForLogicalPartition(String systemId, String partitionId) {
|
||||||
log.debug("getProcessedMetricsForLogicalPartition() - " + pcmUrl)
|
|
||||||
URL url = new URL(pcmUrl)
|
log.debug(String.format("getPcmDataForLogicalPartition() - %s @ %s", partitionId, systemId))
|
||||||
|
URL url = new URL(String.format("%s/rest/api/pcm/ManagedSystem/%s/LogicalPartition/%s/ProcessedMetrics?NoOfSamples=1", baseUrl, systemId, partitionId))
|
||||||
Response response = getResponse(url)
|
Response response = getResponse(url)
|
||||||
String responseBody = response.body.string()
|
String responseBody = response.body.string()
|
||||||
|
|
||||||
String link
|
//log.debug(responseBody)
|
||||||
|
String jsonBody
|
||||||
|
|
||||||
|
// Parse XML and fetch JSON link
|
||||||
def feed = new XmlSlurper().parseText(responseBody)
|
def feed = new XmlSlurper().parseText(responseBody)
|
||||||
feed?.entry?.each { entry ->
|
feed?.entry?.each { entry ->
|
||||||
link = entry.link["@href"]
|
String link = entry.link["@href"]
|
||||||
}
|
if(entry.category["@term"] == "LogicalPartition") {
|
||||||
|
jsonBody = getReponseBody(new URL(link))
|
||||||
return link
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
private String getPcmJsonForManagedSystem(String jsonUrl) {
|
|
||||||
log.debug("getPcmJsonForManagedSystem() - " + jsonUrl)
|
|
||||||
URL url = new URL(jsonUrl)
|
|
||||||
Response response = getResponse(url)
|
|
||||||
return response.body.string()
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
private String getPcmJsonForLogicalPartition(String jsonUrl) {
|
|
||||||
log.debug("getPcmJsonForLogicalPartition() - " + jsonUrl)
|
|
||||||
URL url = new URL(jsonUrl)
|
|
||||||
Response response = getResponse(url)
|
|
||||||
return response.body.string()
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void processPcmJsonForLogicalPartition(String json) {
|
|
||||||
log.debug("processPcmJsonForLogicalPartition()")
|
|
||||||
|
|
||||||
def jsonObject = new JsonSlurper().parseText(json)
|
|
||||||
String systemUuid = jsonObject?.utilInfo?.uuid as String
|
|
||||||
|
|
||||||
if(systemUuid && managedSystems.containsKey(systemUuid)) {
|
|
||||||
|
|
||||||
log.debug("processPcmJsonForLogicalPartition() - Found UUID for ManagedSystem: " + systemUuid)
|
|
||||||
ManagedSystem system = managedSystems.get(systemUuid)
|
|
||||||
String lparUuid = jsonObject?.utilSamples?.lparsUtil?.first()?.first()?.uuid as String
|
|
||||||
|
|
||||||
if(lparUuid && system.partitions.containsKey(lparUuid)) {
|
|
||||||
|
|
||||||
log.debug("processPcmJsonForLogicalPartition() - Found UUID for LogicalPartition: " + lparUuid)
|
|
||||||
LogicalPartition lpar = system.partitions.get(lparUuid)
|
|
||||||
lpar.processMetrics(json)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return jsonBody
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return body text from a HTTP response from the HMC
|
||||||
|
*
|
||||||
|
* @param url
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
protected String getReponseBody(URL url) {
|
||||||
|
//log.debug("getBody() - " + url.toString())
|
||||||
|
Response response = getResponse(url)
|
||||||
|
return response.body.string()
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return a Response from the HMC
|
||||||
|
*
|
||||||
|
* @param url
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
private Response getResponse(URL url) {
|
private Response getResponse(URL url) {
|
||||||
//log.debug("getResponse() - " + url.toString())
|
|
||||||
|
|
||||||
Request request = new Request.Builder()
|
Request request = new Request.Builder()
|
||||||
.url(url)
|
.url(url)
|
||||||
|
@ -261,12 +257,17 @@ class HmcClient {
|
||||||
|
|
||||||
Response response = client.newCall(request).execute();
|
Response response = client.newCall(request).execute();
|
||||||
if (!response.isSuccessful()) throw new IOException("Unexpected code " + response);
|
if (!response.isSuccessful()) throw new IOException("Unexpected code " + response);
|
||||||
// TODO: Better error detection
|
|
||||||
|
|
||||||
return response
|
return response
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Provide an unsafe (ignoring SSL problems) OkHttpClient
|
||||||
|
*
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
private static OkHttpClient getUnsafeOkHttpClient() {
|
private static OkHttpClient getUnsafeOkHttpClient() {
|
||||||
try {
|
try {
|
||||||
// Create a trust manager that does not validate certificate chains
|
// Create a trust manager that does not validate certificate chains
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
package biz.nellemann.hmci
|
package biz.nellemann.hmci
|
||||||
|
|
||||||
|
import biz.nellemann.hmci.pojo.PcmData
|
||||||
import biz.nellemann.hmci.pojo.SystemUtil
|
import biz.nellemann.hmci.pojo.SystemUtil
|
||||||
import groovy.json.JsonSlurper
|
import groovy.json.JsonSlurper
|
||||||
import groovy.util.logging.Slf4j
|
import groovy.util.logging.Slf4j
|
||||||
|
@ -10,21 +11,24 @@ class LogicalPartition {
|
||||||
public String id
|
public String id
|
||||||
public String name
|
public String name
|
||||||
public String type
|
public String type
|
||||||
|
public String systemId
|
||||||
|
|
||||||
protected SystemUtil metrics
|
protected PcmData metrics
|
||||||
|
|
||||||
LogicalPartition(String id) {
|
LogicalPartition(String id, String systemId) {
|
||||||
this.id = id
|
this.id = id
|
||||||
|
this.systemId = systemId
|
||||||
}
|
}
|
||||||
|
|
||||||
String toString() {
|
String toString() {
|
||||||
return "[${id}] ${name} (${type})"
|
return "[${id}] ${name} (${type})"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void processMetrics(String json) {
|
void processMetrics(String json) {
|
||||||
//metrics = new JsonSlurper().parseText(json) as SystemUtil
|
log.debug("processMetrics()")
|
||||||
def pcmMap = new JsonSlurper().parseText(json)
|
def pcmMap = new JsonSlurper().parseText(json)
|
||||||
metrics = new SystemUtil(pcmMap as Map)
|
metrics = new PcmData(pcmMap as Map)
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,7 +3,6 @@ package biz.nellemann.hmci
|
||||||
|
|
||||||
import biz.nellemann.hmci.pojo.PcmData
|
import biz.nellemann.hmci.pojo.PcmData
|
||||||
import groovy.json.JsonSlurper
|
import groovy.json.JsonSlurper
|
||||||
import groovy.transform.CompileStatic
|
|
||||||
import groovy.util.logging.Slf4j
|
import groovy.util.logging.Slf4j
|
||||||
|
|
||||||
@Slf4j
|
@Slf4j
|
||||||
|
@ -14,7 +13,6 @@ class ManagedSystem {
|
||||||
public String type
|
public String type
|
||||||
public String model
|
public String model
|
||||||
public String serialNumber
|
public String serialNumber
|
||||||
public Map<String, LogicalPartition> partitions = new HashMap<String, LogicalPartition>()
|
|
||||||
|
|
||||||
protected PcmData metrics
|
protected PcmData metrics
|
||||||
|
|
||||||
|
@ -27,20 +25,8 @@ class ManagedSystem {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void processMetrics(String json) {
|
||||||
|
log.debug("processMetrics()")
|
||||||
void processPcmJson(String json) {
|
|
||||||
log.debug("processPcmJson()")
|
|
||||||
def jsonObject = new JsonSlurper().parseText(json)
|
|
||||||
String systemUuid = jsonObject?.systemUtil?.utilInfo?.uuid as String
|
|
||||||
if(systemUuid && this.id == systemUuid) {
|
|
||||||
log.debug("processPcmJson() - Found UUID for this ManagedSystem: " + systemUuid)
|
|
||||||
processMetrics(json)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void processMetrics(String json) {
|
|
||||||
//metrics = new JsonSlurper().parseText(json) as PcmData
|
|
||||||
def pcmMap = new JsonSlurper().parseText(json)
|
def pcmMap = new JsonSlurper().parseText(json)
|
||||||
metrics = new PcmData(pcmMap as Map)
|
metrics = new PcmData(pcmMap as Map)
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
package biz.nellemann.hmci
|
package biz.nellemann.hmci
|
||||||
|
|
||||||
|
|
||||||
import okhttp3.mockwebserver.MockResponse
|
import okhttp3.mockwebserver.MockResponse
|
||||||
import okhttp3.mockwebserver.MockWebServer
|
import okhttp3.mockwebserver.MockWebServer
|
||||||
import spock.lang.Specification
|
import spock.lang.Specification
|
||||||
|
@ -30,11 +29,11 @@ class HmcClientTest extends Specification {
|
||||||
mockServer.enqueue(new MockResponse().setBody(testXml));
|
mockServer.enqueue(new MockResponse().setBody(testXml));
|
||||||
|
|
||||||
when:
|
when:
|
||||||
hmc.getManagedSystems()
|
Map<String, ManagedSystem> systems = hmc.getManagedSystems()
|
||||||
|
|
||||||
then:
|
then:
|
||||||
hmc.managedSystems.size() == 2
|
systems.size() == 2
|
||||||
hmc.managedSystems.get("e09834d1-c930-3883-bdad-405d8e26e166").name == "S822L-8247-213C1BA"
|
systems.get("e09834d1-c930-3883-bdad-405d8e26e166").name == "S822L-8247-213C1BA"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -46,83 +45,41 @@ class HmcClientTest extends Specification {
|
||||||
|
|
||||||
when:
|
when:
|
||||||
ManagedSystem system = new ManagedSystem("e09834d1-c930-3883-bdad-405d8e26e166")
|
ManagedSystem system = new ManagedSystem("e09834d1-c930-3883-bdad-405d8e26e166")
|
||||||
hmc.managedSystems.put("e09834d1-c930-3883-bdad-405d8e26e166", system)
|
Map<String, ManagedSystem> partitions = hmc.getLogicalPartitionsForManagedSystemWithId(system.id)
|
||||||
hmc.getLogicalPartitionsForManagedSystem(system)
|
|
||||||
|
|
||||||
then:
|
then:
|
||||||
system.partitions.size() == 12
|
partitions.size() == 12
|
||||||
system.partitions.get("3380A831-9D22-4F03-A1DF-18B249F0FF8E").name == "AIX_Test1-e0f725f0-00000005"
|
partitions.get("3380A831-9D22-4F03-A1DF-18B249F0FF8E").name == "AIX_Test1-e0f725f0-00000005"
|
||||||
system.partitions.get("3380A831-9D22-4F03-A1DF-18B249F0FF8E").type == "AIX/Linux"
|
partitions.get("3380A831-9D22-4F03-A1DF-18B249F0FF8E").type == "AIX/Linux"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void "test getPcmJsonForManagedSystem"() {
|
void "test getBody with JSON for ManagedSystem"() {
|
||||||
setup:
|
setup:
|
||||||
def testFile = new File(getClass().getResource('/managed-system-pcm.json').toURI())
|
def testFile = new File(getClass().getResource('/pcm-data-managed-system.json').toURI())
|
||||||
def testJson = testFile.getText('UTF-8')
|
def testJson = testFile.getText('UTF-8')
|
||||||
mockServer.enqueue(new MockResponse().setBody(testJson));
|
mockServer.enqueue(new MockResponse().setBody(testJson));
|
||||||
|
|
||||||
when:
|
when:
|
||||||
String jsonString = hmc.getPcmJsonForManagedSystem(mockServer.url("/rest/api/pcm/ProcessedMetrics/ManagedSystem_e09834d1-c930-3883-bdad-405d8e26e166_20200807T122600+0200_20200807T122600+0200_30.json").toString())
|
String jsonString = hmc.getReponseBody(new URL(mockServer.url("/rest/api/pcm/ProcessedMetrics/ManagedSystem_e09834d1-c930-3883-bdad-405d8e26e166_20200807T122600+0200_20200807T122600+0200_30.json") as String))
|
||||||
|
|
||||||
then:
|
then:
|
||||||
jsonString.contains('"uuid": "e09834d1-c930-3883-bdad-405d8e26e166"')
|
jsonString.contains('"uuid": "e09834d1-c930-3883-bdad-405d8e26e166"')
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void "test getPcmJsonForLogicalPartition"() {
|
void "test getBody with JSON for LogicalPartition"() {
|
||||||
setup:
|
setup:
|
||||||
def testFile = new File(getClass().getResource('/logical-partition-pcm.json').toURI())
|
def testFile = new File(getClass().getResource('/pcm-data-logical-partition.json').toURI())
|
||||||
def testJson = testFile.getText('UTF-8')
|
def testJson = testFile.getText('UTF-8')
|
||||||
mockServer.enqueue(new MockResponse().setBody(testJson));
|
mockServer.enqueue(new MockResponse().setBody(testJson));
|
||||||
|
|
||||||
when:
|
when:
|
||||||
String jsonString = hmc.getPcmJsonForLogicalPartition(mockServer.url("/rest/api/pcm/ProcessedMetrics/LogicalPartition_2DE05DB6-8AD5-448F-8327-0F488D287E82_20200807T123730+0200_20200807T123730+0200_30.json").toString())
|
String jsonString = hmc.getReponseBody(new URL(mockServer.url("/rest/api/pcm/ProcessedMetrics/LogicalPartition_2DE05DB6-8AD5-448F-8327-0F488D287E82_20200807T123730+0200_20200807T123730+0200_30.json") as String))
|
||||||
|
|
||||||
then:
|
then:
|
||||||
jsonString.contains('"uuid": "b597e4da-2aab-3f52-8616-341d62153559"')
|
jsonString.contains('"uuid": "b597e4da-2aab-3f52-8616-341d62153559"')
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void "test processPcmJsonForManagedSystem"() {
|
|
||||||
|
|
||||||
setup:
|
|
||||||
def testFile = new File(getClass().getResource('/managed-system-pcm.json').toURI())
|
|
||||||
def testJson = testFile.getText('UTF-8')
|
|
||||||
|
|
||||||
when:
|
|
||||||
ManagedSystem system = new ManagedSystem("e09834d1-c930-3883-bdad-405d8e26e166")
|
|
||||||
hmc.managedSystems.put("e09834d1-c930-3883-bdad-405d8e26e166", system)
|
|
||||||
hmc.processPcmJsonForManagedSystem(testJson)
|
|
||||||
|
|
||||||
then:
|
|
||||||
system.metrics.systemUtil.utilSamples.first().serverUtil.memory.assignedMemToLpars.first() == 40960.000
|
|
||||||
system.metrics.systemUtil.utilSamples.first().serverUtil.processor.totalProcUnits.first() == 24.000
|
|
||||||
system.metrics.systemUtil.utilSamples.first().viosUtil.first().name == "VIOS1"
|
|
||||||
system.metrics.systemUtil.utilSamples.first().viosUtil.first().memory.assignedMem.first() == 8192.000
|
|
||||||
system.metrics.systemUtil.utilSamples.first().viosUtil.first().storage.genericPhysicalAdapters.first().transmittedBytes.first() == 2321.067
|
|
||||||
system.metrics.systemUtil.utilSamples.first().viosUtil.first().storage.fiberChannelAdapters.first().numOfPorts == 3
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
void "test processPcmJsonForLogicalPartition"() {
|
|
||||||
|
|
||||||
setup:
|
|
||||||
def testFile = new File(getClass().getResource('/logical-partition-pcm.json').toURI())
|
|
||||||
def testJson = testFile.getText('UTF-8')
|
|
||||||
|
|
||||||
when:
|
|
||||||
ManagedSystem system = new ManagedSystem("b597e4da-2aab-3f52-8616-341d62153559")
|
|
||||||
hmc.managedSystems.put("b597e4da-2aab-3f52-8616-341d62153559", system)
|
|
||||||
LogicalPartition lpar = new LogicalPartition("2DE05DB6-8AD5-448F-8327-0F488D287E82")
|
|
||||||
system.partitions.put("2DE05DB6-8AD5-448F-8327-0F488D287E82", lpar)
|
|
||||||
hmc.processPcmJsonForLogicalPartition(testJson)
|
|
||||||
|
|
||||||
then:
|
|
||||||
lpar.metrics.utilSamples.first().lparsUtil.first().memory.logicalMem.first() == 112640.000
|
|
||||||
lpar.metrics.utilSamples.first().lparsUtil.first().processor.utilizedProcUnits.first() == 0.574
|
|
||||||
lpar.metrics.utilSamples.first().lparsUtil.first().network.virtualEthernetAdapters.first().receivedPackets.first() == 11.933
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,25 @@
|
||||||
|
package biz.nellemann.hmci
|
||||||
|
|
||||||
|
import spock.lang.Specification
|
||||||
|
|
||||||
|
class LogicalPartitionTest extends Specification {
|
||||||
|
|
||||||
|
|
||||||
|
void "test processPcmJson for LogicalPartition"() {
|
||||||
|
|
||||||
|
setup:
|
||||||
|
def testFile = new File(getClass().getResource('/pcm-data-logical-partition.json').toURI())
|
||||||
|
def testJson = testFile.getText('UTF-8')
|
||||||
|
|
||||||
|
when:
|
||||||
|
LogicalPartition lpar = new LogicalPartition("2DE05DB6-8AD5-448F-8327-0F488D287E82", "e09834d1-c930-3883-bdad-405d8e26e166")
|
||||||
|
lpar.processMetrics(testJson)
|
||||||
|
|
||||||
|
then:
|
||||||
|
lpar.metrics.systemUtil.utilSamples.first().lparsUtil.first().memory.logicalMem.first() == 8192.000
|
||||||
|
lpar.metrics.systemUtil.utilSamples.first().lparsUtil.first().processor.utilizedProcUnits.first() == 0.001
|
||||||
|
lpar.metrics.systemUtil.utilSamples.first().lparsUtil.first().network.virtualEthernetAdapters.first().receivedPackets.first() == 3.867
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
27
src/test/groovy/biz/nellemann/hmci/ManagedSystemTest.groovy
Normal file
27
src/test/groovy/biz/nellemann/hmci/ManagedSystemTest.groovy
Normal file
|
@ -0,0 +1,27 @@
|
||||||
|
package biz.nellemann.hmci
|
||||||
|
|
||||||
|
import spock.lang.Specification
|
||||||
|
|
||||||
|
class ManagedSystemTest extends Specification {
|
||||||
|
|
||||||
|
void "test processPcmJson for ManagedSystem"() {
|
||||||
|
|
||||||
|
setup:
|
||||||
|
def testFile = new File(getClass().getResource('/pcm-data-managed-system.json').toURI())
|
||||||
|
def testJson = testFile.getText('UTF-8')
|
||||||
|
|
||||||
|
when:
|
||||||
|
ManagedSystem system = new ManagedSystem("e09834d1-c930-3883-bdad-405d8e26e166")
|
||||||
|
system.processMetrics(testJson)
|
||||||
|
|
||||||
|
then:
|
||||||
|
system.metrics.systemUtil.utilSamples.first().serverUtil.memory.assignedMemToLpars.first() == 40960.000
|
||||||
|
system.metrics.systemUtil.utilSamples.first().serverUtil.processor.totalProcUnits.first() == 24.000
|
||||||
|
system.metrics.systemUtil.utilSamples.first().viosUtil.first().name == "VIOS1"
|
||||||
|
system.metrics.systemUtil.utilSamples.first().viosUtil.first().memory.assignedMem.first() == 8192.000
|
||||||
|
system.metrics.systemUtil.utilSamples.first().viosUtil.first().storage.genericPhysicalAdapters.first().transmittedBytes.first() == 9966.933
|
||||||
|
system.metrics.systemUtil.utilSamples.first().viosUtil.first().storage.fiberChannelAdapters.first().numOfPorts == 3
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -1,222 +1,223 @@
|
||||||
{
|
{
|
||||||
"utilInfo": {
|
"utilInfo": {
|
||||||
"version": "1.3.0",
|
"version": "1.3.0",
|
||||||
"metricType": "Processed",
|
"metricType": "Processed",
|
||||||
"frequency": 30,
|
"frequency": 30,
|
||||||
"startTimeStamp": "2020-08-07T12:37:30+0200",
|
"startTimeStamp": "2020-08-07T12:37:30+0200",
|
||||||
"endTimeStamp": "2020-08-07T12:37:30+0200",
|
"endTimeStamp": "2020-08-07T12:37:30+0200",
|
||||||
"mtms": "9009-42A*21F64EV",
|
"mtms": "9009-42A*21F64EV",
|
||||||
"name": "Server-9009-42A-SN21F64EV",
|
"name": "Server-9009-42A-SN21F64EV",
|
||||||
"uuid": "b597e4da-2aab-3f52-8616-341d62153559",
|
"uuid": "b597e4da-2aab-3f52-8616-341d62153559",
|
||||||
"metricArrayOrder": [
|
"metricArrayOrder": [
|
||||||
"AVG"
|
"AVG"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"utilSamples": [
|
"utilSamples": [
|
||||||
{
|
{
|
||||||
"sampleType": "LogicalPartition",
|
"sampleType": "LogicalPartition",
|
||||||
"sampleInfo": {
|
"sampleInfo": {
|
||||||
"timeStamp": "2020-08-07T12:37:30+0200",
|
"timeStamp": "2020-08-07T12:37:30+0200",
|
||||||
"status": 2,
|
"status": 2,
|
||||||
"errorInfo": [
|
"errorInfo": [
|
||||||
{
|
{
|
||||||
"errId": "3004",
|
"errId": "3004",
|
||||||
"errMsg": "Failed to fetch SRIOV adapter physical port statistics due to a technical error.",
|
"errMsg": "Failed to fetch SRIOV adapter physical port statistics due to a technical error.",
|
||||||
"uuid": "b597e4da-2aab-3f52-8616-341d62153559",
|
"uuid": "b597e4da-2aab-3f52-8616-341d62153559",
|
||||||
"reportedBy": "ManagedSystem",
|
"reportedBy": "ManagedSystem",
|
||||||
"occurrenceCount": 1
|
"occurrenceCount": 1
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"errId": "3004",
|
"errId": "3004",
|
||||||
"errMsg": "Failed to fetch SRIOV adapter physical port statistics due to a technical error.",
|
"errMsg": "Failed to fetch SRIOV adapter physical port statistics due to a technical error.",
|
||||||
"uuid": "b597e4da-2aab-3f52-8616-341d62153559",
|
"uuid": "b597e4da-2aab-3f52-8616-341d62153559",
|
||||||
"reportedBy": "ManagedSystem",
|
"reportedBy": "ManagedSystem",
|
||||||
"occurrenceCount": 1
|
"occurrenceCount": 1
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"lparsUtil": [
|
"lparsUtil": [
|
||||||
{
|
{
|
||||||
"id": 10,
|
"id": 10,
|
||||||
"uuid": "2DE05DB6-8AD5-448F-8327-0F488D287E82",
|
"uuid": "2DE05DB6-8AD5-448F-8327-0F488D287E82",
|
||||||
"name": "P9-PowerVC",
|
"name": "P9-PowerVC",
|
||||||
"state": "Running",
|
"state": "Running",
|
||||||
"type": "AIX/Linux",
|
"type": "AIX/Linux",
|
||||||
"osType": "Linux",
|
"osType": "Linux",
|
||||||
"affinityScore": 100,
|
"affinityScore": 100,
|
||||||
"memory": {
|
"memory": {
|
||||||
"logicalMem": [
|
"logicalMem": [
|
||||||
112640.000
|
112640.000
|
||||||
],
|
],
|
||||||
"backedPhysicalMem": [
|
"backedPhysicalMem": [
|
||||||
112640.000
|
112640.000
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"processor": {
|
"processor": {
|
||||||
"poolId": 0,
|
"poolId": 0,
|
||||||
"weight": 128,
|
"weight": 128,
|
||||||
"mode": "uncap",
|
"mode": "uncap",
|
||||||
"maxVirtualProcessors": [
|
"maxVirtualProcessors": [
|
||||||
8.000
|
8.000
|
||||||
],
|
],
|
||||||
"currentVirtualProcessors": [
|
"currentVirtualProcessors": [
|
||||||
4.000
|
4.000
|
||||||
],
|
],
|
||||||
"maxProcUnits": [
|
"maxProcUnits": [
|
||||||
8.000
|
8.000
|
||||||
],
|
],
|
||||||
"entitledProcUnits": [
|
"entitledProcUnits": [
|
||||||
1.000
|
1.000
|
||||||
],
|
],
|
||||||
"utilizedProcUnits": [
|
"utilizedProcUnits": [
|
||||||
0.574
|
0.574
|
||||||
],
|
],
|
||||||
"utilizedCappedProcUnits": [
|
"utilizedCappedProcUnits": [
|
||||||
0.498
|
0.498
|
||||||
],
|
],
|
||||||
"utilizedUncappedProcUnits": [
|
"utilizedUncappedProcUnits": [
|
||||||
0.076
|
0.076
|
||||||
],
|
],
|
||||||
"idleProcUnits": [
|
"idleProcUnits": [
|
||||||
0.376
|
0.376
|
||||||
],
|
],
|
||||||
"donatedProcUnits": [
|
"donatedProcUnits": [
|
||||||
0.000
|
0.000
|
||||||
],
|
],
|
||||||
"timeSpentWaitingForDispatch": [
|
"timeSpentWaitingForDispatch": [
|
||||||
0.000
|
0.000
|
||||||
],
|
],
|
||||||
"timePerInstructionExecution": [
|
"timePerInstructionExecution": [
|
||||||
0.000
|
0.000
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"network": {
|
"network": {
|
||||||
"virtualEthernetAdapters": [
|
"virtualEthernetAdapters": [
|
||||||
{
|
{
|
||||||
"physicalLocation": "U9009.42A.21F64EV-V10-C2",
|
"physicalLocation": "U9009.42A.21F64EV-V10-C2",
|
||||||
"vlanId": 1,
|
"vlanId": 1,
|
||||||
"vswitchId": 0,
|
"vswitchId": 0,
|
||||||
"isPortVlanId": true,
|
"isPortVlanId": true,
|
||||||
"viosId": 1,
|
"viosId": 1,
|
||||||
"sharedEthernetAdapterId": "ent5",
|
"sharedEthernetAdapterId": "ent5",
|
||||||
"receivedPackets": [
|
"receivedPackets": [
|
||||||
11.933
|
11.933
|
||||||
],
|
],
|
||||||
"sentPackets": [
|
"sentPackets": [
|
||||||
7.767
|
7.767
|
||||||
],
|
],
|
||||||
"droppedPackets": [
|
"droppedPackets": [
|
||||||
0.000
|
0.000
|
||||||
],
|
],
|
||||||
"sentBytes": [
|
"sentBytes": [
|
||||||
2020.467
|
2020.467
|
||||||
],
|
],
|
||||||
"receivedBytes": [
|
"receivedBytes": [
|
||||||
4291.167
|
4291.167
|
||||||
],
|
],
|
||||||
"receivedPhysicalPackets": [
|
"receivedPhysicalPackets": [
|
||||||
11.933
|
11.933
|
||||||
],
|
],
|
||||||
"sentPhysicalPackets": [
|
"sentPhysicalPackets": [
|
||||||
7.767
|
7.767
|
||||||
],
|
],
|
||||||
"droppedPhysicalPackets": [
|
"droppedPhysicalPackets": [
|
||||||
0.000
|
0.000
|
||||||
],
|
],
|
||||||
"sentPhysicalBytes": [
|
"sentPhysicalBytes": [
|
||||||
2020.467
|
2020.467
|
||||||
],
|
],
|
||||||
"receivedPhysicalBytes": [
|
"receivedPhysicalBytes": [
|
||||||
4291.167
|
4291.167
|
||||||
],
|
],
|
||||||
"transferredBytes": [
|
"transferredBytes": [
|
||||||
6311.634
|
6311.634
|
||||||
],
|
],
|
||||||
"transferredPhysicalBytes": [
|
"transferredPhysicalBytes": [
|
||||||
6311.634
|
6311.634
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"storage": {
|
"storage": {
|
||||||
"genericVirtualAdapters": [
|
"genericVirtualAdapters": [
|
||||||
{
|
{
|
||||||
"id": "vhost5",
|
"id": "vhost5",
|
||||||
"type": "virtual",
|
"type": "virtual",
|
||||||
"viosId": 1,
|
"viosId": 1,
|
||||||
"physicalLocation": "U9009.42A.21F64EV-V10-C3",
|
"physicalLocation": "U9009.42A.21F64EV-V10-C3",
|
||||||
"numOfReads": [
|
"numOfReads": [
|
||||||
0.000
|
0.000
|
||||||
],
|
],
|
||||||
"numOfWrites": [
|
"numOfWrites": [
|
||||||
0.000
|
0.000
|
||||||
],
|
],
|
||||||
"readBytes": [
|
"readBytes": [
|
||||||
0.000
|
0.000
|
||||||
],
|
],
|
||||||
"writeBytes": [
|
"writeBytes": [
|
||||||
0.000
|
0.000
|
||||||
],
|
],
|
||||||
"transmittedBytes": [
|
"transmittedBytes": [
|
||||||
null
|
null
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"virtualFiberChannelAdapters": [
|
"virtualFiberChannelAdapters": [
|
||||||
{
|
{
|
||||||
"wwpn": "c050760b1d10002a",
|
"wwpn": "c050760b1d10002a",
|
||||||
"wwpn2": "c050760b1d10002b",
|
"wwpn2": "c050760b1d10002b",
|
||||||
"physicalLocation": "U9009.42A.21F64EV-V10-C87",
|
"physicalLocation": "U9009.42A.21F64EV-V10-C87",
|
||||||
"physicalPortWWPN": "100000109b89aca8",
|
"physicalPortWWPN": "100000109b89aca8",
|
||||||
"viosId": 1,
|
"viosId": 1,
|
||||||
"numOfReads": [
|
"numOfReads": [
|
||||||
0.000
|
0.000
|
||||||
],
|
],
|
||||||
"numOfWrites": [
|
"numOfWrites": [
|
||||||
2.867
|
2.867
|
||||||
],
|
],
|
||||||
"readBytes": [
|
"readBytes": [
|
||||||
0.000
|
0.000
|
||||||
],
|
],
|
||||||
"writeBytes": [
|
"writeBytes": [
|
||||||
138786.133
|
138786.133
|
||||||
],
|
],
|
||||||
"runningSpeed": [
|
"runningSpeed": [
|
||||||
8.000
|
8.000
|
||||||
],
|
],
|
||||||
"transmittedBytes": [
|
"transmittedBytes": [
|
||||||
0.000
|
0.000
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"wwpn": "c050760b1d10002c",
|
"wwpn": "c050760b1d10002c",
|
||||||
"wwpn2": "c050760b1d10002d",
|
"wwpn2": "c050760b1d10002d",
|
||||||
"physicalLocation": "U9009.42A.21F64EV-V10-C88",
|
"physicalLocation": "U9009.42A.21F64EV-V10-C88",
|
||||||
"physicalPortWWPN": "100000109b7db96a",
|
"physicalPortWWPN": "100000109b7db96a",
|
||||||
"viosId": 2,
|
"viosId": 2,
|
||||||
"numOfReads": [
|
"numOfReads": [
|
||||||
0.000
|
0.000
|
||||||
],
|
],
|
||||||
"numOfWrites": [
|
"numOfWrites": [
|
||||||
2.933
|
2.933
|
||||||
],
|
],
|
||||||
"readBytes": [
|
"readBytes": [
|
||||||
0.000
|
0.000
|
||||||
],
|
],
|
||||||
"writeBytes": [
|
"writeBytes": [
|
||||||
140731.733
|
140731.733
|
||||||
],
|
],
|
||||||
"runningSpeed": [
|
"runningSpeed": [
|
||||||
8.000
|
8.000
|
||||||
],
|
],
|
||||||
"transmittedBytes": [
|
"transmittedBytes": [
|
||||||
0.000
|
0.000
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}}
|
}
|
||||||
|
}
|
||||||
|
|
274
src/test/resources/pcm-data-logical-partition.json
Normal file
274
src/test/resources/pcm-data-logical-partition.json
Normal file
|
@ -0,0 +1,274 @@
|
||||||
|
{
|
||||||
|
"systemUtil": {
|
||||||
|
"utilInfo": {
|
||||||
|
"version": "1.3.0",
|
||||||
|
"metricType": "Processed",
|
||||||
|
"frequency": 30,
|
||||||
|
"startTimeStamp": "2020-08-10T21:06:30+0200",
|
||||||
|
"endTimeStamp": "2020-08-10T21:06:30+0200",
|
||||||
|
"mtms": "9009-42A*21F64EV",
|
||||||
|
"name": "Server-9009-42A-SN21F64EV",
|
||||||
|
"uuid": "b597e4da-2aab-3f52-8616-341d62153559",
|
||||||
|
"metricArrayOrder": [
|
||||||
|
"AVG"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"utilSamples": [
|
||||||
|
{
|
||||||
|
"sampleType": "LogicalPartition",
|
||||||
|
"sampleInfo": {
|
||||||
|
"timeStamp": "2020-08-10T21:06:30+0200",
|
||||||
|
"status": 2,
|
||||||
|
"errorInfo": [
|
||||||
|
{
|
||||||
|
"errId": "3004",
|
||||||
|
"errMsg": "Failed to fetch SRIOV adapter physical port statistics due to a technical error.",
|
||||||
|
"uuid": "b597e4da-2aab-3f52-8616-341d62153559",
|
||||||
|
"reportedBy": "ManagedSystem",
|
||||||
|
"occurrenceCount": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"errId": "3004",
|
||||||
|
"errMsg": "Failed to fetch SRIOV adapter physical port statistics due to a technical error.",
|
||||||
|
"uuid": "b597e4da-2aab-3f52-8616-341d62153559",
|
||||||
|
"reportedBy": "ManagedSystem",
|
||||||
|
"occurrenceCount": 1
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"lparsUtil": [
|
||||||
|
{
|
||||||
|
"id": 13,
|
||||||
|
"uuid": "6B7D14D3-BBD2-475B-8284-70FADBFC37FB",
|
||||||
|
"name": "ubuntu-bionic-a02af293-00000006",
|
||||||
|
"state": "Running",
|
||||||
|
"type": "AIX/Linux",
|
||||||
|
"osType": "Linux",
|
||||||
|
"affinityScore": 100,
|
||||||
|
"memory": {
|
||||||
|
"logicalMem": [
|
||||||
|
8192.000
|
||||||
|
],
|
||||||
|
"backedPhysicalMem": [
|
||||||
|
8192.000
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"processor": {
|
||||||
|
"poolId": 0,
|
||||||
|
"weight": 128,
|
||||||
|
"mode": "uncap",
|
||||||
|
"maxVirtualProcessors": [
|
||||||
|
2.000
|
||||||
|
],
|
||||||
|
"currentVirtualProcessors": [
|
||||||
|
2.000
|
||||||
|
],
|
||||||
|
"maxProcUnits": [
|
||||||
|
2.000
|
||||||
|
],
|
||||||
|
"entitledProcUnits": [
|
||||||
|
1.000
|
||||||
|
],
|
||||||
|
"utilizedProcUnits": [
|
||||||
|
0.001
|
||||||
|
],
|
||||||
|
"utilizedCappedProcUnits": [
|
||||||
|
0.001
|
||||||
|
],
|
||||||
|
"utilizedUncappedProcUnits": [
|
||||||
|
0.000
|
||||||
|
],
|
||||||
|
"idleProcUnits": [
|
||||||
|
0.001
|
||||||
|
],
|
||||||
|
"donatedProcUnits": [
|
||||||
|
0.000
|
||||||
|
],
|
||||||
|
"timeSpentWaitingForDispatch": [
|
||||||
|
0.000
|
||||||
|
],
|
||||||
|
"timePerInstructionExecution": [
|
||||||
|
0.000
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"network": {
|
||||||
|
"virtualEthernetAdapters": [
|
||||||
|
{
|
||||||
|
"physicalLocation": "U9009.42A.21F64EV-V13-C32",
|
||||||
|
"vlanId": 1,
|
||||||
|
"vswitchId": 0,
|
||||||
|
"isPortVlanId": true,
|
||||||
|
"viosId": 1,
|
||||||
|
"sharedEthernetAdapterId": "ent5",
|
||||||
|
"receivedPackets": [
|
||||||
|
3.867
|
||||||
|
],
|
||||||
|
"sentPackets": [
|
||||||
|
0.233
|
||||||
|
],
|
||||||
|
"droppedPackets": [
|
||||||
|
0.000
|
||||||
|
],
|
||||||
|
"sentBytes": [
|
||||||
|
35.667
|
||||||
|
],
|
||||||
|
"receivedBytes": [
|
||||||
|
276.467
|
||||||
|
],
|
||||||
|
"receivedPhysicalPackets": [
|
||||||
|
3.867
|
||||||
|
],
|
||||||
|
"sentPhysicalPackets": [
|
||||||
|
0.233
|
||||||
|
],
|
||||||
|
"droppedPhysicalPackets": [
|
||||||
|
0.000
|
||||||
|
],
|
||||||
|
"sentPhysicalBytes": [
|
||||||
|
35.667
|
||||||
|
],
|
||||||
|
"receivedPhysicalBytes": [
|
||||||
|
276.467
|
||||||
|
],
|
||||||
|
"transferredBytes": [
|
||||||
|
312.134
|
||||||
|
],
|
||||||
|
"transferredPhysicalBytes": [
|
||||||
|
312.134
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"storage": {
|
||||||
|
"genericVirtualAdapters": [
|
||||||
|
{
|
||||||
|
"id": "vhost7",
|
||||||
|
"type": "virtual",
|
||||||
|
"viosId": 1,
|
||||||
|
"physicalLocation": "U9009.42A.21F64EV-V13-C3",
|
||||||
|
"numOfReads": [
|
||||||
|
0.000
|
||||||
|
],
|
||||||
|
"numOfWrites": [
|
||||||
|
0.000
|
||||||
|
],
|
||||||
|
"readBytes": [
|
||||||
|
0.000
|
||||||
|
],
|
||||||
|
"writeBytes": [
|
||||||
|
0.000
|
||||||
|
],
|
||||||
|
"transmittedBytes": [
|
||||||
|
null
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"virtualFiberChannelAdapters": [
|
||||||
|
{
|
||||||
|
"wwpn": "c050760b1d10005c",
|
||||||
|
"wwpn2": "c050760b1d10005d",
|
||||||
|
"physicalLocation": "U9009.42A.21F64EV-V13-C6",
|
||||||
|
"physicalPortWWPN": "100000109b89aca9",
|
||||||
|
"viosId": 1,
|
||||||
|
"numOfReads": [
|
||||||
|
0.000
|
||||||
|
],
|
||||||
|
"numOfWrites": [
|
||||||
|
0.100
|
||||||
|
],
|
||||||
|
"readBytes": [
|
||||||
|
0.000
|
||||||
|
],
|
||||||
|
"writeBytes": [
|
||||||
|
6690.133
|
||||||
|
],
|
||||||
|
"runningSpeed": [
|
||||||
|
8.000
|
||||||
|
],
|
||||||
|
"transmittedBytes": [
|
||||||
|
0.000
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"wwpn": "c050760b1d100056",
|
||||||
|
"wwpn2": "c050760b1d100057",
|
||||||
|
"physicalLocation": "U9009.42A.21F64EV-V13-C2",
|
||||||
|
"physicalPortWWPN": "100000109b7db96a",
|
||||||
|
"viosId": 2,
|
||||||
|
"numOfReads": [
|
||||||
|
0.000
|
||||||
|
],
|
||||||
|
"numOfWrites": [
|
||||||
|
0.100
|
||||||
|
],
|
||||||
|
"readBytes": [
|
||||||
|
0.000
|
||||||
|
],
|
||||||
|
"writeBytes": [
|
||||||
|
546.133
|
||||||
|
],
|
||||||
|
"runningSpeed": [
|
||||||
|
8.000
|
||||||
|
],
|
||||||
|
"transmittedBytes": [
|
||||||
|
0.000
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"wwpn": "c050760b1d100058",
|
||||||
|
"wwpn2": "c050760b1d100059",
|
||||||
|
"physicalLocation": "U9009.42A.21F64EV-V13-C4",
|
||||||
|
"physicalPortWWPN": "100000109b89aca8",
|
||||||
|
"viosId": 1,
|
||||||
|
"numOfReads": [
|
||||||
|
0.000
|
||||||
|
],
|
||||||
|
"numOfWrites": [
|
||||||
|
0.100
|
||||||
|
],
|
||||||
|
"readBytes": [
|
||||||
|
0.000
|
||||||
|
],
|
||||||
|
"writeBytes": [
|
||||||
|
6690.133
|
||||||
|
],
|
||||||
|
"runningSpeed": [
|
||||||
|
8.000
|
||||||
|
],
|
||||||
|
"transmittedBytes": [
|
||||||
|
0.000
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"wwpn": "c050760b1d10005a",
|
||||||
|
"wwpn2": "c050760b1d10005b",
|
||||||
|
"physicalLocation": "U9009.42A.21F64EV-V13-C5",
|
||||||
|
"physicalPortWWPN": "100000109b7db969",
|
||||||
|
"viosId": 2,
|
||||||
|
"numOfReads": [
|
||||||
|
0.000
|
||||||
|
],
|
||||||
|
"numOfWrites": [
|
||||||
|
0.100
|
||||||
|
],
|
||||||
|
"readBytes": [
|
||||||
|
0.000
|
||||||
|
],
|
||||||
|
"writeBytes": [
|
||||||
|
546.133
|
||||||
|
],
|
||||||
|
"runningSpeed": [
|
||||||
|
8.000
|
||||||
|
],
|
||||||
|
"transmittedBytes": [
|
||||||
|
0.000
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
805
src/test/resources/pcm-data-managed-system.json
Normal file
805
src/test/resources/pcm-data-managed-system.json
Normal file
|
@ -0,0 +1,805 @@
|
||||||
|
{
|
||||||
|
"systemUtil": {
|
||||||
|
"utilInfo": {
|
||||||
|
"version": "1.3.0",
|
||||||
|
"metricType": "Processed",
|
||||||
|
"frequency": 30,
|
||||||
|
"startTimeStamp": "2020-08-10T21:10:30+0200",
|
||||||
|
"endTimeStamp": "2020-08-10T21:10:30+0200",
|
||||||
|
"mtms": "8247-22L*213C1BA",
|
||||||
|
"name": "S822L-8247-213C1BA",
|
||||||
|
"uuid": "e09834d1-c930-3883-bdad-405d8e26e166",
|
||||||
|
"metricArrayOrder": [
|
||||||
|
"AVG"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"utilSamples": [
|
||||||
|
{
|
||||||
|
"sampleType": "ManagedSystem",
|
||||||
|
"sampleInfo": {
|
||||||
|
"timeStamp": "2020-08-10T21:10:30+0200",
|
||||||
|
"status": 0
|
||||||
|
},
|
||||||
|
"systemFirmwareUtil": {
|
||||||
|
"utilizedProcUnits": [
|
||||||
|
0.000
|
||||||
|
],
|
||||||
|
"assignedMem": [
|
||||||
|
5632.000
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"serverUtil": {
|
||||||
|
"processor": {
|
||||||
|
"totalProcUnits": [
|
||||||
|
24.000
|
||||||
|
],
|
||||||
|
"utilizedProcUnits": [
|
||||||
|
0.027
|
||||||
|
],
|
||||||
|
"availableProcUnits": [
|
||||||
|
16.000
|
||||||
|
],
|
||||||
|
"configurableProcUnits": [
|
||||||
|
24.000
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"memory": {
|
||||||
|
"totalMem": [
|
||||||
|
1048576.000
|
||||||
|
],
|
||||||
|
"availableMem": [
|
||||||
|
1001984.000
|
||||||
|
],
|
||||||
|
"configurableMem": [
|
||||||
|
1048576.000
|
||||||
|
],
|
||||||
|
"assignedMemToLpars": [
|
||||||
|
40960.000
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"physicalProcessorPool": {
|
||||||
|
"assignedProcUnits": [
|
||||||
|
23.767
|
||||||
|
],
|
||||||
|
"utilizedProcUnits": [
|
||||||
|
0.007
|
||||||
|
],
|
||||||
|
"availableProcUnits": [
|
||||||
|
23.760
|
||||||
|
],
|
||||||
|
"configuredProcUnits": [
|
||||||
|
0.000
|
||||||
|
],
|
||||||
|
"borrowedProcUnits": [
|
||||||
|
16.000
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"sharedProcessorPool": [
|
||||||
|
{
|
||||||
|
"id": 0,
|
||||||
|
"name": "DefaultPool",
|
||||||
|
"assignedProcUnits": [
|
||||||
|
23.767
|
||||||
|
],
|
||||||
|
"utilizedProcUnits": [
|
||||||
|
0.006
|
||||||
|
],
|
||||||
|
"availableProcUnits": [
|
||||||
|
23.761
|
||||||
|
],
|
||||||
|
"configuredProcUnits": [
|
||||||
|
6.000
|
||||||
|
],
|
||||||
|
"borrowedProcUnits": [
|
||||||
|
16.000
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"viosUtil": [
|
||||||
|
{
|
||||||
|
"id": 1,
|
||||||
|
"uuid": "2F30379A-860B-4661-A24E-CD8E449C81AC",
|
||||||
|
"name": "VIOS1",
|
||||||
|
"state": "Running",
|
||||||
|
"affinityScore": 100,
|
||||||
|
"memory": {
|
||||||
|
"assignedMem": [
|
||||||
|
8192.000
|
||||||
|
],
|
||||||
|
"utilizedMem": [
|
||||||
|
2093.000
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"processor": {
|
||||||
|
"weight": 0,
|
||||||
|
"mode": "share_idle_procs_active",
|
||||||
|
"maxVirtualProcessors": [
|
||||||
|
2.000
|
||||||
|
],
|
||||||
|
"currentVirtualProcessors": [
|
||||||
|
0.000
|
||||||
|
],
|
||||||
|
"maxProcUnits": [
|
||||||
|
2.000
|
||||||
|
],
|
||||||
|
"entitledProcUnits": [
|
||||||
|
1.000
|
||||||
|
],
|
||||||
|
"utilizedProcUnits": [
|
||||||
|
0.011
|
||||||
|
],
|
||||||
|
"utilizedCappedProcUnits": [
|
||||||
|
0.120
|
||||||
|
],
|
||||||
|
"utilizedUncappedProcUnits": [
|
||||||
|
0.000
|
||||||
|
],
|
||||||
|
"idleProcUnits": [
|
||||||
|
0.109
|
||||||
|
],
|
||||||
|
"donatedProcUnits": [
|
||||||
|
0.880
|
||||||
|
],
|
||||||
|
"timeSpentWaitingForDispatch": [
|
||||||
|
0.000
|
||||||
|
],
|
||||||
|
"timePerInstructionExecution": [
|
||||||
|
50.000
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"network": {
|
||||||
|
"clientLpars": [
|
||||||
|
"62F4D488-C838-41E2-B83B-E68E004E3B63"
|
||||||
|
],
|
||||||
|
"genericAdapters": [
|
||||||
|
{
|
||||||
|
"id": "ent2",
|
||||||
|
"type": "physical",
|
||||||
|
"physicalLocation": "U78CB.001.WZS0BYF-P1-C10-T3",
|
||||||
|
"receivedPackets": [
|
||||||
|
13.100
|
||||||
|
],
|
||||||
|
"sentPackets": [
|
||||||
|
8.700
|
||||||
|
],
|
||||||
|
"droppedPackets": [
|
||||||
|
0.000
|
||||||
|
],
|
||||||
|
"sentBytes": [
|
||||||
|
3511.833
|
||||||
|
],
|
||||||
|
"receivedBytes": [
|
||||||
|
1614.567
|
||||||
|
],
|
||||||
|
"transferredBytes": [
|
||||||
|
5126.400
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "ent6",
|
||||||
|
"type": "virtual",
|
||||||
|
"physicalLocation": "U8247.22L.213C1BA-V1-C3-T1",
|
||||||
|
"receivedPackets": [
|
||||||
|
5.733
|
||||||
|
],
|
||||||
|
"sentPackets": [
|
||||||
|
1.600
|
||||||
|
],
|
||||||
|
"droppedPackets": [
|
||||||
|
0.000
|
||||||
|
],
|
||||||
|
"sentBytes": [
|
||||||
|
1378.267
|
||||||
|
],
|
||||||
|
"receivedBytes": [
|
||||||
|
490.500
|
||||||
|
],
|
||||||
|
"transferredBytes": [
|
||||||
|
1868.767
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "ent4",
|
||||||
|
"type": "virtual",
|
||||||
|
"physicalLocation": "U8247.22L.213C1BA-V1-C2-T1",
|
||||||
|
"receivedPackets": [
|
||||||
|
9.700
|
||||||
|
],
|
||||||
|
"sentPackets": [
|
||||||
|
17.200
|
||||||
|
],
|
||||||
|
"droppedPackets": [
|
||||||
|
0.000
|
||||||
|
],
|
||||||
|
"sentBytes": [
|
||||||
|
4835.967
|
||||||
|
],
|
||||||
|
"receivedBytes": [
|
||||||
|
4217.833
|
||||||
|
],
|
||||||
|
"transferredBytes": [
|
||||||
|
9053.800
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"sharedAdapters": [
|
||||||
|
{
|
||||||
|
"id": "ent5",
|
||||||
|
"type": "sea",
|
||||||
|
"physicalLocation": "U8247.22L.213C1BA-V1-C2-T1",
|
||||||
|
"receivedPackets": [
|
||||||
|
22.800
|
||||||
|
],
|
||||||
|
"sentPackets": [
|
||||||
|
25.900
|
||||||
|
],
|
||||||
|
"droppedPackets": [
|
||||||
|
0.000
|
||||||
|
],
|
||||||
|
"sentBytes": [
|
||||||
|
8347.800
|
||||||
|
],
|
||||||
|
"receivedBytes": [
|
||||||
|
5832.400
|
||||||
|
],
|
||||||
|
"transferredBytes": [
|
||||||
|
14180.200
|
||||||
|
],
|
||||||
|
"bridgedAdapters": [
|
||||||
|
"ent2",
|
||||||
|
"ent4",
|
||||||
|
"ent4"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"virtualEthernetAdapters": [
|
||||||
|
{
|
||||||
|
"physicalLocation": "U8247.22L.213C1BA-V1-C2",
|
||||||
|
"vlanId": 1,
|
||||||
|
"vswitchId": 0,
|
||||||
|
"isPortVlanId": true,
|
||||||
|
"receivedPackets": [
|
||||||
|
16.167
|
||||||
|
],
|
||||||
|
"sentPackets": [
|
||||||
|
20.133
|
||||||
|
],
|
||||||
|
"droppedPackets": [
|
||||||
|
0.000
|
||||||
|
],
|
||||||
|
"sentBytes": [
|
||||||
|
3155.500
|
||||||
|
],
|
||||||
|
"receivedBytes": [
|
||||||
|
5089.900
|
||||||
|
],
|
||||||
|
"receivedPhysicalPackets": [
|
||||||
|
0.000
|
||||||
|
],
|
||||||
|
"sentPhysicalPackets": [
|
||||||
|
0.000
|
||||||
|
],
|
||||||
|
"droppedPhysicalPackets": [
|
||||||
|
0.000
|
||||||
|
],
|
||||||
|
"sentPhysicalBytes": [
|
||||||
|
0.000
|
||||||
|
],
|
||||||
|
"receivedPhysicalBytes": [
|
||||||
|
0.000
|
||||||
|
],
|
||||||
|
"transferredBytes": [
|
||||||
|
8245.400
|
||||||
|
],
|
||||||
|
"transferredPhysicalBytes": [
|
||||||
|
0.000
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"physicalLocation": "U8247.22L.213C1BA-V1-C3",
|
||||||
|
"vlanId": 1,
|
||||||
|
"vswitchId": 0,
|
||||||
|
"isPortVlanId": true,
|
||||||
|
"receivedPackets": [
|
||||||
|
8.800
|
||||||
|
],
|
||||||
|
"sentPackets": [
|
||||||
|
4.567
|
||||||
|
],
|
||||||
|
"droppedPackets": [
|
||||||
|
0.000
|
||||||
|
],
|
||||||
|
"sentBytes": [
|
||||||
|
2086.400
|
||||||
|
],
|
||||||
|
"receivedBytes": [
|
||||||
|
1169.400
|
||||||
|
],
|
||||||
|
"receivedPhysicalPackets": [
|
||||||
|
8.800
|
||||||
|
],
|
||||||
|
"sentPhysicalPackets": [
|
||||||
|
4.567
|
||||||
|
],
|
||||||
|
"droppedPhysicalPackets": [
|
||||||
|
0.000
|
||||||
|
],
|
||||||
|
"sentPhysicalBytes": [
|
||||||
|
2086.400
|
||||||
|
],
|
||||||
|
"receivedPhysicalBytes": [
|
||||||
|
1169.400
|
||||||
|
],
|
||||||
|
"transferredBytes": [
|
||||||
|
3255.800
|
||||||
|
],
|
||||||
|
"transferredPhysicalBytes": [
|
||||||
|
3255.800
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"storage": {
|
||||||
|
"clientLpars": [
|
||||||
|
"62F4D488-C838-41E2-B83B-E68E004E3B63"
|
||||||
|
],
|
||||||
|
"genericPhysicalAdapters": [
|
||||||
|
{
|
||||||
|
"id": "sissas0",
|
||||||
|
"type": "sas",
|
||||||
|
"physicalLocation": "U78CB.001.WZS0BYF-P1-C14-T1",
|
||||||
|
"numOfReads": [
|
||||||
|
0.000
|
||||||
|
],
|
||||||
|
"numOfWrites": [
|
||||||
|
19.467
|
||||||
|
],
|
||||||
|
"readBytes": [
|
||||||
|
0.000
|
||||||
|
],
|
||||||
|
"writeBytes": [
|
||||||
|
9966.933
|
||||||
|
],
|
||||||
|
"transmittedBytes": [
|
||||||
|
9966.933
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"genericVirtualAdapters": [
|
||||||
|
{
|
||||||
|
"id": "vhost1",
|
||||||
|
"type": "virtual",
|
||||||
|
"physicalLocation": "U8247.22L.213C1BA-V1-C6",
|
||||||
|
"numOfReads": [
|
||||||
|
0.000
|
||||||
|
],
|
||||||
|
"numOfWrites": [
|
||||||
|
0.000
|
||||||
|
],
|
||||||
|
"readBytes": [
|
||||||
|
0.000
|
||||||
|
],
|
||||||
|
"writeBytes": [
|
||||||
|
0.000
|
||||||
|
],
|
||||||
|
"transmittedBytes": [
|
||||||
|
0.000
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "vhost0",
|
||||||
|
"type": "virtual",
|
||||||
|
"physicalLocation": "U8247.22L.213C1BA-V1-C5",
|
||||||
|
"numOfReads": [
|
||||||
|
0.467
|
||||||
|
],
|
||||||
|
"numOfWrites": [
|
||||||
|
0.467
|
||||||
|
],
|
||||||
|
"readBytes": [
|
||||||
|
238.933
|
||||||
|
],
|
||||||
|
"writeBytes": [
|
||||||
|
238.933
|
||||||
|
],
|
||||||
|
"transmittedBytes": [
|
||||||
|
477.866
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "vhost2",
|
||||||
|
"type": "virtual",
|
||||||
|
"physicalLocation": "U8247.22L.213C1BA-V1-C7",
|
||||||
|
"numOfReads": [
|
||||||
|
0.000
|
||||||
|
],
|
||||||
|
"numOfWrites": [
|
||||||
|
0.000
|
||||||
|
],
|
||||||
|
"readBytes": [
|
||||||
|
0.000
|
||||||
|
],
|
||||||
|
"writeBytes": [
|
||||||
|
0.000
|
||||||
|
],
|
||||||
|
"transmittedBytes": [
|
||||||
|
0.000
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"fiberChannelAdapters": [
|
||||||
|
{
|
||||||
|
"id": "fcs0",
|
||||||
|
"wwpn": "10000090faba5108",
|
||||||
|
"physicalLocation": "U78CB.001.WZS0BYF-P1-C12-T1",
|
||||||
|
"numOfPorts": 3,
|
||||||
|
"numOfReads": [
|
||||||
|
0.000
|
||||||
|
],
|
||||||
|
"numOfWrites": [
|
||||||
|
0.067
|
||||||
|
],
|
||||||
|
"readBytes": [
|
||||||
|
0.000
|
||||||
|
],
|
||||||
|
"writeBytes": [
|
||||||
|
4369.067
|
||||||
|
],
|
||||||
|
"runningSpeed": [
|
||||||
|
8.000
|
||||||
|
],
|
||||||
|
"transmittedBytes": [
|
||||||
|
4369.067
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "fcs1",
|
||||||
|
"wwpn": "10000090faba5109",
|
||||||
|
"physicalLocation": "U78CB.001.WZS0BYF-P1-C12-T2",
|
||||||
|
"numOfPorts": 0,
|
||||||
|
"numOfReads": [
|
||||||
|
0.000
|
||||||
|
],
|
||||||
|
"numOfWrites": [
|
||||||
|
0.000
|
||||||
|
],
|
||||||
|
"readBytes": [
|
||||||
|
0.000
|
||||||
|
],
|
||||||
|
"writeBytes": [
|
||||||
|
0.000
|
||||||
|
],
|
||||||
|
"runningSpeed": [
|
||||||
|
0.000
|
||||||
|
],
|
||||||
|
"transmittedBytes": [
|
||||||
|
0.000
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 2,
|
||||||
|
"uuid": "2BA128CE-38E4-4522-B823-7471633C2717",
|
||||||
|
"name": "VIOS2",
|
||||||
|
"state": "Running",
|
||||||
|
"affinityScore": 100,
|
||||||
|
"memory": {
|
||||||
|
"assignedMem": [
|
||||||
|
8192.000
|
||||||
|
],
|
||||||
|
"utilizedMem": [
|
||||||
|
2116.000
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"processor": {
|
||||||
|
"weight": 0,
|
||||||
|
"mode": "share_idle_procs_active",
|
||||||
|
"maxVirtualProcessors": [
|
||||||
|
2.000
|
||||||
|
],
|
||||||
|
"currentVirtualProcessors": [
|
||||||
|
0.000
|
||||||
|
],
|
||||||
|
"maxProcUnits": [
|
||||||
|
2.000
|
||||||
|
],
|
||||||
|
"entitledProcUnits": [
|
||||||
|
1.000
|
||||||
|
],
|
||||||
|
"utilizedProcUnits": [
|
||||||
|
0.009
|
||||||
|
],
|
||||||
|
"utilizedCappedProcUnits": [
|
||||||
|
0.113
|
||||||
|
],
|
||||||
|
"utilizedUncappedProcUnits": [
|
||||||
|
0.000
|
||||||
|
],
|
||||||
|
"idleProcUnits": [
|
||||||
|
0.104
|
||||||
|
],
|
||||||
|
"donatedProcUnits": [
|
||||||
|
0.887
|
||||||
|
],
|
||||||
|
"timeSpentWaitingForDispatch": [
|
||||||
|
0.000
|
||||||
|
],
|
||||||
|
"timePerInstructionExecution": [
|
||||||
|
51.000
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"network": {
|
||||||
|
"genericAdapters": [
|
||||||
|
{
|
||||||
|
"id": "ent6",
|
||||||
|
"type": "virtual",
|
||||||
|
"physicalLocation": "U8247.22L.213C1BA-V2-C3-T1",
|
||||||
|
"receivedPackets": [
|
||||||
|
5.967
|
||||||
|
],
|
||||||
|
"sentPackets": [
|
||||||
|
1.967
|
||||||
|
],
|
||||||
|
"droppedPackets": [
|
||||||
|
0.000
|
||||||
|
],
|
||||||
|
"sentBytes": [
|
||||||
|
1340.100
|
||||||
|
],
|
||||||
|
"receivedBytes": [
|
||||||
|
536.100
|
||||||
|
],
|
||||||
|
"transferredBytes": [
|
||||||
|
1876.200
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "ent4",
|
||||||
|
"type": "virtual",
|
||||||
|
"physicalLocation": "U8247.22L.213C1BA-V2-C2-T1",
|
||||||
|
"receivedPackets": [
|
||||||
|
4.667
|
||||||
|
],
|
||||||
|
"sentPackets": [
|
||||||
|
1.000
|
||||||
|
],
|
||||||
|
"droppedPackets": [
|
||||||
|
0.000
|
||||||
|
],
|
||||||
|
"sentBytes": [
|
||||||
|
706.000
|
||||||
|
],
|
||||||
|
"receivedBytes": [
|
||||||
|
3294.667
|
||||||
|
],
|
||||||
|
"transferredBytes": [
|
||||||
|
4000.667
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "ent2",
|
||||||
|
"type": "physical",
|
||||||
|
"physicalLocation": "U78CB.001.WZS0BYF-P1-C6-T3",
|
||||||
|
"receivedPackets": [
|
||||||
|
6.000
|
||||||
|
],
|
||||||
|
"sentPackets": [
|
||||||
|
0.000
|
||||||
|
],
|
||||||
|
"droppedPackets": [
|
||||||
|
0.000
|
||||||
|
],
|
||||||
|
"sentBytes": [
|
||||||
|
0.000
|
||||||
|
],
|
||||||
|
"receivedBytes": [
|
||||||
|
420.167
|
||||||
|
],
|
||||||
|
"transferredBytes": [
|
||||||
|
420.167
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"sharedAdapters": [
|
||||||
|
{
|
||||||
|
"id": "ent5",
|
||||||
|
"type": "sea",
|
||||||
|
"physicalLocation": "U8247.22L.213C1BA-V2-C2-T1",
|
||||||
|
"receivedPackets": [
|
||||||
|
10.667
|
||||||
|
],
|
||||||
|
"sentPackets": [
|
||||||
|
1.000
|
||||||
|
],
|
||||||
|
"droppedPackets": [
|
||||||
|
0.000
|
||||||
|
],
|
||||||
|
"sentBytes": [
|
||||||
|
706.000
|
||||||
|
],
|
||||||
|
"receivedBytes": [
|
||||||
|
3714.833
|
||||||
|
],
|
||||||
|
"transferredBytes": [
|
||||||
|
4420.833
|
||||||
|
],
|
||||||
|
"bridgedAdapters": [
|
||||||
|
"ent2",
|
||||||
|
"ent4",
|
||||||
|
"ent4"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"virtualEthernetAdapters": [
|
||||||
|
{
|
||||||
|
"physicalLocation": "U8247.22L.213C1BA-V2-C2",
|
||||||
|
"vlanId": 1,
|
||||||
|
"vswitchId": 0,
|
||||||
|
"isPortVlanId": true,
|
||||||
|
"receivedPackets": [
|
||||||
|
0.000
|
||||||
|
],
|
||||||
|
"sentPackets": [
|
||||||
|
0.000
|
||||||
|
],
|
||||||
|
"droppedPackets": [
|
||||||
|
0.000
|
||||||
|
],
|
||||||
|
"sentBytes": [
|
||||||
|
0.000
|
||||||
|
],
|
||||||
|
"receivedBytes": [
|
||||||
|
0.000
|
||||||
|
],
|
||||||
|
"receivedPhysicalPackets": [
|
||||||
|
0.000
|
||||||
|
],
|
||||||
|
"sentPhysicalPackets": [
|
||||||
|
0.000
|
||||||
|
],
|
||||||
|
"droppedPhysicalPackets": [
|
||||||
|
0.000
|
||||||
|
],
|
||||||
|
"sentPhysicalBytes": [
|
||||||
|
0.000
|
||||||
|
],
|
||||||
|
"receivedPhysicalBytes": [
|
||||||
|
0.000
|
||||||
|
],
|
||||||
|
"transferredBytes": [
|
||||||
|
0.000
|
||||||
|
],
|
||||||
|
"transferredPhysicalBytes": [
|
||||||
|
0.000
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"physicalLocation": "U8247.22L.213C1BA-V2-C3",
|
||||||
|
"vlanId": 1,
|
||||||
|
"vswitchId": 0,
|
||||||
|
"isPortVlanId": true,
|
||||||
|
"receivedPackets": [
|
||||||
|
8.467
|
||||||
|
],
|
||||||
|
"sentPackets": [
|
||||||
|
4.333
|
||||||
|
],
|
||||||
|
"droppedPackets": [
|
||||||
|
0.000
|
||||||
|
],
|
||||||
|
"sentBytes": [
|
||||||
|
1849.500
|
||||||
|
],
|
||||||
|
"receivedBytes": [
|
||||||
|
1100.000
|
||||||
|
],
|
||||||
|
"receivedPhysicalPackets": [
|
||||||
|
8.467
|
||||||
|
],
|
||||||
|
"sentPhysicalPackets": [
|
||||||
|
4.333
|
||||||
|
],
|
||||||
|
"droppedPhysicalPackets": [
|
||||||
|
0.000
|
||||||
|
],
|
||||||
|
"sentPhysicalBytes": [
|
||||||
|
1849.500
|
||||||
|
],
|
||||||
|
"receivedPhysicalBytes": [
|
||||||
|
1100.000
|
||||||
|
],
|
||||||
|
"transferredBytes": [
|
||||||
|
2949.500
|
||||||
|
],
|
||||||
|
"transferredPhysicalBytes": [
|
||||||
|
2949.500
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"storage": {
|
||||||
|
"clientLpars": [
|
||||||
|
"62F4D488-C838-41E2-B83B-E68E004E3B63"
|
||||||
|
],
|
||||||
|
"genericPhysicalAdapters": [
|
||||||
|
{
|
||||||
|
"id": "sissas1",
|
||||||
|
"type": "sas",
|
||||||
|
"physicalLocation": "U78CB.001.WZS0BYF-P1-C15-T1",
|
||||||
|
"numOfReads": [
|
||||||
|
0.000
|
||||||
|
],
|
||||||
|
"numOfWrites": [
|
||||||
|
12.000
|
||||||
|
],
|
||||||
|
"readBytes": [
|
||||||
|
0.000
|
||||||
|
],
|
||||||
|
"writeBytes": [
|
||||||
|
6144.000
|
||||||
|
],
|
||||||
|
"transmittedBytes": [
|
||||||
|
6144.000
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"fiberChannelAdapters": [
|
||||||
|
{
|
||||||
|
"id": "fcs1",
|
||||||
|
"wwpn": "10000090fab674d7",
|
||||||
|
"physicalLocation": "U78CB.001.WZS0BYF-P1-C2-T2",
|
||||||
|
"numOfPorts": 0,
|
||||||
|
"numOfReads": [
|
||||||
|
0.000
|
||||||
|
],
|
||||||
|
"numOfWrites": [
|
||||||
|
0.000
|
||||||
|
],
|
||||||
|
"readBytes": [
|
||||||
|
0.000
|
||||||
|
],
|
||||||
|
"writeBytes": [
|
||||||
|
0.000
|
||||||
|
],
|
||||||
|
"runningSpeed": [
|
||||||
|
0.000
|
||||||
|
],
|
||||||
|
"transmittedBytes": [
|
||||||
|
0.000
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "fcs0",
|
||||||
|
"wwpn": "10000090fab674d6",
|
||||||
|
"physicalLocation": "U78CB.001.WZS0BYF-P1-C2-T1",
|
||||||
|
"numOfPorts": 3,
|
||||||
|
"numOfReads": [
|
||||||
|
0.000
|
||||||
|
],
|
||||||
|
"numOfWrites": [
|
||||||
|
0.067
|
||||||
|
],
|
||||||
|
"readBytes": [
|
||||||
|
0.000
|
||||||
|
],
|
||||||
|
"writeBytes": [
|
||||||
|
4369.067
|
||||||
|
],
|
||||||
|
"runningSpeed": [
|
||||||
|
8.000
|
||||||
|
],
|
||||||
|
"transmittedBytes": [
|
||||||
|
4369.067
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
19
src/test/resources/pcm-partition.xml
Normal file
19
src/test/resources/pcm-partition.xml
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
<feed xmlns="http://www.w3.org/2005/Atom" xmlns:ns2="http://a9.com/-/spec/opensearch/1.1/" xmlns:ns3="http://www.w3.org/1999/xhtml">
|
||||||
|
<id>1700D42D-C9FA-4131-B024-588FDDC70649</id>
|
||||||
|
<updated>2020-08-10T20:54:30.000+02:00</updated>
|
||||||
|
<title type="text">ProcessedMetrics</title>
|
||||||
|
<subtitle type="text">LogicalPartition 1700D42D-C9FA-4131-B024-588FDDC70649</subtitle>
|
||||||
|
<link rel="self" href="https://10.32.64.39:12443/rest/api/pcm/ManagedSystem/b597e4da-2aab-3f52-8616-341d62153559/LogicalPartition/1700D42D-C9FA-4131-B024-588FDDC70649/ProcessedMetrics"/>
|
||||||
|
<generator uri="IBM Power Systems Management Console" version="1"/>
|
||||||
|
<entry>
|
||||||
|
<id>160106d5-1803-42f3-a81f-c1fd90456e8c</id>
|
||||||
|
<updated>2020-08-10T20:54:30.000+02:00</updated>
|
||||||
|
<title type="text">LogicalPartition_1700D42D-C9FA-4131-B024-588FDDC70649_20200810T185530+0200_20200810T205430+0200_30.json</title>
|
||||||
|
<published>2020-08-10T18:55:30.000+02:00</published>
|
||||||
|
<link type="application/json" href="https://10.32.64.39:12443/rest/api/pcm/ProcessedMetrics/LogicalPartition_1700D42D-C9FA-4131-B024-588FDDC70649_20200810T185530+0200_20200810T205430+0200_30.json"/>
|
||||||
|
<author>
|
||||||
|
<name>IBM Power Systems Management Console</name>
|
||||||
|
</author>
|
||||||
|
<category term="LogicalPartition" frequency="30"/>
|
||||||
|
</entry>
|
||||||
|
</feed>
|
Loading…
Reference in a new issue