def main(self): _assoc_result = False _ping_result = False _release_result = False _disassoc_result = False keyname = self.get_new_key_pair() instance = self.setup_pingable_instance(keyname) self.log("Launching instance") if instance: time.sleep(5) self.log("Attempt to setup floating IPs for instance %s" % instance) try: addr = self.allocate_address() self.log("Allocated ip %s " % addr.public_ip) if addr.public_ip: self.log("Associate ip %s to instance %s" % (addr.public_ip, instance)) if self.associate_address(instance, addr.public_ip): _assoc_result = True time.sleep(10) # try and ping after some period of time instance.update() self.log("Ping instance at %s" % addr.public_ip) if checkpingaddr(addr.public_ip): _ping_result = True time.sleep(1) self.log("Terminate instance") self.terminate(instance) time.sleep(30) # hack for now, make it poll eventually self.log("Check if public IP is disassociated") addrs = self.get_all_addresses() for x in addrs: if x.public_ip == addr.public_ip: if 'None' in str(x.instance_id): _disassoc_result = True self.log("Release address: %s " % addr.public_ip) self.release_address(addr.public_ip) time.sleep(1) self.log("Get all addresses and make sure its released") addrs = self.get_all_addresses() if not addr.public_ip in [x.public_ip for x in addrs]: _release_result = True except Exception, e: print e.message self.delete_key_pair(keyname)
def main(self): _assoc_result = False _ping_result = False _release_result = False _disassoc_result = False keyname = self.get_new_key_pair() instance = self.setup_pingable_instance(keyname) self.log("Launching instance") if instance: time.sleep(5) self.log("Attempt to setup floating IPs for instance %s" % instance) try: addr = self.allocate_address() self.log("Allocated ip %s " % addr.public_ip) if addr.public_ip: self.log("Associate ip %s to instance %s" % (addr.public_ip, instance)) if self.associate_address(instance, addr.public_ip): _assoc_result = True time.sleep(5) # try and ping after some period of time instance.update() self.log("Ping instance at %s" % addr.public_ip) if checkpingaddr(addr.public_ip): _ping_result = True # disassociate address self.log("Disassociate address: %s " % addr.public_ip) self.disassociate_address(addr.public_ip) time.sleep(1) self.log("Release address: %s " % addr.public_ip) self.release_address(addr.public_ip) time.sleep(1) self.log("Get all addresses and make sure dissociated and released") addrs = self.get_all_addresses() if not addr.public_ip in [x.public_ip for x in addrs]: _release_result = True if len([x.instance_id for x in addrs if x.public_ip == addr.public_ip]) == 0: _disassoc_result = True except Exception, e: print e.message self.terminate(instance) self.delete_key_pair(keyname)