Skip to content

Commit 7941ccc

Browse files
committed
Minor refactor
1 parent 0634452 commit 7941ccc

5 files changed

Lines changed: 21 additions & 15 deletions

File tree

agent/bindir/rolling-maintenance.in

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -28,11 +28,14 @@ logging.basicConfig(filename=LOG_FILE,
2828
level=logging.INFO)
2929
logger = logging.getLogger('rolling-maintenance')
3030

31-
def execute_script(stage, script):
31+
def execute_script(stage, script, payload):
3232
logger.info("Executing script: %s for stage: %s" % (script, stage))
3333

3434
try:
35-
command = '. ' + script
35+
command = script
36+
if payload:
37+
logger.info("Adding payload: %s" % payload)
38+
command += " " + payload
3639
pout = Popen(command, shell=True, stdout=PIPE)
3740
exitStatus = pout.wait()
3841
output = pout.communicate()[0]
@@ -48,15 +51,18 @@ def execute_script(stage, script):
4851
sys.exit(1)
4952

5053
if __name__ == '__main__':
51-
if len(sys.argv) != 2:
52-
logger.error("Wrong number of parameters received, STAGE,SCRIPT expected")
54+
if len(sys.argv) < 2:
55+
logger.error("Wrong number of parameters received, STAGE,SCRIPT[,PAYLOAD] expected")
5356
sys.exit(0)
5457

5558
args = sys.argv[1]
5659
params = args.split(',')
5760
stage = params[0]
5861
script = params[1]
59-
logger.info("Received parameters: stage: %s and script: %s" % (stage, script))
62+
payload = ""
63+
if len(params) > 2:
64+
payload = params[2]
65+
logger.info("Received parameters: stage: %s, script: %s and payload: %s" % (stage, script, payload))
6066

61-
execute_script(stage, script)
67+
execute_script(stage, script, payload)
6268
logger.info("Finished executing stage: %s (file: %s)" % (stage, script))

plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/rolling/maintenance/RollingMaintenanceAgentExecutor.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ public String getStageExecutionOutput(String stage, File scriptFile) {
5454
}
5555

5656
@Override
57-
public boolean isStageRunning(String stage, File scriptFile) {
57+
public boolean isStageRunning(String stage, File scriptFile, String payload) {
5858
// In case of reconnection, it is assumed that the stage is finished
5959
return false;
6060
}

plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/rolling/maintenance/RollingMaintenanceExecutor.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,5 +25,5 @@ public interface RollingMaintenanceExecutor {
2525
File getStageScriptFile(String stage);
2626
Pair<Boolean, String> startStageExecution(String stage, File scriptFile, long timeout, String payload);
2727
String getStageExecutionOutput(String stage, File scriptFile);
28-
boolean isStageRunning(String stage, File scriptFile);
28+
boolean isStageRunning(String stage, File scriptFile, String payload);
2929
}

plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/rolling/maintenance/RollingMaintenanceServiceExecutor.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -34,12 +34,12 @@ public RollingMaintenanceServiceExecutor(String hooksDir) {
3434
super(hooksDir);
3535
}
3636

37-
private String invokeService(String action, String stage, String file) {
37+
private String invokeService(String action, String stage, String file, String payload) {
3838
s_logger.debug("Invoking rolling maintenance service for stage: " + stage + "and file " + file + " with action: " + action);
3939
final OutputInterpreter.AllLinesParser parser = new OutputInterpreter.AllLinesParser();
4040
Script command = new Script("/bin/systemctl", s_logger);
4141
command.add(action);
42-
String service = String.format("%s@%s,%s", servicePrefix, stage, file);
42+
String service = String.format("%s@%s,%s,%s", servicePrefix, stage, file, payload);
4343
command.add(service);
4444
String result = command.execute(parser);
4545
int exitValue = command.getExitValue();
@@ -54,7 +54,7 @@ private String invokeService(String action, String stage, String file) {
5454
public Pair<Boolean, String> startStageExecution(String stage, File scriptFile, long timeout, String payload) {
5555
checkHooksDirectory();
5656
setTimeout(timeout);
57-
String result = invokeService("start", stage, scriptFile.getAbsolutePath());
57+
String result = invokeService("start", stage, scriptFile.getAbsolutePath(), payload);
5858
if (StringUtils.isNotBlank(result)) {
5959
throw new CloudRuntimeException("Error starting stage: " + stage + " execution: " + result);
6060
}
@@ -68,10 +68,10 @@ public String getStageExecutionOutput(String stage, File scriptFile) {
6868
}
6969

7070
@Override
71-
public boolean isStageRunning(String stage, File scriptFile) {
72-
String result = invokeService("is-active", stage, scriptFile.getAbsolutePath());
71+
public boolean isStageRunning(String stage, File scriptFile, String payload) {
72+
String result = invokeService("is-active", stage, scriptFile.getAbsolutePath(), payload);
7373
if (StringUtils.isNotBlank(result) && result.equals("failed")) {
74-
String status = invokeService("status", stage, scriptFile.getAbsolutePath());
74+
String status = invokeService("status", stage, scriptFile.getAbsolutePath(), payload);
7575
String errorMsg = "Stage " + stage + " execution failed, status: " + status;
7676
s_logger.error(errorMsg);
7777
throw new CloudRuntimeException(errorMsg);

plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/wrapper/LibvirtRollingMaintenanceCommandWrapper.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ public RollingMaintenanceAnswer execute(RollingMaintenanceCommand command, Libvi
5252
if (!command.isStarted()) {
5353
executor.startStageExecution(stage, scriptFile, timeout, payload);
5454
}
55-
if (executor.isStageRunning(stage, scriptFile)) {
55+
if (executor.isStageRunning(stage, scriptFile, payload)) {
5656
return new RollingMaintenanceAnswer(command, true, "Stage " + stage + " still running", false);
5757
}
5858
String output = executor.getStageExecutionOutput(stage, scriptFile);

0 commit comments

Comments
 (0)