Skip to content

Commit d8e61da

Browse files
committed
<feature>[externalservice]: add external service capabilities
Resolves: ZSTAC-43334 Change-Id: I6b6e76646f7473636d6d7264646d64676b68656d Signed-off-by: AlanJager <[email protected]>
1 parent 8ffe610 commit d8e61da

File tree

4 files changed

+60
-0
lines changed

4 files changed

+60
-0
lines changed

core/src/main/java/org/zstack/core/externalservice/ExternalService.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package org.zstack.core.externalservice;
22

3+
import org.zstack.header.core.external.service.ExternalServiceCapabilities;
4+
35
public interface ExternalService {
46
String getName();
57

@@ -10,4 +12,8 @@ public interface ExternalService {
1012
void restart();
1113

1214
boolean isAlive();
15+
16+
ExternalServiceCapabilities getExternalServiceCapabilities();
17+
18+
void reload();
1319
}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
package org.zstack.core.externalservice;
2+
3+
import org.zstack.header.core.external.service.ExternalServiceCapabilities;
4+
5+
public class ExternalServiceCapabilitiesBuilder extends ExternalServiceCapabilities {
6+
public static ExternalServiceCapabilitiesBuilder build() {
7+
return new ExternalServiceCapabilitiesBuilder();
8+
}
9+
10+
public ExternalServiceCapabilitiesBuilder reloadConfig(boolean reloadConfig) {
11+
setReloadConfig(reloadConfig);
12+
return this;
13+
}
14+
}

externalservice/src/main/java/org/zstack/externalservice/cronjob/CronJobImpl.java

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44
import org.apache.commons.lang.StringUtils;
55
import org.zstack.core.Platform;
66
import org.zstack.core.externalservice.AbstractLocalExternalService;
7+
import org.zstack.header.core.external.service.ExternalServiceCapabilities;
8+
import org.zstack.core.externalservice.ExternalServiceCapabilitiesBuilder;
79
import org.zstack.header.errorcode.OperationFailureException;
810
import org.zstack.header.exception.CloudRuntimeException;
911
import org.zstack.utils.Bash;
@@ -17,6 +19,10 @@
1719
import java.util.Set;
1820

1921
public class CronJobImpl extends AbstractLocalExternalService implements CronJob {
22+
ExternalServiceCapabilities capabilities = ExternalServiceCapabilitiesBuilder
23+
.build()
24+
.reloadConfig(true);
25+
2026
@Override
2127
protected String[] getCommandLineKeywords() {
2228
return new String[] {"crond", "-n"};
@@ -48,6 +54,27 @@ public boolean isAlive() {
4854
return getPID() != null;
4955
}
5056

57+
@Override
58+
public ExternalServiceCapabilities getExternalServiceCapabilities() {
59+
return capabilities;
60+
}
61+
62+
@Override
63+
public void reload() {
64+
if (!isAlive()) {
65+
throw new OperationFailureException(operr("crond is not running"));
66+
}
67+
68+
new Bash() {
69+
@Override
70+
protected void scripts() {
71+
setE();
72+
73+
run("service crond reload");
74+
}
75+
}.execute();
76+
}
77+
5178
@Override
5279
public void addJob(String job) {
5380
if (!isAlive()) {
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package org.zstack.header.core.external.service;
2+
3+
public class ExternalServiceCapabilities {
4+
private boolean reloadConfig = false;
5+
6+
public boolean isReloadConfig() {
7+
return reloadConfig;
8+
}
9+
10+
public void setReloadConfig(boolean reloadConfig) {
11+
this.reloadConfig = reloadConfig;
12+
}
13+
}

0 commit comments

Comments
 (0)