Java源码示例:org.jboss.as.controller.client.OperationBuilder

示例1
private void readLogFile(ModelNode opNode) throws IOException {

        Operation op = OperationBuilder.create(opNode).build();
        try (OperationResponse response = getModelControllerClient().executeOperation(op, OperationMessageHandler.DISCARD)) {

            ModelNode respNode = response.getResponseNode();
            Assert.assertEquals(respNode.toString(), "success", respNode.get("outcome").asString());
            Assert.assertEquals(respNode.toString(), ModelType.STRING, respNode.get("result").getType());
            String uuid = respNode.get("result").asString();
            List<? extends OperationResponse.StreamEntry> streams = response.getInputStreams();
            Assert.assertEquals(1, streams.size());
            OperationResponse.StreamEntry se = streams.get(0);
            Assert.assertEquals(uuid, se.getUUID());
            readLogStream(se.getStream());
        }

    }
 
示例2
/**
 * Deploys the archive to the running server.
 *
 * @param archive the archive to deploy
 * @throws IOException if an error occurs deploying the archive
 */
public static void deploy(final Archive<?> archive, ManagementClient managementClient) throws IOException {
    // Use an operation to allow overriding the runtime name
    final ModelNode address = Operations.createAddress(DEPLOYMENT, archive.getName());
    final ModelNode addOp = createAddOperation(address);
    addOp.get("enabled").set(true);
    // Create the content for the add operation
    final ModelNode contentNode = addOp.get(CONTENT);
    final ModelNode contentItem = contentNode.get(0);
    contentItem.get(ClientConstants.INPUT_STREAM_INDEX).set(0);

    // Create an operation and add the input archive
    final OperationBuilder builder = OperationBuilder.create(addOp);
    builder.addInputStream(archive.as(ZipExporter.class).exportAsInputStream());

    // Deploy the content and check the results
    final ModelNode result = managementClient.getControllerClient().execute(builder.build());
    if (!Operations.isSuccessfulOutcome(result)) {
        Assert.fail(String.format("Failed to deploy %s: %s", archive, Operations.getFailureDescription(result).asString()));
    }
}
 
示例3
/**
 * Deploys the archive to the running server.
 *
 * @param archive     the archive to deploy
 * @param runtimeName the runtime name for the deployment
 *
 * @throws IOException if an error occurs deploying the archive
 */
public static void deploy(final Archive<?> archive, final String runtimeName) throws IOException {
    // Use an operation to allow overriding the runtime name
    final ModelNode address = Operations.createAddress(DEPLOYMENT, archive.getName());
    final ModelNode addOp = createAddOperation(address);
    if (runtimeName != null && !archive.getName().equals(runtimeName)) {
        addOp.get(RUNTIME_NAME).set(runtimeName);
    }
    addOp.get("enabled").set(true);
    // Create the content for the add operation
    final ModelNode contentNode = addOp.get(CONTENT);
    final ModelNode contentItem = contentNode.get(0);
    contentItem.get(ClientConstants.INPUT_STREAM_INDEX).set(0);

    // Create an operation and add the input archive
    final OperationBuilder builder = OperationBuilder.create(addOp);
    builder.addInputStream(archive.as(ZipExporter.class).exportAsInputStream());

    // Deploy the content and check the results
    final ModelNode result = client.getControllerClient().execute(builder.build());
    if (!Operations.isSuccessfulOutcome(result)) {
        Assert.fail(String.format("Failed to deploy %s: %s", archive, Operations.getFailureDescription(result).asString()));
    }
}
 
示例4
protected void reloadSlave() throws Exception {
    ModelNode op = new ModelNode();
    op.get(OP).set("reload");
    op.get(OP_ADDR).add(HOST, "slave");
    op.get(ADMIN_ONLY).set(false);
    try {
        getDomainSlaveClient().execute(new OperationBuilder(op).build());
    } catch(IOException e) {
        final Throwable cause = e.getCause();
        if (!(cause instanceof ExecutionException) && !(cause instanceof CancellationException)) {
            throw e;
        } // else ignore, this might happen if the channel gets closed before we got the response
    }
    // use testSupport.getDomainSlaveLifecycleUtil().awaitHostController(System.currentTimeMillis());
    // in the subclass waiting to know when the slaveHC is available before continuing.
}
 
