コード例 #1
0
ファイル: views.py プロジェクト: afgane/imogen
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
コード例 #2
0
ファイル: views.py プロジェクト: afgane/imogen
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))
コード例 #3
0
ファイル: views.py プロジェクト: afgane/imogen
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": []}
コード例 #4
0
ファイル: views.py プロジェクト: afgane/imogen
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")