use of org.jboss.hal.dmr.CompositeResult in project console by hal.
the class HostColumn method prune.
private void prune(String operation) {
ResourceAddress address = new ResourceAddress().add(CORE_SERVICE, MANAGEMENT);
crud.readChildren(address, HOST_CONNECTION, children -> {
List<Operation> operations = children.stream().map(property -> {
ResourceAddress hcAddress = HOST_CONNECTION_TEMPLATE.resolve(statementContext, property.getName());
return new Operation.Builder(hcAddress, operation).build();
}).collect(toList());
dispatcher.execute(new Composite(operations), (CompositeResult result) -> {
MessageEvent.fire(eventBus, Message.success(resources.messages().pruneSuccessful()));
refresh(RESTORE_SELECTION);
});
});
}
use of org.jboss.hal.dmr.CompositeResult in project console by hal.
the class HostPresenter method reload.
@Override
protected void reload() {
ResourceAddress hostAddress = new ResourceAddress().add(HOST, statementContext.selectedHost());
Operation hostOp = new Operation.Builder(hostAddress, READ_RESOURCE_OPERATION).param(INCLUDE_RUNTIME, true).build();
Operation interfacesOp = new Operation.Builder(hostAddress, READ_CHILDREN_RESOURCES_OPERATION).param(CHILD_TYPE, INTERFACE).param(INCLUDE_RUNTIME, true).build();
Operation jvmsOp = new Operation.Builder(hostAddress, READ_CHILDREN_RESOURCES_OPERATION).param(CHILD_TYPE, JVM).param(INCLUDE_RUNTIME, true).build();
Operation pathsOp = new Operation.Builder(hostAddress, READ_CHILDREN_RESOURCES_OPERATION).param(CHILD_TYPE, PATH).param(INCLUDE_RUNTIME, true).build();
Operation socketBindingGroupsOp = new Operation.Builder(hostAddress, READ_CHILDREN_RESOURCES_OPERATION).param(CHILD_TYPE, SOCKET_BINDING_GROUP).param(INCLUDE_RUNTIME, true).build();
Operation systemPropertiesOp = new Operation.Builder(hostAddress, READ_CHILDREN_RESOURCES_OPERATION).param(CHILD_TYPE, SYSTEM_PROPERTY).param(INCLUDE_RUNTIME, true).build();
ResourceAddress coreServiceAddress = hostAddress.add(CORE_SERVICE, MANAGEMENT);
Operation mgmtInterfacesOp = new Operation.Builder(coreServiceAddress, READ_CHILDREN_RESOURCES_OPERATION).param(CHILD_TYPE, MANAGEMENT_INTERFACE).param(INCLUDE_RUNTIME, true).build();
Composite composite = new Composite(hostOp, interfacesOp, jvmsOp, pathsOp, socketBindingGroupsOp, systemPropertiesOp, mgmtInterfacesOp);
dispatcher.execute(composite, (CompositeResult result) -> {
getView().updateHost(new Host(result.step(0).get(RESULT)));
getView().updateInterfaces(asNamedNodes(result.step(1).get(RESULT).asPropertyList()));
getView().updateJvms(asNamedNodes(result.step(2).get(RESULT).asPropertyList()));
getView().updatePaths(asNamedNodes(result.step(3).get(RESULT).asPropertyList()));
getView().updateSocketBindingGroups(asNamedNodes(result.step(4).get(RESULT).asPropertyList()));
getView().updateSystemProperties(asNamedNodes(result.step(5).get(RESULT).asPropertyList()));
getView().updateManagementInterfaces(asNamedNodes(result.step(6).get(RESULT).asPropertyList()), -1);
});
}
use of org.jboss.hal.dmr.CompositeResult in project console by hal.
the class HostPresenter method saveHeader.
@Override
public void saveHeader(int pathIndex, int index, String header, Metadata metadata, Map<String, Object> changedValues, SafeHtml successMessage) {
ResourceAddress address = HTTP_INTERFACE_TEMPLATE.resolve(statementContext);
OperationFactory operationFactory = new OperationFactory(name -> constantsHeadersIndex(pathIndex) + DOT + headersIndex(index) + DOT + name);
Composite composite = operationFactory.fromChangeSet(address, changedValues, metadata);
dispatcher.execute(composite, (CompositeResult result) -> {
reloadHeaders(pathIndex);
MessageEvent.fire(getEventBus(), Message.success(successMessage));
});
}
use of org.jboss.hal.dmr.CompositeResult in project console by hal.
the class ManagementOperationsPresenter method cancelNonProgressingOperation.
void cancelNonProgressingOperation() {
if (environment.isStandalone()) {
ResourceAddress address = MANAGEMENT_OPERATIONS_TEMPLATE.resolve(statementContext);
Operation operation = new Operation.Builder(address, CANCEL_NON_PROGRESSING_OPERATION).build();
dispatcher.execute(operation, result -> {
MessageEvent.fire(eventBus, Message.info(resources.messages().cancelledOperation(result.asString())));
reload();
}, (operation1, failure) -> {
// operation to cancel, handle this a non error in HAL
if (failure.contains(WFLYDM_0089)) {
MessageEvent.fire(eventBus, Message.success(SafeHtmlUtils.fromString(failure)));
} else {
MessageEvent.fire(eventBus, Message.error(SafeHtmlUtils.fromString(failure)));
}
reload();
}, (operation1, ex) -> {
// operation to cancel, handle this a non error in HAL
if (ex.getMessage().contains(WFLYDM_0089)) {
MessageEvent.fire(eventBus, Message.success(SafeHtmlUtils.fromString(ex.getMessage())));
} else {
MessageEvent.fire(eventBus, Message.error(SafeHtmlUtils.fromString(ex.getMessage())));
}
reload();
});
} else {
Composite composite = new Composite();
// return running hosts, to later call a cancel-non-progressing-operation on each host
ResourceAddress rootAddress = new ResourceAddress();
Operation opHosts = new Operation.Builder(rootAddress, READ_CHILDREN_NAMES_OPERATION).param(CHILD_TYPE, HOST).build();
composite.add(opHosts);
ResourceAddress address = new ResourceAddress().add(HOST, WILDCARD).add(SERVER, WILDCARD);
Operation opRunningServers = new Operation.Builder(address, QUERY).param(SELECT, new ModelNode().add(HOST).add(NAME)).param(WHERE, new ModelNode().set(SERVER_STATE, "running")).build();
composite.add(opRunningServers);
dispatcher.execute(composite, (CompositeResult compositeResult) -> {
// available hosts
List<String> hosts = compositeResult.step(0).get(RESULT).asList().stream().map(ModelNode::asString).collect(toList());
// runing servers
List<String> servers = Collections.emptyList();
ModelNode result = compositeResult.step(1);
if (result != null && result.isDefined()) {
servers = result.get(RESULT).asList().stream().map(r -> hostServerAddress(r.get(RESULT))).collect(toList());
}
// run each :cancel-non-progressing-operation on a specific task
// because the :cancel-non-progressing-operation returns as a failure
// for this case, continue to run the next task
List<Task<FlowContext>> tasks = new ArrayList<>(hosts.size());
for (String host : hosts) {
// call cancel-non-progressing-operation on each host
Task<FlowContext> task = context -> {
ResourceAddress hostAddress = new ResourceAddress().add(HOST, host).add(CORE_SERVICE, MANAGEMENT).add(SERVICE, MANAGEMENT_OPERATIONS);
return buildCancelOperation(hostAddress, context);
};
tasks.add(task);
}
for (String server : servers) {
// call cancel-non-progressing-operation on each server
Task<FlowContext> task = context -> {
ResourceAddress serverAddress = AddressTemplate.of(server).append(MANAGEMENT_OPERATIONS_TEMPLATE).resolve(statementContext);
return buildCancelOperation(serverAddress, context);
};
tasks.add(task);
}
series(new FlowContext(progress.get()), tasks).subscribe(new Outcome<FlowContext>() {
@Override
public void onError(FlowContext context, Throwable error) {
MessageEvent.fire(getEventBus(), Message.error(SafeHtmlUtils.fromString("Error loading management operations: " + error.getMessage())));
}
@Override
public void onSuccess(FlowContext context) {
if (context.emptyStack()) {
// display the standard message if there is no cancelled operation
MessageEvent.fire(eventBus, Message.success(SafeHtmlUtils.fromString(context.get(WFLYDM_0089))));
} else {
// display the cancelled non progressing operation ids
List<String> canceledOps = new ArrayList<>();
while (!context.emptyStack()) {
canceledOps.add(context.pop());
}
String ids = Joiner.on(", ").join(canceledOps);
MessageEvent.fire(eventBus, Message.success(resources.messages().cancelledOperation(ids)));
}
reload();
}
});
});
}
}
use of org.jboss.hal.dmr.CompositeResult in project console by hal.
the class ServerPresenter method disableSsl.
void disableSsl(String httpsListener) {
AddressTemplate httpsTemplate = SERVER_TEMPLATE.append(HTTPS_LISTENER + EQ_WILDCARD);
Metadata metadata = metadataRegistry.lookup(httpsTemplate);
SafeHtml description = resources.messages().disableSSLUndertowQuestion(httpsListener);
String label = new LabelBuilder().label(SECURITY_REALM);
TextBoxItem securityRealmItem = new TextBoxItem(SECURITY_REALM, label);
securityRealmItem.setRequired(true);
SafeHtml securityRealmDescription = SafeHtmlUtils.fromTrustedString(metadata.getDescription().get(ATTRIBUTES).get(SECURITY_REALM).get(DESCRIPTION).asString());
Form<ModelNode> form = new ModelNodeForm.Builder<>(Ids.build(SECURITY_REALM, Ids.FORM), Metadata.empty()).unboundFormItem(securityRealmItem, 0, securityRealmDescription).build();
HTMLElement content = div().add(p().innerHtml(description)).add(form.element()).element();
Dialog dialog = new Dialog.Builder(resources.constants().disableSSL()).size(Dialog.Size.MEDIUM).primary(resources.constants().yes(), () -> {
boolean valid = form.save();
// if the form contains validation error, don't close the dialog
if (valid) {
ResourceAddress httpsAddress = httpsTemplate.resolve(statementContext, serverName, httpsListener);
Operation undefineSslCtx = new Operation.Builder(httpsAddress, UNDEFINE_ATTRIBUTE_OPERATION).param(NAME, SSL_CONTEXT).build();
Operation writeSecurityRealm = new Operation.Builder(httpsAddress, WRITE_ATTRIBUTE_OPERATION).param(NAME, SECURITY_REALM).param(VALUE, securityRealmItem.getValue()).build();
Composite composite = new Composite();
composite.add(undefineSslCtx);
composite.add(writeSecurityRealm);
dispatcher.execute(composite, (CompositeResult result) -> {
MessageEvent.fire(getEventBus(), Message.success(resources.messages().disableSSLUndertowSuccess(httpsListener)));
reload();
}, (operation, failure) -> {
MessageEvent.fire(getEventBus(), Message.error(resources.messages().disableSSLUndertowError(httpsListener, failure)));
}, (operation, exception) -> {
SafeHtml message = resources.messages().disableSSLUndertowError(httpsListener, exception.getMessage());
MessageEvent.fire(getEventBus(), Message.error(message));
});
}
return valid;
}).secondary(resources.constants().no(), () -> true).closeIcon(true).closeOnEsc(true).add(content).build();
dialog.registerAttachable(form);
dialog.show();
ModelNode model = new ModelNode().setEmptyObject();
form.edit(model);
}
Aggregations