示例5
private void readLogFile(ModelNode opNode, ModelControllerClient client, boolean forServer) throws IOException {
    Operation op = OperationBuilder.create(opNode).build();
    OperationResponse response = null;
    try {
        response = client.executeOperation(op, OperationMessageHandler.DISCARD);

        ModelNode respNode = response.getResponseNode();
        System.out.println(respNode.toString());
        Assert.assertEquals(respNode.toString(), "success", respNode.get("outcome").asString());
        ModelNode result = respNode.get("result");
        Assert.assertEquals(respNode.toString(), ModelType.STRING, result.getType());
        List<? extends OperationResponse.StreamEntry> streams = response.getInputStreams();
        Assert.assertEquals(1, streams.size());
        processResponseStream(response, result.asString(), forServer, client == masterClient);

    } finally {
        StreamUtils.safeClose(response);
    }

}
 
示例6
@Override
void setUpDomain(DomainTestSupport testSupport, DomainClient masterClient, DomainClient slaveClient) throws Exception {
    //Add minimal server
    cloneProfile(masterClient, "minimal", "overlay-affected");
    initialized = 1;
    createServerGroup(masterClient, "overlay-group-affected", "overlay-affected");
    initialized = 2;
    createServer(slaveClient, "server-affected", "overlay-group-affected", portOffset);
    initialized = 3;
    startServer(slaveClient, "server-affected");
    initialized = 4;
    DomainTestUtils.executeForResult(Util.createAddOperation(OVERLAY_ADDRESS), masterClient);
    initialized = 5;
    ModelNode addOverlayContent = Util.createAddOperation(OVERLAY_CONTENT_ADDRESS);
    addOverlayContent.get(CONTENT, INPUT_STREAM_INDEX).set(0);
    OperationBuilder builder = OperationBuilder.create(addOverlayContent);
    builder.addInputStream(new ByteArrayInputStream("initial".getBytes(StandardCharsets.UTF_8)));
    ModelNode result = masterClient.execute(builder.build());
    Assert.assertEquals(result.get(FAILURE_DESCRIPTION).asString(), SUCCESS, result.get(OUTCOME).asString());
    initialized = 6;
    DomainTestUtils.executeForResult(Util.createAddOperation(SERVER_GROUP_OVERLAY_ADDRESS), masterClient);
    initialized = 7;
    DomainTestUtils.executeForResult(Util.createAddOperation(SERVER_GROUP_DEPLOYMENT_ADDRESS), masterClient);
    initialized = 8;
}
 
示例7
@Override
protected ModelNode execute(CommandContext ctx, ModelNode request)
        throws IOException {
    ModelNode result;
    if (!unmanaged) {
        OperationBuilder op = new OperationBuilder(request);
        op.addFileAsAttachment(file);
        request.get(Util.CONTENT).get(0).get(Util.INPUT_STREAM_INDEX).set(0);
        try (Operation operation = op.build()) {
            result = ctx.getModelControllerClient().execute(operation);
        }
    } else {
        result = ctx.getModelControllerClient().execute(request);
    }
    return result;
}
 
示例8
private OperationResponse execute(ModelNode request, boolean useWaitCursor) throws IOException {

        if(request.get(Util.OPERATION).asString().equals(Util.COMPOSITE) &&
                (!request.get(Util.STEPS).isDefined() || request.get(Util.STEPS).asList().isEmpty())) {
            return OperationResponse.Factory.createSimple(new ModelNode("WARN: no request was sent as there were no server-side operations to execute"));
        }

        try {
            if (useWaitCursor) {
                cliGuiCtx.getMainWindow().setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
            }
            return client.get().executeOperation(OperationBuilder.create(request).build(), OperationMessageHandler.DISCARD);
        } finally {
            if (useWaitCursor) {
                cliGuiCtx.getMainWindow().setCursor(Cursor.getDefaultCursor());
            }
        }
    }
 
示例9
/**
 * Execute an operation in the model controller
 *
 * @param operation the operation to execute
 * @param inputStreams Input Streams for the operation
 * @return the whole result of the operation
 */
