Mr. Gong, we've got a lot of work going on in this area and it's rapidly changing at the moment. We've already written a new network manager that we use and I'm in the process of removing the network manager piece all together when using nova with quantum. This work is planned for upstream as a part of Folsom.
A few (dated) branches you can peruse: https://github.com/jkoelker/nova/tree/the_deuce https://github.com/tr3buchet/nova/tree/quantum_api As to your question about the disparity, quantum isn't written specific to nova. You can see how we've handled it in the above branches. Let me know if you have any further questions. -tr3buchet On Tue, May 29, 2012 at 3:35 AM, Yong Sheng Gong <gong...@cn.ibm.com> wrote: > > Hi, > We have planned to replace quantum network manager in nova project with > quantum api v2.0 calls. > I have found that nova will call following 34 network api methods: > class API(base.Base): > # called in compute manager > def get_instance_nw_info(self, context, instance): > pass > > def add_fixed_ip_to_instance(self, context, instance, network_id): > # libvirt does not support > pass > > def remove_fixed_ip_from_instance(self, context, instance, address): > # libvirt does not support > """Removes a fixed ip from instance from specified network.""" > > args = {'instance_id': instance['id'], > 'host': instance['host'], > 'address': address} > pass > > def deallocate_for_instance(self, context, instance, **kwargs): > """Deallocates all network structures related to instance.""" > args = kwargs > args['instance_id'] = instance['id'] > args['project_id'] = instance['project_id'] > args['host'] = instance['host'] > pass > > def allocate_for_instance(self, context, instance, **kwargs): > pass > > def setup_networks_on_host(self, context, instance, host=None, > teardown=False): > # setup dhcp info on host > pass > > > > # called in floating_ips controller > def get_fixed_ip(self, context, id): > #fixed_ip_id > pass > > def get_floating_ip(self, context, id): > pass > > def get_floating_ips_by_project(self, context): > pass > > def get_floating_ip_by_address(self, context, address): > pass > def allocate_floating_ip(self, context, pool=None): > pass > > def release_floating_ip(self, context, address, > affect_auto_assigned=False): > pass > def disassociate_floating_ip(self, context, address, > affect_auto_assigned=False): > pass > > #called in FloatingIPPool > def get_floating_ip_pools(self, context): > pass > > #called in get meta handler > def get_fixed_ip_by_address(self, context, address): > pass > > #called in FloatingIPDNSEntryController > def get_dns_entries_by_name(self): > pass > > def get_dns_entries_by_address(self): > pass > > def add_dns_entry(self): > pass > > def modify_dns_entry(self): > pass > > def delete_dns_entry(self): > pass > > #called in FloatingIPDNSDomainController > def get_dns_domains(self): > pass > > def create_private_dns_domain(self): > pass > def create_public_dns_domain(self): > pass > def delete_dns_domain(self): > pass > > > #called in network controller > def get_all(self, context): > pass > > def get(self, context, network_uuid): > pass > > def delete(self, context, network_uuid): > pass > > def disassociate(self, context, network_uuid): > pass > #called in compute api > def validate_networks(self, context, requested_networks): > pass > def get_instance_uuids_by_ip_filter(self, context, filters): > pass > def associate_floating_ip(self, context, floating_address, > fixed_address, > > affect_auto_assigned=False): > pass > # called in ServerVirtualInterfaceController > def get_vifs_by_instance(self, context, instance): > pass > > #unknown > def add_network_to_project(self, context, project_id): > pass > def get_vif_by_mac_address(self, context, mac_address): > pass > def get_floating_ips_by_fixed_address(self, context, fixed_address): > pass > > There are some called in compute manager, some called in compute api, > most called in controllers under nova/api/openstack/compute/contrib. > Some even are seemingly not called at all. > > Our current quantum api is much finer grained compared to the api needed > by nova. There seems to be a disparity between them. For example, nova does > not need to add a port to a network, plugin an interface api at all. It > just needs coarse grained api such as allocate_for_instance and > deallocate_for_instance > etc. > > How do we implement quantum api v2.0? It is fine grained or coarse > grained. > > Any ideas? > Thanks > Yong Sheng Gong > > -- > Mailing list: https://launchpad.net/~netstack > Post to : netstack@lists.launchpad.net > Unsubscribe : https://launchpad.net/~netstack > More help : https://help.launchpad.net/ListHelp > >
-- Mailing list: https://launchpad.net/~netstack Post to : netstack@lists.launchpad.net Unsubscribe : https://launchpad.net/~netstack More help : https://help.launchpad.net/ListHelp