NovaNetNeutronParity
Documentation
Background
Tasks
Quality of Default Implementation
Background
- Icehouse Summit QA Neutron session etherpad
- Icehouse Summit on testing with mulitple nodes
- Icehouse Summit on negative testing
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
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
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
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
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
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
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
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
The FlatNetworkManager (thanks rkukura for spelling this out!):
(would this work for FlatDHCPNetworkManager as well?)
Multi-Host
- Icehouse summit Distributed Router (possible multi-host approach)