コード例 #1
0
ファイル: test_rest.py プロジェクト: ctc-oss/scale
 def test_parse_float_zero(self):
     """Tests parsing an optional float parameter zero instead of using the default value."""
     request = MagicMock(Request)
     request.query_params = QueryDict('', mutable=True)
     request.query_params.update({
         'test': '0.0',
     })
     self.assertEqual(rest_util.parse_float(request, 'test', 10.1), 0.0)
コード例 #2
0
ファイル: test_rest.py プロジェクト: ctc-oss/scale
 def test_parse_float_post(self):
     """Tests parsing a required float parameter that is provided via POST."""
     request = MagicMock(Request)
     request.data = QueryDict('', mutable=True)
     request.data.update({
         'test': '10.1',
     })
     self.assertEqual(rest_util.parse_float(request, 'test'), 10.1)
コード例 #3
0
ファイル: test_rest.py プロジェクト: dev-geo/scale
 def test_parse_float_post(self):
     '''Tests parsing a required float parameter that is provided via POST.'''
     request = MagicMock(Request)
     request.DATA = QueryDict('', mutable=True)
     request.DATA.update({
         'test': '10.1',
     })
     self.assertEqual(rest_util.parse_float(request, 'test'), 10.1)
コード例 #4
0
ファイル: test_rest.py プロジェクト: ctc-oss/scale
 def test_parse_float_default(self):
     """Tests parsing a required float parameter that is provided via default value."""
     request = MagicMock(Request)
     request.query_params = QueryDict('', mutable=True)
     request.query_params.update({
         'test': '10.1',
     })
     self.assertEqual(rest_util.parse_float(request, 'test2', 20.1), 20.1)
コード例 #5
0
ファイル: test_rest.py プロジェクト: dev-geo/scale
 def test_parse_float_optional(self):
     '''Tests parsing an optional float parameter that is missing.'''
     request = MagicMock(Request)
     request.QUERY_PARAMS = QueryDict('', mutable=True)
     request.QUERY_PARAMS.update({
         'test': 'value1',
     })
     self.assertIsNone(rest_util.parse_float(request, 'test2', required=False))
コード例 #6
0
ファイル: test_rest.py プロジェクト: dev-geo/scale
 def test_parse_float_zero(self):
     '''Tests parsing an optional float parameter zero instead of using the default value.'''
     request = MagicMock(Request)
     request.QUERY_PARAMS = QueryDict('', mutable=True)
     request.QUERY_PARAMS.update({
         'test': '0.0',
     })
     self.assertEqual(rest_util.parse_float(request, 'test', 10.1), 0.0)
コード例 #7
0
ファイル: test_rest.py プロジェクト: dev-geo/scale
 def test_parse_float_default(self):
     '''Tests parsing a required float parameter that is provided via default value.'''
     request = MagicMock(Request)
     request.QUERY_PARAMS = QueryDict('', mutable=True)
     request.QUERY_PARAMS.update({
         'test': '10.1',
     })
     self.assertEqual(rest_util.parse_float(request, 'test2', 20.1), 20.1)
コード例 #8
0
ファイル: test_rest.py プロジェクト: wong-j/scale
 def test_parse_float(self):
     '''Tests parsing a required float parameter that is provided via GET.'''
     request = MagicMock(Request)
     request.query_params = QueryDict('', mutable=True)
     request.query_params.update({
         'test': '10.1',
     })
     self.assertEqual(rest_util.parse_float(request, 'test'), 10.1)
コード例 #9
0
ファイル: test_rest.py プロジェクト: ngageoint/scale
 def test_parse_float(self):
     """Tests parsing a required float parameter that is provided via GET."""
     request = MagicMock(Request)
     request.query_params = QueryDict('', mutable=True)
     request.query_params.update({
         'test': '10.1',
     })
     self.assertEqual(rest_util.parse_float(request, 'test'), 10.1)
コード例 #10
0
ファイル: test_rest.py プロジェクト: ctc-oss/scale
 def test_parse_float_optional(self):
     """Tests parsing an optional float parameter that is missing."""
     request = MagicMock(Request)
     request.query_params = QueryDict('', mutable=True)
     request.query_params.update({
         'test': 'value1',
     })
     self.assertIsNone(
         rest_util.parse_float(request, 'test2', required=False))
