Search in sources :

Example 1 with CompositeResult

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

the class JcaPresenter method launchAddThreadPool.

// ------------------------------------------------------ thread pools (for normal and distributed work managers)
/**
 * Used to bring up the dialog to add thread pools for the normal and the distributed work managers.
 * <p>
 * Only one long and one short running thread pool is allowed per (distributed) work manager. This method takes care of
 * showing the right attributes in the dialog. If there are already long and short running thread pools attached to the work
 * manager an error message is shown.
 */
void launchAddThreadPool(AddressTemplate workmanagerTemplate, String workmanager) {
    dispatcher.execute(threadPoolsOperation(workmanagerTemplate, workmanager), (CompositeResult cr) -> {
        boolean lrtPresent = !cr.step(0).get(RESULT).asPropertyList().isEmpty();
        boolean srtPresent = !cr.step(1).get(RESULT).asPropertyList().isEmpty();
        if (lrtPresent && srtPresent) {
            MessageEvent.fire(getEventBus(), Message.error(resources.messages().allThreadPoolsExist()));
        } else {
            FormItem<String> typeItem;
            if (!lrtPresent && !srtPresent) {
                typeItem = new SingleSelectBoxItem(TYPE, resources.constants().type(), asList(Names.LONG_RUNNING, Names.SHORT_RUNNING), false);
                typeItem.setRequired(true);
            } else {
                typeItem = new TextBoxItem(TYPE, resources.constants().type());
                typeItem.setValue(lrtPresent ? Names.SHORT_RUNNING : Names.LONG_RUNNING);
                typeItem.setEnabled(false);
            }
            // for the metadata it doesn't matter whether we use the LRT or SRT template nor
            // whether we use the normal or distributed workmanager version
            Metadata metadata = metadataRegistry.lookup(WORKMANAGER_LRT_TEMPLATE);
            Form<ModelNode> form = new ModelNodeForm.Builder<>(Ids.JCA_THREAD_POOL_ADD, metadata).fromRequestProperties().unboundFormItem(typeItem, 0).include(MAX_THREADS, QUEUE_LENGTH, THREAD_FACTORY).unsorted().build();
            AddResourceDialog dialog = new AddResourceDialog(resources.messages().addResourceTitle(THREAD_POOL), form, (name, modelNode) -> {
                String type = typeItem.getValue();
                AddressTemplate tpTemplate = Names.LONG_RUNNING.equals(type) ? workmanagerTemplate.append(WORKMANAGER_LRT_TEMPLATE.lastName() + EQUALS + workmanager) : workmanagerTemplate.append(WORKMANAGER_SRT_TEMPLATE.lastName() + EQUALS + workmanager);
                ResourceAddress address = tpTemplate.resolve(statementContext, workmanager);
                Operation operation = new Operation.Builder(address, ADD).payload(modelNode).build();
                dispatcher.execute(operation, result -> {
                    MessageEvent.fire(getEventBus(), Message.success(resources.messages().addResourceSuccess(THREAD_POOL, name)));
                    loadThreadPools(workmanagerTemplate, workmanager);
                });
            });
            dialog.show();
        }
    });
}
Also used : AddResourceDialog(org.jboss.hal.core.mbui.dialog.AddResourceDialog) AddressTemplate(org.jboss.hal.meta.AddressTemplate) SingleSelectBoxItem(org.jboss.hal.ballroom.form.SingleSelectBoxItem) ResourceAddress(org.jboss.hal.dmr.ResourceAddress) CompositeResult(org.jboss.hal.dmr.CompositeResult) LabelBuilder(org.jboss.hal.ballroom.LabelBuilder) Metadata(org.jboss.hal.meta.Metadata) Operation(org.jboss.hal.dmr.Operation) ModelNodeForm(org.jboss.hal.core.mbui.form.ModelNodeForm) TextBoxItem(org.jboss.hal.ballroom.form.TextBoxItem) ModelNode(org.jboss.hal.dmr.ModelNode)

Example 2 with CompositeResult

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

the class JGroupsPresenter method addStack.

// stack resources
@SuppressWarnings("ConstantConditions")
void addStack() {
    Metadata metadata = metadataRegistry.lookup(STACK_TEMPLATE);
    Metadata transportMetadata = metadataRegistry.lookup(TRANSPORT_TEMPLATE).forOperation(ADD);
    transportMetadata.copyAttribute(SOCKET_BINDING, metadata);
    metadata.makeWritable(SOCKET_BINDING);
    NameItem nameItem = new NameItem();
    String transportLabel = new LabelBuilder().label(TRANSPORT);
    TextBoxItem transportItem = new TextBoxItem(TRANSPORT, transportLabel);
    transportItem.setRequired(true);
    String id = Ids.build(Ids.JGROUPS_STACK_CONFIG, Ids.ADD);
    ModelNodeForm<ModelNode> form = new ModelNodeForm.Builder<>(id, metadata).unboundFormItem(nameItem, 0).unboundFormItem(transportItem, 2).unsorted().requiredOnly().build();
    AddResourceDialog dialog = new AddResourceDialog(Names.STACK, form, (name, model) -> {
        ResourceAddress stackAddress = STACK_TEMPLATE.resolve(filterStatementContext, name);
        String transport = transportItem.getValue();
        ResourceAddress transportAddress = TRANSPORT_TEMPLATE.resolve(filterStatementContext, name, transport);
        Operation addStackOperation = new Operation.Builder(stackAddress, ADD).build();
        Operation addTransportOperation = new Operation.Builder(transportAddress, ADD).payload(model).build();
        Composite composite = new Composite(addStackOperation, addTransportOperation);
        dispatcher.execute(composite, (CompositeResult result) -> {
            MessageEvent.fire(eventBus, Message.success(resources.messages().addResourceSuccess(Names.STACK, name)));
            reload();
        });
    });
    dialog.show();
}
Also used : AddResourceDialog(org.jboss.hal.core.mbui.dialog.AddResourceDialog) Composite(org.jboss.hal.dmr.Composite) ResourceAddress(org.jboss.hal.dmr.ResourceAddress) CompositeResult(org.jboss.hal.dmr.CompositeResult) LabelBuilder(org.jboss.hal.ballroom.LabelBuilder) Metadata(org.jboss.hal.meta.Metadata) Operation(org.jboss.hal.dmr.Operation) ModelNodeForm(org.jboss.hal.core.mbui.form.ModelNodeForm) TextBoxItem(org.jboss.hal.ballroom.form.TextBoxItem) NameItem(org.jboss.hal.core.mbui.dialog.NameItem) LabelBuilder(org.jboss.hal.ballroom.LabelBuilder) ModelNode(org.jboss.hal.dmr.ModelNode)

Example 3 with CompositeResult

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

the class ServerActions method copyServer.

