def userdata(request): """Provide file download of user-data to re-start an instance. """ ec2data = request.session["ec2data"] response = HttpResponse(mimetype='text/plain') response['Content-Disposition'] = 'attachment; filename={cluster_name}-userdata.txt'.format( **ec2data) form = request.session["ec2data"] cml = CloudManLaunch(form["access_key"], form["secret_key"], form['cloud']) ud = cml._compose_user_data(ec2data) response.write(ud) return response
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))
def _get_placement_inner(request): if request.is_ajax(): if request.method == 'POST': cloud_id = request.POST.get('cloud_id', '') a_key = request.POST.get('a_key', '') s_key = request.POST.get('s_key', '') inst_type = request.POST.get('instance_type', '') placements = [] if cloud_id != '' and a_key != '' and s_key != '': # Needed to get the cloud connection cloud = models.Cloud.objects.get(pk=cloud_id) #log.debug("Getting placement for {0} on {1} cloud"\ #.format(inst_type, cloud.name)) cml = CloudManLaunch(a_key, s_key, cloud) placements = cml._find_placements(cml.ec2_conn, inst_type, cloud.cloud_type) return {'placements': placements} else: log.error("Not a POST request") else: log.error("No XHR") return {"error": "Please specify access and secret keys", "placements": []}
def instancestate(request): form = request.session["ec2data"] cml = CloudManLaunch(form["access_key"], form["secret_key"], form['cloud']) state = cml.get_status(form["instance_id"]) return HttpResponse(simplejson.dumps(state), mimetype="application/json")