Jump to: navigation, search

Difference between revisions of "NovaNetNeutronParity"

m
Line 1: Line 1:
[ out of date, to delete ]
 
 
 
[ out of date, updates for Juno in progress ]
 
[ out of date, updates for Juno in progress ]
== Documentation ==
+
== Parity ==
 
'''''One document, one mission.''' - author's note"
 
'''''One document, one mission.''' - author's note"
  
Line 47: Line 45:
 
==== Roles of Cores and Principals ====
 
==== Roles of Cores and Principals ====
  
Vigilence on the review queues is essential. Support for patches that enhance migration potential, performance, etc. must be given in a timely fashion as is intervention in deviations. Core involvement facilitates proper emphasis where required. REMEMBER however that anyone can -1.  
+
Vigilence on the review queues is essential. Support for patches that enhance migration potential, performance, etc. must be given in a timely fashion as is intervention in deviations. Core involvement facilitates proper emphasis where required. REMEMBER however that anyone can -1.. In short, the role of the the principal is to be actively involved in at least one related activity, safeguarding migration paths, stability, etc. and otherwise contributing to closing perceived feature and functionality gaps that are migration obstacles. Principals attend the biweekly parity meetings and remain in close contact with the other principals in the interim. Situations will arise where principals must work in closely directed efforts to rapidly overcome particular obstacles (geurilla tactics? hero sprints?). A principal need not be core, but the demands on overall knowledge and the complexity of some of the problem areas does imply a certain amount of experience.
 +
 
 +
For the purposes of continuity and progress, a principal should be in a positiion to commit to the parity effort for a minimum of a complete cycle.  
  
 
=== Approach to Organization ===
 
=== Approach to Organization ===
  
It is more important to be active in the principal areas than to have frequent formal meetings. Most principal areas are addressed under other guises weekly at the IRC meeting. A meeting every two weeks for the principals is worthwhile to start, accelerating or spreading out as the overall situation demands. Interoperability should continue as a weekly item in the neutron team meetings.
+
It is more important to be active in the principal areas than to have frequent formal meetings. Most principal areas are addressed under other guises weekly at the IRC meeting. A meeting every two weeks for the principals is worthwhile to start, accelerating or spreading out as the overall situation demands. Interoperability should continue as a weekly item in the neutron team meetings. Individuals wishing to contribute but are unable to commit to a protracted effort for a cycle are still valuable and all contributions are welcome. If a contributor steps in, the principals must effectively sponsor the effort, providing timely feedback, review support, etc. to make the most of these contributions. This implies a relationship between the number of non-principal and principal contributors, but it is unlikely that this would become a limitation beyond that of the core/non-core contributor ratio in the neutron project as a whole.
  
  

Revision as of 14:34, 4 March 2014

[ out of date, updates for Juno in progress ]

Parity

One document, one mission. - author's note"

Parity related efforts in Icehouse were primarily analysis, documentation, and tracking of related blueprints, bugs and reviews. Endeavors for Juno need to be very specific in order to get further. There are five areas that need serious focus:

  • quality and performance
  • gate performance
  • interoperability
  • test coverage
  • migration paths

Pragmatically, it is pointless to discuss this without considering resourcing. 5 areas require serious focus implies 5 principle resources at minimum. Additionally, a core should be either be one of these resources or, perhaps optimally, "in the loop". Besides facilitating reviews a core may be better positioned to intervene when a patch or effort risks breaking parity related functionality. Ideally, persons with a parity focus (or at least keeps it in mind) should be actively involved with all related efforts (e.g. DVR, HA, etc.). In short, parity is a sort of cross cutting concern and it needs sufficient representation across the relevant efforts to be achieved. Under-resourcing risks any practical progress requiring mulitple cycles.

While an overall objective of deprecating nova-networking may be an OpenStack goal, this is a distraction. The focus is to provide a superior option for OpenStack users to migrate to that need more flexibility, features performance and scalabilty.

What Needs To Be Done?

Quality and Performance

