support querying available volumes by name
Change-Id: I120926424b5b07d8adfb7bb701bd8b2ef66013a0 Signed-off-by: Doug Hellmann <doug@doughellmann.com>
This commit is contained in:
parent
b4366540c0
commit
4e0032f8bb
|
@ -27,6 +27,7 @@ class ResourceFileEditor:
|
||||||
self._resources = resources.load(filename, missing_ok=True)
|
self._resources = resources.load(filename, missing_ok=True)
|
||||||
self._servers = set(s.name for s in self._resources.servers)
|
self._servers = set(s.name for s in self._resources.servers)
|
||||||
self._images = set(i.name for i in self._resources.images)
|
self._images = set(i.name for i in self._resources.images)
|
||||||
|
self._volumes = set(v.name for v in self._resources.volumes)
|
||||||
|
|
||||||
def add_server(self, info):
|
def add_server(self, info):
|
||||||
if info.name in self._servers:
|
if info.name in self._servers:
|
||||||
|
@ -46,6 +47,15 @@ class ResourceFileEditor:
|
||||||
'name': info.name,
|
'name': info.name,
|
||||||
})
|
})
|
||||||
|
|
||||||
|
def add_volume(self, info):
|
||||||
|
if info.name in self._volumes:
|
||||||
|
return
|
||||||
|
LOG.info('found volume %s to export', info.name)
|
||||||
|
self._resources.volumes.append({
|
||||||
|
'name': info.name,
|
||||||
|
'save_state': self._save_state,
|
||||||
|
})
|
||||||
|
|
||||||
def save(self):
|
def save(self):
|
||||||
resources.save(self._filename, self._resources)
|
resources.save(self._filename, self._resources)
|
||||||
|
|
||||||
|
@ -83,6 +93,12 @@ def register_command(subparsers):
|
||||||
default=[],
|
default=[],
|
||||||
help='pattern to match against image names',
|
help='pattern to match against image names',
|
||||||
)
|
)
|
||||||
|
do_query.add_argument(
|
||||||
|
'--volume-name',
|
||||||
|
action='append',
|
||||||
|
default=[],
|
||||||
|
help='pattern to match against volume names',
|
||||||
|
)
|
||||||
do_query.set_defaults(func=query_data)
|
do_query.set_defaults(func=query_data)
|
||||||
|
|
||||||
|
|
||||||
|
@ -105,4 +121,14 @@ def query_data(cloud, config, args):
|
||||||
for info in cloud.search_images(name_or_id=pattern):
|
for info in cloud.search_images(name_or_id=pattern):
|
||||||
editor.add_image(info)
|
editor.add_image(info)
|
||||||
|
|
||||||
|
for pattern in args.volume_name:
|
||||||
|
LOG.info('searching for available volumes matching pattern %r',
|
||||||
|
pattern)
|
||||||
|
for info in cloud.search_volumes(
|
||||||
|
name_or_id=pattern,
|
||||||
|
filters={
|
||||||
|
'status': 'available',
|
||||||
|
}):
|
||||||
|
editor.add_volume(info)
|
||||||
|
|
||||||
editor.save()
|
editor.save()
|
||||||
|
|
Loading…
Reference in New Issue