Merge pull request #26346 from noahdesu/mgr-orch-cache-refresh

mgr/orch: refresh option for inventory query

Reviewed-by: Sebastian Wagner <sebastian.wagner@suse.com>
This commit is contained in:
Sebastian Wagner 2019-02-13 11:13:52 +01:00 committed by GitHub
commit b8fe1554d3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 16 additions and 10 deletions

View File

@ -39,6 +39,10 @@ class TestOrchestratorCli(MgrTestCase):
ret = self._orch_cmd("device", "ls")
self.assertIn("localhost:", ret)
def test_device_ls_refresh(self):
ret = self._orch_cmd("device", "ls", "--refresh")
self.assertIn("localhost:", ret)
def test_device_ls_hoshs(self):
ret = self._orch_cmd("device", "ls", "localhost", "host1")
self.assertIn("localhost:", ret)

View File

@ -267,10 +267,11 @@ class Module(MgrModule, orchestrator.Orchestrator):
self.log.info('Stopping Ansible orchestrator module')
self.run = False
def get_inventory(self, node_filter=None):
def get_inventory(self, node_filter=None, refresh=False):
"""
:param : node_filter instance
:param : refresh any cached state
:Return : A AnsibleReadOperation instance (Completion Object)
"""

View File

@ -120,7 +120,7 @@ class DeepSeaOrchestrator(MgrModule, orchestrator.Orchestrator):
return True, ""
def get_inventory(self, node_filter=None):
def get_inventory(self, node_filter=None, refresh=False):
"""
Note that this will raise an exception (e.g. if the salt-api is down,
or the username/password is incorret). Same for other methods.

View File

@ -216,8 +216,8 @@ class Orchestrator(object):
"""
return self.get_inventory()
def get_inventory(self, node_filter=None):
# type: (InventoryFilter) -> ReadCompletion[List[InventoryNode]]
def get_inventory(self, node_filter=None, refresh=False):
# type: (InventoryFilter, bool) -> ReadCompletion[List[InventoryNode]]
"""
Returns something that was created by `ceph-volume inventory`.

View File

@ -71,11 +71,12 @@ class OrchestratorCli(orchestrator.OrchestratorClientMixin, MgrModule):
@CLIReadCommand('orchestrator device ls',
"name=host,type=CephString,n=N,req=false "
"name=format,type=CephChoices,strings=json|plain,req=false",
"name=format,type=CephChoices,strings=json|plain,req=false "
"name=refresh,type=CephBool,req=false",
'List devices on a node')
@handle_exceptions
def _list_devices(self, host=None, format='plain'):
# type: (List[str], str) -> HandleCommandResult
def _list_devices(self, host=None, format='plain', refresh=False):
# type: (List[str], str, bool) -> HandleCommandResult
"""
Provide information about storage devices present in cluster hosts
@ -85,7 +86,7 @@ class OrchestratorCli(orchestrator.OrchestratorClientMixin, MgrModule):
"""
nf = orchestrator.InventoryFilter(nodes=host) if host else None
completion = self.get_inventory(node_filter=nf)
completion = self.get_inventory(node_filter=nf, refresh=refresh)
self._orchestrator_wait([completion])

View File

@ -294,7 +294,7 @@ class RookOrchestrator(MgrModule, orchestrator.Orchestrator):
# things look a bit out of sync?
@deferred_read
def get_inventory(self, node_filter=None):
def get_inventory(self, node_filter=None, refresh=False):
node_list = None
if node_filter and node_filter.nodes:
# Explicit node list

View File

@ -202,7 +202,7 @@ class TestOrchestrator(MgrModule, orchestrator.Orchestrator):
self._shutdown.wait(5)
@deferred_read
def get_inventory(self, node_filter=None):
def get_inventory(self, node_filter=None, refresh=False):
"""
There is no guarantee which devices are returned by get_inventory.
"""