Search in sources :

Example 26 with Property

use of org.jboss.hal.dmr.Property in project console by hal.

the class DataSourceView method update.

@Override
public void update(DataSource dataSource) {
    // TODO Add a suggestion handler for the DRIVER_NAME field
    showHide(dataSource.isXa());
    // noinspection HardCodedStringLiteral
    header.innerHTML = new SafeHtmlBuilder().appendEscaped(dataSource.getName()).appendHtmlConstant("<small>").appendEscaped(" (").appendEscaped(dataSource.isEnabled() ? resources.constants().enabled() : resources.constants().disabled()).appendEscaped(")").appendHtmlConstant("</small>").toSafeHtml().asString();
    if (dataSource.isXa()) {
        xaForm.view(dataSource);
        Map<String, String> p = failSafePropertyList(dataSource, XA_DATASOURCE_PROPERTIES).stream().collect(toMap(Property::getName, property -> property.getValue().get(VALUE).asString()));
        originalConnectionProperties = p;
        xaForm.getFormItem(XA_DATASOURCE_PROPERTIES).setValue(p);
        String dsClassname = dataSource.hasDefined(XA_DATASOURCE_CLASS) ? dataSource.get(XA_DATASOURCE_CLASS).asString() : null;
        String driverName = dataSource.get(DRIVER_NAME).asString();
        presenter.readJdbcDriverProperties(true, dsClassname, driverName, dsProperties -> xaAutoCompleteValues.update(dsProperties));
        if (xaCrForm != null) {
            xaCrForm.view(failSafeGet(dataSource, CREDENTIAL_REFERENCE));
        }
    } else {
        nonXaForm.view(dataSource);
        Map<String, String> p = failSafePropertyList(dataSource, CONNECTION_PROPERTIES).stream().collect(toMap(Property::getName, property -> property.getValue().get(VALUE).asString()));
        originalConnectionProperties = p;
        nonXaForm.getFormItem(CONNECTION_PROPERTIES).setValue(p);
        String dsClassname = dataSource.hasDefined(DATASOURCE_CLASS) ? dataSource.get(DATASOURCE_CLASS).asString() : null;
        String driverName = dataSource.get(DRIVER_NAME).asString();
        presenter.readJdbcDriverProperties(false, dsClassname, driverName, dsProperties -> nonXaAutoCompleteValues.update(dsProperties));
        if (nonXaCrForm != null) {
            nonXaCrForm.view(failSafeGet(dataSource, CREDENTIAL_REFERENCE));
        }
    }
}
Also used : ModelNode(org.jboss.hal.dmr.ModelNode) XA(org.jboss.hal.client.configuration.subsystem.datasource.Attribute.Scope.XA) GroupedForm(org.jboss.hal.core.mbui.form.GroupedForm) XA_DATA_SOURCE_TEMPLATE(org.jboss.hal.client.configuration.subsystem.datasource.AddressTemplates.XA_DATA_SOURCE_TEMPLATE) CredentialReference(org.jboss.hal.core.elytron.CredentialReference) LayoutBuilder.column(org.jboss.hal.ballroom.LayoutBuilder.column) GWT(com.google.gwt.core.client.GWT) Inject(javax.inject.Inject) Property(org.jboss.hal.dmr.Property) StaticAutoComplete(org.jboss.hal.ballroom.autocomplete.StaticAutoComplete) Collectors.toMap(java.util.stream.Collectors.toMap) Elements.p(org.jboss.gwt.elemento.core.Elements.p) AlternativeValidation(org.jboss.hal.core.elytron.CredentialReference.AlternativeValidation) Constants(org.jboss.hal.resources.Constants) HTMLElement(elemental2.dom.HTMLElement) Arrays.asList(java.util.Arrays.asList) Map(java.util.Map) HalViewImpl(org.jboss.hal.core.mvp.HalViewImpl) SafeHtmlBuilder(com.google.gwt.safehtml.shared.SafeHtmlBuilder) Metadata(org.jboss.hal.meta.Metadata) Names(org.jboss.hal.resources.Names) Elements.h(org.jboss.gwt.elemento.core.Elements.h) LinkedListMultimap(com.google.common.collect.LinkedListMultimap) LayoutBuilder.row(org.jboss.hal.ballroom.LayoutBuilder.row) Ids(org.jboss.hal.resources.Ids) NON_XA(org.jboss.hal.client.configuration.subsystem.datasource.Attribute.Scope.NON_XA) DATA_SOURCE_TEMPLATE(org.jboss.hal.client.configuration.subsystem.datasource.AddressTemplates.DATA_SOURCE_TEMPLATE) ModelNodeHelper.failSafeGet(org.jboss.hal.dmr.ModelNodeHelper.failSafeGet) ModelNodeHelper.failSafePropertyList(org.jboss.hal.dmr.ModelNodeHelper.failSafePropertyList) List(java.util.List) Collectors.toList(java.util.stream.Collectors.toList) PropertiesItem(org.jboss.hal.ballroom.form.PropertiesItem) MetadataRegistry(org.jboss.hal.meta.MetadataRegistry) Resources(org.jboss.hal.resources.Resources) ModelDescriptionConstants(org.jboss.hal.dmr.ModelDescriptionConstants) DataSource(org.jboss.hal.core.datasource.DataSource) BOTH(org.jboss.hal.client.configuration.subsystem.datasource.Attribute.Scope.BOTH) Collections(java.util.Collections) Elements(org.jboss.gwt.elemento.core.Elements) Form(org.jboss.hal.ballroom.form.Form) SafeHtmlBuilder(com.google.gwt.safehtml.shared.SafeHtmlBuilder)

