Shireesh Anjal has posted comments on this change.
Change subject: engine: fetch gluster host uuid during InitVdsOnUp
......................................................................
Patch Set 3: (6 inline comments)
Apart from few comments for Kanagaraj, I've also responded to some comments
from Omer, Yair and Michael.
....................................................
File
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/InitVdsOnUpCommand.java
Line 79: if (vdsGroup.supportsVirtService()) {
Line 80: setSucceeded(initVirtResources());
Line 81: }
Line 82:
Line 83: if (vdsGroup.supportsGlusterService()) {
I know this is not part of your patch, but I think we should do this only if
initVirtResources() had succeeded (in gluster+virt mode). So, what I suggest
here is,
if (getSucceeded() && vdsGroup.supportsGlusterService()) {
setSucceeded(initGlusterHost());
}
Line 84: setSucceeded(initGlusterHost());
Line 85: }
Line 86: }
Line 87:
Line 236: public AuditLogType getAuditLogTypeValue() {
Line 237: AuditLogType type = AuditLogType.UNASSIGNED;
Line 238:
Line 239: if (getVdsGroup().supportsGlusterService()) {
Line 240: if (!_glusterHostUuidFound) {
If you incorporate my suggestion of not even trying to perform
initGlusterHost() when the virt initialization has failed (in virt+gluster
mode), then _glusterHostUuidFound can still be false here, which might result
in an incorrect audit log type being returned.
So I suggest to reverse the sequence here - first check and return virt related
errors, and then proceed to gluster ones.
Line 241: type = AuditLogType.GLUSTER_HOST_UUID_NOT_FOUND;
Line 242: } else if (!_glusterPeerListSucceeded) {
Line 243: type = AuditLogType.GLUSTER_SERVERS_LIST_FAILED;
Line 244: } else if (!_glusterPeerProbeSucceeded) {
Line 256: } else if (getVds().getpm_enabled() && !_fenceSucceeded) {
Line 257: type = AuditLogType.VDS_FENCE_STATUS_FAILED;
Line 258: }
Line 259:
Line 260: // PM alerts
No, we're hiding all power management related functionality when in
gluster-only mode. It is more related to fencing for virt hosts, and the
functionality is not required in gluster-only mode.
Line 261: AuditLogableBase logable = new
AuditLogableBase(getVds().getId());
Line 262: if (getVds().getpm_enabled()) {
Line 263: if (!_vdsProxyFound) {
Line 264: logable.addCustomValue("Reason",
Line 323: }
Line 324:
Line 325: private boolean hostExists(List<GlusterServerInfo>
glusterServers, VDS server) {
Line 326: if
(GlusterFeatureSupported.glusterHostUuidSupported(getVdsGroup().getcompatibility_version()))
{
Line 327: VdsGluster vdsGluster =
DbFacade.getInstance().getVdsGlusterDao().getById(getVds().getId());
Instead of getVds().getId(), you can use server.getId()
Line 328: if (vdsGluster != null) {
Line 329: for (GlusterServerInfo glusterServer :
glusterServers) {
Line 330: if
(glusterServer.getUuid().equals(vdsGluster.getGlusterHostUuid())) {
Line 331: return true;
Line 338: if
(glusterServer.getHostnameOrIp().equals(server.getHostName())) {
Line 339: return true;
Line 340: }
Line 341: for (VdsNetworkInterface vdsNwInterface :
getVdsInterfaces(server.getId())) {
Line 342: if
(glusterServer.getHostnameOrIp().equals(vdsNwInterface.getAddress())) {
Again, I know this is existing code and not part of your patch, but changing
this as follows will make it better:
String glusterHostAddr =
InetAddress.getByName(glusterServer.getHostnameOrIp()).getHostAddress();
for (VdsNetworkInterface vdsNwInterface : getVdsInterfaces(server.getId())) {
if (glusterHostAddr.equals(vdsNwInterface.getAddress())) {
return true;
}
}
Basically, we're resolving the given "hostnameOrIp" to an IP address before
comparing it with IP addresses of all the network interfaces.
Line 343: return true;
Line 344: }
Line 345: }
Line 346: }
Line 350:
Line 351: private boolean saveGlusterHostUuid() {
Line 352: VdsGlusterDao vdsGlusterDao =
DbFacade.getInstance().getVdsGlusterDao();
Line 353: VdsGluster vdsGluster =
vdsGlusterDao.getById(getVds().getId());
Line 354: if (vdsGluster == null) {
Not so in case of gluster related VDS commands that extend from
AbstractGlusterBrokerCommand. We handle all gluster-vdsm errors in
AbstractGlusterBrokerCommand#ProceedProxyReturnValue() and set the succeeded
flag to false.
Hence returnValue.getSucceeded() *will* return false if the VDS command failed.
Line 355: VDSReturnValue returnValue =
runVdsCommand(VDSCommandType.GetGlusterHostUUID,
Line 356: new
VdsIdVDSCommandParametersBase(getVds().getId()));
Line 357: if (returnValue.getSucceeded() &&
returnValue.getReturnValue() != null) {
Line 358: vdsGluster = new VdsGluster();
--
To view, visit http://gerrit.ovirt.org/14166
To unsubscribe, visit http://gerrit.ovirt.org/settings
Gerrit-MessageType: comment
Gerrit-Change-Id: Ied8e8b006adc5722cd70ee19d75a4b6f783d5f44
Gerrit-PatchSet: 3
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Kanagaraj M <[email protected]>
Gerrit-Reviewer: Kanagaraj M <[email protected]>
Gerrit-Reviewer: Michael Kublin <[email protected]>
Gerrit-Reviewer: Omer Frenkel <[email protected]>
Gerrit-Reviewer: Sahina Bose <[email protected]>
Gerrit-Reviewer: Shireesh Anjal <[email protected]>
Gerrit-Reviewer: Yair Zaslavsky <[email protected]>
_______________________________________________
Engine-patches mailing list
[email protected]
http://lists.ovirt.org/mailman/listinfo/engine-patches