systemvm: list systemvm does not return agent state and version (#3870)

This makes the listSystemVms API to return the host status (agent state),
version and last pinged information. This makes it possible for UIs
to call a single API to get this information.
This commit is contained in:
Rohit Yadav 2020-02-07 17:49:35 +05:30 committed by GitHub
parent cd55674afe
commit afcbbc4b3e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 51 additions and 31 deletions

View File

@ -19,14 +19,14 @@ package org.apache.cloudstack.api.response;
import java.util.Date;
import java.util.List;
import com.google.gson.annotations.SerializedName;
import org.apache.cloudstack.api.ApiConstants;
import org.apache.cloudstack.api.BaseResponse;
import org.apache.cloudstack.api.EntityReference;
import com.cloud.host.Status;
import com.cloud.serializer.Param;
import com.cloud.vm.VirtualMachine;
import com.google.gson.annotations.SerializedName;
@EntityReference(value = VirtualMachine.class)
public class SystemVmResponse extends BaseResponse {
@ -138,6 +138,10 @@ public class SystemVmResponse extends BaseResponse {
@Param(description = "the state of the system VM")
private String state;
@SerializedName("agentstate")
@Param(description = "the agent state of the system VM", since = "4.13.1")
private String agentState;
@SerializedName("activeviewersessions")
@Param(description = "the number of active console sessions for the console proxy system vm")
private Integer activeViewerSessions;
@ -150,6 +154,14 @@ public class SystemVmResponse extends BaseResponse {
@Param(description = "public vlan range")
private List<String> publicVlan;
@SerializedName("lastpinged")
@Param(description = "the date and time the host was last pinged", since = "4.13.1")
private Date lastPinged;
@SerializedName("version")
@Param(description = "the systemvm agent version", since = "4.13.1")
private String version;
@Override
public String getObjectId() {
return this.getId();
@ -331,6 +343,18 @@ public class SystemVmResponse extends BaseResponse {
this.state = state;
}
public String getAgentState() {
return agentState;
}
public void setAgentState(Status agentState) {
if (agentState != null) {
this.agentState = agentState.toString();
} else {
this.agentState = Status.Unknown.toString();
}
}
public Integer getActiveViewerSessions() {
return activeViewerSessions;
}
@ -378,4 +402,20 @@ public class SystemVmResponse extends BaseResponse {
public void setPublicVlan(List<String> publicVlan) {
this.publicVlan = publicVlan;
}
public Date getLastPinged() {
return lastPinged;
}
public void setLastPinged(Date lastPinged) {
this.lastPinged = lastPinged;
}
public String getVersion() {
return version;
}
public void setVersion(String version) {
this.version = version;
}
}

View File

@ -31,8 +31,6 @@ import java.util.stream.Collectors;
import javax.inject.Inject;
import com.cloud.vm.snapshot.VMSnapshotVO;
import com.cloud.vm.snapshot.dao.VMSnapshotDao;
import org.apache.cloudstack.acl.ControlledEntity;
import org.apache.cloudstack.acl.ControlledEntity.ACLType;
import org.apache.cloudstack.affinity.AffinityGroup;
@ -336,6 +334,8 @@ import com.cloud.vm.VirtualMachine.Type;
import com.cloud.vm.dao.NicExtraDhcpOptionDao;
import com.cloud.vm.dao.NicSecondaryIpVO;
import com.cloud.vm.snapshot.VMSnapshot;
import com.cloud.vm.snapshot.VMSnapshotVO;
import com.cloud.vm.snapshot.dao.VMSnapshotDao;
public class ApiResponseHelper implements ResponseGenerator {
@ -1375,6 +1375,9 @@ public class ApiResponseHelper implements ResponseGenerator {
vmResponse.setHostId(host.getUuid());
vmResponse.setHostName(host.getName());
vmResponse.setHypervisor(host.getHypervisorType().toString());
vmResponse.setAgentState(host.getStatus());
vmResponse.setLastPinged(new Date(host.getLastPinged()));
vmResponse.setVersion(host.getVersion());
}
}

View File

@ -9368,7 +9368,7 @@
url: createURL('listSystemVms'),
data: data,
success: function (json) {
var systemvmObjs = json.listsystemvmsresponse.systemvm;
var systemvmObjs = json.listsystemvmsresponse.systemvm || [];
$(systemvmObjs).each(function(idx, item) {
var controlIp = item.linklocalip;
if (item.hypervisor == "VMware") {
@ -9377,32 +9377,9 @@
item.controlip = controlIp;
});
if (systemvmObjs != undefined) {
$.ajax({
url: createURL('listHosts'),
data: {
details: 'min'
},
success: function (json) {
var hostObjs = json.listhostsresponse.host;
for (var i = 0; i < systemvmObjs.length; i++) {
for (var k = 0; k < hostObjs.length; k++) {
if (hostObjs[k].name == systemvmObjs[i].name) {
systemvmObjs[i].agentstate = hostObjs[k].state;
break;
}
}
}
args.response.success({
data: systemvmObjs
});
}
});
} else {
args.response.success({
data:[]
});
}
args.response.success({
data: systemvmObjs
});
}
});
},