Searching the Help
To search for information in the Help, type a word or phrase in the Search box. When you enter a group of words, OR is inferred. You can use Boolean operators to refine your search.
Results returned are case insensitive. However, results ranking takes case into account and assigns higher scores to case matches. Therefore, a search for "cats" followed by a search for "Cats" would return the same number of Help topics, but the order in which the topics are listed would be different.
Search for | Example | Results |
---|---|---|
A single word | cat
|
Topics that contain the word "cat". You will also find its grammatical variations, such as "cats". |
A phrase. You can specify that the search results contain a specific phrase. |
"cat food" (quotation marks) |
Topics that contain the literal phrase "cat food" and all its grammatical variations. Without the quotation marks, the query is equivalent to specifying an OR operator, which finds topics with one of the individual words instead of the phrase. |
Search for | Operator | Example |
---|---|---|
Two or more words in the same topic |
|
|
Either word in a topic |
|
|
Topics that do not contain a specific word or phrase |
|
|
Topics that contain one string and do not contain another | ^ (caret) |
cat ^ mouse
|
A combination of search types | ( ) parentheses |
|
Pytwist examples
The Python code examples in this section show how to get information from managed servers, create folders, and remediate software policies. Each Pytwist example performs the following operations:
- Import the packages.
When importing objects of the SA API name space, such asFilter
, the path includes the Java package name, preceded bypytwist
. Here are theimport
statements for theget_server_info.py
example:import sys
from pytwist import *
from pytwist.com.opsware.search import Filter - Create the
TwistServer
object:ts = twistserver.TwistServer()
See TwistServer method syntax for information about the method’s arguments. - Get a reference to the service.
The Python package name of the service is the same as the Java package name, but without the leadingopsware.com
. For example, the Javacom.opsware.server.ServerService
package maps to the Pytwistserver.ServerService
:
serverservice = ts.server.ServerService - Invoke the SA API methods of the service:
filter = Filter()
. . .
servers = serverservice.findServerRefs(filter)
. . .
for server in servers: vo = serverservice.getServerVO(server)
. . .
get_server_info.py
This script searches for all managed servers with host names containing the command-line argument. The search method, findServerRefs
, returns an array of references to server persistent objects. For each reference, the getServerVO
method returns the value object (VO), which is the data representation that holds the server’s attributes. Here is the code for the get_server_info.py
script:
#!/opt/opsware/agent/bin/python # get_server_info.py # Search for servers by partial hostname. import sys from pytwist import * from pytwist.com.opsware.search import Filter # Check for the command-line argument. if len(sys.argv) < 2: print "You must specify part of the hostname as the search target." print "Example: " + sys.argv[0] + " " + "opsware.com" sys.exit(2)
# Construct a search filter. filter = Filter() filter.expression = 'device_hostname *=* "%s" ' % (sys.argv[1]) # Create a TwistServer object. ts = twistserver.TwistServer() # Get a reference to ServerService. serverservice = ts.server.ServerService # Perform the search, returning a tuple of references. servers = serverservice.findServerRefs(filter) if len(servers) < 1: print "No matching servers found" sys.exit(3) # For each server found, get the server’s value object (VO) # and print some of the VO’s attributes. for server in servers: vo = serverservice.getServerVO(server) print "Name: " + vo.name print "Management IP: " + vo.managementIP print "OS Version: " + vo.osVersion
create_folder.py
This script creates a folder named /TestA/TestB
by invoking the createPath
method. Note that the path
parameter of createPath
does not contain slashes. Each string element in path
indicates a level in the folder. Next, the script retrieves and prints the names of all folders directly below the root folder. The listing for the create_folder.py
script follows:
#!/opt/opsware/agent/bin/python # create_folder.py # Create a folder in SA. import sys from pytwist import * # Create a TwistServer object. ts = twistserver.TwistServer() # Get a reference to FolderService. folderservice = ts.folder.FolderService # Get a reference to the root folder. rootfolder = folderservice.getRoot() # Construct the path of the new folder. path = 'TestA', 'TestB' # Create the folder /TestA/TestB relative to the root. folderservice.createPath(rootfolder, path) # Get the child folders of the root folder. rootchildren = folderservice.getChildren(rootfolder, 'com.opsware.folder.FolderRef') # Print the names of the child folders. for child in rootchildren: vo = folderservice.getFolderVO(child) print vo.name
remediate_policy.py
This script creates a software policy, attaches it to a server, and then remediates the policy. Several names are hard-coded in the script: the platform, server, and parent folder. Optionally, you can specify the policy name on the command-line, which is convenient if you run the script multiple times. The platform of the software policy must match the OS of the packages contained in the policy. Therefore, if you change the hard-coded platform name, then you also change the name in unitfilter.expression
.
The following listing has several bad line breaks. If you copy this code, be sure to fix the bad line breaks before running it. The comment lines beginning with "NOTE" point out the bad line breaks.
#!/opt/opsware/agent/bin/python # remediate_policy.py # Create, attach, and remediate a software policy. import sys from pytwist import * from pytwist.com.opsware.search import Filter from pytwist.com.opsware.swmgmt import SoftwarePolicyVO # Initialize the names used by this script. foldername = 'TestB' platformname = 'Windows 2003' servername = 'd04.example.com' # If a command-line argument is specified, # use it as the policy name if len(sys.argv) == 2: policyname = sys.argv[1] else: policyname = 'TestPolicyA' # Create a TwistServer object. ts = twistserver.TwistServer() ts.authenticate("SAUser", "SAPassword") # Get the references to the services used by this script. folderservice = ts.folder.FolderService swpolicyservice = ts.swmgmt.SoftwarePolicyService serverservice = ts.server.ServerService unitservice = ts.pkg.UnitService platformservice = ts.device.PlatformService # Search for the folder that will contain the policy. folderfilter = Filter() folderfilter.expression = 'FolderVO.name = %s' % foldername folderrefs = folderservice.findFolderRefs(folderfilter) if len(folderrefs) == 1: parent = folderrefs[0] elif len(folderrefs) < 1: print "No matching folders found." sys.exit(2) else: print "Non-unique folder name: " + foldername sys.exit(3) # Search for the reference to the platform "Windows Server 2003." platformfilter = Filter() platformfilter.objectType = 'platform' # Because the platform name contains spaces, # it’s enclosed in double quotes # NOTE: The following code line has a bad line break. # The assignment statement should be on a single line. platformfilter.expression = 'platform_name = "%s"' % platformname platformrefs = platformservice.findPlatformRefs(platformfilter) if len(platformrefs) == 0: print "No matching platforms found." sys.exit(4) # Search for the references to some software packages. unitfilter = Filter() unitfilter.objectType = 'software_unit' # NOTE: The following code line has a bad line break. # The assignment statement should be on a single line. unitfilter.expression = '((UnitVO.unitType = "MSI") & ( UnitVO.name contains "ismtool" ) & ( software_platform_name = "Windows 2003" ))' unitrefs = unitservice.findUnitRefs(unitfilter) # Create a value object for the new software policy. vo = SoftwarePolicyVO() vo.name = policyname vo.folder = parent vo.platforms = platformrefs vo.softwarePolicyItems = unitrefs # Create the software policy. swpolicyvo = swpolicyservice.create(vo) # Search by hostname for the reference to a managed server. serverfilter = Filter() serverfilter.objectType = 'server' # NOTE: The following code line has a bad line break. # The assignment statement should be on a single line. serverfilter.expression = 'ServerVO.hostname = %s' % servername serverrefs = serverservice.findServerRefs(serverfilter) if len(serverrefs) == 0: print "No matching servers found." sys.exit(5) # Create an array that has a reference to the # newly created policy. swpolicyrefs = [1] swpolicyrefs[0] = swpolicyvo.ref # Attach the software policy to the server. swpolicyservice.attachToPolicies(swpolicyrefs, serverrefs) # Remediate the policy and the server. # NOTE: The following code line has a bad line break. # The assignment statement should be on a single line. jobref = swpolicyservice.startRemediateNow(swpolicyrefs, serverrefs) print "The remediation job ID is %d" % jobref.id
We welcome your comments!
To open the configured email client on this computer, open an email window.
Otherwise, copy the information below to a web mail client, and send this email to hpe_sa_docs@hpe.com.
Help Topic ID:
Product:
Topic Title:
Feedback: