mirror of
				https://github.com/clearml/clearml-server
				synced 2025-06-26 23:15:47 +00:00 
			
		
		
		
	Improve schema reader
This commit is contained in:
		
							parent
							
								
									f9f2f0ccf0
								
							
						
					
					
						commit
						436883148b
					
				@ -5,7 +5,7 @@ import json
 | 
				
			|||||||
import re
 | 
					import re
 | 
				
			||||||
from operator import attrgetter
 | 
					from operator import attrgetter
 | 
				
			||||||
from pathlib import Path
 | 
					from pathlib import Path
 | 
				
			||||||
from typing import Mapping, Sequence, Type
 | 
					from typing import Mapping, Sequence
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import attr
 | 
					import attr
 | 
				
			||||||
from boltons.dictutils import subdict
 | 
					from boltons.dictutils import subdict
 | 
				
			||||||
@ -17,7 +17,7 @@ from apiserver.utilities.partial_version import PartialVersion
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
log = config.logger(__file__)
 | 
					log = config.logger(__file__)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					root = Path(__file__).parent / "services"
 | 
				
			||||||
ALL_ROLES = "*"
 | 
					ALL_ROLES = "*"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -119,7 +119,7 @@ class EndpointVersionsGroup:
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        self.endpoints = sorted(
 | 
					        self.endpoints = sorted(
 | 
				
			||||||
            (
 | 
					            (
 | 
				
			||||||
                SchemaReader.endpoint_schema_cls(
 | 
					                EndpointSchema(
 | 
				
			||||||
                    service_name=self.service_name,
 | 
					                    service_name=self.service_name,
 | 
				
			||||||
                    action_name=self.action_name,
 | 
					                    action_name=self.action_name,
 | 
				
			||||||
                    version=parse_version(version),
 | 
					                    version=parse_version(version),
 | 
				
			||||||
@ -167,7 +167,7 @@ class Service:
 | 
				
			|||||||
        self.defaults = {**api_defaults, **conf.pop("_default", {})}
 | 
					        self.defaults = {**api_defaults, **conf.pop("_default", {})}
 | 
				
			||||||
        self.definitions = conf.pop("_definitions", None)
 | 
					        self.definitions = conf.pop("_definitions", None)
 | 
				
			||||||
        self.endpoint_groups: Mapping[str, EndpointVersionsGroup] = {
 | 
					        self.endpoint_groups: Mapping[str, EndpointVersionsGroup] = {
 | 
				
			||||||
            endpoint_name: SchemaReader.endpoint_versions_group_cls(
 | 
					            endpoint_name: EndpointVersionsGroup(
 | 
				
			||||||
                service_name=self.name,
 | 
					                service_name=self.name,
 | 
				
			||||||
                action_name=endpoint_name,
 | 
					                action_name=endpoint_name,
 | 
				
			||||||
                conf=endpoint_conf,
 | 
					                conf=endpoint_conf,
 | 
				
			||||||
@ -189,23 +189,18 @@ class Schema:
 | 
				
			|||||||
        """
 | 
					        """
 | 
				
			||||||
        self.api_defaults = api_defaults
 | 
					        self.api_defaults = api_defaults
 | 
				
			||||||
        self.services = {
 | 
					        self.services = {
 | 
				
			||||||
            name: SchemaReader.service_cls(name, conf, api_defaults=self.api_defaults)
 | 
					            name: Service(name, conf, api_defaults=self.api_defaults)
 | 
				
			||||||
            for name, conf in services.items()
 | 
					            for name, conf in services.items()
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@attr.s()
 | 
					@attr.s()
 | 
				
			||||||
class SchemaReader:
 | 
					class SchemaReader:
 | 
				
			||||||
    service_cls: Type[Service] = Service
 | 
					 | 
				
			||||||
    endpoint_versions_group_cls: Type[EndpointVersionsGroup] = EndpointVersionsGroup
 | 
					 | 
				
			||||||
    endpoint_schema_cls: Type[EndpointSchema] = EndpointSchema
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    root: Path = Path(__file__).parent / "services"
 | 
					 | 
				
			||||||
    cache_path: Path = None
 | 
					    cache_path: Path = None
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def __attrs_post_init__(self):
 | 
					    def __attrs_post_init__(self):
 | 
				
			||||||
        if not self.cache_path:
 | 
					        if not self.cache_path:
 | 
				
			||||||
            self.cache_path = self.root / "_cache.json"
 | 
					            self.cache_path = root / "_cache.json"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @staticmethod
 | 
					    @staticmethod
 | 
				
			||||||
    def mod_time(path):
 | 
					    def mod_time(path):
 | 
				
			||||||
@ -225,7 +220,7 @@ class SchemaReader:
 | 
				
			|||||||
        """
 | 
					        """
 | 
				
			||||||
        services = [
 | 
					        services = [
 | 
				
			||||||
            service
 | 
					            service
 | 
				
			||||||
            for service in self.root.glob("*.conf")
 | 
					            for service in root.glob("*.conf")
 | 
				
			||||||
            if not service.name.startswith("_")
 | 
					            if not service.name.startswith("_")
 | 
				
			||||||
        ]
 | 
					        ]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -249,7 +244,7 @@ class SchemaReader:
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        log.info("regenerating schema cache")
 | 
					        log.info("regenerating schema cache")
 | 
				
			||||||
        services = {path.stem: self.read_file(path) for path in services}
 | 
					        services = {path.stem: self.read_file(path) for path in services}
 | 
				
			||||||
        api_defaults = self.read_file(self.root / "_api_defaults.conf")
 | 
					        api_defaults = self.read_file(root / "_api_defaults.conf")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        try:
 | 
					        try:
 | 
				
			||||||
            self.cache_path.write_text(
 | 
					            self.cache_path.write_text(
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user