def instance_resource(request, domain_id, instance_id): if request.method == "GET": username = request.user.username response = get_domain_instances(username, domain_id) if response is None: return HttpResponseNotFound('domain %s not found' % domain_id, mimetype='application/javascript') wanted_instance = None for instance in response: if instance.get('id') == instance_id: wanted_instance = instance break if wanted_instance is None: return HttpResponseNotFound('instance %s not found' % instance_id, mimetype='application/javascript') wanted_instance['owner'] = username wanted_instance['cloud'] = "/api/%s/sites/%s" % (API_VERSION, wanted_instance.get('cloud')) wanted_instance['uri'] = "/api/%s/domains/%s/instances/%s" % ( API_VERSION, domain_id, wanted_instance.get('id')) return HttpResponse(json.dumps(wanted_instance), mimetype='application/javascript') elif request.method == "DELETE": username = request.user.username adjust_policy = str_to_bool(request.GET.get('adjust_policy', 'false')) instance = get_domain_instance(username, domain_id, instance_id) if instance is None: return HttpResponseNotFound('instance %s not found' % domain_id, mimetype='application/javascript') try: terminate_domain_instance(username, domain_id, instance_id) except PhantomWebException: return HttpResponseServerError("Couldn't remove instance %s" % instance_id) if adjust_policy: domain = get_domain(username, domain_id) adjusted_domain = None if 'vm_count' in domain: if int(domain['vm_count']) >= 1: domain['vm_count'] = int(domain['vm_count']) - 1 adjusted_domain = domain elif 'sensor_minimum_vms' in domain and 'sensor_maximum_vms' in domain: if int(domain['sensor_minimum_vms']) >= 1: domain['sensor_minimum_vms'] = int(domain['sensor_minimum_vms']) - 1 domain['sensor_maximum_vms'] = domain['sensor_minimum_vms'] adjusted_domain = domain if adjusted_domain: response = modify_domain(username, domain_id, adjusted_domain) h = HttpResponse(status=204) return h
def instances(request, domain_id): if request.method == "GET": username = request.user.username response = get_domain_instances(username, domain_id) if response is None: return HttpResponseNotFound('domain %s not found' % domain_id, mimetype='application/javascript') for instance in response: instance['owner'] = username instance['cloud'] = "/api/%s/sites/%s" % (API_VERSION, instance.get('cloud')) instance['uri'] = "/api/%s/domains/%s/instances/%s" % ( API_VERSION, domain_id, instance.get('id')) return HttpResponse(json.dumps(response), mimetype='application/javascript')