// ------------------------------------------------------ server operations
public void copyServer(Server server, Callback callback) {
    Operation operation = new Operation.Builder(ResourceAddress.root(), READ_CHILDREN_NAMES_OPERATION).param(CHILD_TYPE, HOST).build();
    dispatcher.execute(operation, result -> {
        List<String> hosts = new ArrayList<>();
        result.asList().forEach(m -> hosts.add(m.asString()));
        // get the first host only to retrieve the r-r-d for server-config
        // as /host=*/server-config=*:read-operation-description(name=add) does not work
        AddressTemplate template = AddressTemplate.of("/host=" + hosts.get(0) + "/server-config=*");
        metadataProcessor.lookup(template, progress.get(), new SuccessfulMetadataCallback(eventBus, resources) {

            @Override
            public void onMetadata(Metadata metadata) {
                String id = Ids.build(SERVER_GROUP, statementContext.selectedServerGroup(), SERVER, FORM);
                SingleSelectBoxItem hostFormItem = new SingleSelectBoxItem(HOST, Names.HOST, hosts, false);
                hostFormItem.setRequired(true);
                NameItem nameItem = new NameItem();
                ModelNodeForm<ModelNode> form = new ModelNodeForm.Builder<>(id, metadata).fromRequestProperties().unboundFormItem(nameItem, 0).unboundFormItem(hostFormItem, 1, resources.messages().addServerHostHelp()).exclude(AUTO_START, SOCKET_BINDING_DEFAULT_INTERFACE, SOCKET_BINDING_GROUP, UPDATE_AUTO_START_WITH_SERVER_STATUS).build();
                AddResourceDialog dialog = new AddResourceDialog(resources.messages().copyServerTitle(), form, (resource, payload) -> {
                    // read server-config recursively to retrieve nested resources
                    ModelNode serverConfigModel = new ModelNode();
                    serverConfigModel.get(HOST).set(server.getHost());
                    serverConfigModel.get(SERVER_CONFIG).set(server.getName());
                    ResourceAddress serverAddress = new ResourceAddress(serverConfigModel);
                    Operation opReadServer = new Operation.Builder(serverAddress, READ_RESOURCE_OPERATION).param(RECURSIVE, true).build();
                    dispatcher.execute(opReadServer, new Consumer<ModelNode>() {

                        @Override
                        public void accept(ModelNode newServerModel) {
                            String newServerName = nameItem.getValue();
                            // set the chosen group in the model
                            newServerModel.get(GROUP).set(payload.get(GROUP).asString());
                            if (payload.hasDefined(SOCKET_BINDING_PORT_OFFSET)) {
                                newServerModel.get(SOCKET_BINDING_PORT_OFFSET).set(payload.get(SOCKET_BINDING_PORT_OFFSET).asLong());
                            }
                            newServerModel.get(NAME).set(newServerName);
                            ModelNode newServerModelAddress = new ModelNode();
                            newServerModelAddress.get(HOST).set(hostFormItem.getValue());
                            newServerModelAddress.get(SERVER_CONFIG).set(newServerName);
                            Operation opAddServer = new Operation.Builder(new ResourceAddress(newServerModelAddress), ADD).payload(newServerModel).build();
                            Composite comp = new Composite();
                            comp.add(opAddServer);
                            // create operation for each nested resource of the source server
                            createOperation(comp, JVM, newServerModel, newServerModelAddress);
                            createOperation(comp, INTERFACE, newServerModel, newServerModelAddress);
                            createOperation(comp, PATH, newServerModel, newServerModelAddress);
                            createOperation(comp, SYSTEM_PROPERTY, newServerModel, newServerModelAddress);
                            createOperation(comp, SSL, newServerModel, newServerModelAddress);
                            dispatcher.execute(comp, (CompositeResult result) -> {
                                MessageEvent.fire(eventBus, Message.success(resources.messages().addResourceSuccess(Names.SERVER, newServerName)));
                                callback.execute();
                            }, (operation1, failure) -> {
                                MessageEvent.fire(eventBus, Message.error(resources.messages().addResourceError(newServerName, failure)));
                                callback.execute();
                            }, (operation1, exception) -> {
                                MessageEvent.fire(eventBus, Message.error(resources.messages().addResourceError(newServerName, exception.getMessage())));
                                callback.execute();
                            });
                        }

                        private void createOperation(Composite composite, String resource, ModelNode model, ModelNode baseAddress) {
                            if (model.hasDefined(resource)) {
                                List<Property> props = model.get(resource).asPropertyList();
                                props.forEach(p -> {
                                    String propname = p.getName();
                                    ModelNode _address = baseAddress.clone();
                                    _address.get(resource).set(propname);
                                    Operation operation = new Operation.Builder(new ResourceAddress(_address), ADD).payload(p.getValue()).build();
                                    composite.add(operation);
                                });
                            }
                        }
                    });
                });
                dialog.show();
            }
        });
    });
}
Also used : AddressTemplate(org.jboss.hal.meta.AddressTemplate) AddResourceDialog(org.jboss.hal.core.mbui.dialog.AddResourceDialog) Dialog(org.jboss.hal.ballroom.dialog.Dialog) DISABLED(org.jboss.hal.core.runtime.server.ServerConfigStatus.DISABLED) Provider(javax.inject.Provider) Elements.a(org.jboss.gwt.elemento.core.Elements.a) TimeoutHandler.repeatUntilTimeout(org.jboss.hal.dmr.dispatch.TimeoutHandler.repeatUntilTimeout) STOPPED(org.jboss.hal.core.runtime.server.ServerConfigStatus.STOPPED) StatementContext(org.jboss.hal.meta.StatementContext) LoggerFactory(org.slf4j.LoggerFactory) AddResourceDialog(org.jboss.hal.core.mbui.dialog.AddResourceDialog) ResourceAddress(org.jboss.hal.dmr.ResourceAddress) ManagementModel(org.jboss.hal.meta.ManagementModel) Icons(org.jboss.hal.resources.Icons) ModelNodeHelper.asEnumValue(org.jboss.hal.dmr.ModelNodeHelper.asEnumValue) TextBoxItem(org.jboss.hal.ballroom.form.TextBoxItem) OnError(org.jboss.hal.dmr.dispatch.Dispatcher.OnError) Elements.p(org.jboss.gwt.elemento.core.Elements.p) STARTED(org.jboss.hal.core.runtime.server.ServerConfigStatus.STARTED) HTMLElement(elemental2.dom.HTMLElement) Map(java.util.Map) SuspendState(org.jboss.hal.core.runtime.SuspendState) Message(org.jboss.hal.spi.Message) Timeouts(org.jboss.hal.core.runtime.Timeouts) Metadata(org.jboss.hal.meta.Metadata) Names(org.jboss.hal.resources.Names) EnumSet(java.util.EnumSet) CSS.marginLeft5(org.jboss.hal.resources.CSS.marginLeft5) Predicate(java.util.function.Predicate) SingleSelectBoxItem(org.jboss.hal.ballroom.form.SingleSelectBoxItem) FORM(org.jboss.hal.resources.Ids.FORM) ReadSocketBinding(org.jboss.hal.core.runtime.server.ServerUrlTasks.ReadSocketBinding) List(java.util.List) MetadataProcessor(org.jboss.hal.meta.processing.MetadataProcessor) Callback(org.jboss.hal.spi.Callback) Action(org.jboss.hal.core.runtime.Action) ModelDescriptionConstants(org.jboss.hal.dmr.ModelDescriptionConstants) Core(org.jboss.hal.core.Core) Flow.series(org.jboss.hal.flow.Flow.series) Footer(org.jboss.hal.spi.Footer) SafeHtml(com.google.gwt.safehtml.shared.SafeHtml) Subscription(rx.Subscription) CSS.fontAwesome(org.jboss.hal.resources.CSS.fontAwesome) DomGlobal.setTimeout(elemental2.dom.DomGlobal.setTimeout) ModelNode(org.jboss.hal.dmr.ModelNode) Alert(org.jboss.hal.ballroom.Alert) MessageEvent(org.jboss.hal.spi.MessageEvent) SHORT_TIMEOUT(org.jboss.hal.resources.UIConstants.SHORT_TIMEOUT) SuccessfulMetadataCallback(org.jboss.hal.meta.processing.SuccessfulMetadataCallback) ModelNodeHelper.getOrDefault(org.jboss.hal.dmr.ModelNodeHelper.getOrDefault) HashMap(java.util.HashMap) RUNNING(org.jboss.hal.core.runtime.RunningState.RUNNING) Result(org.jboss.hal.core.runtime.Result) FlowContext(org.jboss.hal.flow.FlowContext) Outcome(org.jboss.hal.flow.Outcome) ArrayList(java.util.ArrayList) OnFail(org.jboss.hal.dmr.dispatch.Dispatcher.OnFail) Inject(javax.inject.Inject) ModelNodeForm(org.jboss.hal.core.mbui.form.ModelNodeForm) Property(org.jboss.hal.dmr.Property) Strings(com.google.common.base.Strings) AsyncCallback(com.google.gwt.user.client.rpc.AsyncCallback) TimeoutHandler.repeatOperationUntil(org.jboss.hal.dmr.dispatch.TimeoutHandler.repeatOperationUntil) Progress(org.jboss.hal.flow.Progress) AddressTemplate(org.jboss.hal.meta.AddressTemplate) NameItem(org.jboss.hal.core.mbui.dialog.NameItem) ReadSocketBindingGroup(org.jboss.hal.core.runtime.server.ServerUrlTasks.ReadSocketBindingGroup) BlockingDialog(org.jboss.hal.ballroom.dialog.BlockingDialog) Logger(org.slf4j.Logger) CompositeResult(org.jboss.hal.dmr.CompositeResult) Operation(org.jboss.hal.dmr.Operation) Ids(org.jboss.hal.resources.Ids) EventBus(com.google.web.bindery.event.shared.EventBus) CSS.pfIcon(org.jboss.hal.resources.CSS.pfIcon) DialogFactory(org.jboss.hal.ballroom.dialog.DialogFactory) CompletableSubscriber(rx.CompletableSubscriber) Consumer(java.util.function.Consumer) Composite(org.jboss.hal.dmr.Composite) Dispatcher(org.jboss.hal.dmr.dispatch.Dispatcher) Resources(org.jboss.hal.resources.Resources) SUSPENDED(org.jboss.hal.core.runtime.SuspendState.SUSPENDED) RunningState(org.jboss.hal.core.runtime.RunningState) Elements.span(org.jboss.gwt.elemento.core.Elements.span) Elements(org.jboss.gwt.elemento.core.Elements) OperationFormBuilder(org.jboss.hal.core.mbui.form.OperationFormBuilder) Form(org.jboss.hal.ballroom.form.Form) URL_KEY(org.jboss.hal.core.runtime.server.ServerUrlTasks.URL_KEY) SingleSelectBoxItem(org.jboss.hal.ballroom.form.SingleSelectBoxItem) Composite(org.jboss.hal.dmr.Composite) ResourceAddress(org.jboss.hal.dmr.ResourceAddress) CompositeResult(org.jboss.hal.dmr.CompositeResult) OperationFormBuilder(org.jboss.hal.core.mbui.form.OperationFormBuilder) ArrayList(java.util.ArrayList) Metadata(org.jboss.hal.meta.Metadata) SuccessfulMetadataCallback(org.jboss.hal.meta.processing.SuccessfulMetadataCallback) Operation(org.jboss.hal.dmr.Operation) ModelNodeForm(org.jboss.hal.core.mbui.form.ModelNodeForm) NameItem(org.jboss.hal.core.mbui.dialog.NameItem) Consumer(java.util.function.Consumer) ModelNode(org.jboss.hal.dmr.ModelNode) Property(org.jboss.hal.dmr.Property)

