diff --git a/ansys/rep/client/auth/resource/user.py b/ansys/rep/client/auth/resource/user.py index 7aee2e429..aa27bd7ac 100644 --- a/ansys/rep/client/auth/resource/user.py +++ b/ansys/rep/client/auth/resource/user.py @@ -43,6 +43,6 @@ def __init__(self, self.last_name = last_name self.email = email - super().__init__(**kwargs) + self.obj_type = self.__class__.__name__ UserSchema.Meta.object_class = User diff --git a/ansys/rep/client/jms/resource/algorithm.py b/ansys/rep/client/jms/resource/algorithm.py index c05924025..03affe6b2 100644 --- a/ansys/rep/client/jms/resource/algorithm.py +++ b/ansys/rep/client/jms/resource/algorithm.py @@ -42,7 +42,8 @@ def __init__(self, name=missing, description=missing, data=missing, - jobs=missing + jobs=missing, + **kwargs ): self.id = id self.creation_time = creation_time diff --git a/ansys/rep/client/jms/resource/evaluator.py b/ansys/rep/client/jms/resource/evaluator.py index 8f1f6c8fc..ceb48601a 100644 --- a/ansys/rep/client/jms/resource/evaluator.py +++ b/ansys/rep/client/jms/resource/evaluator.py @@ -37,7 +37,8 @@ def __init__(self, local_file_cache=missing, local_file_cache_max_size=missing, task_directory_cleanup=missing, - custom_resource_properties=missing + custom_resource_properties=missing, + **kwargs ): self.id = id self.name = name @@ -114,7 +115,8 @@ def __init__(self, project_list=missing, configuration=missing, configuration_updates=missing, - build_info=missing + build_info=missing, + **kwargs ): self.id = id self.host_id = host_id diff --git a/ansys/rep/client/jms/resource/file.py b/ansys/rep/client/jms/resource/file.py index ceb1f3a47..8a72d34e0 100644 --- a/ansys/rep/client/jms/resource/file.py +++ b/ansys/rep/client/jms/resource/file.py @@ -66,7 +66,8 @@ def __init__(self, src=None, monitor=missing, collect=missing, collect_interval=missing, - reference_id=missing + reference_id=missing, + **kwargs, ): self.src = src self.content = None diff --git a/ansys/rep/client/jms/resource/job.py b/ansys/rep/client/jms/resource/job.py index 6c0656f15..0954f82cc 100644 --- a/ansys/rep/client/jms/resource/job.py +++ b/ansys/rep/client/jms/resource/job.py @@ -69,7 +69,8 @@ def __init__(self, executed_level=missing, elapsed_time=missing, host_ids=missing, - file_ids=missing + file_ids=missing, + **kwargs ): self.id = id self.creation_time = creation_time diff --git a/ansys/rep/client/jms/resource/job_definition.py b/ansys/rep/client/jms/resource/job_definition.py index 0f1b2e483..2a5c70940 100644 --- a/ansys/rep/client/jms/resource/job_definition.py +++ b/ansys/rep/client/jms/resource/job_definition.py @@ -47,7 +47,8 @@ def __init__(self, parameter_definition_ids=missing, parameter_mapping_ids=missing, task_definition_ids=missing, - fitness_definition=missing + fitness_definition=missing, + **kwargs ): self.id = id self.creation_time = creation_time diff --git a/ansys/rep/client/jms/resource/license_context.py b/ansys/rep/client/jms/resource/license_context.py index 4bb8822fe..97a8f64d2 100644 --- a/ansys/rep/client/jms/resource/license_context.py +++ b/ansys/rep/client/jms/resource/license_context.py @@ -21,7 +21,8 @@ class Meta: def __init__(self, context_id=missing, - environment=missing + environment=missing, + **kwargs ): self.context_id = context_id self.environment = environment diff --git a/ansys/rep/client/jms/resource/operation.py b/ansys/rep/client/jms/resource/operation.py index 648db6012..67536e054 100644 --- a/ansys/rep/client/jms/resource/operation.py +++ b/ansys/rep/client/jms/resource/operation.py @@ -38,7 +38,8 @@ def __init__(self, result=missing, messages=missing, start_time=missing, - end_time=missing + end_time=missing, + **kwargs ): self.id = id self.name = name diff --git a/ansys/rep/client/jms/resource/parameter_definition.py b/ansys/rep/client/jms/resource/parameter_definition.py index 3f06e97e1..405f4f80d 100644 --- a/ansys/rep/client/jms/resource/parameter_definition.py +++ b/ansys/rep/client/jms/resource/parameter_definition.py @@ -20,7 +20,7 @@ class Meta: rest_name = "parameter_definitions" def __init__(self, - + **kwargs ): self.obj_type = self.__class__.__name__ @@ -89,7 +89,8 @@ def __init__(self, upper_limit=missing, step=missing, cyclic=missing, - value_list=missing + value_list=missing, + **kwargs ): self.id = id self.creation_time = creation_time @@ -172,7 +173,8 @@ def __init__(self, lower_limit=missing, upper_limit=missing, step=missing, - cyclic=missing + cyclic=missing, + **kwargs ): self.id = id self.creation_time = creation_time @@ -242,7 +244,8 @@ def __init__(self, display_text=missing, mode=missing, type=missing, - default=missing + default=missing, + **kwargs ): self.id = id self.creation_time = creation_time @@ -311,7 +314,8 @@ def __init__(self, mode=missing, type=missing, default=missing, - value_list=missing + value_list=missing, + **kwargs ): self.id = id self.creation_time = creation_time diff --git a/ansys/rep/client/jms/resource/parameter_mapping.py b/ansys/rep/client/jms/resource/parameter_mapping.py index eccae7a25..422ea1e07 100644 --- a/ansys/rep/client/jms/resource/parameter_mapping.py +++ b/ansys/rep/client/jms/resource/parameter_mapping.py @@ -62,7 +62,8 @@ def __init__(self, false_string=missing, parameter_definition_id=missing, task_definition_property=missing, - file_id=missing + file_id=missing, + **kwargs ): self.id = id self.creation_time = creation_time diff --git a/ansys/rep/client/jms/resource/permission.py b/ansys/rep/client/jms/resource/permission.py index dfc331652..327eb8285 100644 --- a/ansys/rep/client/jms/resource/permission.py +++ b/ansys/rep/client/jms/resource/permission.py @@ -26,7 +26,8 @@ def __init__(self, permission_type=missing, value_id=missing, value_name=missing, - role=missing + role=missing, + **kwargs ): self.permission_type = permission_type self.value_id = value_id diff --git a/ansys/rep/client/jms/resource/project.py b/ansys/rep/client/jms/resource/project.py index b6c704391..d6582531b 100644 --- a/ansys/rep/client/jms/resource/project.py +++ b/ansys/rep/client/jms/resource/project.py @@ -36,7 +36,8 @@ def __init__(self, priority=missing, creation_time=missing, modification_time=missing, - statistics=missing + statistics=missing, + **kwargs ): self.id = id self.name = name diff --git a/ansys/rep/client/jms/resource/selection.py b/ansys/rep/client/jms/resource/selection.py index 13eb91705..00095ceca 100644 --- a/ansys/rep/client/jms/resource/selection.py +++ b/ansys/rep/client/jms/resource/selection.py @@ -39,7 +39,8 @@ def __init__(self, modified_by=missing, name=missing, algorithm_id=missing, - jobs=missing + jobs=missing, + **kwargs ): self.id = id self.creation_time = creation_time diff --git a/ansys/rep/client/jms/resource/task.py b/ansys/rep/client/jms/resource/task.py index 00f1cff8b..fe3660091 100644 --- a/ansys/rep/client/jms/resource/task.py +++ b/ansys/rep/client/jms/resource/task.py @@ -86,7 +86,8 @@ def __init__(self, inherited_file_ids=missing, owned_file_ids=missing, license_context_id=missing, - custom_data=missing + custom_data=missing, + **kwargs ): self.id = id self.creation_time = creation_time diff --git a/ansys/rep/client/jms/resource/task_definition.py b/ansys/rep/client/jms/resource/task_definition.py index 9f9b0bf6c..3a48e202e 100644 --- a/ansys/rep/client/jms/resource/task_definition.py +++ b/ansys/rep/client/jms/resource/task_definition.py @@ -28,7 +28,8 @@ def __init__(self, num_cores_per_node=missing, num_gpus_per_node=missing, exclusive=missing, - queue=missing + queue=missing, + **kwargs ): self.num_cores_per_node = num_cores_per_node self.num_gpus_per_node = num_gpus_per_node @@ -65,7 +66,8 @@ def __init__(self, disk_space=missing, distributed=missing, custom=missing, - hpc_resources=missing + hpc_resources=missing, + **kwargs ): self.platform = platform self.memory = memory @@ -97,7 +99,8 @@ class Meta: def __init__(self, name=missing, - version=missing + version=missing, + **kwargs ): self.name = name self.version = version @@ -136,7 +139,8 @@ def __init__(self, required_output_file_ids=missing, require_all_output_files=missing, required_output_parameter_ids=missing, - require_all_output_parameters=missing + require_all_output_parameters=missing, + **kwargs ): self.return_code = return_code self.expressions = expressions @@ -164,7 +168,8 @@ class Meta: rest_name = "None" def __init__(self, - enable_shared_licensing=missing + enable_shared_licensing=missing, + **kwargs ): self.enable_shared_licensing = enable_shared_licensing @@ -246,7 +251,8 @@ def __init__(self, success_criteria=missing, licensing=missing, software_requirements=missing, - resource_requirements=missing + resource_requirements=missing, + **kwargs ): self.id = id self.creation_time = creation_time diff --git a/ansys/rep/client/jms/resource/task_definition_template.py b/ansys/rep/client/jms/resource/task_definition_template.py index ad5facbfa..b4dc8f321 100644 --- a/ansys/rep/client/jms/resource/task_definition_template.py +++ b/ansys/rep/client/jms/resource/task_definition_template.py @@ -31,7 +31,8 @@ def __init__(self, default=missing, description=missing, type=missing, - value_list=missing + value_list=missing, + **kwargs ): self.default = default self.description = description @@ -53,6 +54,7 @@ class TemplateResourceRequirements(Object): disk_space : TemplateProperty, optional distributed : TemplateProperty, optional custom : dict[str, TemplateProperty], optional + hpc_resources : HpcResources, optional """ @@ -66,7 +68,9 @@ def __init__(self, num_cores=missing, disk_space=missing, distributed=missing, - custom=missing + custom=missing, + hpc_resources=missing, + **kwargs ): self.platform = platform self.memory = memory @@ -74,6 +78,7 @@ def __init__(self, self.disk_space = disk_space self.distributed = distributed self.custom = custom + self.hpc_resources = hpc_resources self.obj_type = self.__class__.__name__ @@ -106,7 +111,8 @@ def __init__(self, type=missing, evaluation_path=missing, description=missing, - required=missing + required=missing, + **kwargs ): self.name = name self.type = type @@ -151,7 +157,8 @@ def __init__(self, description=missing, required=missing, monitor=missing, - collect=missing + collect=missing, + **kwargs ): self.name = name self.type = type @@ -225,7 +232,8 @@ def __init__(self, execution_script_storage_id=missing, execution_script_storage_bucket=missing, input_files=missing, - output_files=missing + output_files=missing, + **kwargs ): self.id = id self.modification_time = modification_time diff --git a/ansys/rep/client/jms/schema/task_definition_template.py b/ansys/rep/client/jms/schema/task_definition_template.py index f23c64bb1..9e2847864 100644 --- a/ansys/rep/client/jms/schema/task_definition_template.py +++ b/ansys/rep/client/jms/schema/task_definition_template.py @@ -10,7 +10,7 @@ from ansys.rep.client.common import BaseSchema, ObjectSchema -from .task_definition import SoftwareSchema +from .task_definition import HpcResourcesSchema, SoftwareSchema class TemplatePropertySchema(BaseSchema): @@ -46,6 +46,7 @@ class Meta(BaseSchema.Meta): custom = fields.Dict( keys=fields.String, values=fields.Nested(TemplatePropertySchema), allow_none=True ) + hpc_resources = fields.Nested(HpcResourcesSchema, allow_none=True) class TemplateFileSchema(BaseSchema): diff --git a/generate_resources.py b/generate_resources.py index a4389240a..5140ba4d3 100644 --- a/generate_resources.py +++ b/generate_resources.py @@ -278,7 +278,6 @@ "additional_fields": [], "class": "User", "resource_filename": "user", - "init_with_kwargs": True, }, ] @@ -388,9 +387,11 @@ def get_resource_code(resource, base_class, fields, field_docs): init_fields_str = ",\n".join([f" {k}=missing" for k in fields]) additional_initialization = " self.obj_type = self.__class__.__name__" - if "init_with_kwargs" in resource: - additional_initialization = " super().__init__(**kwargs)" - init_fields_str += ",\n **kwargs" + if resource.get("init_with_kwargs", True): + if init_fields_str: + init_fields_str += ",\n **kwargs" + else: + init_fields_str = " **kwargs" code = f'''class {resource['class']}({base_class["name"]}): """{resource['class']} resource. diff --git a/tests/jms/test_task_definition_templates.py b/tests/jms/test_task_definition_templates.py index c54ae3e92..0c2696bbb 100644 --- a/tests/jms/test_task_definition_templates.py +++ b/tests/jms/test_task_definition_templates.py @@ -17,7 +17,12 @@ from ansys.rep.client import Client, REPError from ansys.rep.client.auth import AuthApi, User from ansys.rep.client.jms import JmsApi -from ansys.rep.client.jms.resource import Permission, TaskDefinitionTemplate +from ansys.rep.client.jms.resource import ( + HpcResources, + Permission, + TaskDefinitionTemplate, + TemplateResourceRequirements, +) from ansys.rep.client.jms.schema.task_definition_template import TaskDefinitionTemplateSchema from tests.rep_test import REPTestCase @@ -153,11 +158,15 @@ def test_template_integration(self): # Modify template template.software_requirements[0].version = "2.0.1" + template.resource_requirements = TemplateResourceRequirements( + hpc_resources=HpcResources(num_gpus_per_node=2) + ) templates = jms_api.update_task_definition_templates([template]) self.assertEqual(len(templates), 1) template = templates[0] self.assertEqual(template.software_requirements[0].version, "2.0.1") self.assertEqual(template.name, template_name) + self.assertEqual(template.resource_requirements.hpc_resources.num_gpus_per_node, 2) # Delete template jms_api.delete_task_definition_templates([template])