/*
* Licensed Materials - Property of IBM Corp.
* IBM UrbanCode Build
* IBM UrbanCode Deploy
* IBM UrbanCode Release
* IBM AnthillPro
* (c) Copyright IBM Corporation 2002, 2013. All Rights Reserved.
*
* U.S. Government Users Restricted Rights - Use, duplication or disclosure restricted by
* GSA ADP Schedule Contract with IBM Corp.
*/

import com.urbancode.air.AirPluginTool
import com.urbancode.air.plugin.f5.F5PoolMember

final def apTool = new AirPluginTool(this.args[0], this.args[1])
final def props = apTool.getStepProperties()
final def doWait = Boolean.valueOf(props['doWaitForConnectionClose'])
final def sleepInterval = (props['sleepInterval'])?Long.valueOf(props['sleepInterval']):5

try {
    F5PoolMember poolMember = new F5PoolMember(props)
    poolMember.disablePoolMember()
    if (doWait) {
        def currentConnections = poolMember.getPoolMemberActiveConnections()
        while(currentConnections > 0) {
            println("Waiting for $currentConnections to close, sleep for $sleepInterval second(s)")
            sleep(sleepInterval * 1000, {println("Waiting aborted!"); return true})
            currentConnections = poolMember.getPoolMemberActiveConnections()
        }
        println("All connections closed, done waiting.")
    }
}
catch (Exception e) {
    e.printStackTrace()
    System.exit(1)
}