Specifically, the quality and performance of the OpenSource components of Neutron have to be beyond reasonable reproach.

  • Functionality must be reliable with well understood code paths and state transitions.
  • Configuration and use should be, if not precisely intuitive, be sensible within the eyes of the user. A simple deployment should not be unduly complex to configure. Complexity should mount in direct correlation to configuration.
  • Operations should have reasonable completion times and not be unduly related to number of concurrent operations (e.g. while "batching" is acceptable for some things, delay by design in provisioning is unaccepable)
  • Test coverage- the review queue for tests needs constant attention!
  • Real world perspective and vigilence - reasonable subjective understanding of real world use cases! The persons working on parity should be, besides extending and amplifying the tempest test suite need to really know how neutron is behaving in a realistic deployments. Even simple ones. Some things are not reasonable to put in tempest, but are still reasonable tests. How long does it take to assign floating IPs? What's the impact of multiple concurrent spawns? Can you break things by just doing a bunch of stuff using the client concurrently? This is just a matter of really knowing what the product is doing.

Gate Performance

Each parity team member should almost appear as though they are infra team members. Where the gate is wrong, the gate needs to be made right. This is not just a matter of making the tests right, but making sure that the infrastructure has what it needs to do what is needed!

Interoperability

Nova is both the client and the server with respect to neutron. The workings of these interactions cannot be ignored and have to be extremely well understood. This implies some straddling of the teams and getting to know the related goals and objectives of the active nova efforts. Active representation is essential.

(There are people who are currently straddling both, but we can use more!)

Test Coverage

mlavalle and rossella_s have been spearheading this effort to date. These efforts need to be considered as directly relevant.

Migration Paths

There is an overlap with interoperability and quality/performance and migration paths. This is effectively a cross-cutting concern that partly defines what aspects of quality and interoperability are specific to parity. That is, if it will never affect a migrating user, it is not likely a parity concern. Realistically, there are infinite possibilties of deployments so this it is impractical to empirically define all migration paths. Parity principals should be familiar with the nova network manager types, multi-host, L3 functionality, etc. so that they can conceptualize how a user may migrate. This is not a "nice to have". It is essential and also part of why overall neutron project awareness is important. If a design decision is made that explicitly and deliberately hinders a basic migration path, then it needs to be mitigated.

Roles of Cores and Principals

Vigilence on the review queues is essential. Support for patches that enhance migration potential, performance, etc. must be given in a timely fashion as is intervention in deviations. Core involvement facilitates proper emphasis where required. REMEMBER however that anyone can -1.. In short, the role of the the principal is to be actively involved in at least one related activity, safeguarding migration paths, stability, etc. and otherwise contributing to closing perceived feature and functionality gaps that are migration obstacles. Principals attend the biweekly parity meetings and remain in close contact with the other principals in the interim. Situations will arise where principals must work in closely directed efforts to rapidly overcome particular obstacles (geurilla tactics? hero sprints?). A principal need not be core, but the demands on overall knowledge and the complexity of some of the problem areas does imply a certain amount of experience.

For the purposes of continuity and progress, a principal should be in a positiion to commit to the parity effort for a minimum of a complete cycle.

Approach to Organization

It is more important to be active in the principal areas than to have frequent formal meetings. Most principal areas are addressed under other guises weekly at the IRC meeting. A meeting every two weeks for the principals is worthwhile to start, accelerating or spreading out as the overall situation demands. Interoperability should continue as a weekly item in the neutron team meetings. Individuals wishing to contribute but are unable to commit to a protracted effort for a cycle are still valuable and all contributions are welcome. If a contributor steps in, the principals must effectively sponsor the effort, providing timely feedback, review support, etc. to make the most of these contributions. This implies a relationship between the number of non-principal and principal contributors, but it is unlikely that this would become a limitation beyond that of the core/non-core contributor ratio in the neutron project as a whole.


>>>>>>>>>>>>>>>>>>>>>>>>>>>>



Background

Tasks

Quality of Default Implementation

Background

Tasks

bzs... don't you wish you could suck content from gerrit.

Performance

Default implementation (openvswitch)

Configuration

e.g. How long does it take for a floating IP to take effect

Communication

Routing
VLAN
GRE
VxLAN

Scalability

  • node counts
  • network counts
  • tenant counts
  • dhcp agents
  • l3 agents
  • multiple processes
  • metrics

HA Options

  • answer to the multi-host (fault isolation) question
  • real/better HA

API Integration

Neutron Methods Called from Integration Library

  • list_networks
  • show_port
  • list_security_groups
  • delete_port
  • show_port
  • list_extensions
  • show_quota
  • list_ports
  • list_subnets
  • update_port
  • create_port
  • update_floatingip
  • show_network
  • show_floatingip
  • create_floatingip
  • list_floatingips
  • delete_floatingip

