Source code for cfme.networks.network_port

import attr
from navmazing import NavigateToAttribute

from cfme.common import Taggable
from cfme.exceptions import ItemNotFound
from cfme.modeling.base import BaseCollection, BaseEntity, parent_of_type
from cfme.networks.views import NetworkPortDetailsView, NetworkPortView
from cfme.utils import version
from cfme.utils.appliance.implementations.ui import navigator, CFMENavigateStep, navigate_to


@attr.s
[docs]class NetworkPort(Taggable, BaseEntity): """Class representing network ports in sdn""" in_version = ('5.8', version.LATEST) category = "networks" string_name = 'NetworkPort' quad_name = None db_types = ['CloudNetworkPort'] name = attr.ib() @property def mac_address(self): """ Returns mac adress (string) of the port """ view = navigate_to(self, 'Details') return view.entities.properties.get_text_of('Mac address') @property def network_type(self): view = navigate_to(self, 'Details') return view.entities.properties.get_text_of('Type') @property def floating_ips(self): """ Returns floating ips (string) of the port """ view = navigate_to(self, 'Details') return view.entities.properties.get_text_of('Floating ip addresses') @property def fixed_ips(self): """ Returns fixed ips (string) of the port """ view = navigate_to(self, 'Details') return view.entities.properties.get_text_of('Fixed ip addresses') @property def provider(self): from cfme.networks.provider import NetworkProvider return parent_of_type(self, NetworkProvider) @property def network_provider(self): """ Returns network provider """ # port collection contains reference to provider if self.provider: return self.provider # otherwise get provider name from ui view = navigate_to(self, 'Details') try: prov_name = view.entities.relationships.get_text_of("Network Manager") collection = self.appliance.collections.network_provider return collection.instantiate(name=prov_name) except ItemNotFound: # BZ 1480577 return None
@attr.s
[docs]class NetworkPortCollection(BaseCollection): """ Collection object for NetworkPort object Note: Network providers object are not implemented in mgmt """ ENTITY = NetworkPort
[docs] def all(self): if self.filters.get('parent'): view = navigate_to(self.filters.get('parent'), 'NetworkPorts') else: view = navigate_to(self, 'All') list_networks_obj = view.entities.get_all(surf_pages=True) return [self.instantiate(name=p.name) for p in list_networks_obj]
@navigator.register(NetworkPortCollection, 'All')
[docs]class All(CFMENavigateStep): VIEW = NetworkPortView prerequisite = NavigateToAttribute('appliance.server', 'LoggedIn')
[docs] def step(self): self.prerequisite_view.navigation.select('Networks', 'Network Ports')
[docs] def resetter(self): """Reset the view""" self.view.browser.refresh()
@navigator.register(NetworkPort, 'Details')
[docs]class Details(CFMENavigateStep): prerequisite = NavigateToAttribute('parent', 'All') VIEW = NetworkPortDetailsView
[docs] def step(self): self.prerequisite_view.entities.get_entity(name=self.obj.name).click()