[openstack-dev] [Congress][Data Integration]

Tim Hinrichs thinrichs at vmware.com
Wed Mar 12 19:53:17 UTC 2014

Hi Rajdeep, 

This is an great problem to work on because it confronts one of the assumptions we're making in Congress: that cloud services can be represented as a collection of tables in a reasonable way. You're asking good questions here. 

More responses inline. 


----- Original Message -----

From: "Rajdeep Dua" <rajdeep.dua at gmail.com> 
To: openstack-dev at lists.openstack.org 
Sent: Wednesday, March 12, 2014 11:54:28 AM 
Subject: [openstack-dev] [Congress][Data Integration] 

Need some guidance on how to convert nested types into flat tuples. 
Also should we reorder the tuple values in a particular sequence? 

Order of tuples doesn't matter. Order of columns (values) within a tuple doesn't really matter either, except that all tuples must use the same order and the policies we write must know which column is which. 



As an example i have shown networks and ports tuples with some nested types 

networks - tuple format 

keys (for reference) 

{'status','subnets', 'name','test-network','provider:physical_network','admin_state_up', 
'tenant_id','provider:network_type','router:external', 'shared',id,'provider:segmentation_id'} 

('ACTIVE', ['4cef03d0-1d02-40bb-8c99-2f442aac6ab0'], 'test-network', None, True, 
'570fe78a1dc54cffa053bd802984ede2', 'gre', False, False, 
'240ff9df-df35-43ae-9df5-27fae87f2492', 4) 


Here we'd want to pull the List out and replace it with an ID. Then create another table that shows which subnets belong to the list with that ID. (You can think of the ID as a pointer to the list---in the C/C++ sense.) So something like... 

network( 'ACTIVE', 'ID1', 'test-network', None, True, 
'570fe78a1dc54cffa053bd802984ede2', 'gre', False, False, 
'240ff9df-df35-43ae-9df5-27fae87f2492', 4) 

element('ID1', '4cef03d0-1d02-40bb-8c99-2f442aac6ab0') 
element('ID1', <another subnet if one existed>) 

The other thing to think about is whether we want 1 table with 10 columns or we want 10 tables with 2 columns each. In this example, we would have... 

network.status('net1', 'ACTIVE' ) 
network.subnets('net1', 'ID1') 
network.name('net1', 'test-network') 

The period is just another character in the tablename. Nothing fancy happening here. 

The ports example below would need a similar flattening. To handle dictionaries, I would use the dot-notation shown above. 
A single Neutron API call might populate several Congress tables. 



ports - tuple format 
keys (for reference) 

{'status','binding:host_id', 'name', 'allowed_address_pairs', 
'admin_state_up', 'network_id', 
'tenant_id', 'extra_dhcp_opts': [], 
'binding:vif_type', 'device_owner', 
'binding:capabilities', 'mac_address', 
'fixed_ips' , 'id', 'security_groups', 


('ACTIVE', 'havana', '', [], True, '240ff9df-df35-43ae-9df5-27fae87f2492', 
'570fe78a1dc54cffa053bd802984ede2', [], 'ovs', 'network:router_interface', 
{'port_filter': True}, 'fa:16:3e:ab:90:df', [{'subnet_id': 
'4cef03d0-1d02-40bb-8c99-2f442aac6ab0', 'ip_address': ''}], 
'0a2ce569-85a8-45ec-abb3-0d4b34ff69ba', [], '864e4acf-bf8e-4664-8cf7-ad5daa95681e') 


OpenStack-dev mailing list 
OpenStack-dev at lists.openstack.org 


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openstack.org/pipermail/openstack-dev/attachments/20140312/0a1481a4/attachment.html>

More information about the OpenStack-dev mailing list