@Override
public ModelNode executeOperation(ModelNode operation, InputStream...inputStreams) {
    if (inputStreams.length == 0) {
        return executeOperation(operation, OperationTransactionControl.COMMIT);
    } else {
        ExecutorService executor = Executors.newCachedThreadPool();
        try {
            ModelControllerClient client = controller.createClient(executor);
            OperationBuilder builder = OperationBuilder.create(operation);
            for (InputStream in : inputStreams) {
                builder.addInputStream(in);
            }
            Operation op = builder.build();

            try {
                return client.execute(op);
            } catch (IOException e) {
                throw new RuntimeException(e);
            }
        } finally {
            executor.shutdownNow();
        }
    }
}
 
示例10
/**
 * Creates new deployment content based on the stream content. The stream content is copied, stored in-memory and
 * closed.
 *
 * @param content the content to deploy
 *
 * @return the deployment content
 */
static DeploymentContent of(final InputStream content) {
    final ByteArrayInputStream copiedContent = copy(content);
    return new DeploymentContent() {
        @Override
        void addContentToOperation(final OperationBuilder builder, final ModelNode op) {
            copiedContent.reset();
            final ModelNode contentNode = op.get(CONTENT);
            final ModelNode contentItem = contentNode.get(0);
            // The index is 0 based so use the input stream count before adding the input stream
            contentItem.get(ClientConstants.INPUT_STREAM_INDEX).set(builder.getInputStreamCount());
            builder.addInputStream(copiedContent);
        }

        @Override
        public String toString() {
            return String.format("%s(%s)", DeploymentContent.class.getName(), copiedContent);
        }
    };
}
 
示例11
/**
 * Creates new deployment content based on the {@linkplain URL URL}. The server will require access to the URL.
 *
 * @param url the URL of the content to deploy
 *
 * @return the deployment content
 */
static DeploymentContent of(final URL url) {
    return new DeploymentContent() {
        @Override
        void addContentToOperation(final OperationBuilder builder, final ModelNode op) {
            final ModelNode contentNode = op.get(CONTENT);
            final ModelNode contentItem = contentNode.get(0);
            contentItem.get("url").set(url.toExternalForm());
        }

        @Override
        String resolvedName() {
            final String path = url.getPath();
            final int index = path.lastIndexOf('/');
            if (index >= 0) {
                return path.substring(index + 1);
            }
            return path;
        }

        @Override
        public String toString() {
            return String.format("%s(%s)", DeploymentContent.class.getName(), url.toExternalForm());
        }
    };
}
 
示例12
protected static void applyUpdate(final ModelControllerClient client, ModelNode update, boolean allowFailure) throws IOException {
    ModelNode result = client.execute(new OperationBuilder(update).build());
    if (result.hasDefined("outcome") && (allowFailure || "success".equals(result.get("outcome").asString()))) {
        if (result.hasDefined("result")) {
            LOGGER.trace(result.get("result"));
        }
    } else if (result.hasDefined("failure-description")) {
        throw new RuntimeException(result.get("failure-description").toString());
    } else {
        throw new RuntimeException("Operation not successful; outcome = " + result.get("outcome"));
    }
}
 
示例13
public static void applyUpdate(ModelNode update, final ModelControllerClient client) throws Exception {
    ModelNode result = client.execute(new OperationBuilder(update).build());
    if (LOGGER.isDebugEnabled()) {
        LOGGER.info("Client update: " + update);
        LOGGER.info("Client update result: " + result);
    }
    if (result.hasDefined("outcome") && "success".equals(result.get("outcome").asString())) {
        LOGGER.debug("Operation succeeded.");
    } else if (result.hasDefined("failure-description")) {
        throw new RuntimeException(result.get("failure-description").toString());
    } else {
        throw new RuntimeException("Operation not successful; outcome = " + result.get("outcome"));
    }
}
 
示例14
protected ModelNode executeAndRollbackOperation(final ModelNode op) throws IOException {

        ModelNode broken = Util.createOperation("read-attribute", PathAddress.EMPTY_ADDRESS);
        broken.get("no-such-attribute").set("fail");

        /*ModelNode addDeploymentOp = createOpNode("deployment=malformedDeployment.war", "add");
        addDeploymentOp.get("content").get(0).get("input-stream-index").set(0);

        DefaultOperationRequestBuilder builder = new DefaultOperationRequestBuilder();
        builder.setOperationName("deploy");
        builder.addNode("deployment", "malformedDeployment.war");


        ModelNode[] steps = new ModelNode[3];
        steps[0] = op;
        steps[1] = addDeploymentOp;
        steps[2] = builder.buildRequest();
        ModelNode compositeOp = ModelUtil.createCompositeNode(steps);

        OperationBuilder ob = new OperationBuilder(compositeOp, true);
        ob.addInputStream(new FileInputStream(getBrokenWar()));*/

        ModelNode[] steps = new ModelNode[2];
        steps[0] = op;
        steps[1] = broken;
        ModelNode compositeOp = ModelUtil.createCompositeNode(steps);
        OperationBuilder ob = new OperationBuilder(compositeOp, true);

        return getModelControllerClient().execute(ob.build());
    }
 
