refactory query to use resource editor class
Change-Id: I1cb37cedde5a79c3683cbe5566d2080f73f49836 Signed-off-by: Doug Hellmann <doug@doughellmann.com>
This commit is contained in:
parent
1719e77a1c
commit
c4e3919e9b
|
@ -19,6 +19,27 @@ from downpour import resources
|
||||||
LOG = logging.getLogger(__name__)
|
LOG = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
|
class ResourceFileEditor:
|
||||||
|
|
||||||
|
def __init__(self, filename, save_state):
|
||||||
|
self._filename = filename
|
||||||
|
self._save_state = save_state
|
||||||
|
self._resources = resources.load(filename, missing_ok=True)
|
||||||
|
self._servers = set(s.name for s in self._resources.servers)
|
||||||
|
|
||||||
|
def add_server(self, info):
|
||||||
|
if info.name in self._servers:
|
||||||
|
return
|
||||||
|
LOG.info('found server %s to export', info.name)
|
||||||
|
self._resources.servers.append({
|
||||||
|
'name': info.name,
|
||||||
|
'save_state': self._save_state,
|
||||||
|
})
|
||||||
|
|
||||||
|
def save(self):
|
||||||
|
resources.save(self._filename, self._resources)
|
||||||
|
|
||||||
|
|
||||||
def register_command(subparsers):
|
def register_command(subparsers):
|
||||||
do_query = subparsers.add_parser(
|
do_query = subparsers.add_parser(
|
||||||
'query',
|
'query',
|
||||||
|
@ -43,17 +64,11 @@ def register_command(subparsers):
|
||||||
|
|
||||||
|
|
||||||
def query_data(cloud, config, args):
|
def query_data(cloud, config, args):
|
||||||
to_export = resources.load(args.resource_file, missing_ok=True)
|
editor = ResourceFileEditor(args.resource_file, save_state=args.save_state)
|
||||||
servers = set(s.name for s in to_export.servers)
|
|
||||||
|
|
||||||
for pattern in args.server:
|
for pattern in args.server:
|
||||||
LOG.info('searching for server %r', pattern)
|
LOG.info('searching for servers matching pattern %r', pattern)
|
||||||
for server_info in cloud.search_servers(name_or_id=pattern):
|
for server_info in cloud.search_servers(name_or_id=pattern):
|
||||||
if server_info.name not in servers:
|
editor.add_server(server_info)
|
||||||
LOG.info('found server %s to export', server_info.name)
|
|
||||||
to_export.servers.append({
|
|
||||||
'name': server_info.name,
|
|
||||||
'save_state': args.save_state,
|
|
||||||
})
|
|
||||||
|
|
||||||
resources.save(args.resource_file, to_export)
|
editor.save()
|
||||||
|
|
Loading…
Reference in New Issue