def create(self, request): """ Creates a Management Center """ serializer = FullSerializer( MgmtCenter, instance=MgmtCenter(), data=request.DATA, allow_passwords=True) if serializer.is_valid(): mgmt_center = serializer.object duplicate = MgmtCenterList.get_by_ip(mgmt_center.ip) if duplicate is None: try: mgmt_center_client = Factory.get_mgmtcenter( mgmt_center=mgmt_center) is_mgmt_center = mgmt_center_client.test_connection() except Exception as ex: logger.debug('Management center testing: {0}'.format(ex)) raise NotAcceptable('The given information is invalid.') if not is_mgmt_center: raise NotAcceptable( 'The given information is not for a Management center.' ) mgmt_center.save() return Response( serializer.data, status=status.HTTP_201_CREATED) else: raise NotAcceptable( 'A Mangement Center with this ip already exists.') else: return Response( serializer.errors, status=status.HTTP_400_BAD_REQUEST)
def create(self, request): """ Creates a Management Center """ serializer = FullSerializer(MgmtCenter, instance=MgmtCenter(), data=request.DATA, allow_passwords=True) if serializer.is_valid(): mgmt_center = serializer.object duplicate = MgmtCenterList.get_by_ip(mgmt_center.ip) if duplicate is None: mgmt_center.save() try: task_id = MgmtCenterController.test_connection.apply_async( kwargs={ 'mgmt_center_guid': mgmt_center.guid }).id task = MgmtCenterController.test_connection.AsyncResult( task_id) except: mgmt_center.delete() raise try: is_mgmt_center = task.get(timeout=60, propagate=True) except TimeoutError: mgmt_center.delete() logger.error('Timed out waiting for test_connection') raise NotAcceptable( 'Timed out waiting for test_connection') except Exception as ex: # propagate reraises the exception raised in the task mgmt_center.delete() logger.error('Task exception %s' % ex) raise NotAcceptable('Task exception') if is_mgmt_center is True: return Response(serializer.data, status=status.HTTP_201_CREATED) elif is_mgmt_center is None: mgmt_center.delete() raise NotAcceptable('The given information is invalid.') elif is_mgmt_center is False: mgmt_center.delete() raise NotAcceptable( 'The given information is not for a Management center.' ) else: mgmt_center.delete() raise NotAcceptable('Unexpected result %s' % is_mgmt_center) else: raise NotAcceptable( 'A Management Center with this ip already exists.') else: return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
def create(self, request): """ Creates a Management Center """ serializer = FullSerializer(MgmtCenter, instance=MgmtCenter(), data=request.DATA, allow_passwords=True) if serializer.is_valid(): mgmt_center = serializer.object duplicate = MgmtCenterList.get_by_ip(mgmt_center.ip) if duplicate is None: mgmt_center.save() try: task_id = MgmtCenterController.test_connection.apply_async(kwargs = {'mgmt_center_guid': mgmt_center.guid}).id task = MgmtCenterController.test_connection.AsyncResult(task_id) except: mgmt_center.delete() raise try: is_mgmt_center = task.get(timeout = 60, propagate = True) except TimeoutError: mgmt_center.delete() logger.error('Timed out waiting for test_connection') raise NotAcceptable('Timed out waiting for test_connection') except Exception as ex: # propagate reraises the exception raised in the task mgmt_center.delete() logger.error('Task exception %s' % ex) raise NotAcceptable('Task exception') if is_mgmt_center is True: return Response(serializer.data, status=status.HTTP_201_CREATED) elif is_mgmt_center is None: mgmt_center.delete() raise NotAcceptable('The given information is invalid.') elif is_mgmt_center is False: mgmt_center.delete() raise NotAcceptable('The given information is not for a Management center.') else: mgmt_center.delete() raise NotAcceptable('Unexpected result %s' % is_mgmt_center) else: raise NotAcceptable('A Management Center with this ip already exists.') else: return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
def create(self, request): """ Creates a Management Center """ serializer = FullSerializer(MgmtCenter, instance=MgmtCenter(), data=request.DATA, allow_passwords=True) if serializer.is_valid(): mgmt_center = serializer.object duplicate = MgmtCenterList.get_by_ip(mgmt_center.ip) if duplicate is None: try: mgmt_center_client = Factory.get_mgmtcenter(mgmt_center=mgmt_center) is_mgmt_center = mgmt_center_client.test_connection() except Exception as ex: logger.debug('Management center testing: {0}'.format(ex)) raise NotAcceptable('The given information is invalid.') if not is_mgmt_center: raise NotAcceptable('The given information is not for a Management center.') mgmt_center.save() return Response(serializer.data, status=status.HTTP_201_CREATED) else: raise NotAcceptable('A Mangement Center with this ip already exists.') else: return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)