示例15
private ModelNode readAttribute(String name, ModelNode address) {
    ModelNode op = new ModelNode();
    op.get("operation").set("read-attribute");
    op.get("address").set(address);
    op.get("name").set(name);
    return executeForResult(new OperationBuilder(op).build());
}
 
示例16
private Operation deployOperation(PathAddress address, File file) throws IOException {
    final ModelNode op = new ModelNode();
    op.get(OP).set(ADD);
    op.get(OP_ADDR).set(address.toModelNode());
    op.get(ENABLED).set(true);
    op.get(CONTENT).add().get(INPUT_STREAM_INDEX).set(0);

    return OperationBuilder.create(op, true)
            .addFileAsAttachment(file)
            .build();
}
 
示例17
static void applyUpdate(final ModelControllerClient client, ModelNode update, boolean allowFailure) throws Exception {
    ModelNode result = client.execute(new OperationBuilder(update).build());
    if (result.hasDefined("outcome") && (allowFailure || "success".equals(result.get("outcome").asString()))) {
        if (result.hasDefined("result")) {
            System.out.println(result.get("result"));
        }
    } else if (result.hasDefined("failure-description")) {
        throw new RuntimeException(result.get("failure-description").toString());
    } else {
        throw new RuntimeException("Operation not successful; outcome = " + result.get("outcome"));
    }
}
 
示例18
private void authenticationUsersCredentialReferenceClearTextTest(String username, String pwd) throws Exception {
    ModelNode op = new ModelNode();
    op.get(OP).set(ModelDescriptionConstants.ADD);
    op.get(OP_ADDR).add(CORE_SERVICE, MANAGEMENT).add(SECURITY_REALM, "ManagementRealm")
        .add(ModelDescriptionConstants.AUTHENTICATION, ModelDescriptionConstants.USERS)
        .add(ModelDescriptionConstants.USER, username);
    op.get("credential-reference").set(prepareCredentialReference(pwd));
    getClient().execute(new OperationBuilder(op).build());

    reload();
    processWhoamiOperationSuccess(USERNAME_1, pwd);
}
 
示例19
private void authenticationUsersCredentialReferenceStoreAliasTest(String storeName, String username, String pwd)
    throws Exception {
    ModelNode op = new ModelNode();
    op.get(OP).set(ModelDescriptionConstants.ADD);
    op.get(OP_ADDR).add(CORE_SERVICE, MANAGEMENT).add(SECURITY_REALM, "ManagementRealm")
        .add(ModelDescriptionConstants.AUTHENTICATION, ModelDescriptionConstants.USERS)
        .add(ModelDescriptionConstants.USER, username);
    op.get("credential-reference").set(prepareCredentialReference(storeName, username));
    getClient().execute(new OperationBuilder(op).build());

    reload();
    processWhoamiOperationSuccess(USERNAME_2, pwd);
}
 
示例20
protected void addAliasOperation(ModelNode credentialStoreAddress, String aliasName, String secretValue)
    throws IOException {
    ModelNode op = Operations.createOperation("add-alias", credentialStoreAddress);
    op.get("secret-value").set(secretValue);
    op.get("alias").set(aliasName);
    getClient().execute(new OperationBuilder(op).build());
}
 
示例21
/**
 * Creates managed deployment
 *
 * @param name deployment runtime name
 * @param archive archive to deploy
 */
private void deployPersistent(ModelControllerClient client, String name, Archive archive) throws IOException {
    PathAddress address = PathAddress.pathAddress(DEPLOYMENT, name);

    ModelNode operation = Util.createOperation(ADD, address);
    operation.get(CONTENT).get(0).get(INPUT_STREAM_INDEX).set(0);
    OperationBuilder ob = new OperationBuilder(operation, true);
    ob.addInputStream(archive.as(ZipExporter.class).exportAsInputStream());
    ModelNode result = client.execute(ob.build());
    Assert.assertEquals(SUCCESS, result.get(OUTCOME).asString());

    operation = Util.createOperation(DEPLOY, address);
    result = client.execute(operation);
    Assert.assertEquals(SUCCESS, result.get(OUTCOME).asString());
}
 