Related Client Functions

<COL WIDTH=255> <COL WIDTH=391>

dns-create

Create a DNS entry for domain, name and ip.

dns-create-private-domain

Create the specified DNS domain.

dns-create-public-domain

Create the specified DNS domain.

dns-delete

Delete the specified DNS entry.

dns-delete-domain

Delete the specified DNS domain.

dns-domains

Print a list of available dns domains.

dns-list

List current DNS entries for domain and ip or domain and name.

Tenant Network Management

<COL WIDTH=323> <COL WIDTH=323>

fixed-ip-get

Get info on a fixed ip

fixed-ip-reserve

Reserve a fixed ip

fixed-ip-unreserve

Unreserve a fixed ip

remove-fixed-ip

Remove an IP address from a server.

remove-secgroup

Remove a Security Group from a server.

net

Show a network

net-create

Create a network

net-delete

Delete a network

net-list

List networks

network-associate-host

Associate host with network.

network-associate-project

Associate project with network.

network-create

Create a network.

network-disassociate

Disassociate host and/or project from the given network.

network-list

Print a list of available networks.

network-show

Show details about the given network.

reset-network

Reset network of an instance.



VM Network Configuration Management

<COL WIDTH=255> <COL WIDTH=391>

interface-attach

Attach a network interface to an instance.

interface-detach

Detach a network interface from an instance.

interface-list

List interfaces attached to an instance.

Floating IP Management

<COL WIDTH=323> <COL WIDTH=323>

add-fixed-ip

Add new IP address on a network to server.

add-floating-ip

Add a floating IP address to a server.

remove-floating-ip

Remove a floating IP address from a server.

floating-ip-bulk-create

Bulk create floating ips by range

floating-ip-bulk-delete

Bulk delete floating ips by range

floating-ip-bulk-list

List all floating ips

floating-ip-create

Allocate a floating IP for the current tenant.

floating-ip-delete

De-allocate a floating IP.

floating-ip-list

List floating ips for this tenant.

floating-ip-pool-list

List all floating ip pools.

Security Group Management

<COL WIDTH=255> <COL WIDTH=391>

add-secgroup

Add a Security Group to a server.

secgroup-add-group-rule

Add a source group rule to a security group.

secgroup-add-rule

Add a rule to a security group.

secgroup-create

Create a security group.

secgroup-delete

Delete a security group.

secgroup-delete-group-rule

Delete a source group rule from a security group.

secgroup-delete-rule

Delete a rule from a security group.

secgroup-list

List security groups for the current tenant.

secgroup-list-rules

List rules for a security group.

API Methods

<COL WIDTH=322> <COL WIDTH=322>

nova.network.rpcapi.NetworkAPI.migrate_instance_finish

nova.network.neutronv2.api.API.migrate_instance_finish

nova.network.rpcapi.NetworkAPI.deallocate_floating_ip

nova.network.neutronv2.api.API.release_floating_ip (?)

nova.network.rpcapi.NetworkAPI.get_instance_nw_info

nova.network.neutronv2.api.API.get_instance_nw_info

nova.network.rpcapi.NetworkAPI.get_fixed_ip_by_address

nova.network.neutronv2.api.API.get_fixed_ip_by_address

nova.network.rpcapi.NetworkAPI.deallocate_for_instance

nova.network.neutronv2.api.API.deallocate_for_instance

nova.network.rpcapi.NetworkAPI.delete_network

x

nova.network.rpcapi.NetworkAPI.get_floating_ips_by_fixed_address

nova.network.neutronv2.api.API.get_floating_ips_by_fixed_address

nova.network.rpcapi.NetworkAPI.get_fixed_ip

nova.network.neutronv2.api.API.get_fixed_ip

nova.network.rpcapi.NetworkAPI.lease_fixed_ip

nova.network.neutronv2.api.API.allocate_port_for_instance (?)

nova.network.rpcapi.NetworkAPI.disassociate_network

nova.network.neutronv2.api.API.disassociate (?)

nova.network.rpcapi.NetworkAPI.set_network_host

x

nova.network.rpcapi.NetworkAPI.add_network_to_project

nova.network.neutronv2.api.API.add_network_to_project

nova.network.rpcapi.NetworkAPI.create_public_dns_domain

nova.network.neutronv2.api.API.create_public_dns_domain

nova.network.rpcapi.NetworkAPI.get_instance_uuids_by_ip_filter

nova.network.neutronv2.api.API.get_instance_uuids_by_ip_filter

nova.network.rpcapi.NetworkAPI.setup_networks_on_host

nova.network.neutronv2.api.API.setup_networks_on_host

nova.network.rpcapi.NetworkAPI.associate

x

nova.network.rpcapi.NetworkAPI.get_all_networks

nova.network.neutronv2.api.API.list_ports (?)

nova.network.rpcapi.NetworkAPI.disassociate_floating_ip

nova.network.neutronv2.api.API.disassociate_floating_ip

nova.network.rpcapi.NetworkAPI.allocate_for_instance

nova.network.neutronv2.api.API.allocate_for_instance

nova.network.rpcapi.NetworkAPI.get_floating_ip_by_address

nova.network.neutronv2.api.API.get_floating_ip_by_address

nova.network.rpcapi.NetworkAPI.get_floating_ip

nova.network.neutronv2.api.API.get_floating_ip

nova.network.rpcapi.NetworkAPI.deallocate_fixed_ip

nova.network.neutronv2.api.API.deallocate_port_for_instance (?)

nova.network.rpcapi.NetworkAPI.add_fixed_ip_to_instance

nova.network.neutronv2.api.API.add_fixed_ip_to_instance

nova.network.rpcapi.NetworkAPI.create_networks

x

nova.network.rpcapi.NetworkAPI.create_private_dns_domain

nova.network.neutronv2.api.API.create_private_dns_domain

nova.network.rpcapi.NetworkAPI.migrate_instance_start

nova.network.neutronv2.api.API.migrate_instance_start

nova.network.rpcapi.NetworkAPI.get_floating_ips_by_project

nova.network.neutronv2.api.API.get_floating_ips_by_project

nova.network.rpcapi.NetworkAPI.rpc_setup_network_on_host

x

nova.network.rpcapi.NetworkAPI.get_vif_by_mac_address

nova.network.neutronv2.api.API.get_vif_by_mac_address

nova.network.rpcapi.NetworkAPI.get_vifs_by_instance

nova.network.neutronv2.api.API.get_vifs_by_instance

nova.network.rpcapi.NetworkAPI.associate_floating_ip

nova.network.neutronv2.api.API.associate_floating_ip

nova.network.rpcapi.NetworkAPI.get_instance_id_by_floating_address

nova.network.neutronv2.api.API.get_instance_id_by_floating_address

nova.network.rpcapi.NetworkAPI.get_dns_domains

nova.network.neutronv2.api.API.get_dns_domains

nova.network.rpcapi.NetworkAPI.remove_fixed_ip_from_instance

nova.network.neutronv2.api.API.remove_fixed_ip_from_instance

nova.network.rpcapi.NetworkAPI.delete_dns_domain

nova.network.neutronv2.api.API.delete_dns_domain

nova.network.rpcapi.NetworkAPI.release_fixed_ip

X nova.network.neutronv2.api.API.show_port

nova.network.rpcapi.NetworkAPI.get_floating_ip_pools

nova.network.neutronv2.api.API.get_floating_ip_pools

nova.network.rpcapi.NetworkAPI.update_dns

x

nova.network.rpcapi.NetworkAPI.modify_dns_entry

nova.network.neutronv2.api.API.modify_dns_entry

nova.network.rpcapi.NetworkAPI.get_network

nova.network.neutronv2.api.API.get

nova.network.rpcapi.NetworkAPI.get_dns_entries_by_name

nova.network.neutronv2.api.API.get_dns_entries_by_name

nova.network.rpcapi.NetworkAPI.allocate_floating_ip

nova.network.neutronv2.api.API.allocate_floating_ip

nova.network.rpcapi.NetworkAPI.get_dns_entries_by_address

nova.network.neutronv2.api.API.get_dns_entries_by_address

nova.network.rpcapi.NetworkAPI.add_dns_entry

nova.network.neutronv2.api.API.add_dns_entry

nova.network.rpcapi.NetworkAPI.validate_networks

nova.network.neutronv2.api.API.validate_networks

nova.network.rpcapi.NetworkAPI.delete_dns_entry

nova.network.neutronv2.api.API.delete_dns_entry



Security Group API Mapping



<COL WIDTH=322> <COL WIDTH=322>

nova.network.security_group.security_group_base.SecurityGroupBase.add_rules

