Merge pull request #226 from jamesgetx/fix_cache_not_work
fix: load cache error when CacheDecoder object is not callable
This commit is contained in:
commit
6e2e494725
@ -15,8 +15,10 @@
|
||||
import os
|
||||
import six
|
||||
import json
|
||||
import logging
|
||||
import hashlib
|
||||
import tempfile
|
||||
from functools import partial
|
||||
from collections import defaultdict
|
||||
from abc import abstractmethod, abstractproperty
|
||||
|
||||
@ -54,11 +56,12 @@ class Discoverer(object):
|
||||
else:
|
||||
try:
|
||||
with open(self.__cache_file, 'r') as f:
|
||||
self._cache = json.load(f, cls=CacheDecoder(self.client))
|
||||
self._cache = json.load(f, cls=partial(CacheDecoder, self.client))
|
||||
if self._cache.get('library_version') != __version__:
|
||||
# Version mismatch, need to refresh cache
|
||||
self.invalidate_cache()
|
||||
except Exception:
|
||||
except Exception as e:
|
||||
logging.error("load cache error: %s", e)
|
||||
self.invalidate_cache()
|
||||
self._load_server_info()
|
||||
self.discover()
|
||||
|
||||
40
dynamic/test_discovery.py
Normal file
40
dynamic/test_discovery.py
Normal file
@ -0,0 +1,40 @@
|
||||
# Copyright 2019 The Kubernetes Authors.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
import os
|
||||
import unittest
|
||||
|
||||
from kubernetes.e2e_test import base
|
||||
from kubernetes.client import api_client
|
||||
|
||||
from . import DynamicClient
|
||||
|
||||
|
||||
class TestDiscoverer(unittest.TestCase):
|
||||
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
cls.config = base.get_e2e_configuration()
|
||||
|
||||
def test_init_cache_from_file(self):
|
||||
client = DynamicClient(api_client.ApiClient(configuration=self.config))
|
||||
client.resources.get(api_version='v1', kind='Node')
|
||||
mtime1 = os.path.getmtime(client.resources._Discoverer__cache_file)
|
||||
|
||||
client = DynamicClient(api_client.ApiClient(configuration=self.config))
|
||||
client.resources.get(api_version='v1', kind='Node')
|
||||
mtime2 = os.path.getmtime(client.resources._Discoverer__cache_file)
|
||||
|
||||
# test no Discoverer._write_cache called
|
||||
self.assertTrue(mtime1 == mtime2)
|
||||
Loading…
Reference in New Issue
Block a user