GitHub user leo79901 added a comment to the discussion: Issue with Fenced

I don't know much about Java. This is just a conclusion drawn from my little 
understanding of the code.

I think there may be a bug.

I found these code here:
```
    @Override
    public boolean fence(Host r) throws HAFenceException {

        try {
            if (outOfBandManagementService.isOutOfBandManagementEnabled(r)){
                final OutOfBandManagementResponse resp = 
outOfBandManagementService.executePowerOperation(r, PowerOperation.OFF, null);
                return resp.getSuccess();
            } else {
                LOG.warn("OOBM fence operation failed for this host " + 
r.getName());
                return false;
            }
        } catch (Exception e){
            LOG.warn("OOBM service is not configured or enabled for this host " 
+ r.getName() + " error is " + e.getMessage());
            throw new HAFenceException("OBM service is not configured or 
enabled for this host " + r.getName() , e);
        }
    }
```

ACS wants to shut down the host by IPMI in the `fencing` step.
from here:
```
  if (outOfBandManagementService.isOutOfBandManagementEnabled(r)){
                final OutOfBandManagementResponse resp = 
outOfBandManagementService.executePowerOperation(r, PowerOperation.OFF, null);
```
finally , it run this command:
`
/usr/bin/ipmitool -I lanplus -R 1 -v -H 10.21.0.22 -p 623 -U root -P XXXXXXXXX 
chassis power off
`

But it is wrong while shutting down a server which is already shut. I have run 
it manually and get this error.
```
[root@idnode1 ~]# /usr/bin/ipmitool -I lanplus -R 1 -v -H 10.21.0.22 -p 623 -U 
root -P XXXXXXXXX chassis power off
Set Chassis Power Control to Down/Off failed: Command not supported in present 
state
```
So it was run again and again.

Maybe we can add some code to resolve it. 
Return true if the host is already down
```
public boolean fence(Host r) throws HAFenceException {

    try {
        // check host status
        if (r.getStatus().equals(Host.Status.DOWN)) {
            LOG.info("Host " + r.getName() + " is already down. Returning 
success.");
            return true;
        }

        if (outOfBandManagementService.isOutOfBandManagementEnabled(r)) {
            final OutOfBandManagementResponse resp = 
outOfBandManagementService.executePowerOperation(r, PowerOperation.OFF, null);
            return resp.getSuccess();
        } else {
            LOG.warn("OOBM fence operation failed for this host " + 
r.getName());
            return false;
        }
    } catch (Exception e) {
        LOG.warn("OOBM service is not configured or enabled for this host " + 
r.getName() + " error is " + e.getMessage());
        throw new HAFenceException("OBM service is not configured or enabled 
for this host " + r.getName(), e);
    }
}
```

GitHub link: 
https://github.com/apache/cloudstack/discussions/10026#discussioncomment-11449123

----
This is an automatically sent email for users@cloudstack.apache.org.
To unsubscribe, please send an email to: users-unsubscr...@cloudstack.apache.org

Reply via email to