nova.network.security_group.neutron_driver.SecurityGroupAPI.add_rules

nova.network.security_group.security_group_base.SecurityGroupBase.raise_not_found


nova.network.security_group.security_group_base.SecurityGroupBase.add_to_instance

nova.network.security_group.neutron_driver.SecurityGroupAPI.add_to_instance

nova.network.security_group.security_group_base.SecurityGroupBase.trigger_handler


nova.network.security_group.security_group_base.SecurityGroupBase.get_rule

nova.network.security_group.neutron_driver.SecurityGroupAPI.get_rule

nova.network.security_group.security_group_base.SecurityGroupBase.populate_security_groups

nova.network.security_group.neutron_driver.SecurityGroupAPI.populate_security_groups

nova.network.security_group.security_group_base.SecurityGroupBase.trigger_rules_refresh


nova.network.security_group.security_group_base.SecurityGroupBase.parse_cidr


nova.network.security_group.security_group_base.SecurityGroupBase.new_group_ingress_rule


nova.network.security_group.security_group_base.SecurityGroupBase.create_security_group

nova.network.security_group.neutron_driver.SecurityGroupAPI.create_security_group

nova.network.security_group.security_group_base.SecurityGroupBase.get_instance_security_groups

nova.network.security_group.neutron_driver.SecurityGroupAPI.get_instance_security_groups

nova.network.security_group.security_group_base.SecurityGroupBase.validate_property


nova.network.security_group.security_group_base.SecurityGroupBase.destroy

nova.network.security_group.neutron_driver.SecurityGroupAPI.destroy

nova.network.security_group.security_group_base.SecurityGroupBase.update_security_group

nova.network.security_group.neutron_driver.SecurityGroupAPI.update_security_group

nova.network.security_group.security_group_base.SecurityGroupBase.raise_over_quota


nova.network.security_group.security_group_base.SecurityGroupBase.raise_group_already_exists


nova.network.security_group.security_group_base.SecurityGroupBase.get

nova.network.security_group.neutron_driver.SecurityGroupAPI.get

nova.network.security_group.security_group_base.SecurityGroupBase.raise_invalid_property


nova.network.security_group.security_group_base.SecurityGroupBase.trigger_members_refresh


nova.network.security_group.security_group_base.SecurityGroupBase.raise_invalid_cidr


nova.network.security_group.security_group_base.SecurityGroupBase.new_cidr_ingress_rule


nova.network.security_group.security_group_base.SecurityGroupBase.remove_from_instance

nova.network.security_group.neutron_driver.SecurityGroupAPI.remove_from_instance

nova.network.security_group.security_group_base.SecurityGroupBase.ensure_default


nova.network.security_group.security_group_base.SecurityGroupBase.list

nova.network.security_group.neutron_driver.SecurityGroupAPI.list

nova.network.security_group.security_group_base.SecurityGroupBase.create_security_group_rule


nova.network.security_group.security_group_base.SecurityGroupBase.raise_invalid_group


nova.network.security_group.security_group_base.SecurityGroupBase.rule_exists


nova.network.security_group.security_group_base.SecurityGroupBase.remove_rules

nova.network.security_group.neutron_driver.SecurityGroupAPI.remove_rules


nova.network.security_group.neutron_driver.SecurityGroupAPI.get_instances_security_groups_bindings


nova.network.security_group.neutron_driver.SecurityGroupAPI.validate_id

Points to Look For

  • Throwing exceptions across the API boundary that differ than those thrown by alternate implementations may be a parity issue. (e.g. validate_networks in neutron throws in the presence of multiple networks, nova-network does not)
  • NotImplemented may be a significant parity issue. Even if addressed through alternate mechanisms, this is a testing /api binary compatible mismatch

Functional Parity

Network Manager Types

NovaNetNeutronRecipes

The FlatNetworkManager (thanks rkukura for spelling this out!):

(would this work for FlatDHCPNetworkManager as well?)

Multi-Host

Documentation

Background

Tasks

Quality of Default Implementation

Background

Tasks

bzs... don't you wish you could suck content from gerrit.

Performance

Default implementation (openvswitch)

Configuration

e.g. How long does it take for a floating IP to take effect

Communication

Routing
VLAN
GRE
VxLAN

Scalability

  • node counts
  • network counts
  • tenant counts
  • dhcp agents
  • l3 agents
  • multiple processes
  • metrics

