'Basic network operation test
For a freshly-booted VM with an IP address ("port") on a given
network:
- the Tempest host can ping the IP address.  This implies, but
does not guarantee (see the ssh check that follows), that the
VM has been assigned the correct IP address and has
connectivity to the Tempest host.
- the Tempest host can perform key-based authentication to an
ssh server hosted at the IP address.  This check guarantees
that the IP address is associated with the target VM.
- the Tempest host can ssh into the VM via the IP address and
successfully execute the following:
- ping an external IP address, implying external connectivity.
- ping an external hostname, implying that dns is correctly
configured.
- ping an internal IP address, implying connectivity to another
VM on the same network.
- detach the floating-ip from the VM and verify that it becomes
unreachable
- associate detached floating ip to a new VM and verify connectivity.
VMs are created with unique keypair so connectivity also asserts that
floating IP is associated with the new VM instead of the old one
Verifies that floating IP status is updated correctly after each change'

@decorators.attr(type='smoke')
@decorators.idempotent_id('f323b3ba-82f8-4db7-8ea6-6a895869ec49')
@test.services('compute', 'network')
def test_network_basic_ops(self):

    self._setup_network_and_servers()
    self.check_public_network_connectivity(should_connect=True)
    self._check_network_internal_connectivity(network=self.network)
    self._check_network_external_connectivity()
    self._disassociate_floating_ips()
    self.check_public_network_connectivity(should_connect=False, msg='after    disassociate    floating    ip')
    self._reassociate_floating_ips()
    self.check_public_network_connectivity(should_connect=True, msg='after    re-associate    floating    ip')
