Skip to content

Commit da8d592

Browse files
authored
Merge pull request #199 from codeine-cd/codeine-198
codeine-198 add codeine conf update plugin
2 parents 34ae38d + 41ab94a commit da8d592

File tree

8 files changed

+82
-28
lines changed

8 files changed

+82
-28
lines changed

Diff for: src/common/codeine/jsons/global/ExperimentalConfJson.java

+4
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ public class ExperimentalConfJson {
88
private boolean allow_concurrent_commands_in_peer;
99
private String groups_plugin;
1010
private String after_project_modify_plugin;
11+
private String codeine_conf_modify_plugin;
1112

1213
public String new_issue_link() {
1314
return new_issue_link;
@@ -24,5 +25,8 @@ public String groups_plugin() {
2425
public String after_project_modify_plugin() {
2526
return after_project_modify_plugin;
2627
}
28+
public String codeine_conf_modify_plugin() {
29+
return codeine_conf_modify_plugin;
30+
}
2731

2832
}

Diff for: src/common/codeine/model/Constants.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,8 @@ public class Constants
101101
public static final String COMMAND_RESULT = "codeine-command-result=";
102102

103103
public static final String JSON_COMMAND_FILE_NAME = "/command.json";
104-
104+
105+
public static final String EXECUTION_ENV_CONFIGURATION_STEP = "CODEINE_CONFIGURATION_STEP";
105106
public static final String EXECUTION_ENV_OUTPUT_FILE = "CODEINE_OUTPUT_FILE";
106107
public static final String EXECUTION_ENV_PROJECT_NAME = "CODEINE_PROJECT_NAME";
107108
public static final String EXECUTION_ENV_USER_NAME = "CODEINE_USER_NAME";

Diff for: src/common/codeine/servlet/UsersManager.java

+10-7
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,26 @@
11
package codeine.servlet;
22

3-
import javax.inject.Inject;
4-
5-
import org.apache.log4j.Logger;
6-
import org.eclipse.jetty.security.HashLoginService;
7-
import org.eclipse.jetty.security.LoginService;
8-
import org.eclipse.jetty.util.security.Credential;
9-
103
import codeine.jsons.auth.AuthenticationMethod;
114
import codeine.jsons.auth.CodeineUser;
125
import codeine.jsons.auth.IdentityConfJson;
136
import codeine.jsons.auth.IdentityConfJsonStore;
147
import codeine.jsons.global.GlobalConfigurationJsonStore;
8+
import codeine.plugins.CodeineConfModifyPlugin;
9+
import codeine.plugins.CodeineConfModifyPlugin.Step;
1510
import codeine.utils.ExceptionUtils;
11+
import javax.inject.Inject;
12+
import org.apache.log4j.Logger;
13+
import org.eclipse.jetty.security.HashLoginService;
14+
import org.eclipse.jetty.security.LoginService;
15+
import org.eclipse.jetty.util.security.Credential;
1616

1717
public class UsersManager {
1818

1919
private static final Logger log = Logger.getLogger(UsersManager.class);
2020
private @Inject IdentityConfJsonStore identityConfJsonStore;
2121
private @Inject HashLoginService hashLoginService;
2222
private @Inject GlobalConfigurationJsonStore globalConfigurationJsonStore;
23+
private @Inject CodeineConfModifyPlugin codeineConfModifyPlugin;
2324

2425
private void store(IdentityConfJson json) {
2526
identityConfJsonStore.store(json);
@@ -42,7 +43,9 @@ private void putUser(String name, String sisma) {
4243

4344
public CodeineUser addUser(String name, String sisma) {
4445
CodeineUser user = identityConfJsonStore.get().add(name, sisma);
46+
codeineConfModifyPlugin.call(Step.pre, name);
4547
store(identityConfJsonStore.get());
48+
codeineConfModifyPlugin.call(Step.post, name);
4649
putUser(name, sisma);
4750
return user;
4851
}

Diff for: src/web_server/codeine/WebServerModule.java

+2
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
import codeine.jsons.peer_status.PeersProjectsStatusInWebServer;
1111
import codeine.permissions.GroupsManager;
1212
import codeine.permissions.PluginGroupsManager;
13+
import codeine.plugins.CodeineConfModifyPlugin;
1314
import codeine.plugins.DiscardOldCommandsPlugin;
1415
import codeine.servlet.PrepareForShutdown;
1516
import codeine.servlet.UsersManager;
@@ -36,6 +37,7 @@ protected void configure()
3637
bind(ManageStatisticsCollector.class).in(Scopes.SINGLETON);
3738
bind(GroupsManager.class).to(PluginGroupsManager.class).in(Scopes.SINGLETON);
3839
bind(DiscardOldCommandsPlugin.class).in(Scopes.SINGLETON);
40+
bind(CodeineConfModifyPlugin.class).in(Scopes.SINGLETON);
3941
bind(CommandFileWriter.class).in(Scopes.SINGLETON);
4042
bind(NodeAggregator.class).in(Scopes.SINGLETON);
4143
bind(GlobalConfigurationJsonStore.class).in(Scopes.SINGLETON);
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
package codeine.plugins;
2+
3+
import codeine.jsons.global.ExperimentalConfJsonStore;
4+
import codeine.model.Constants;
5+
import codeine.model.Result;
6+
import codeine.utils.StringUtils;
7+
import codeine.utils.os_process.ProcessExecuter.ProcessExecuterBuilder;
8+
import com.google.common.collect.Lists;
9+
import com.google.common.collect.Maps;
10+
import java.util.List;
11+
import java.util.Map;
12+
import javax.inject.Inject;
13+
import org.apache.log4j.Logger;
14+
15+
public class CodeineConfModifyPlugin {
16+
17+
@Inject
18+
private ExperimentalConfJsonStore experimentalConfJsonStore;
19+
20+
private static final Logger log = Logger.getLogger(CodeineConfModifyPlugin.class);
21+
22+
public enum Step {pre, post}
23+
24+
public void call(Step step, String username) {
25+
String codeine_conf_modify_plugin = experimentalConfJsonStore.get().codeine_conf_modify_plugin();
26+
if (!StringUtils.isEmpty(codeine_conf_modify_plugin)) {
27+
log.info("calling codeine conf modify by user " + username + " in step " + step.toString());
28+
List<String> cmd = Lists.newArrayList(codeine_conf_modify_plugin);
29+
Map<String, String> env = Maps.newHashMap();
30+
env.put(Constants.EXECUTION_ENV_CONFIGURATION_STEP, String.valueOf(step));
31+
env.put(Constants.EXECUTION_ENV_USER_NAME, username);
32+
log.info("executing " + codeine_conf_modify_plugin);
33+
Result result = new ProcessExecuterBuilder(cmd).timeoutInMinutes(2).env(env).build().execute();
34+
log.info("calling codeine_conf_modify_plugin finished " + result.toStringLong());
35+
}
36+
}
37+
}

Diff for: src/web_server/codeine/servlets/api_servlets/angular/CodeineConfigurationApiServlet.java

+8-5
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,16 @@
11
package codeine.servlets.api_servlets.angular;
22

33

4+
import codeine.jsons.global.GlobalConfigurationJson;
5+
import codeine.jsons.global.GlobalConfigurationJsonStore;
6+
import codeine.plugins.CodeineConfModifyPlugin;
7+
import codeine.plugins.CodeineConfModifyPlugin.Step;
8+
import codeine.servlet.AbstractApiServlet;
49
import javax.inject.Inject;
510
import javax.servlet.http.HttpServletRequest;
611
import javax.servlet.http.HttpServletResponse;
7-
812
import org.apache.log4j.Logger;
913

10-
import codeine.jsons.global.GlobalConfigurationJson;
11-
import codeine.jsons.global.GlobalConfigurationJsonStore;
12-
import codeine.servlet.AbstractApiServlet;
13-
1414
public class CodeineConfigurationApiServlet extends AbstractApiServlet {
1515

1616

@@ -19,6 +19,7 @@ public class CodeineConfigurationApiServlet extends AbstractApiServlet {
1919
private static final long serialVersionUID = 1L;
2020

2121
@Inject private GlobalConfigurationJsonStore configurationJsonStore;
22+
@Inject private CodeineConfModifyPlugin codeineConfModifyPlugin;
2223

2324
@Override
2425
protected boolean checkPermissions(HttpServletRequest request) {
@@ -41,7 +42,9 @@ protected void myGet(HttpServletRequest request, HttpServletResponse response) {
4142
protected void myPut(HttpServletRequest req, HttpServletResponse resp) {
4243
GlobalConfigurationJson config = readBodyJson(req, GlobalConfigurationJson.class);
4344
log.info("Will update codeine configuration. New Config is: " + config);
45+
codeineConfModifyPlugin.call(Step.pre, getUser(req).user().username());
4446
configurationJsonStore.store(config);
47+
codeineConfModifyPlugin.call(Step.post, getUser(req).user().username());
4548
writeResponseJson(resp, configurationJsonStore.get());
4649
}
4750

Diff for: src/web_server/codeine/servlets/api_servlets/angular/CodeineExperimentalConfigurationApiServlet.java

+9-6
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,16 @@
11
package codeine.servlets.api_servlets.angular;
22

33

4+
import codeine.jsons.global.ExperimentalConfJson;
5+
import codeine.jsons.global.ExperimentalConfJsonStore;
6+
import codeine.plugins.CodeineConfModifyPlugin;
7+
import codeine.plugins.CodeineConfModifyPlugin.Step;
8+
import codeine.servlet.AbstractApiServlet;
49
import javax.inject.Inject;
510
import javax.servlet.http.HttpServletRequest;
611
import javax.servlet.http.HttpServletResponse;
7-
812
import org.apache.log4j.Logger;
913

10-
import codeine.jsons.global.ExperimentalConfJson;
11-
import codeine.jsons.global.ExperimentalConfJsonStore;
12-
import codeine.servlet.AbstractApiServlet;
13-
1414
public class CodeineExperimentalConfigurationApiServlet extends AbstractApiServlet {
1515

1616

@@ -19,6 +19,7 @@ public class CodeineExperimentalConfigurationApiServlet extends AbstractApiServl
1919
private static final long serialVersionUID = 1L;
2020

2121
@Inject private ExperimentalConfJsonStore configurationJsonStore;
22+
@Inject private CodeineConfModifyPlugin codeineConfModifyPlugin;
2223

2324
@Override
2425
protected boolean checkPermissions(HttpServletRequest request) {
@@ -40,8 +41,10 @@ protected void myGet(HttpServletRequest request, HttpServletResponse response) {
4041
@Override
4142
protected void myPut(HttpServletRequest req, HttpServletResponse resp) {
4243
ExperimentalConfJson config = readBodyJson(req, ExperimentalConfJson.class);
43-
log.info("Will update codeine Experimenta configuration. New Config is: " + config);
44+
log.info("Will update codeine Experimental configuration. New Config is: " + config);
45+
codeineConfModifyPlugin.call(Step.pre, getUser(req).user().username());
4446
configurationJsonStore.store(config);
47+
codeineConfModifyPlugin.call(Step.post, getUser(req).user().username());
4548
writeResponseJson(resp, configurationJsonStore.get());
4649
}
4750

Diff for: src/web_server/codeine/servlets/api_servlets/angular/CodeinePermissionsApiServlet.java

+10-9
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,26 @@
11
package codeine.servlets.api_servlets.angular;
22

3-
import java.lang.reflect.Type;
4-
import java.util.List;
5-
6-
import javax.servlet.http.HttpServletRequest;
7-
import javax.servlet.http.HttpServletResponse;
8-
9-
import org.apache.log4j.Logger;
10-
113
import codeine.jsons.global.UserPermissionsJsonStore;
124
import codeine.permissions.PermissionsConfJson;
135
import codeine.permissions.UserPermissions;
6+
import codeine.plugins.CodeineConfModifyPlugin;
7+
import codeine.plugins.CodeineConfModifyPlugin.Step;
148
import codeine.servlet.AbstractApiServlet;
15-
169
import com.google.common.reflect.TypeToken;
1710
import com.google.inject.Inject;
11+
import java.lang.reflect.Type;
12+
import java.util.List;
13+
import javax.servlet.http.HttpServletRequest;
14+
import javax.servlet.http.HttpServletResponse;
15+
import org.apache.log4j.Logger;
1816

1917
@SuppressWarnings("serial")
2018
public class CodeinePermissionsApiServlet extends AbstractApiServlet {
2119

2220
private static final Logger log = Logger.getLogger(CodeinePermissionsApiServlet.class);
2321
private static final long serialVersionUID = 1L;
2422
private @Inject UserPermissionsJsonStore permissionsJsonStore;
23+
private @Inject CodeineConfModifyPlugin codeineConfModifyPlugin;
2524

2625

2726
@Override
@@ -47,7 +46,9 @@ protected void myPut(HttpServletRequest request, HttpServletResponse response) {
4746
Type listType = new TypeToken<List<UserPermissions>>() { }.getType();
4847
List<UserPermissions> data = readBodyJson(request, listType);
4948
log.info("Will update codeine configuration. New Config is: " + data);
49+
codeineConfModifyPlugin.call(Step.pre, getUser(request).user().username());
5050
permissionsJsonStore.store(new PermissionsConfJson(data));
51+
codeineConfModifyPlugin.call(Step.post, getUser(request).user().username());
5152
writeResponseJson(response, data);
5253
}
5354

0 commit comments

Comments
 (0)