示例22
private void replaceWithPersistent(ModelControllerClient client, String name, Archive archive) throws IOException {
    ModelNode operation = Util.createOperation(FULL_REPLACE_DEPLOYMENT, PathAddress.EMPTY_ADDRESS);
    operation.get(CONTENT).get(0).get(INPUT_STREAM_INDEX).set(0);
    operation.get(ENABLED).set(true);
    operation.get(NAME).set(name);
    OperationBuilder ob = new OperationBuilder(operation, true);
    ob.addInputStream(archive.as(ZipExporter.class).exportAsInputStream());
    ModelNode result = client.execute(ob.build());
    Assert.assertEquals(result.toString(), SUCCESS, result.get(OUTCOME).asString());
}
 
示例23
void configureUser(final ModelControllerClient client, final CompositeOperationBuilder compositeOp) throws IOException {

        // Determine the we should be using a security-realm or SASL (we assume SASL means Elytron is enabled)
        String securityRealm = "ManagementRealm";
        ModelNode op = Operations.createReadResourceOperation(Operations.createAddress("core-service", "management", "management-interface", "http-interface"));
        ModelNode result = executeForSuccess(client, OperationBuilder.create(op).build());
        if (result.hasDefined("security-realm")) {
            securityRealm = result.get("security-realm").asString();
        } else if (result.hasDefined("http-upgrade")) {
            final ModelNode httpUpgrade = result.get("http-upgrade");
            // We could query this further to get the actual name of the configurable-sasl-server-factory. Since this
            // is a test we're making some assumptions to limit the number of query calls made to the server.
            if (httpUpgrade.hasDefined("sasl-authentication-factory")) {
                elytronEnabled = true;
            }
        }

        if (elytronEnabled) {
            userAuthAddress = Operations.createAddress("subsystem", "elytron", "configurable-sasl-server-factory", "configured");
            op = Operations.createOperation("map-remove", userAuthAddress);
            op.get("name").set("properties");
            op.get("key").set(DEFAULT_USER_KEY);
            compositeOp.addStep(op.clone());
            op = Operations.createOperation("map-put", userAuthAddress);
            op.get("name").set("properties");
            op.get("key").set(DEFAULT_USER_KEY);
            op.get("value").set("IAmAdmin");
            compositeOp.addStep(op.clone());

            userIdentRealmAddress = Operations.createAddress("subsystem", "elytron", "identity-realm", "local");
            compositeOp.addStep(Operations.createWriteAttributeOperation(userIdentRealmAddress, "identity", "IAmAdmin"));

        } else {
            userAuthAddress = Operations.createAddress(CORE_SERVICE, MANAGEMENT, SECURITY_REALM, securityRealm, AUTHENTICATION, LOCAL);
            compositeOp.addStep(Operations.createWriteAttributeOperation(userAuthAddress, "default-user", "IAmAdmin"));
        }
    }
 
示例24
/**
 * prepares a DMR operation for applying a patch
 */
public static Operation createPatchOperation(File patchFile) throws FileNotFoundException {
    final ModelNode patchOperation = new ModelNode();
    patchOperation.get(ModelDescriptionConstants.OP_ADDR).add("core-service", "patching");
    patchOperation.get(ModelDescriptionConstants.OP).set("patch");
    patchOperation.get("content").get(0).get("input-stream-index").set(0);
    return OperationBuilder.create(patchOperation)
            .addInputStream(new FileInputStream(patchFile)).build();
}
 
示例25
/**
 * prepares a DMR operation for applying a patch
 */
public static Operation createRollbackOperation(String patchId) throws FileNotFoundException {
    final ModelNode patchOperation = new ModelNode();
    patchOperation.get(ModelDescriptionConstants.OP_ADDR).add("core-service", "patching");
    patchOperation.get(ModelDescriptionConstants.OP).set("rollback");
    patchOperation.get("patch-id").set(patchId);
    patchOperation.get("reset-configuration").set(true);
    return OperationBuilder.create(patchOperation).build();
}
 
