Exemple #1
0
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)
Exemple #2
0
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)
Exemple #3
0
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})