def post(self, request, format=None): serializer = AccountSerializer(data=request.data) if serializer.is_valid(): try: if Account.objects.filter(productType=request.data['productType'], instanceId=request.data['instanceId']): print (" [ERROR] There is an entry already with that InstanceId (%s) for the same ProductType (%s)" % (request.data['instanceId'], request.data['productType'])) return Response(status=status.HTTP_400_BAD_REQUEST) serializer.save() #prepares and sends the message to the queue message = {} message['instanceId'] = request.data['instanceId'] message['event'] = request.data['status'] #send_msg(str(message)) send_msg(json.dumps(serializer.data)) #create the SLA agreements in the SLA module based on the already created templates templateId = request.data['productType']+request.data['productId']+request.data['flavour'] createAgreement(templateId, request.data['clientId'], request.data['agreementId']) #start the Agreement enforcement f = restclient.Factory(settings.SLA_URL) a_enforcement = f.enforcements() a_enforcement.start(request.data['agreementId']) except ReferenceError: print " [ERROR] Could not update the messages queue" return Response(status=status.HTTP_408_REQUEST_TIMEOUT) except Exception as e: print "DEBUG: ", e return Response(status=status.HTTP_400_BAD_REQUEST) return Response(serializer.data, status=status.HTTP_201_CREATED) return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
def user_list(request, pk=None): """ List all required messages, or create a new message. """ if request.method == 'GET': if pk: # If PrimaryKey (id) of the user is specified in the url users = Account.objects.filter( id=pk) # Select only that particular user else: users = Account.objects.all() # Else get all user list serializer = AccountSerializer(users, many=True, context={'request': request}) return JsonResponse(serializer.data, safe=False) # Return serialized data elif request.method == 'POST': data = JSONParser().parse( request ) # On POST, parse the request object to obtain the data in json serializer = AccountSerializer(data=data) # Seraialize the data if serializer.is_valid(): serializer.save() # Save it if valid return JsonResponse(serializer.data, status=201) # Return back the data on success return JsonResponse(serializer.errors, status=400) # Return back the errors if not valid
def get(self, request, vnf_instance, new_status, format=None): queryset = Account.objects.filter(productType=settings.VNF, instanceId=vnf_instance) if queryset.exists(): jsonStatus = '{"status":"' + new_status + '"}' for account in queryset: serializer = AccountSerializer(account, data=json.loads(jsonStatus)) try: if serializer.is_valid(): #saves the new status serializer.save() print "status changed " #prepares and sends the message to the queue message = {} message['instanceId'] = vnf_instance message['event'] = new_status #send_msg(json.dumps(serializer.data)) return Response(serializer.data, status=status.HTTP_201_CREATED) except ReferenceError: print " [ERROR] Could not update the messages queue" return Response(status=status.HTTP_408_REQUEST_TIMEOUT) except Exception: return Response(status=status.HTTP_400_BAD_REQUEST) return Response(queryset, status=status.HTTP_404_NOT_FOUND)
def put(self, request, pk, format=None): account = self.get_object(pk) serializer = AccountSerializer(account, data=request.data) print "request: ", request.data if serializer.is_valid(): serializer.save() return Response(serializer.data) return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
def post(self, request): if request.user.is_authenticated: serializer = AccountSerializer(data=request.data) if serializer.is_valid(): serializer.save(owner=request.user) return JsonResponse(serializer.data, status=status.HTTP_201_CREATED) return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) return Response(status=status.HTTP_401_UNAUTHORIZED)
def post(self, request, ns_instance, new_status, format=None): """ --- response_serializer: AccountSerializer """ queryset = Account.objects.filter(productType=settings.NETWORK_SERVICE, instanceId=ns_instance) if queryset.exists(): jsonStatus='{"status":"' + new_status + '"}' service = queryset[0] serializer = AccountSerializer(service, data=json.loads(jsonStatus)) try: if serializer.is_valid(): #saves the new status serializer.save() print "status changed " #start/stop the SLA enforcement accordingly if (new_status == settings.STATUS_RUNNING): self.startEnforcement(service.agreementId) if (new_status == settings.STATUS_STOPPED): self.stopEnforcement(service.agreementId) #prepares and sends the message to the queue message = {} message['instanceId'] = ns_instance message['event'] = new_status #print (json.dumps(serializer.data)) send_msg(json.dumps(serializer.data)) #update the status of the participant VNFs vnf_list = service.relatives.replace(" ", "").split(",") print "VNF list: ", vnf_list for vnfInstance in vnf_list: time.sleep(1) print "VNF: ", vnfInstance vnfquery = Account.objects.filter(productType=settings.VNF, instanceId=vnfInstance) vnf = vnfquery[0] vnfserializer = AccountSerializer(vnf, many=False, data=json.loads(jsonStatus)) if vnfserializer.is_valid(): #print "VNF2: ", json.dumps(vnfserializer.data) vnfserializer.save() #start/stop the SLA enforcement accordingly if (new_status == settings.STATUS_RUNNING): self.startEnforcement(vnf.agreementId) if (new_status == settings.STATUS_STOPPED): self.stopEnforcement(vnf.agreementId) return Response(serializer.data, status=status.HTTP_201_CREATED) except ReferenceError: print " [ERROR] Could not update the messages queue" return Response(status=status.HTTP_408_REQUEST_TIMEOUT) except Exception as e: print " [ERROR] ", e return Response(status=status.HTTP_400_BAD_REQUEST) return Response(queryset, status=status.HTTP_404_NOT_FOUND)
def post(self, request): data = request.data.copy() data['password'] = gen_password(len_to=10) serializer = AccountSerializer(data=data) if serializer.is_valid(): serializer.save() threading.Thread(target=self._send_credentials, kwargs=data).start() return Response({'detail': 'account has been created'}, status=status.HTTP_201_CREATED) else: return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
def post(request): account = Account.get_by_pk(request.user.username) if account is None: return Response({'detail': 'account is not found'}, status=status.HTTP_404_NOT_FOUND) serializer = AccountSerializer(instance=account, data=request.data) if serializer.is_valid(): serializer.save() return Response({'detail': 'account has been edited'}, status=status.HTTP_201_CREATED) else: return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
def post(request): email = request.data.get('email') if email is None: return Response({'detail': 'email was not provided'}, status=status.HTTP_400_BAD_REQUEST) account = Account.objects.filter(email=email).first() if account is None: return Response({'detail': 'account is not found'}, status=status.HTTP_404_NOT_FOUND) if 'confirmation_code' not in request.data: return Response({'detail': 'missing verification code'}, status=status.HTTP_400_BAD_REQUEST) session = SessionStore(session_key=account.session_key) if request.data.get('confirmation_code', '-1') == session['v_code']: new_password = request.data.get('new_password', None) new_password_confirm = request.data.get('new_password_confirm', None) if new_password is None or new_password_confirm is None: return Response( {'detail': 'missing new password or its confirmation'}, status=status.HTTP_400_BAD_REQUEST) if new_password != new_password_confirm: return Response({'detail': 'password confirmation failed'}, status=status.HTTP_400_BAD_REQUEST) data = request.data.copy() data['username'] = account.username data['password'] = new_password serializer = AccountSerializer(instance=account, data=data) if serializer.is_valid(): serializer.save() session.delete() account.session_key = None account.save() try: request.user.auth_token.delete() except (AttributeError, ObjectDoesNotExist): pass logout(request) return Response({'detail': 'password has been changed'}, status=status.HTTP_201_CREATED) else: return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) else: return Response({'detail': 'verification code is incorrect'}, status=status.HTTP_400_BAD_REQUEST)
def stopVNF(self, vnfInstance, jsonStatus, new_status): vnfquery = Account.objects.filter(productType=settings.VNF, instanceId=vnfInstance) vnf = vnfquery[0] vnfSerializer = AccountSerializer(vnf, many=False, data=json.loads(jsonStatus)) if vnfSerializer.is_valid(): #print "VNF2: ", json.dumps(vnfserializer.data) vnfSerializer.save() #Send the message to the billing module send_msg(json.dumps(vnfSerializer.data)) #start/stop the SLA enforcement accordingly if (new_status == settings.STATUS_RUNNING): self.startEnforcement(vnf.agreementId) if (new_status == settings.STATUS_STOPPED): self.stopEnforcement(vnf.agreementId)
def account_list(request): if request.method == 'GET': account = Account.objects.all() account_serializer = AccountSerializer(account, many=True) return JSONResponse(account_serializer.data) elif request.method == 'POST': account_data = JSONParser().parse(request) account_serializer = AccountSerializer(data=account_data) if account_serializer.is_valid(): account_serializer.save() return JSONResponse(account_serializer.data, status=status.HTTP_201_CREATED) return JSONResponse(account_serializer.errors, status=status.HTTP_400_BAD_REQUEST)
def post(self, request, format=None): serializer = AccountSerializer(data=request.data) if serializer.is_valid(): try: if Account.objects.filter( productType=request.data['productType'], instanceId=request.data['instanceId']): print( " [ERROR] There is an entry already with that InstanceId (%s) for the same ProductType (%s)" % (request.data['instanceId'], request.data['productType'])) return Response(status=status.HTTP_400_BAD_REQUEST) serializer.save() #create the SLA agreements in the SLA module based on the already created templates #templateId = request.data['productType']+request.data['productId']+request.data['flavour'] templateId = request.data[ 'productType'] + "@" + settings.DOMAIN_ID + "*" + request.data[ 'productId'] + request.data['flavour'] createAgreement(templateId, request.data['clientId'], request.data['agreementId']) #start the Agreement enforcement f = restclient.Factory(settings.SLA_URL) a_enforcement = f.enforcements() a_enforcement.start(request.data['agreementId']) #triggers IMoS monitoring sending the NS instance ID if (request.data['agreementId'].startswith('ns')): print(" [INFO] Contacting IMoS with url: %s" % (settings.IMOS_URL + request.data['instanceId'])) requests.put(str(settings.IMOS_URL) + str(request.data['instanceId']), data=None) #Virtual Links agreements: except Exception as e: print "DEBUG: ", e return Response(status=status.HTTP_400_BAD_REQUEST) return Response(serializer.data, status=status.HTTP_201_CREATED) return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
def account_detail(request, pk): try: account = Account.objects.get(pk=pk) except Account.DoesNotExist: return HttpResponse(status=status.HTTP_400_BAD_REQUEST) if request.method == 'GET': account_serializer = AccountSerializer(account) return JSONResponse(account_serializer.data) elif request.method == 'PUT': account_data = JSONParser().parse(request) account_serializer = AccountSerializer(account, data=account_data) if account_serializer.is_valid(): account_serializer.save() return JSONResponse(account_serializer.data) return JSONResponse(account_serializer.errors, status=status.HTTP_400_BAD_REQUEST) elif request.method == 'DELETE': account.delete() return HttpResponse(status=status.HTTP_204_NO_CONTENT)
def get(self, request, vnf_instance, new_status, format=None): queryset = Account.objects.filter(productType=settings.VNF, instanceId=vnf_instance) if queryset.exists(): jsonStatus='{"status":"' + new_status + '"}' for account in queryset: serializer = AccountSerializer(account, data=json.loads(jsonStatus)) try: if serializer.is_valid(): #saves the new status serializer.save() print "status changed " #prepares and sends the message to the queue message = {} message['instanceId'] = vnf_instance message['event'] = new_status #send_msg(str(message)) send_msg(json.dumps(serializer.data)) return Response(serializer.data, status=status.HTTP_201_CREATED) except ReferenceError: print " [ERROR] Could not update the messages queue" return Response(status=status.HTTP_408_REQUEST_TIMEOUT) except Exception: return Response(status=status.HTTP_400_BAD_REQUEST) return Response(queryset, status=status.HTTP_404_NOT_FOUND)
def registration_admin_view(request): if request.method == 'POST': data = {} email = request.data.get('email', '0').lower() if validate_email(email) != None: data['error_message'] = 'That email is already in use.' data['response'] = 'Error' return Response(data) serializer = AccountSerializer(data=request.data) if serializer.is_valid(): account = serializer.save() data['response'] = 'successfully registered new user.' data['email'] = account.email data['pk'] = account.pk token = Token.objects.get(user=account).key data['token'] = token else: data = serializer.errors return Response(data)