diff options
| author | Paul C. Buetow <paul@buetow.org> | 2014-04-13 15:12:25 +0200 |
|---|---|---|
| committer | Paul C. Buetow <paul@buetow.org> | 2014-04-13 15:12:25 +0200 |
| commit | 43b123bc07a2b0094ac1293a46ba33f6c7afa2cb (patch) | |
| tree | 1ecefaa642a4c090a9251a24f224fbc299a5ccaf | |
| parent | e6daf2b92a4e3a143503a0c6931a9849562f0246 (diff) | |
trying a list of loadbalancers and use the first one which has working iControl
| -rw-r--r-- | fapi.conf.sample | 3 | ||||
| -rwxr-xr-x | src/fapi.py | 32 |
2 files changed, 22 insertions, 13 deletions
diff --git a/fapi.conf.sample b/fapi.conf.sample index a265092..a43b982 100644 --- a/fapi.conf.sample +++ b/fapi.conf.sample @@ -1,5 +1,6 @@ [fapi] username: paul password64: SECRET -hostname: bigip.example.com +# Will try every box and will use the first one which works +hostnames: bigip.example.com,bigip2.example.com partition: Common diff --git a/src/fapi.py b/src/fapi.py index 9d2cdc9..c33da9d 100755 --- a/src/fapi.py +++ b/src/fapi.py @@ -45,18 +45,26 @@ class Fapi(object): prompt = 'Enter API password for user %s: ' % username password = getpass.getpass(prompt) self.info('Login to BigIP API with user %s' % username) - hostname = c.get('fapi', 'hostname') - - # Enhance to try to login to a list of hosts - try: - self._f5 = bigsuds.BIGIP(hostname = hostname, - username = username, - password = password) - self._partition = c.get('fapi', 'partition') - self.info('Setting partition to \'%s\'' % self._partition) - self._f5.Management.Partition.set_active_partition(self._partition) - except Exception, e: - self.info(e) + self._partition = c.get('fapi', 'partition') + + # Try a comma separated lists of F5 boxes, use the first one + err = None + for hostname in c.get('fapi', 'hostnames').split(','): + try: + self.info('Trying to login to \'%s\'' % hostname) + self._f5 = bigsuds.BIGIP(hostname = hostname, + username = username, + password = password) + self._f5.Management.Partition.set_active_partition(self._partition) + self.info('Set partition to \'%s\'' % self._partition) + err = None + break + except Exception, e: + err = '%s:%s' % (hostname, e) + pass + + if err: + self.info(err) sys.exit(2) |