HA Options

  • answer to the multi-host (fault isolation) question
  • real/better HA

API Integration

Neutron Methods Called from Integration Library

  • list_networks
  • show_port
  • list_security_groups
  • delete_port
  • show_port
  • list_extensions
  • show_quota
  • list_ports
  • list_subnets
  • update_port
  • create_port
  • update_floatingip
  • show_network
  • show_floatingip
  • create_floatingip
  • list_floatingips
  • delete_floatingip

Related Client Functions

<COL WIDTH=255> <COL WIDTH=391>

dns-create

Create a DNS entry for domain, name and ip.

dns-create-private-domain

Create the specified DNS domain.

dns-create-public-domain

Create the specified DNS domain.

dns-delete

Delete the specified DNS entry.

dns-delete-domain

Delete the specified DNS domain.

dns-domains

Print a list of available dns domains.

dns-list

List current DNS entries for domain and ip or domain and name.

Tenant Network Management

<COL WIDTH=323> <COL WIDTH=323>

fixed-ip-get

Get info on a fixed ip

fixed-ip-reserve

Reserve a fixed ip

fixed-ip-unreserve

Unreserve a fixed ip

remove-fixed-ip

Remove an IP address from a server.

remove-secgroup

Remove a Security Group from a server.

net

Show a network

net-create

Create a network

net-delete

Delete a network

net-list

List networks

network-associate-host

Associate host with network.

network-associate-project

Associate project with network.

network-create

Create a network.

network-disassociate

Disassociate host and/or project from the given network.

network-list

Print a list of available networks.

network-show

Show details about the given network.

reset-network

Reset network of an instance.



VM Network Configuration Management

<COL WIDTH=255> <COL WIDTH=391>

interface-attach

Attach a network interface to an instance.

interface-detach

Detach a network interface from an instance.

interface-list

List interfaces attached to an instance.

Floating IP Management

<COL WIDTH=323> <COL WIDTH=323>

add-fixed-ip

Add new IP address on a network to server.

add-floating-ip

Add a floating IP address to a server.

remove-floating-ip

Remove a floating IP address from a server.

floating-ip-bulk-create

Bulk create floating ips by range

floating-ip-bulk-delete

Bulk delete floating ips by range

floating-ip-bulk-list

List all floating ips

floating-ip-create

Allocate a floating IP for the current tenant.

floating-ip-delete

De-allocate a floating IP.

floating-ip-list

List floating ips for this tenant.

floating-ip-pool-list

List all floating ip pools.

Security Group Management

<COL WIDTH=255> <COL WIDTH=391>

add-secgroup

Add a Security Group to a server.

secgroup-add-group-rule

Add a source group rule to a security group.

secgroup-add-rule

Add a rule to a security group.

secgroup-create

Create a security group.

secgroup-delete

Delete a security group.

secgroup-delete-group-rule

Delete a source group rule from a security group.

secgroup-delete-rule

Delete a rule from a security group.

secgroup-list

List security groups for the current tenant.

secgroup-list-rules

List rules for a security group.

API Methods

<COL WIDTH=322> <COL WIDTH=322>

nova.network.rpcapi.NetworkAPI.migrate_instance_finish

nova.network.neutronv2.api.API.migrate_instance_finish

nova.network.rpcapi.NetworkAPI.deallocate_floating_ip

nova.network.neutronv2.api.API.release_floating_ip (?)

nova.network.rpcapi.NetworkAPI.get_instance_nw_info

nova.network.neutronv2.api.API.get_instance_nw_info

nova.network.rpcapi.NetworkAPI.get_fixed_ip_by_address

nova.network.neutronv2.api.API.get_fixed_ip_by_address

nova.network.rpcapi.NetworkAPI.deallocate_for_instance

nova.network.neutronv2.api.API.deallocate_for_instance

nova.network.rpcapi.NetworkAPI.delete_network

x

nova.network.rpcapi.NetworkAPI.get_floating_ips_by_fixed_address

nova.network.neutronv2.api.API.get_floating_ips_by_fixed_address

nova.network.rpcapi.NetworkAPI.get_fixed_ip

nova.network.neutronv2.api.API.get_fixed_ip

nova.network.rpcapi.NetworkAPI.lease_fixed_ip

nova.network.neutronv2.api.API.allocate_port_for_instance (?)

nova.network.rpcapi.NetworkAPI.disassociate_network

