com.dtolabs.rundeck.core.utils
Class NodeSet

java.lang.Object
  extended by com.dtolabs.rundeck.core.utils.NodeSet
All Implemented Interfaces:
NodesSelector

public class NodeSet
extends java.lang.Object
implements NodesSelector

NodeSet provides filtering logic for Node criteria


Nested Class Summary
 class NodeSet.Exclude
           
static class NodeSet.FILTER_ENUM
          Enum of filters.
 class NodeSet.Include
           
 class NodeSet.SetSelector
          SetSelector is a filter
 
Field Summary
static java.util.List<java.lang.String> FILTER_KEYS_LIST
          names of the filter attributes used by exclude/include that are exposed to the CLI interface
static java.util.Collection<java.lang.String> FILTER_KEYSET
          Collection of names of attributes used by exclude/include that are exposed to the CLI interface
static java.lang.String HOSTNAME
           
static java.lang.String NAME
           
static java.lang.String OS_ARCH
           
static java.lang.String OS_FAMILY
           
static java.lang.String OS_NAME
           
static java.lang.String OS_VERSION
           
static java.lang.String TAGS
           
static java.lang.String TYPE
           
 
Constructor Summary
NodeSet()
          default constructor
NodeSet(INodeEntry singleNode)
          Create a nodeset for a single node
NodeSet(java.lang.String singleNodeName)
          Create a nodeset with a single node name
 
Method Summary
 boolean acceptNode(INodeEntry entry)
           
 NodeSet.Exclude createExclude()
           
 NodeSet.Exclude createExclude(java.util.Map excludeMap)
          Creates an NodeSet.Exclude object populating its properties from the keys of the map
 NodeSet.Include createInclude()
           
 NodeSet.Include createInclude(java.util.Map includeMap)
          Creates an NodeSet.Include object populating its properties from the keys of the map
 boolean equals(java.lang.Object o)
           
 NodeSet.Exclude getExclude()
           
 java.io.File getFailedNodesfile()
           
 NodeSet.Include getInclude()
           
 java.lang.String getSingleNodeName()
           
 int getThreadCount()
           
 int hashCode()
           
 boolean isBlank()
          Return true if the include/exclude filters are blank or non-existent
 boolean isKeepgoing()
           
protected static boolean matchesInput(java.util.Map<java.lang.String,java.lang.String> attrSelectors, java.util.Map<java.lang.String,java.lang.String> values, boolean matchAll)
          Return true if any attribute selector matches the corresponding attribute value
protected static boolean matchesInput(java.lang.String inputSelector, java.lang.String propValue)
          Return true if the input selector matches the specified property value
static boolean matchRegexOrEquals(java.lang.String inputSelector, java.lang.String item)
          Tests whether the selector string matches the item, in three possible ways: first, if the selector looks like: "/.../" then it the outer '/' chars are removed and it is treated as a regular expression *only* and PatternSyntaxExceptions are not caught.
 NodesSelector nodeSelectorWithDefault(java.lang.String nodename)
          Return a new Node Selector that will apply the include/exclude filters if they are set, otherwise it only includes the node with the given nodename
 NodesSelector nodeSelectorWithDefaultAll()
          Return a new Node Selector that will apply the include/exclude filters if they are set, otherwise it will accept all nodes
 NodeSet.SetSelector populateSetSelector(java.util.Map map, NodeSet.SetSelector setselector)
          Creates an NodeSet.SetSelector object populating its properties from the keys of the map
 void setFailedNodesfile(java.io.File failedNodesfile)
           
 void setKeepgoing(boolean keepgoing)
           
 void setSingleNodeName(java.lang.String singleNodeName)
           
 void setThreadCount(int threadCount)
           
 boolean shouldExclude(INodeEntry entry)
          Return true if the node entry should be excluded based on the includes and excludes parameters.
 java.lang.String toString()
           
 void validate()
          Validate input.
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 

Field Detail

HOSTNAME

public static final java.lang.String HOSTNAME
See Also:
Constant Field Values

NAME

public static final java.lang.String NAME
See Also:
Constant Field Values

TYPE

public static final java.lang.String TYPE
See Also:
Constant Field Values

TAGS

public static final java.lang.String TAGS
See Also:
Constant Field Values

OS_NAME

public static final java.lang.String OS_NAME
See Also:
Constant Field Values

OS_FAMILY

public static final java.lang.String OS_FAMILY
See Also:
Constant Field Values

OS_ARCH

public static final java.lang.String OS_ARCH
See Also:
Constant Field Values

OS_VERSION

public static final java.lang.String OS_VERSION
See Also:
Constant Field Values

FILTER_KEYS_LIST

public static final java.util.List<java.lang.String> FILTER_KEYS_LIST
names of the filter attributes used by exclude/include that are exposed to the CLI interface