Example 27 with Property

use of org.jboss.hal.dmr.Property in project console by hal.

the class DriverStep method adjustMetadata.

private Metadata adjustMetadata(Metadata metadata) {
    ModelNode newAttributes = new ModelNode();
    for (Property property : metadata.getDescription().get(ATTRIBUTES).asPropertyList()) {
        ModelNode value = property.getValue().clone();
        value.get(ACCESS_TYPE).set(READ_WRITE);
        value.get(NILLABLE).set(!DRIVER_NAME.equals(property.getName()) && !DRIVER_XA_DATASOURCE_CLASS_NAME.equals(property.getName()));
        newAttributes.get(property.getName()).set(value);
    }
    metadata.getDescription().remove(ATTRIBUTES);
    metadata.getDescription().get(ATTRIBUTES).set(newAttributes);
    return metadata;
}
Also used : ModelNode(org.jboss.hal.dmr.ModelNode) Property(org.jboss.hal.dmr.Property)

Example 28 with Property

use of org.jboss.hal.dmr.Property in project console by hal.

the class ManagementOperationsPresenter method reload.

@Override
protected void reload() {
    if (environment.isStandalone()) {
        ResourceAddress addressFindNP = MANAGEMENT_OPERATIONS_TEMPLATE.resolve(statementContext);
        Operation operationFindNP = new Operation.Builder(addressFindNP, FIND_NON_PROGRESSING_OPERATION).build();
        ResourceAddress addressMO = MANAGEMENT_OPERATIONS_TEMPLATE.resolve(statementContext);
        Operation operationMO = new Operation.Builder(addressMO, READ_CHILDREN_RESOURCES_OPERATION).param(CHILD_TYPE, ACTIVE_OPERATION).build();
        dispatcher.execute(new Composite(operationFindNP, operationMO), (CompositeResult result) -> {
            ModelNode resultNP = result.step(0).get(RESULT);
            ModelNode resultOperations = result.step(1).get(RESULT);
            final String nonProgressingId = resultNP.isDefined() ? resultNP.asString() : null;
            List<ManagementOperations> activeOps = asNamedNodes(resultOperations.asPropertyList()).stream().map(ManagementOperations::new).peek(activeOp -> {
                if (nonProgressingId != null && nonProgressingId.equals(activeOp.getName())) {
                    activeOp.setAsNonProgressing();
                }
            }).collect(toList());
            getView().update(activeOps);
        });
    } else {
        // return available hosts, to later call a find-non-progressing-operation on each host
        Task<FlowContext> hostsTask = context -> {
            ResourceAddress address = new ResourceAddress();
            Operation operation = new Operation.Builder(address, READ_CHILDREN_NAMES_OPERATION).param(CHILD_TYPE, HOST).build();
            return dispatcher.execute(operation).doOnSuccess(result -> {
                List<String> hosts = result.asList().stream().map(ModelNode::asString).collect(toList());
                context.set(HOSTS, hosts);
            }).toCompletable();
        };
        // return running servers, to later call a find-non-progressing-operation on each runtime server
        Task<FlowContext> serversTask = context -> {
            // /host=*/server=*:query(select=[host,name],where={server-state=running})
            ResourceAddress address = new ResourceAddress().add(HOST, WILDCARD).add(SERVER, WILDCARD);
            Operation operation = new Operation.Builder(address, QUERY).param(SELECT, new ModelNode().add(HOST).add(NAME)).param(WHERE, new ModelNode().set(SERVER_STATE, "running")).build();
            return dispatcher.execute(operation).doOnSuccess(result -> {
                List<String> servers = Collections.emptyList();
                if (result != null && result.isDefined()) {
                    servers = result.asList().stream().map(r -> hostServerAddress(r.get(RESULT))).collect(toList());
                }
                context.set("servers", servers);
            }).toCompletable();
        };
        // call find-non-progressing-operation and read-resource of active operations
        // on each host and server
        Task<FlowContext> findNonProgressingTask = context -> {
            List<String> hosts = context.get(HOSTS);
            List<String> servers = context.get("servers");
            Composite composite = new Composite();
            for (String host : hosts) {
                ResourceAddress address = new ResourceAddress().add(HOST, host).add(CORE_SERVICE, MANAGEMENT).add(SERVICE, MANAGEMENT_OPERATIONS);
                Operation operation = new Operation.Builder(address, FIND_NON_PROGRESSING_OPERATION).build();
                composite.add(operation);
                ResourceAddress ad = new ResourceAddress(address.clone()).add(ACTIVE_OPERATION, WILDCARD);
                Operation operationMO = new Operation.Builder(ad, READ_RESOURCE_OPERATION).build();
                composite.add(operationMO);
            }
            if (!servers.isEmpty()) {
                for (String server : servers) {
                    ResourceAddress address = AddressTemplate.of(server).append(MANAGEMENT_OPERATIONS_TEMPLATE).resolve(statementContext);
                    Operation findOp = new Operation.Builder(address, FIND_NON_PROGRESSING_OPERATION).build();
                    composite.add(findOp);
                    ResourceAddress ad = new ResourceAddress(address.clone()).add(ACTIVE_OPERATION, WILDCARD);
                    Operation operation = new Operation.Builder(ad, READ_RESOURCE_OPERATION).build();
                    composite.add(operation);
                }
            }
            return dispatcher.execute(composite).doOnSuccess(response -> {
                List<String> nonProgressingOps = new ArrayList<>();
                List<ManagementOperations> ops = new ArrayList<>();
                for (ModelNode r : response) {
                    ModelNode result = r.get(RESULT);
                    if (result != null && result.isDefined()) {
                        ModelType type = result.getType();
                        // if model is LIST it is the list of active operations
                        if (ModelType.LIST.equals(type)) {
                            for (ModelNode op : result.asList()) {
                                ModelNode opResult = op.get(RESULT);
                                // the result has two addresses
                                // 1) the active-operation address itself, example
                                // /host=master/server=server-three/core-service=management/service=management-operations/active-operation=1940701884
                                // 2) the resource address
                                // /host=master/server=server-three/subsystem=elytron/filesystem-realm=file1
                                // the active-operation address should be store to later use it to cancel, if needed
                                // the resource address is displayed to the user
                                ModelNode activeOpAddress = op.get(ADDRESS);
                                opResult.get(HAL_ACTIVE_OP_ADDRESS).set(activeOpAddress);
                                String opId = null;
                                List<Property> activeOperationAddressList = activeOpAddress.asPropertyList();
                                for (Property p : activeOperationAddressList) {
                                    if (p.getName().equals(ACTIVE_OPERATION)) {
                                        opId = p.getValue().asString();
                                    }
                                    // store the host and server to later show in the view
                                    if (p.getName().equals(HOST)) {
                                        opResult.get(HAL_ACTIVE_ADDRESS_HOST).set(p.getValue().asString());
                                    }
                                    if (p.getName().equals(SERVER)) {
                                        opResult.get(HAL_ACTIVE_ADDRESS_SERVER).set(p.getValue().asString());
                                    }
                                }
                                NamedNode node = new NamedNode(opId, opResult);
                                ManagementOperations activeOp = new ManagementOperations(node);
                                ops.add(activeOp);
                            }
                        } else {
                            nonProgressingOps.add(result.asString());
                        }
                    }
                }
                // if there are non progressing operations, mark them in the list
                if (!nonProgressingOps.isEmpty()) {
                    Collections.sort(nonProgressingOps);
                    for (ManagementOperations mop : ops) {
                        if (nonProgressingOps.indexOf(mop.getName()) > -1) {
                            mop.setAsNonProgressing();
                        }
                    }
                }
                context.set("active-operations", ops);
            }).toCompletable();
        };
        series(new FlowContext(progress.get()), hostsTask, serversTask, findNonProgressingTask).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) {
                List<ManagementOperations> ops = context.get("active-operations");
                getView().update(ops);
            }
        });
    }
}
Also used : ModelNode(org.jboss.hal.dmr.ModelNode) Completable(rx.Completable) Provider(javax.inject.Provider) Environment(org.jboss.hal.config.Environment) StatementContext(org.jboss.hal.meta.StatementContext) MessageEvent(org.jboss.hal.spi.MessageEvent) ProxyPlace(com.gwtplatform.mvp.client.proxy.ProxyPlace) ResourceAddress(org.jboss.hal.dmr.ResourceAddress) FlowContext(org.jboss.hal.flow.FlowContext) Outcome(org.jboss.hal.flow.Outcome) ArrayList(java.util.ArrayList) ModelType(org.jboss.hal.dmr.ModelType) Inject(javax.inject.Inject) Property(org.jboss.hal.dmr.Property) Task(org.jboss.hal.flow.Task) Single(rx.Single) Progress(org.jboss.hal.flow.Progress) AddressTemplate(org.jboss.hal.meta.AddressTemplate) Message(org.jboss.hal.spi.Message) HasPresenter(org.jboss.hal.core.mvp.HasPresenter) Names(org.jboss.hal.resources.Names) ApplicationFinderPresenter(org.jboss.hal.core.mvp.ApplicationFinderPresenter) SafeHtmlUtils(com.google.gwt.safehtml.shared.SafeHtmlUtils) ModelNodeHelper.asNamedNodes(org.jboss.hal.dmr.ModelNodeHelper.asNamedNodes) Requires(org.jboss.hal.spi.Requires) CompositeResult(org.jboss.hal.dmr.CompositeResult) ProxyCodeSplit(com.gwtplatform.mvp.client.annotations.ProxyCodeSplit) Operation(org.jboss.hal.dmr.Operation) NameToken(com.gwtplatform.mvp.client.annotations.NameToken) Ids(org.jboss.hal.resources.Ids) FinderPathFactory(org.jboss.hal.core.finder.FinderPathFactory) EventBus(com.google.web.bindery.event.shared.EventBus) FinderPath(org.jboss.hal.core.finder.FinderPath) DialogFactory(org.jboss.hal.ballroom.dialog.DialogFactory) MANAGEMENT_OPERATIONS(org.jboss.hal.meta.token.NameTokens.MANAGEMENT_OPERATIONS) Composite(org.jboss.hal.dmr.Composite) List(java.util.List) Dispatcher(org.jboss.hal.dmr.dispatch.Dispatcher) Collectors.toList(java.util.stream.Collectors.toList) Resources(org.jboss.hal.resources.Resources) ModelDescriptionConstants(org.jboss.hal.dmr.ModelDescriptionConstants) HalView(org.jboss.hal.core.mvp.HalView) Flow.series(org.jboss.hal.flow.Flow.series) Finder(org.jboss.hal.core.finder.Finder) Footer(org.jboss.hal.spi.Footer) NamedNode(org.jboss.hal.dmr.NamedNode) Collections(java.util.Collections) Joiner(com.google.common.base.Joiner) Composite(org.jboss.hal.dmr.Composite) ResourceAddress(org.jboss.hal.dmr.ResourceAddress) CompositeResult(org.jboss.hal.dmr.CompositeResult) ArrayList(java.util.ArrayList) NamedNode(org.jboss.hal.dmr.NamedNode) Operation(org.jboss.hal.dmr.Operation) FlowContext(org.jboss.hal.flow.FlowContext) ModelType(org.jboss.hal.dmr.ModelType) ArrayList(java.util.ArrayList) List(java.util.List) Collectors.toList(java.util.stream.Collectors.toList) ModelNode(org.jboss.hal.dmr.ModelNode) Property(org.jboss.hal.dmr.Property)

