ÿØÿàJFIFÿþ ÿÛC       ÿÛC ÿÀÿÄÿÄ"#QrÿÄÿÄ&1!A"2qQaáÿÚ ?Øy,æ/3JæÝ¹È߲؋5êXw²±ÉyˆR”¾I0ó2—PI¾IÌÚiMö¯–þrìN&"KgX:Šíµ•nTJnLK„…@!‰-ý ùúmë;ºgµŒ&ó±hw’¯Õ@”Ü— 9ñ-ë.²1<yà‚¹ïQÐU„ہ?.’¦èûbß±©Ö«Âw*VŒ) `$‰bØÔŸ’ëXÖ-ËTÜíGÚ3ð«g Ÿ§¯—Jx„–’U/ÂÅv_s(Hÿ@TñJÑãõçn­‚!ÈgfbÓc­:él[ðQe 9ÀPLbÃãCµm[5¿ç'ªjglå‡Ûí_§Úõl-;"PkÞÞÁQâ¼_Ñ^¢SŸx?"¸¦ùY騐ÒOÈ q’`~~ÚtËU¹CڒêV  I1Áß_ÿÙ# coding=utf-8 # Copyright © Cloud Linux GmbH & Cloud Linux Software, Inc 2010-2019 All Rights Reserved # # Licensed under CLOUD LINUX LICENSE AGREEMENT # http://cloudlinux.com/docs/LICENSE.TXT from typing import Any, Optional, Dict # NOQA from cllimitslib_v2 import LimitsDataStorage ENTITY_USER = 'user' ENTITY_PACKAGE = 'package' ENTITY_RESELLER = 'reseller' ENTITY_DEFAULTS = 'defaults' ENTITY_BUILTIN = 'builtin' class BaseValidator: def __init__(self, _limits_data_storage=None): # type: (LimitsDataStorage) -> None self.limits_provider = _limits_data_storage or LimitsDataStorage() self._message_dict = { 'common_msg': None, 'specific_msg': None, 'affected_entity': None, 'entity_id': None, } def validate_existing_limits(self, *args, **kwargs): # type: (*Any, **Any) -> Optional[bool, Dict] """ Validate limits which already are recorded in ve.cfg """ raise NotImplementedError() def validate_input_limits(self, *args, **kwargs): # type: (*Any, **Any) -> Optional[bool, Dict] """ Validate limits which we want to set """ raise NotImplementedError() def _validate(self, *args, **kwargs): # type: (*Any, **Any) -> Optional[bool, Dict] raise NotImplementedError()