コード例 #11
0
ファイル: test_rest.py プロジェクト: dev-geo/scale
    def test_parse_float_valid(self):
        '''Tests parsing a float parameter where the value is acceptable.'''
        request = MagicMock(Request)
        request.QUERY_PARAMS = QueryDict('', mutable=True)
        request.QUERY_PARAMS.update({
            'test': '1.1',
        })

        self.assertEqual(rest_util.parse_float(request, 'test', accepted_values=[1.1, 2.2, 3.3]), 1.1)
コード例 #12
0
ファイル: test_rest.py プロジェクト: ctc-oss/scale
    def test_parse_float_valid(self):
        """Tests parsing a float parameter where the value is acceptable."""
        request = MagicMock(Request)
        request.query_params = QueryDict('', mutable=True)
        request.query_params.update({
            'test': '1.1',
        })

        self.assertEqual(
            rest_util.parse_float(request,
                                  'test',
                                  accepted_values=[1.1, 2.2, 3.3]), 1.1)
コード例 #13
0
ファイル: views.py プロジェクト: Carl4/scale
    def post(self, request):
        '''Creates a new JobType and returns its ID in JSON form

        :param request: the HTTP POST request
        :type request: :class:`rest_framework.request.Request`
        :rtype: :class:`rest_framework.response.Response`
        :returns: the HTTP response to send back to the user
        '''

        name = rest_util.parse_string(request, u'name')
        version = rest_util.parse_string(request, u'version')
        title = rest_util.parse_string(request, u'title', default_value=u'Unknown Job Type')
        description = rest_util.parse_string(request, u'description')
        category = rest_util.parse_string(request, u'category', default_value=u'unknown')
        author_name = rest_util.parse_string(request, u'author_name', required=False)
        author_url = rest_util.parse_string(request, u'author_url', required=False)

        is_system = False
        is_long_running = False
        is_active = rest_util.parse_bool(request, u'is_active', default_value=True)
        is_operational = rest_util.parse_bool(request, u'is_operational', default_value=True)
        is_paused = rest_util.parse_bool(request, u'is_paused', default_value=False)
        requires_cleanup = True

        uses_docker = True
        docker_privileged = rest_util.parse_bool(request, u'docker_privileged', default_value=False)
        docker_image = rest_util.parse_string(request, u'docker_image')
        interface = rest_util.parse_dict(request, u'interface')
        error_mapping = rest_util.parse_dict(request, u'error_mapping', default_value={})

        priority = rest_util.parse_int(request, u'priority', default_value=260)
        timeout = rest_util.parse_int(request, u'timeout', default_value=1800)
        max_tries = rest_util.parse_int(request, u'max_tries', default_value=3)
        cpus_required = rest_util.parse_float(request, u'cpus_required', default_value=1)
        mem_required = rest_util.parse_float(request, u'mem_required', default_value=5120)
        disk_out_const_required = rest_util.parse_float(request, u'disk_out_const_required', default_value=0)
        disk_out_mult_required = rest_util.parse_float(request, u'disk_out_mult_required', default_value=0)

        icon_code = rest_util.parse_string(request, u'icon_code', default_value=u'f013')

        try:
            try:
                job_type = JobType.objects.get(name=name, version=version)
                job_type.description = description
                job_type.docker_image = docker_image
                job_type.interface = interface
                job_type.priority = priority
                job_type.timeout = timeout
                job_type.max_tries = max_tries
                job_type.cpus_required = cpus_required
                job_type.mem_required = mem_required
                job_type.disk_out_const_required = disk_out_const_required

            except JobType.DoesNotExist:
                job_type = JobType.objects.create_job_type(name, version, description, docker_image, interface,
                                                           priority, timeout, max_tries, cpus_required, mem_required,
                                                           disk_out_const_required, None)
            job_type.title = title
            job_type.category = category
            job_type.author_name = author_name
            job_type.author_url = author_url
            job_type.is_system = is_system
            job_type.is_long_running = is_long_running
            job_type.is_active = is_active
            job_type.is_operational = is_operational
            job_type.is_paused = is_paused
            job_type.requires_cleanup = requires_cleanup
            job_type.uses_docker = uses_docker
            job_type.docker_privileged = docker_privileged
            job_type.error_mapping = error_mapping
            job_type.icon_code = icon_code
            job_type.disk_out_mult_required = disk_out_mult_required
            job_type.save()

        except InvalidInterfaceDefinition:
            raise rest_util.BadParameter('Interface definition failed to validate.')
        return Response({'job_type_id': job_type.id}, status=status.HTTP_200_OK)