Example 4 with CompositeResult

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

the class ServerGroupActions method remove.

public void remove(ServerGroup serverGroup) {
    List<Server> stoppedServers = serverGroup.getServers(Server::isStopped);
    DialogFactory.showConfirmation(resources.messages().removeConfirmationTitle(Names.SERVER_GROUP), resources.messages().removeConfirmationQuestion(serverGroup.getName()), () -> {
        prepare(serverGroup, stoppedServers, Action.REMOVE);
        Composite comp = new Composite();
        for (Server server : stoppedServers) {
            comp.add(new Operation.Builder(server.getServerConfigAddress(), REMOVE).build());
        }
        Operation operation = new Operation.Builder(serverGroup.getAddress(), REMOVE).build();
        comp.add(operation);
        dispatcher.execute(comp, (CompositeResult result) -> finish(serverGroup, stoppedServers, Result.SUCCESS, Message.success(resources.messages().removeResourceSuccess(Names.SERVER_GROUP, serverGroup.getName()))), (operation1, failure) -> finish(serverGroup, stoppedServers, Result.ERROR, Message.error(resources.messages().removeError(serverGroup.getName(), failure))), (operation1, exception) -> finish(serverGroup, stoppedServers, Result.ERROR, Message.error(resources.messages().removeError(serverGroup.getName(), exception.getMessage()))));
    });
}
Also used : Server(org.jboss.hal.core.runtime.server.Server) Composite(org.jboss.hal.dmr.Composite) CompositeResult(org.jboss.hal.dmr.CompositeResult) OperationFormBuilder(org.jboss.hal.core.mbui.form.OperationFormBuilder) Operation(org.jboss.hal.dmr.Operation)

