def service_list(request): """ Lists all the services , or create a new services """ if request.method == 'GET': services = Service.objects.all() serializer = ServiceSerializer(services, many=True) return Response(serializer.data) elif request.method == 'POST': serializer = ServiceSerializer(data=request.DATA) if serializer.is_valid(): serializer.save() return Response(serializer.data, status=status.HTTP_201_CREATED) return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
def service_detail(request, pk): """ Retrieve, update or delete service """ try: service = Service.objects.get(pk=pk) except Service.DoesNotExist: return Response(status=status.HTTP_404_NOT_FOUND) if request.method == 'GET': serializer = ServiceSerializer(service) return Response(serializer.data) elif request.method == 'PUT': serializer = ServiceSerializer(service, data=request.DATA) if serializer.is_valid(): serializer.save() return Response(serializer.data) return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) elif request.method == 'DELETE': service.delete() return Response(status=status.HTTP_204_NO_CONTENT)
def create_service(request, **kwargs): service_name = request.POST.get('service_name') instance_amount = request.POST.get('instance_amount') # ip= request.POST.get('ip') if not instance_amount: instance_amount = '1' image_name = request.POST.get('image_name') if not image_name: image_name = 'docker.weitac.com/centos7/haproxy:0.2' environment = request.POST.get('environment') if not environment: environment = None hostname = request.POST.get('hostname') if not hostname: environment = 'haproxy.weitac.com' command = request.POST.get('command') if not command: command = '/usr/sbin/init' volumes = request.POST.get('volumes') if not volumes: volumes = './conf:/etc/haproxy' if request.method == 'POST': logger.info('Create a service: {}'.format(service_name)) data = { 'service_name': service_name, 'instance_amount': instance_amount, 'image_name': image_name, 'details': 'dd' } # if isinstance(request.DATA, QueryDict): # data = {'service_name': service_name, # 'instance_amount': instance_amount, # 'image_name': 'ss', 'details': 'dd'} # # elif isinstance(request.DATA, dict): # data = request.DATA serializer = ServiceSerializer(data=data) if not serializer.is_valid(): # return Response(serializer.errors, # status=status.HTTP_400_BAD_REQUEST) return render_to_response('400.html') service = serializer.object service_name = data['service_name'] instance_amount = data['instance_amount'] if not Service.objects.filter(service_name=service_name).exists(): # serializer.save() db_info = dict() db_info['instance'] = [] instance = Instance_client() for i in range(int(instance_amount)): # instance_name = service_name + '_{}'.format(i+1) instance_id = i + 1 bl, result = instance.create_instance \ (service_name, instance_id, image_name, environment, hostname, command, volumes) if not bl: return render_to_response('500.html') if bl: instance.start_instance(result) db_info['instance'].append(bl) # return Response("success", # status=status.HTTP_200_OK) else: # return Response( # '{}'.format( # str(result)), # status=status.HTTP_400_BAD_REQUEST) render_to_response('400.html') Instance_client().add_host_info(db_info) db_info['service'] = service service_DBclient.save(db_info) return render_to_response('create_service.html', {'username': request.user.username}) else: logger.error('Service {} exits'.format(service_name)) # return Response( # 'Service {} exits. Do you want to add more instances? Please use update API'.format( # data['service_name']), # status=status.HTTP_400_BAD_REQUEST) return render_to_response('400.html') else: return render_to_response('create_service.html', {'username': request.user.username})