@SuppressWarnings("unchecked") @Override protected Map<String, Node> loadEntities() { Map<String, Node> nodes = new HashMap<String, Node>(); Collection<Node> cNodes = (Collection<Node>) cfg.getEntities(Node.class); for (Node node: cNodes) { nodes.put(node.getName(), node); } return nodes; }
/** * * @return the schema names specified in {@code bdb.cluster.node.schemas} option */ public String[] getSchemas() { String schemas = getOption(pn_cluster_node_schemas); if (schemas != null) { return schemas.split(" "); } return null; }
public Properties getOpts() { return getEntity().getOptions(); }
/** * {@inheritDoc} */ @Override public String toString() { return "Node [name=" + name + "; version=" + getVersion() + "; created at=" + getCreatedAt() + "; by=" + getCreatedBy() + "; options=" + options + "]"; }
@Override public Object process(Entry<String, Node> entry) { logger.debug("process.enter; entry: {}", entry); if (entry.getValue() != null) { Node node = entry.getValue(); if (node.getVersion() == getVersion()) { // what if new options are not consistent with the current node state?? if (override) { node.setOptions(options); } else { for (String name: options.stringPropertyNames()) { node.setOption(name, options.getProperty(name)); } } if (updateNodesInCluster(node, comment) == 0) { logger.info("process; no members updated!"); // rollback changes somehow? } node.updateVersion(getAdmin()); entry.setValue(node); auditEntity(AuditType.update, node); return node; } } return null; }
@Override public void write(ObjectDataOutput out, Node xNode) throws IOException { super.writeEntity(out, xNode); out.writeUTF(xNode.getName()); out.writeObject(xNode.getOptions()); }
@ManagedOperation(description="Removes named Node option") @ManagedOperationParameters({ @ManagedOperationParameter(name = "name", description = "A name of the option to remove")}) public void removeOption(String name) { Node node = getEntity(); if (node != null) { Properties opts = node.getOptions(); opts.remove(name); // is it safe?? Object result = entityCache.executeOnKey(entityName, new NodeUpdater(node.getVersion(), getCurrentUser(), "Option " + name + " removed from JMX console", true, opts)); logger.trace("removeProperty; execution result: {}", result); } }
@Override public Object process(Entry<String, Node> entry) { logger.debug("process.enter; entry: {}", entry); if (entry.getValue() != null) { Node node = entry.getValue(); if (node.getVersion() == getVersion()) { entry.setValue(null); auditEntity(AuditType.delete, node); return node; } else { // throw ex ? logger.warn("process; outdated user version: {}; entry version: {}; process terminated", getVersion(), entry.getValue().getVersion()); } } return null; }
@Override public Object process(Entry<String, Node> entry) { logger.debug("process.enter; entry: {}", entry); if (entry.getValue() == null) { String nodeId = entry.getKey(); Node node = new Node(getVersion(), new Date(), getAdmin(), name, options); entry.setValue(node); auditEntity(AuditType.create, node); return node; } return null; }
/** * * @param version the version * @param createdAt the date/time of version creation * @param createdBy the user who has created the version * @param name the node name * @param options the collection of node template options */ public Node(int version, Date createdAt, String createdBy, String name, Properties options) { super(version, createdAt, createdBy); this.name = name; setOptions(options); }
@ManagedAttribute(description="Return Schema names deployed on the Node") public String[] getDeployedSchemas() { Node node = getEntity(); return node.getSchemas(); }
String name = node.getName(); for (Member member: all) { if (name.equals(member.getStringAttribute(pn_cluster_node_name))) { logger.info("updateNodesInCluster; going to update {} Members", named.size()); NodeOptionSetter setter = new NodeOptionSetter(getAdmin(), comment, node.getOptions()); IExecutorService execService = hzInstance.getExecutorService(PN_XDM_SYSTEM_POOL);
@ManagedOperation(description="Set named Node option") @ManagedOperationParameters({ @ManagedOperationParameter(name = "name", description = "A name of the option to set"), @ManagedOperationParameter(name = "value", description = "A value of the option to set")}) public void setOption(String name, String value) { Node node = getEntity(); if (node != null) { Properties opts = new Properties(); opts.setProperty(name, value); Object result = entityCache.executeOnKey(entityName, new NodeUpdater(node.getVersion(), getCurrentUser(), "Option " + name + " set from JMX console", false, opts)); logger.trace("setProperty; execution result: {}", result); } }
@Override public Node read(ObjectDataInput in) throws IOException { Object[] entity = super.readEntity(in); Node xNode = new Node( (int) entity[0], (Date) entity[1], (String) entity[2], in.readUTF(), (Properties) in.readObject()); return xNode; }
@ManagedAttribute(description="Returns registered Node name") public String getName() { return getEntity().getName(); }
if (boxes.length > 0 && nodesPerAddress > 0 && nodeSize > 0) { String bStart = node.getOption(pn_cluster_node_start); String bHome = node.getOption(pn_cluster_node_home); String bSsh = node.getOption(pn_cluster_node_ssh); String bUser = null; boolean useSsh = false; useSsh = Boolean.parseBoolean(bSsh); if (useSsh) { bUser = node.getOption(pn_cluster_node_user); useSsh = bUser != null;
@ManagedOperation(description="Delete existing Node") @ManagedOperationParameters({ @ManagedOperationParameter(name = "name", description = "Node name")}) public boolean deleteNode(String name) { Node node = entityCache.get(name); if (node != null) { Object result = entityCache.executeOnKey(name, new NodeRemover(node.getVersion(), getCurrentUser())); logger.debug("deleteNode; execution result: {}", result); return result != null; } return false; }
@ManagedAttribute(description="Returns Node state") public boolean isActive() { Node node = getEntity(); List<Member> members = getMembers(node.getName()); return members.size() > 0; }
@ManagedOperation(description="Initiates schema on Cluster node(-s)") @ManagedOperationParameters({ @ManagedOperationParameter(name = "schemaName", description = "Schema name to add")}) public void addSchema(String schemaName) { Node node = getEntity(); String schemas = node.getOption(pn_cluster_node_schemas); if (schemas != null) { if (schemas.length() > 0) { schemas = schemas + " " + schemaName; } else { schemas = schemaName; } } else { schemas = schemaName; } setOption(pn_cluster_node_schemas, schemas); }
@ManagedAttribute(description="Returns active Node identifier") public String[] getNodeIds() { Node node = getEntity(); List<Member> members = getMembers(node.getName()); if (members.size() > 0) { int i = 0; String[] ids = new String[members.size()]; for (Member member: members) { ids[i++] = member.getUuid(); } return ids; } return null; }