Example 29 with Property

use of org.jboss.hal.dmr.Property in project console by hal.

the class PatchWizard method checkServersState.

/**
 * Checks if each servers of a host is stopped, if the server is started, asks the user to stop them. It is a good practice
 * to apply/rollback a patch to a stopped server to prevent application and internal services from failing.
 */
void checkServersState(Consumer<List<Property>> callback) {
    if (environment.isStandalone()) {
        callback.accept(null);
    } else {
        String host = statementContext.selectedHost();
        ResourceAddress address = new ResourceAddress().add(HOST, host);
        Operation operation = new Operation.Builder(address, READ_CHILDREN_RESOURCES_OPERATION).param(INCLUDE_RUNTIME, true).param(CHILD_TYPE, SERVER_CONFIG).build();
        dispatcher.execute(operation, result -> {
            List<Property> servers = result.asPropertyList();
            boolean anyServerStarted = false;
            for (Iterator<Property> iter = servers.iterator(); iter.hasNext(); ) {
                Property serverProp = iter.next();
                Server server = new Server(host, serverProp);
                if (!server.isStopped()) {
                    anyServerStarted = true;
                } else {
                    iter.remove();
                }
            }
            if (anyServerStarted) {
                callback.accept(servers);
            } else {
                callback.accept(null);
            }
        });
    }
}
Also used : Server(org.jboss.hal.core.runtime.server.Server) ResourceAddress(org.jboss.hal.dmr.ResourceAddress) Operation(org.jboss.hal.dmr.Operation) Property(org.jboss.hal.dmr.Property)

