use of org.jboss.hal.dmr.CompositeResult in project console by hal.
the class DataSourcePreview method update.
@Override
@SuppressWarnings("HardCodedStringLiteral")
public void update(DataSource ds) {
// if the data source is from a deployment we don't need to refresh
if (ds != null && ds.fromDeployment()) {
setVisible(fromDeployment.element(), ds.fromDeployment());
setVisible(noStatistics.element(), false);
setVisible(refresh, false);
setVisible(poolHeader, false);
setVisible(activeConnections.element(), false);
setVisible(maxUsedConnections.element(), false);
setVisible(cacheHeader, false);
setVisible(hitCount.element(), false);
setVisible(missCount.element(), false);
} else {
List<Operation> operations = new ArrayList<>();
setVisible(fromDeployment.element(), false);
if (environment.isStandalone()) {
operations.add(new Operation.Builder(ResourceAddress.root(), READ_RESOURCE_OPERATION).param(INCLUDE_RUNTIME, true).param(ATTRIBUTES_ONLY, true).build());
} else {
ResourceAddress address = AddressTemplate.of(SELECTED_HOST, SELECTED_SERVER).resolve(statementContext);
operations.add(new Operation.Builder(address, READ_RESOURCE_OPERATION).param(INCLUDE_RUNTIME, true).param(ATTRIBUTES_ONLY, true).build());
}
if (ds == null) {
operations.add(new Operation.Builder(dataSourceAddress, READ_RESOURCE_OPERATION).param(INCLUDE_RUNTIME, true).param(RECURSIVE, true).build());
}
dispatcher.execute(new Composite(operations), (CompositeResult result) -> {
server.addServerAttributes(result.step(0).get(RESULT));
if (ds == null) {
dataSource.update(result.step(1).get(RESULT));
}
boolean statisticsEnabled = dataSource.isStatisticsEnabled();
setVisible(noStatistics.element(), !statisticsEnabled);
setVisible(refresh, statisticsEnabled);
setVisible(poolHeader, statisticsEnabled);
setVisible(activeConnections.element(), statisticsEnabled);
setVisible(maxUsedConnections.element(), statisticsEnabled);
setVisible(cacheHeader, statisticsEnabled);
setVisible(hitCount.element(), statisticsEnabled);
setVisible(missCount.element(), statisticsEnabled);
// Do not simply hide the links, but add the hidden CSS class.
// Important when constraints for the links are processed later.
needsReloadWarning.element().classList.add(hidden);
needsRestartWarning.element().classList.add(hidden);
disabledWarning.element().classList.add(hidden);
if (statisticsEnabled) {
if (!dataSource.isEnabled()) {
disabledWarning.element().classList.remove(hidden);
} else {
Elements.toggle(needsReloadWarning.element(), hidden, !server.needsReload());
Elements.toggle(needsRestartWarning.element(), hidden, !server.needsRestart());
}
// pool statistics
ModelNode pool = ModelNodeHelper.failSafeGet(dataSource, "statistics/pool");
if (pool.isDefined()) {
int available = pool.get("AvailableCount").asInt(0);
int active = pool.get("ActiveCount").asInt(0);
int maxUsed = pool.get("MaxUsedCount").asInt(0);
activeConnections.update(active, available);
maxUsedConnections.update(maxUsed, available);
} else {
activeConnections.update(0, 0);
maxUsedConnections.update(0, 0);
}
// jdbc statistics
ModelNode jdbc = ModelNodeHelper.failSafeGet(dataSource, "statistics/jdbc");
if (jdbc.isDefined()) {
long accessed = jdbc.get("PreparedStatementCacheAccessCount").asLong(0);
long hit = jdbc.get("PreparedStatementCacheHitCount").asLong(0);
long missed = jdbc.get("PreparedStatementCacheMissCount").asLong(0);
hitCount.update(hit, accessed);
missCount.update(missed, accessed);
} else {
hitCount.update(0, 0);
missCount.update(0, 0);
}
}
});
}
}
use of org.jboss.hal.dmr.CompositeResult in project console by hal.
the class RealmsPresenter method reload.
@Override
protected void reload() {
Composite composite = new Composite();
composite.add(operation(CACHING_REALM_TEMPLATE));
composite.add(operation(CUSTOM_MODIFIABLE_REALM_TEMPLATE));
composite.add(operation(FILESYSTEM_REALM_TEMPLATE));
composite.add(operation(LDAP_REALM_TEMPLATE));
composite.add(operation(PROPERTIES_REALM_TEMPLATE));
dispatcher.execute(composite, (CompositeResult result) -> {
int i = 0;
getView().updateCachingRealm(asNamedNodes(result.step(i++).get(RESULT).asPropertyList()));
getView().updateCustomModifiableRealm(asNamedNodes(result.step(i++).get(RESULT).asPropertyList()));
getView().updateFilesystemRealm(asNamedNodes(result.step(i++).get(RESULT).asPropertyList()));
getView().updateLdapRealm(asNamedNodes(result.step(i++).get(RESULT).asPropertyList()));
getView().updatePropertiesRealm(asNamedNodes(result.step(i++).get(RESULT).asPropertyList()));
});
}
use of org.jboss.hal.dmr.CompositeResult in project console by hal.
the class SocketBindingGroupPresenter method saveClientMapping.
void saveClientMapping(Metadata metadata, ModelNode clientMapping, Map<String, Object> changedValues) {
ResourceAddress address = SELECTED_TEMPLATE.append(INBOUND.templateSuffix()).resolve(statementContext, inbound);
OperationFactory operationFactory = new OperationFactory(name -> CLIENT_MAPPINGS + "[" + clientMapping.get(INDEX).asInt() + "]." + name);
Composite operations = operationFactory.fromChangeSet(address, changedValues, metadata);
dispatcher.execute(operations, (CompositeResult result) -> {
MessageEvent.fire(getEventBus(), Message.success(resources.messages().modifySingleResourceSuccess(Names.CLIENT_MAPPING)));
reloadClientMappings();
});
}
use of org.jboss.hal.dmr.CompositeResult in project console by hal.
the class ReadAuthentication method call.
@Override
public Completable call(FlowContext context) {
logger.debug("Read authentication");
ResourceAddress address = CORE_SERVICE_TEMPLATE.resolve(statementContext);
Operation opAuthorization = new Operation.Builder(address, READ_CHILDREN_RESOURCES_OPERATION).param(CHILD_TYPE, ACCESS).param(INCLUDE_RUNTIME, true).param(RECURSIVE_DEPTH, 1).build();
Operation opWhoami = new Operation.Builder(ResourceAddress.root(), WHOAMI).param(VERBOSE, true).build();
return dispatcher.execute(new Composite(opAuthorization, opWhoami)).doOnSuccess((CompositeResult compositeResult) -> {
ModelNode result = compositeResult.step(0).get(RESULT);
if (result.hasDefined(AUTHORIZATION)) {
result = result.get(AUTHORIZATION);
// provider
AccessControlProvider accessControlProvider = asEnumValue(result, PROVIDER, AccessControlProvider::valueOf, SIMPLE);
environment.setAccessControlProvider(accessControlProvider);
// standard roles
if (result.hasDefined(STANDARD_ROLE_NAMES)) {
result.get(STANDARD_ROLE_NAMES).asList().stream().map(node -> new Role(node.asString())).forEach(role -> environment.getRoles().add(role));
}
// scoped roles
if (!environment.isStandalone()) {
if (result.hasDefined(HOST_SCOPED_ROLE)) {
result.get(HOST_SCOPED_ROLE).asPropertyList().stream().map(property -> scopedRole(property, Role.Type.HOST, HOSTS)).forEach(role -> environment.getRoles().add(role));
}
if (result.hasDefined(SERVER_GROUP_SCOPED_ROLE)) {
result.get(SERVER_GROUP_SCOPED_ROLE).asPropertyList().stream().map(property -> scopedRole(property, Role.Type.SERVER_GROUP, SERVER_GROUPS)).forEach(role -> environment.getRoles().add(role));
}
}
} else {
logger.warn("Unable to read {} (insufficient rights?). Use :whoami values as fallback.", CORE_SERVICE_TEMPLATE.append("access=authorization"));
ModelNode resultWhoami = compositeResult.step(1).get(RESULT);
environment.setAccessControlProvider(RBAC);
environment.getRoles().clear();
if (resultWhoami.hasDefined(ROLES)) {
resultWhoami.get(ROLES).asList().stream().map(node -> new Role(node.asString())).forEach(role -> environment.getRoles().add(role));
} else if (resultWhoami.hasDefined(MAPPED_ROLES)) {
resultWhoami.get(MAPPED_ROLES).asList().stream().map(node -> new Role(node.asString())).forEach(role -> environment.getRoles().add(role));
}
}
}).onErrorResumeNext(throwable -> {
if (throwable instanceof DispatchFailure) {
logger.error("Unable to read {}. Use :whoami values as fallback.", CORE_SERVICE_TEMPLATE);
return Single.just(new CompositeResult(new ModelNode()));
} else {
return Single.error(throwable);
}
}).toCompletable();
}
use of org.jboss.hal.dmr.CompositeResult in project console by hal.
the class ReadEnvironment method call.
@Override
public Completable call(FlowContext context) {
logger.debug("Read environment");
Keycloak keycloak = keycloakHolder.getKeycloak();
environment.setSingleSignOn(keycloak != null);
if (keycloak != null) {
logger.debug("Keycloak token: {}", keycloak.token);
}
List<Operation> ops = new ArrayList<>();
ops.add(new Operation.Builder(ResourceAddress.root(), READ_RESOURCE_OPERATION).param(ATTRIBUTES_ONLY, true).param(INCLUDE_RUNTIME, true).build());
ops.add(new Operation.Builder(ResourceAddress.root(), WHOAMI).param(VERBOSE, true).build());
ops.add(new Operation.Builder(ResourceAddress.root(), READ_CHILDREN_RESOURCES_OPERATION).param(CHILD_TYPE, CORE_SERVICE).param(RECURSIVE, false).build());
return dispatcher.execute(new Composite(ops)).doOnSuccess((CompositeResult result) -> {
ModelNode node = result.step(0).get(RESULT);
// operation mode
OperationMode operationMode = asEnumValue(node, LAUNCH_TYPE, (name) -> OperationMode.valueOf(name), OperationMode.UNDEFINED);
environment.setOperationMode(operationMode);
logger.debug("Operation mode: {}", operationMode);
// name and org
if (node.get(NAME).isDefined()) {
String name = node.get(NAME).asString();
environment.setName(name);
}
String orgAttribute = environment.isStandalone() ? ORGANIZATION : DOMAIN_ORGANIZATION;
if (node.get(orgAttribute).isDefined()) {
String org = node.get(orgAttribute).asString();
environment.setOrganization(org);
}
// server info
environment.setInstanceInfo(node.get(PRODUCT_NAME).asString(), node.get(PRODUCT_VERSION).asString(), node.get(RELEASE_CODENAME).asString(), node.get(RELEASE_VERSION).asString());
// management version
Version version = ManagementModel.parseVersion(node);
environment.setManagementVersion(version);
logger.debug("Management model version: {}", version);
if (environment.isStandalone()) {
Server.STANDALONE.addServerAttributes(node);
}
// user info
if (environment.isSingleSignOn()) {
user.setName(keycloak.userProfile.username);
// are not supported on the javascript side when run in the browser.
if (keycloak.realmAccess != null && keycloak.realmAccess.roles != null) {
for (int i = 0; i < keycloak.realmAccess.roles.length; i++) {
String role = keycloak.realmAccess.roles[i];
user.addRole(new Role(role));
}
}
} else {
ModelNode whoami = result.step(1).get(RESULT);
String username = whoami.get("identity").get("username").asString();
user.setName(username);
if (whoami.hasDefined("mapped-roles")) {
List<ModelNode> roles = whoami.get("mapped-roles").asList();
for (ModelNode role : roles) {
String roleName = role.asString();
user.addRole(new Role(roleName));
}
}
}
user.setAuthenticated(true);
logger.debug("User info: {} {}", user.getName(), user.getRoles());
ModelNode step = result.step(2).get(RESULT);
environment.setPatchingEnabled(!environment.isStandalone() || step.get(PATCHING).isDefined());
}).toCompletable();
}
Aggregations