Ejemplo n.º 1
0
def runinstance(request):
    """Run a CloudBioLinux/CloudMan instance with current session credentials.
    """
    form = request.session["ec2data"]
    rs = None
    instance_type = form['instance_type']
    # Create EC2 connection with provided creds
    ec2_conn = connect_ec2(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
    rs = run_instance(
        ec2_conn=ec2_conn,
        user_provided_data=form,
        image_id=image.image_id,
        kernel_id=image.kernel_id if image.kernel_id != '' else None,
        ramdisk_id=image.ramdisk_id if image.ramdisk_id != '' else None,
        key_name=form["kp_name"],
        security_groups=[form["sg_name"]],
        placement=form['placement'])
    if rs is not None:
        request.session['ec2data']['instance_id'] = rs.instances[0].id
        request.session['ec2data']['public_dns'] = rs.instances[
            0].public_dns_name
        request.session['ec2data']['image_id'] = rs.instances[0].image_id
        # 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))
        return True
def runinstance(request):
    """Run a CloudBioLinux/CloudMan instance with current session credentials.
    """
    form = request.session["ec2data"]
    rs = None
    instance_type = form['instance_type']
    # Create EC2 connection with provided creds
    ec2_conn = connect_ec2(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
    rs = run_instance(ec2_conn=ec2_conn,
                      user_provided_data=form,
                      image_id=image.image_id,
                      kernel_id=image.kernel_id if image.kernel_id != '' else None,
                      ramdisk_id=image.ramdisk_id if image.ramdisk_id != '' else None,
                      key_name=form["kp_name"],
                      security_groups=[form["sg_name"]],
                      placement=form['placement'])
    if rs is not None:
        request.session['ec2data']['instance_id'] = rs.instances[0].id
        request.session['ec2data']['public_dns'] = rs.instances[0].public_dns_name
        request.session['ec2data']['image_id'] = rs.instances[0].image_id
        # 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))
        return True
        request.session["ec2data"] = params
        if params['image_id']:
            image = models.Image.objects.get(pk=params['image_id'])
        else:
            try:
                image = models.Image.objects.get(cloud=params['cloud'], default=True)
            except models.Image.DoesNotExist:
                log.error("Cannot find an image to launch for cloud {0}".format(params['cloud']))
                result = HttpResponse(simplejson.dumps("ERROR"))
                return result

        ec2_conn = connect_ec2(params["access_key"], params["secret_key"], cloud)
        rs = run_instance(ec2_conn=ec2_conn,
                      user_provided_data=params,
                      image_id=image.image_id,
                      kernel_id=image.kernel_id if image.kernel_id != '' else None,
                      ramdisk_id=image.ramdisk_id if image.ramdisk_id != '' else None,
                      key_name=params["kp_name"],
                      security_groups=[params["sg_name"]])#,
                      #placement=params['placement'])
        ## TODO: Save usage file?
        instance_id = rs.instances[0].id
        public_dns = rs.instances[0].public_dns_name
        image_id = rs.instances[0].image_id
        result_dict = {
                "instance_id": instance_id,
                "public_dns": public_dns,
                "image_id": image_id,
                }
    else:
        result_dict = {"error": ec2_error}