nova.network.neutronv2.api.API.disassociate (?)

nova.network.rpcapi.NetworkAPI.set_network_host

x

nova.network.rpcapi.NetworkAPI.add_network_to_project

nova.network.neutronv2.api.API.add_network_to_project

nova.network.rpcapi.NetworkAPI.create_public_dns_domain

nova.network.neutronv2.api.API.create_public_dns_domain

nova.network.rpcapi.NetworkAPI.get_instance_uuids_by_ip_filter

nova.network.neutronv2.api.API.get_instance_uuids_by_ip_filter

nova.network.rpcapi.NetworkAPI.setup_networks_on_host

nova.network.neutronv2.api.API.setup_networks_on_host

nova.network.rpcapi.NetworkAPI.associate

x

nova.network.rpcapi.NetworkAPI.get_all_networks

nova.network.neutronv2.api.API.list_ports (?)

nova.network.rpcapi.NetworkAPI.disassociate_floating_ip

nova.network.neutronv2.api.API.disassociate_floating_ip

nova.network.rpcapi.NetworkAPI.allocate_for_instance

nova.network.neutronv2.api.API.allocate_for_instance

nova.network.rpcapi.NetworkAPI.get_floating_ip_by_address

nova.network.neutronv2.api.API.get_floating_ip_by_address

nova.network.rpcapi.NetworkAPI.get_floating_ip

nova.network.neutronv2.api.API.get_floating_ip

nova.network.rpcapi.NetworkAPI.deallocate_fixed_ip

nova.network.neutronv2.api.API.deallocate_port_for_instance (?)

nova.network.rpcapi.NetworkAPI.add_fixed_ip_to_instance

nova.network.neutronv2.api.API.add_fixed_ip_to_instance

nova.network.rpcapi.NetworkAPI.create_networks

x

nova.network.rpcapi.NetworkAPI.create_private_dns_domain

nova.network.neutronv2.api.API.create_private_dns_domain

nova.network.rpcapi.NetworkAPI.migrate_instance_start

nova.network.neutronv2.api.API.migrate_instance_start

nova.network.rpcapi.NetworkAPI.get_floating_ips_by_project

nova.network.neutronv2.api.API.get_floating_ips_by_project

nova.network.rpcapi.NetworkAPI.rpc_setup_network_on_host

x

nova.network.rpcapi.NetworkAPI.get_vif_by_mac_address

nova.network.neutronv2.api.API.get_vif_by_mac_address

nova.network.rpcapi.NetworkAPI.get_vifs_by_instance

nova.network.neutronv2.api.API.get_vifs_by_instance

nova.network.rpcapi.NetworkAPI.associate_floating_ip

nova.network.neutronv2.api.API.associate_floating_ip

nova.network.rpcapi.NetworkAPI.get_instance_id_by_floating_address

nova.network.neutronv2.api.API.get_instance_id_by_floating_address

nova.network.rpcapi.NetworkAPI.get_dns_domains

nova.network.neutronv2.api.API.get_dns_domains

nova.network.rpcapi.NetworkAPI.remove_fixed_ip_from_instance

nova.network.neutronv2.api.API.remove_fixed_ip_from_instance

nova.network.rpcapi.NetworkAPI.delete_dns_domain

nova.network.neutronv2.api.API.delete_dns_domain

nova.network.rpcapi.NetworkAPI.release_fixed_ip

X nova.network.neutronv2.api.API.show_port

nova.network.rpcapi.NetworkAPI.get_floating_ip_pools

nova.network.neutronv2.api.API.get_floating_ip_pools

nova.network.rpcapi.NetworkAPI.update_dns

x

nova.network.rpcapi.NetworkAPI.modify_dns_entry

nova.network.neutronv2.api.API.modify_dns_entry

nova.network.rpcapi.NetworkAPI.get_network

nova.network.neutronv2.api.API.get

nova.network.rpcapi.NetworkAPI.get_dns_entries_by_name

nova.network.neutronv2.api.API.get_dns_entries_by_name

nova.network.rpcapi.NetworkAPI.allocate_floating_ip

nova.network.neutronv2.api.API.allocate_floating_ip

nova.network.rpcapi.NetworkAPI.get_dns_entries_by_address

nova.network.neutronv2.api.API.get_dns_entries_by_address

nova.network.rpcapi.NetworkAPI.add_dns_entry

