def runinstance(request): """Run a CloudBioLinux/CloudMan instance with current session credentials. """ form = request.session["ec2data"] rs = None instance_type = form['instance_type'] # Create cloudman connection with provided creds cml = CloudManLaunch(form["access_key"], form["secret_key"], form['cloud']) form["freenxpass"] = form["password"] if form['image_id']: image = models.Image.objects.get(pk=form['image_id']) else: try: image = models.Image.objects.get(cloud=form['cloud'], default=True) except models.Image.DoesNotExist: log.error("Cannot find an image to launch for cloud {0}".format(form['cloud'])) return False response = cml.launch(cluster_name=form['cluster_name'], image_id=image.image_id, instance_type=instance_type, password=form["password"], kernel_id=image.kernel_id if image.kernel_id != '' else None, ramdisk_id=image.ramdisk_id if image.ramdisk_id != '' else None, placement=form['placement']) request.session['ec2data']['instance_id'] = response.get('instance_id', None) request.session['ec2data']['public_ip'] = response.get('instance_ip', None) request.session['ec2data']['image_id'] = image.image_id request.session['ec2data']['kp_name'] = response.get('kp_name', None) request.session['ec2data']['kp_material'] = response.get('kp_material', None) sg_name = response.get('sg_names', []) if len(sg_name) > 0: request.session['ec2data']['sg_name'] = sg_name[0] else: request.session['ec2data']['sg_name'] = 'N/A' # Add an entry to the Usage table try: u = models.Usage(cloud_name=form["cloud_name"], cloud_type=form["cloud_type"], image_id=image.image_id, instance_type=instance_type, user_id=form["access_key"]) u.save() except Exception, e: log.debug("Trouble saving Usage data: {0}".format(e))