FILTER_KEYSET

public static final java.util.Collection<java.lang.String> FILTER_KEYSET
Collection of names of attributes used by exclude/include that are exposed to the CLI interface

Constructor Detail

NodeSet

public NodeSet()
default constructor


NodeSet

public NodeSet(java.lang.String singleNodeName)
Create a nodeset with a single node name


NodeSet

public NodeSet(INodeEntry singleNode)
Create a nodeset for a single node

Method Detail

getSingleNodeName

public java.lang.String getSingleNodeName()

setSingleNodeName

public void setSingleNodeName(java.lang.String singleNodeName)

acceptNode

public boolean acceptNode(INodeEntry entry)
Specified by:
acceptNode in interface NodesSelector

nodeSelectorWithDefault

public NodesSelector nodeSelectorWithDefault(java.lang.String nodename)
Return a new Node Selector that will apply the include/exclude filters if they are set, otherwise it only includes the node with the given nodename


nodeSelectorWithDefaultAll

public NodesSelector nodeSelectorWithDefaultAll()
Return a new Node Selector that will apply the include/exclude filters if they are set, otherwise it will accept all nodes


isBlank

public boolean isBlank()
Return true if the include/exclude filters are blank or non-existent

Returns:
true if all filters are blank or empty

createInclude

public NodeSet.Include createInclude()

createExclude

public NodeSet.Exclude createExclude()

getInclude

public NodeSet.Include getInclude()

getExclude

public NodeSet.Exclude getExclude()

shouldExclude

public boolean shouldExclude(INodeEntry entry)
Return true if the node entry should be excluded based on the includes and excludes parameters. When both include and exclude patterns match the node, it will be excluded based on which filterset is dominant.

Parameters:
entry - node descriptor entry
Returns:
true if the node should be excluded.

getThreadCount

public int getThreadCount()

setThreadCount

public void setThreadCount(int threadCount)

isKeepgoing

public boolean isKeepgoing()

setKeepgoing

public void setKeepgoing(boolean keepgoing)

validate

public void validate()
Validate input. If failedNodesfile looks like an invalid property reference, set it to null.


matchesInput

protected static boolean matchesInput(java.lang.String inputSelector,
                                      java.lang.String propValue)
Return true if the input selector matches the specified property value

Parameters:
inputSelector -
propValue -
Returns:

matchesInput

protected static boolean matchesInput(java.util.Map<java.lang.String,java.lang.String> attrSelectors,
                                      java.util.Map<java.lang.String,java.lang.String> values,
                                      boolean matchAll)
Return true if any attribute selector matches the corresponding attribute value

Parameters:
inputSelector -
propValue -
matchAll - if true, require all selectors match a value, otherwise return true if any selector matches
Returns:

matchRegexOrEquals

public static boolean matchRegexOrEquals(java.lang.String inputSelector,
                                         java.lang.String item)
Tests whether the selector string matches the item, in three possible ways: first, if the selector looks like: "/.../" then it the outer '/' chars are removed and it is treated as a regular expression *only* and PatternSyntaxExceptions are not caught. Otherwise, it is treated as a regular expression and any PatternSyntaxExceptions are caught. If it does not match or if the pattern is invalid, it is tested for string equality with the input.

Parameters:
inputSelector - test string which may be a regular expression, or explicit regular expression string wrapped in '/' characters
item - item to test
Returns:
true if the item matches the selector

createExclude

public NodeSet.Exclude createExclude(java.util.Map excludeMap)
Creates an NodeSet.Exclude object populating its properties from the keys of the map

Parameters:
excludeMap - Map containing nodes.properties data
Returns:
new Exclude object configured for use in this NodeSet

createInclude

public NodeSet.Include createInclude(java.util.Map includeMap)
Creates an NodeSet.Include object populating its properties from the keys of the map

Parameters:
includeMap - Map containing nodes.properties data
Returns:
new Exclude object configured for use in this NodeSet

populateSetSelector

public NodeSet.SetSelector populateSetSelector(java.util.Map map,
                                               NodeSet.SetSelector setselector)
Creates an NodeSet.SetSelector object populating its properties from the keys of the map

Parameters:
map - Map containing nodes.properties data
setselector - include or exclude object
Returns:
new SetSelector object configured for use in this NodeSet

equals

public boolean equals(java.lang.Object o)
Overrides:
equals in class java.lang.Object

hashCode

public int hashCode()
Overrides:
hashCode in class java.lang.Object

toString

public java.lang.String toString()
Overrides:
toString in class java.lang.Object

getFailedNodesfile

public java.io.File getFailedNodesfile()

setFailedNodesfile

public void setFailedNodesfile(java.io.File failedNodesfile)