Example 30 with Property

use of org.jboss.hal.dmr.Property in project console by hal.

the class CompositeRrdParser method makeFqAddress.

@SuppressWarnings("DuplicateStringLiteralInspection")
private ResourceAddress makeFqAddress(ResourceAddress operationAddress, ResourceAddress resultAddress) {
    ResourceAddress resolved = resultAddress;
    List<Property> operationSegments = operationAddress.asPropertyList();
    List<Property> resultSegments = resultAddress.asPropertyList();
    // this method fixes this corner case.
    if (operationSegments.size() > 2 && operationSegments.size() == resultSegments.size() + 2 && HOST.equals(operationSegments.get(0).getName()) && SERVER.equals(operationSegments.get(1).getName())) {
        resolved = new ResourceAddress().add(HOST, operationSegments.get(0).getValue().asString()).add(SERVER, operationSegments.get(1).getValue().asString()).add(resultAddress);
        logger.debug("Adjust result address '{}' -> '{}'", resultAddress, resolved);
    }
    return resolved;
}
Also used : ResourceAddress(org.jboss.hal.dmr.ResourceAddress) Property(org.jboss.hal.dmr.Property)

Aggregations

Property (org.jboss.hal.dmr.Property)39 ModelNode (org.jboss.hal.dmr.ModelNode)26 Operation (org.jboss.hal.dmr.Operation)15 ResourceAddress (org.jboss.hal.dmr.ResourceAddress)15 Ids (org.jboss.hal.resources.Ids)9 ArrayList (java.util.ArrayList)8 List (java.util.List)8 Inject (javax.inject.Inject)6 Composite (org.jboss.hal.dmr.Composite)6 ModelType (org.jboss.hal.dmr.ModelType)6 Metadata (org.jboss.hal.meta.Metadata)6 Resources (org.jboss.hal.resources.Resources)6 Map (java.util.Map)5 Form (org.jboss.hal.ballroom.form.Form)5 EventBus (com.google.web.bindery.event.shared.EventBus)4 HashMap (java.util.HashMap)4 Collectors.toList (java.util.stream.Collectors.toList)4 Collectors.toMap (java.util.stream.Collectors.toMap)4 PropertiesItem (org.jboss.hal.ballroom.form.PropertiesItem)4 Environment (org.jboss.hal.config.Environment)4