use of org.platformlayer.ops.Handler in project platformlayer by platformlayer.
the class Tagger method handler.
@Handler
public void handler() throws OpsException {
if (OpsContext.isDelete() || OpsContext.isConfigure()) {
TagChanges tagChanges = tagChangesProvider.get();
if (tagChanges != null) {
log.info("Setting tags on " + platformLayerKey);
if (OpsContext.isDelete()) {
// Swap the tags for a removal
Tags x = tagChanges.addTags;
tagChanges.addTags = tagChanges.removeTags;
tagChanges.removeTags = x;
}
platformLayer.changeTags(platformLayerKey, tagChanges, null);
}
}
}
use of org.platformlayer.ops.Handler in project platformlayer by platformlayer.
the class OperationInvoker method isCandidate.
private boolean isCandidate(Method method, BindingScope scope) {
Action action = scope.getInstance(Action.class);
Handler handler = method.getAnnotation(Handler.class);
if (handler != null) {
if (!canHandleAction(handler, action, true)) {
return false;
}
return true;
}
int managedCount = 0;
for (Class<?> parameterType : method.getParameterTypes()) {
if (parameterType.equals(ItemBase.class)) {
managedCount++;
}
}
// We require that we take at least one 'Managed<?>' parameter
if (managedCount == 0) {
return false;
}
return true;
}
use of org.platformlayer.ops.Handler in project platformlayer by platformlayer.
the class CreateUser method handler.
@Handler
public void handler(DatabaseTarget db) throws OpsException {
if (OpsContext.isConfigure()) {
try {
String createUser = String.format("CREATE USER %s WITH PASSWORD '%s'", databaseUser, databasePassword.plaintext());
db.execute(createUser);
} catch (SQLException e) {
String sqlState = e.getSQLState();
if (Objects.equal(sqlState, "42710")) {
// ProcessExecution execution = e.getExecution();
// if (execution.getExitCode() == 1 && execution.getStdErr().contains("already exists")) {
log.info("User already exists");
} else {
log.info("Unknown code: " + sqlState);
throw new OpsException("Error creating user", e);
}
}
String grant = String.format("GRANT ALL PRIVILEGES ON DATABASE %s to %s;", grantDatabaseName, databaseUser);
try {
db.execute(grant);
} catch (SQLException e) {
String sqlState = e.getSQLState();
// if (Objects.equal(sqlState, "12345")) {
// log.info("User already exists");
// } else {
log.info("Unknown code: " + sqlState);
throw new OpsException("Error granting privileges", e);
// }
}
}
}
use of org.platformlayer.ops.Handler in project platformlayer by platformlayer.
the class IpsecPresharedKey method handler.
@Handler
public void handler(OpsTarget target) throws OpsException {
if (OpsContext.isConfigure()) {
File pskFile = new File("/etc/racoon/psk.txt");
String psk = target.readTextFile(pskFile);
if (psk == null) {
psk = "# Managed by PlatformLayer\n";
}
boolean found = false;
// TODO: Extend MapSplitter / add some helper functions??
Splitter keyValueSpliter = Splitter.on(CharMatcher.WHITESPACE).limit(2).omitEmptyStrings().trimResults();
Map<String, String> psks = Maps.newHashMap();
for (String line : Splitter.on("\n").trimResults().omitEmptyStrings().split(psk)) {
if (line.startsWith("#")) {
continue;
}
List<String> tokens = Lists.newArrayList(keyValueSpliter.split(line));
if (tokens.size() != 2) {
throw new OpsException("Cannot parse PSK line: " + line);
}
String key = tokens.get(0);
String value = tokens.get(1);
if (psks.containsKey(key)) {
// (We could check to see if they're the same, but this is generally not good)
throw new OpsException("Found duplicate PSK");
}
psks.put(key, value);
if (!key.equals(id)) {
continue;
}
if (value.equals(secret.plaintext())) {
found = true;
}
}
if (!found) {
psk = psk + "\n";
psk += id + " " + secret.plaintext() + "\n";
FileUpload.upload(target, pskFile, psk);
target.executeCommand(Command.build("racoonctl reload-config"));
}
}
}
use of org.platformlayer.ops.Handler in project platformlayer by platformlayer.
the class PosixGroup method doOperation.
@Handler
public void doOperation() throws OpsException {
OpsTarget target = OpsContext.get().getInstance(OpsTarget.class);
Map<String, Group> groups = PosixGroupManagement.getGroups(target);
Group group = groups.get(groupName);
if (group == null) {
target.executeCommand("groupadd {0}", groupName);
}
}
Aggregations