Example 5 with CompositeResult

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

the class ServerGroupActions method copy.

public void copy(ServerGroup serverGroup, FormItemValidation<String> nameItemValidator) {
    NameItem newNameItem = new NameItem();
    newNameItem.setValue(serverGroup.getName() + "_" + COPY);
    newNameItem.addValidationHandler(nameItemValidator);
    ModelNodeForm<ModelNode> form = new ModelNodeForm.Builder<>(Ids.build(COPY, serverGroup.getName(), Ids.FORM), Metadata.empty()).fromRequestProperties().unboundFormItem(newNameItem, 0).requiredOnly().build();
    AddResourceDialog dialog = new AddResourceDialog(resources.messages().addResourceTitle(Names.SERVER_GROUP), form, (resource, payload) -> {
        // read server-config recursively to retrieve nested resources
        Operation opReadServerGroup = new Operation.Builder(serverGroup.getAddress(), READ_RESOURCE_OPERATION).param(RECURSIVE, true).build();
        dispatcher.execute(opReadServerGroup, serverGroupModel -> {
            ServerGroup newServerGroup = new ServerGroup(newNameItem.getValue(), serverGroupModel);
            Operation opAddServer = new Operation.Builder(newServerGroup.getAddress(), ADD).payload(serverGroupModel).build();
            Composite comp = new Composite();
            comp.add(opAddServer);
            addChildOperations(comp, newServerGroup, newServerGroup.getAddress(), 2);
            dispatcher.execute(comp, (CompositeResult result) -> finish(serverGroup, Collections.emptyList(), Result.SUCCESS, Message.success(resources.messages().addResourceSuccess(Names.SERVER_GROUP, newNameItem.getValue()))), (operation1, failure) -> finish(serverGroup, Collections.emptyList(), Result.ERROR, Message.error(resources.messages().addResourceError(newNameItem.getValue(), failure))), (operation1, exception) -> finish(serverGroup, Collections.emptyList(), Result.ERROR, Message.error(resources.messages().addResourceError(newNameItem.getValue(), exception.getMessage()))));
        });
    });
    dialog.show();
    ModelNode model = new ModelNode();
    model.get(TIMEOUT).set(0);
    form.edit(model);
}
Also used : AddResourceDialog(org.jboss.hal.core.mbui.dialog.AddResourceDialog) NameItem(org.jboss.hal.core.mbui.dialog.NameItem) Composite(org.jboss.hal.dmr.Composite) CompositeResult(org.jboss.hal.dmr.CompositeResult) OperationFormBuilder(org.jboss.hal.core.mbui.form.OperationFormBuilder) Operation(org.jboss.hal.dmr.Operation) ModelNode(org.jboss.hal.dmr.ModelNode)

Aggregations

CompositeResult (org.jboss.hal.dmr.CompositeResult)53 Composite (org.jboss.hal.dmr.Composite)48 Operation (org.jboss.hal.dmr.Operation)42 ResourceAddress (org.jboss.hal.dmr.ResourceAddress)33 ModelNode (org.jboss.hal.dmr.ModelNode)31 ArrayList (java.util.ArrayList)21 List (java.util.List)18 Dispatcher (org.jboss.hal.dmr.dispatch.Dispatcher)17 ModelDescriptionConstants (org.jboss.hal.dmr.ModelDescriptionConstants)16 AddressTemplate (org.jboss.hal.meta.AddressTemplate)16 StatementContext (org.jboss.hal.meta.StatementContext)16 Inject (javax.inject.Inject)15 Ids (org.jboss.hal.resources.Ids)14 Environment (org.jboss.hal.config.Environment)13 FlowContext (org.jboss.hal.flow.FlowContext)13 Resources (org.jboss.hal.resources.Resources)13 EventBus (com.google.web.bindery.event.shared.EventBus)12 Collectors.toList (java.util.stream.Collectors.toList)12 Message (org.jboss.hal.spi.Message)12 MessageEvent (org.jboss.hal.spi.MessageEvent)12