Welcome!

XebiaLabs | Continuous Delivery and Agile DevOps Tools

XebiaLabs Blog

Subscribe to XebiaLabs Blog: eMailAlertsEmail Alerts
Get XebiaLabs Blog via: homepageHomepage mobileMobile rssRSS facebookFacebook twitterTwitter linkedinLinkedIn


Related Topics: JBoss Enterprise Middleware, MySQL Journal

Blog Feed Post

How To Use The CLI And API To Find All Applications Deployed To All Environments In A Specific Folder

There are many possibilities for scripting with XL-Deploy.  XL-Deploy keeps a lot of information about the applications deployed in your environments.  With the CLI scripting tool that comes with XL-Deploy we can get access to this data, write custom reports, automate deployments and a host of other tasks.  As an example of some of the things that can be done to collect information out of XL-Deploy lets look at finding all of the applications deployed under an Environments folder.

Environments_Folders

XL-Deploy organizes environments in folders.  There can be many folders to organize an environment.  For each environment defined there can be several applications deployed.  XL-Deploy keeps track of all of the applications deployed to each environment.  We can create a script that can search through all of the environments to find all of the applications that match a given criteria.  Since this will be a CLI tool we can define some command line options to control the script.  For this script I will be defining the command line options as follows:

Find a Deployed Application in a Folder.  Command line options are as follows:
  --verbose -v  Debug mode
  --folder -f   The folders to look in.  The 'Environments/' will be added
  --app -a      A pattern to search for in the application name

To implement the switching we can use the GNU getopt library.  I my script I have done this as follows:

try:
   optList, argList = getopt.getopt(sys.argv[1:], 'vf:a:', ['verbose', 'folder=', 'app='])
except getopt.GetoptError, err:
   help()
   sys.exit(2)
#End try

After the script collects the command line options.  We can search the XL-Deploy repository for applications that match our requirements for folders and application names as follows:

depApp = repository.search("udm.DeployedApplication")

for app in depApp:
   if re.match( folder, app ) :
      if re.search( appName, app ) :
         theApp = repository.read(app)
         name = re.sub("^.*/", "", app)
         version = re.sub("^.*/", "", theApp.version)
         print "------------------------------------------"
         print "Application = " + name
         print "Version     = " + version
         print "Environment = " + theApp.environment
         print "Deployeds:"
         for deployed in theApp.deployeds :
            print "   * " + deployed
         # End for
         print "------------------------------------------"
         print " "
      # End if
   # End if
# End for

The output of the final script is as follows:

$cli.sh -q -f `pwd`/script.py -- --verbose --folder=Dev/TEST

 

------------------------------------------
Application = PetClinic-ear
Version     = 1.0
Environment = Environments/Dev/TEST
Deployeds:
* Infrastructure/Dev/Appserver-1/JBoss/PetClinic
------------------------------------------

------------------------------------------
Application = PetPortal
Version     = 2.0
Environment = Environments/Dev/TEST
Deployeds:
* Infrastructure/Dev/Webserver-1/Apache/PetPortal-to-PetClinic-ProxyPass
* Infrastructure/Dev/Webserver-1/TestRunner/Check-PetPortal-to-PetClinic-ProxyPass-Test
* Infrastructure/Dev/Database-1/MySql/sql
* Infrastructure/Dev/Appserver-1/JBoss/PetClinic-ds-on-jboss
* Infrastructure/Dev/Webserver-1/TestRunner/Check-PetPortal-On-Webserver-Test
* Infrastructure/Dev/Webserver-1/Apache/webContent
* Infrastructure/Dev/Webserver-1/TestRunner/Check-PetClinic-On-Appserver-Test
* Infrastructure/Dev/Appserver-1/JBoss/PetClinic-ear
------------------------------------------

 

The source code is available on github.

 

The post How To Use The CLI And API To Find All Applications Deployed To All Environments In A Specific Folder appeared first on XebiaLabs.

Read the original blog entry...

More Stories By XebiaLabs Blog

XebiaLabs is the technology leader for automation software for DevOps and Continuous Delivery. It focuses on helping companies accelerate the delivery of new software in the most efficient manner. Its products are simple to use, quick to implement, and provide robust enterprise technology.