示例26
private Operation buildDeploymentAddOperation() throws IOException, OperationFormatException {

        ModelNode addDeploymentOp = new ModelNode();
        addDeploymentOp.get(ModelDescriptionConstants.ADDRESS).add(DEPLOYMENT, DEPLOYMENT_NAME);
        addDeploymentOp.get(ModelDescriptionConstants.OP).set(ModelDescriptionConstants.ADD);
        addDeploymentOp.get("content").get(0).get("input-stream-index").set(0);

        OperationBuilder ob = new OperationBuilder(addDeploymentOp, true);
        ob.addInputStream(new FileInputStream(jarFile));

        return ob.build();
    }
 
示例27
private Operation buildDeploymentMappingOperation() throws IOException, OperationFormatException {

        ModelNode deployOp = new ModelNode();
        deployOp.get(ModelDescriptionConstants.OP).set(ModelDescriptionConstants.ADD);
        deployOp.get(ModelDescriptionConstants.ADDRESS).add(ModelDescriptionConstants.SERVER_GROUP, "main-server-group");
        deployOp.get(ModelDescriptionConstants.ADDRESS).add(ModelDescriptionConstants.DEPLOYMENT, DEPLOYMENT_NAME);
        deployOp.get(ModelDescriptionConstants.ENABLED).set(true);

        OperationBuilder ob = new OperationBuilder(deployOp, true);
        ob.addInputStream(new FileInputStream(jarFile));

        return ob.build();
    }
 
示例28
protected void setSlaveSecret(String value) throws IOException {
    ModelNode op = new ModelNode();
    op.get(OP).set(WRITE_ATTRIBUTE_OPERATION);
    op.get(OP_ADDR).add(HOST, "slave").add(CORE_SERVICE, MANAGEMENT).add(SECURITY_REALM, "ManagementRealm").add(SERVER_IDENTITY, SECRET);
    op.get(NAME).set(VALUE);
    op.get(VALUE).set(value);
    getDomainSlaveClient().execute(new OperationBuilder(op).build());
}
 
示例29
private void slaveWithVaultPasswordTest() throws Exception {

        VaultHandler.cleanFilesystem(RESOURCE_LOCATION, true);

        // create new vault
        VaultHandler vaultHandler = new VaultHandler(RESOURCE_LOCATION);

        try {

            // create security attributes
            String attributeName = "value";
            String vaultPasswordString = vaultHandler.addSecuredAttribute(VAULT_BLOCK, attributeName,
                    RIGHT_PASSWORD.toCharArray());

            // create new vault setting in host
            ModelNode op = new ModelNode();
            op.get(OP).set(ADD);
            op.get(OP_ADDR).add(HOST, "slave").add(CORE_SERVICE, VAULT);
            ModelNode vaultOption = op.get(VAULT_OPTIONS);
            vaultOption.get("KEYSTORE_URL").set(vaultHandler.getKeyStore());
            vaultOption.get("KEYSTORE_PASSWORD").set(vaultHandler.getMaskedKeyStorePassword());
            vaultOption.get("KEYSTORE_ALIAS").set(vaultHandler.getAlias());
            vaultOption.get("SALT").set(vaultHandler.getSalt());
            vaultOption.get("ITERATION_COUNT").set(vaultHandler.getIterationCountAsString());
            vaultOption.get("ENC_FILE_DIR").set(vaultHandler.getEncodedVaultFileDirectory());
            domainSlaveClient.execute(new OperationBuilder(op).build());

            setSlaveSecret("${" + vaultPasswordString + "}");

            reloadSlave();

            testSupport.getDomainSlaveLifecycleUtil().awaitHostController(System.currentTimeMillis());
            // Validate that it joined the master
            readHostControllerStatus(domainMasterClient);
        } finally {
            // remove temporary files
            vaultHandler.cleanUp();
        }
    }
 
示例30
private void removeServerIdentity() throws IOException {
    ModelNode op = new ModelNode();
    op.get(OP).set(REMOVE);
    op.get(OP_ADDR).add(HOST, "slave").add(CORE_SERVICE, MANAGEMENT).add(SECURITY_REALM, "ManagementRealm")
            .add(SERVER_IDENTITY, SECRET);
    getDomainSlaveClient().execute(new OperationBuilder(op).build());
}