nova.network.neutronv2.api.API.add_dns_entry

nova.network.rpcapi.NetworkAPI.validate_networks

nova.network.neutronv2.api.API.validate_networks

nova.network.rpcapi.NetworkAPI.delete_dns_entry

nova.network.neutronv2.api.API.delete_dns_entry



Security Group API Mapping



<COL WIDTH=322> <COL WIDTH=322>

nova.network.security_group.security_group_base.SecurityGroupBase.add_rules

nova.network.security_group.neutron_driver.SecurityGroupAPI.add_rules

nova.network.security_group.security_group_base.SecurityGroupBase.raise_not_found


nova.network.security_group.security_group_base.SecurityGroupBase.add_to_instance

nova.network.security_group.neutron_driver.SecurityGroupAPI.add_to_instance

nova.network.security_group.security_group_base.SecurityGroupBase.trigger_handler


nova.network.security_group.security_group_base.SecurityGroupBase.get_rule

nova.network.security_group.neutron_driver.SecurityGroupAPI.get_rule

nova.network.security_group.security_group_base.SecurityGroupBase.populate_security_groups

nova.network.security_group.neutron_driver.SecurityGroupAPI.populate_security_groups

nova.network.security_group.security_group_base.SecurityGroupBase.trigger_rules_refresh


nova.network.security_group.security_group_base.SecurityGroupBase.parse_cidr


nova.network.security_group.security_group_base.SecurityGroupBase.new_group_ingress_rule


nova.network.security_group.security_group_base.SecurityGroupBase.create_security_group

nova.network.security_group.neutron_driver.SecurityGroupAPI.create_security_group

nova.network.security_group.security_group_base.SecurityGroupBase.get_instance_security_groups

nova.network.security_group.neutron_driver.SecurityGroupAPI.get_instance_security_groups

nova.network.security_group.security_group_base.SecurityGroupBase.validate_property


nova.network.security_group.security_group_base.SecurityGroupBase.destroy

nova.network.security_group.neutron_driver.SecurityGroupAPI.destroy

nova.network.security_group.security_group_base.SecurityGroupBase.update_security_group

nova.network.security_group.neutron_driver.SecurityGroupAPI.update_security_group

nova.network.security_group.security_group_base.SecurityGroupBase.raise_over_quota


nova.network.security_group.security_group_base.SecurityGroupBase.raise_group_already_exists


nova.network.security_group.security_group_base.SecurityGroupBase.get

nova.network.security_group.neutron_driver.SecurityGroupAPI.get

nova.network.security_group.security_group_base.SecurityGroupBase.raise_invalid_property


nova.network.security_group.security_group_base.SecurityGroupBase.trigger_members_refresh


nova.network.security_group.security_group_base.SecurityGroupBase.raise_invalid_cidr


nova.network.security_group.security_group_base.SecurityGroupBase.new_cidr_ingress_rule


nova.network.security_group.security_group_base.SecurityGroupBase.remove_from_instance

nova.network.security_group.neutron_driver.SecurityGroupAPI.remove_from_instance

nova.network.security_group.security_group_base.SecurityGroupBase.ensure_default


nova.network.security_group.security_group_base.SecurityGroupBase.list

nova.network.security_group.neutron_driver.SecurityGroupAPI.list

nova.network.security_group.security_group_base.SecurityGroupBase.create_security_group_rule


nova.network.security_group.security_group_base.SecurityGroupBase.raise_invalid_group


nova.network.security_group.security_group_base.SecurityGroupBase.rule_exists


nova.network.security_group.security_group_base.SecurityGroupBase.remove_rules

nova.network.security_group.neutron_driver.SecurityGroupAPI.remove_rules


nova.network.security_group.neutron_driver.SecurityGroupAPI.get_instances_security_groups_bindings


nova.network.security_group.neutron_driver.SecurityGroupAPI.validate_id

Points to Look For

  • Throwing exceptions across the API boundary that differ than those thrown by alternate implementations may be a parity issue. (e.g. validate_networks in neutron throws in the presence of multiple networks, nova-network does not)
  • NotImplemented may be a significant parity issue. Even if addressed through alternate mechanisms, this is a testing /api binary compatible mismatch

Functional Parity

Network Manager Types

NovaNetNeutronRecipes

The FlatNetworkManager (thanks rkukura for spelling this out!):

(would this work for FlatDHCPNetworkManager as well?)

Multi-Host