A Steampipe plugin to query OpenStack data as you would a relational database.
At the moment you can run queries such as:
select
port.id,
port.device_id,
port.device_owner,
proj.id,
proj.name,
vm.id,
vm.name
from
openstack_port port
join
openstack_project proj
on
proj.id = port.project_id
left outer join
openstack_instance vm
on
port.device_id = vm.id;
Runninga query is as simple as:
$> steampipe query "select * from openstack_instance where id = 'foo';"
$> steampipe query "select vm.id, vm.name, vm.host_id, vm.flavor_sockets, vm.flavor_disk, prj.name, prj.enabled, prj.id from openstack_instance vm, openstack_project prj where vm.id = '12345678-90ab-cdef-1234-567890abcdef' and vm.project_id = prj.id;"
This plugin is still in the very early stages.
- General understanding
- Understand how to expunge into own table embedded entities (e.g. []SecurityGroups from port)
- Understand how to work with JSONb data
- Understand how to use different operators in list filter (e.g. "description match regexp")
- Implementation
- Skeleton
- Configuration schema
- Make OpenStack API micro-versions configurable
- Create connection
- OpenStack APIs
- Identity APIs
- Compute APIs
- Network APIs
- Block Storage APIs
- Virtual machines instances
- Get
- List
- Filter
- Embed original flavor
- TODO
- Add more fields
- Embed image info
- Manage tags
- Network ports
- Get
- List
- Filter
- TODO
- Manage tags
- Network security groups
- Get
- List
- Filter
- TODO
- Manage tags
- Projects
- Get
- List
- Filter
- TODO
- Manage tags
- Users
- Get
- List
- Filter
- TODO
- Test
- Block storage volumes
- Get
- List
- Filter
- TODO
- Test
- Manage metadata
- Check that joins between entities work