Merge "Re-enable shell completion cache"

This commit is contained in:
Zuul 2021-07-21 15:38:11 +00:00 committed by Gerrit Code Review
commit a658526cdb
6 changed files with 38 additions and 6 deletions

View File

@ -96,14 +96,14 @@ class Manager(utils.HookableMixin):
"""
base_dir = cliutils.env('manilaclient_UUID_CACHE_DIR',
'MANILACLIENT_UUID_CACHE_DIR',
default="~/.manilaclient")
default="~/.cache/manilaclient")
# NOTE(sirp): Keep separate UUID caches for each username + endpoint
# pair
username = cliutils.env('OS_USERNAME', 'MANILA_USERNAME')
url = cliutils.env('OS_URL', 'MANILA_URL')
uniqifier = hashlib.md5(username.encode('utf-8') +
url.encode('utf-8')).hexdigest()
uniqifier = hashlib.sha1(username.encode('utf-8') +
url.encode('utf-8')).hexdigest()
cache_dir = os.path.expanduser(os.path.join(base_dir, uniqifier))
@ -139,7 +139,10 @@ class Manager(utils.HookableMixin):
def write_to_completion_cache(self, cache_type, val):
cache = getattr(self, "_%s_cache" % cache_type, None)
if cache:
cache.write("%s\n" % val)
try:
cache.write("%s\n" % val)
except UnicodeEncodeError:
pass
def _get(self, url, response_key=None):
resp, body = self.api.client.get(url)

View File

@ -48,6 +48,16 @@ class TestCase(testtools.TestCase):
self.addCleanup(patcher.stop)
return new_attr
def mock_completion(self):
patcher = mock.patch(
'manilaclient.base.Manager.write_to_completion_cache')
patcher.start()
self.addCleanup(patcher.stop)
patcher = mock.patch('manilaclient.base.Manager.completion_cache')
patcher.start()
self.addCleanup(patcher.stop)
class TestResponse(requests.Response):
"""Class used to wrap requests.Response.

View File

@ -225,6 +225,7 @@ class FakeHTTPClient(fakes.FakeHTTPClient):
def get_shares_detail(self, **kw):
endpoint = "http://127.0.0.1:8786/v2"
share_id = '1234'
shares = {
'shares': [
{
@ -241,8 +242,11 @@ class FakeHTTPClient(fakes.FakeHTTPClient):
],
},
],
'count': 2,
}
if kw.get('with_count'):
shares.update({'count': 2})
return (200, {}, shares)
def get_snapshots_1234(self, **kw):

View File

@ -63,6 +63,7 @@ class ShellTest(test_utils.TestCase):
for var in self.FAKE_ENV:
self.useFixture(fixtures.EnvironmentVariable(var,
self.FAKE_ENV[var]))
self.mock_completion()
self.shell = shell.OpenStackManilaShell()

View File

@ -28,6 +28,7 @@ from manilaclient.common.apiclient import utils as apiclient_utils
from manilaclient.common import cliutils
from manilaclient.common import constants
from manilaclient import exceptions
import manilaclient.v2.shares
def _wait_for_resource_status(cs,
@ -2328,6 +2329,19 @@ def do_list(cs, args):
if args.count:
print("Shares in total: %s" % total_count)
with cs.shares.completion_cache('uuid',
manilaclient.v2.shares.Share,
mode="w"):
for share in shares:
cs.shares.write_to_completion_cache('uuid', share.id)
with cs.shares.completion_cache('name',
manilaclient.v2.shares.Share,
mode="w"):
for share in shares:
if share.name is not None:
cs.shares.write_to_completion_cache('name', share.name)
@cliutils.arg(
'--share-id',

View File

@ -7,7 +7,7 @@ _manila()
opts="$(manila bash_completion)"
COMPLETION_CACHE=~/.manilaclient/*/*-cache
COMPLETION_CACHE=~/.cache/manilaclient/*/*-cache
opts+=" "$(cat $COMPLETION_CACHE 2> /dev/null | tr '\n' ' ')
COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )