Source code for cfme.networks.provider

import attr

from navmazing import NavigateToSibling, NavigateToAttribute
from cached_property import cached_property

from cfme.common import WidgetasticTaggable
from cfme.common.provider import BaseProvider
from cfme.exceptions import ItemNotFound
from cfme.networks.balancer import BalancerCollection
from cfme.networks.cloud_network import CloudNetworkCollection
from cfme.networks.network_port import NetworkPortCollection
from cfme.networks.network_router import NetworkRouterCollection
from cfme.networks.security_group import SecurityGroupCollection
from cfme.networks.subnet import SubnetCollection
from cfme.networks.views import (
    NetworkProviderDetailsView,
    NetworkProviderView,
    OneProviderBalancerView,
    OneProviderCloudNetworkView,
    OneProviderNetworkPortView,
    OneProviderNetworkRouterView,
    OneProviderSecurityGroupView,
    OneProviderSubnetView
)
from cfme.utils import version
from cfme.modeling.base import BaseCollection, BaseEntity
from cfme.utils.appliance.implementations.ui import navigator, CFMENavigateStep, navigate_to
from cfme.utils.wait import wait_for


@attr.s
[docs]class NetworkProvider(BaseProvider, WidgetasticTaggable, BaseEntity): """ Class representing network provider in sdn Note: Network provider can be added to cfme database only automaticaly with cloud provider """ STATS_TO_MATCH = [] string_name = 'Networks' in_version = ('5.8', version.LATEST) page_name = 'networks' edit_page_suffix = '' detail_page_suffix = '' refresh_text = 'Refresh items and relationships' quad_name = None category = 'networks' provider_types = {} property_tuples = [] detail_page_suffix = 'provider_detail' db_types = ['NetworksManager'] _collections = { 'balancers': BalancerCollection, 'cloud_networks': CloudNetworkCollection, 'ports': NetworkPortCollection, 'routers': NetworkRouterCollection, 'subnets': SubnetCollection, 'security_groups': SecurityGroupCollection, } name = attr.ib() provider = attr.ib(default=None)
[docs] def refresh_provider_relationships(self, cancel=True): """ Refresh relationships of network provider """ view = navigate_to(self, 'Details') view.toolbar.configuration.item_select('Refresh Relationships and Power States', handle_alert=not cancel)
[docs] def delete(self, cancel=True): """ Deletes a network provider from CFME """ view = navigate_to(self, 'Details') wait_for(lambda: view.toolbar.configuration.item_enabled('Remove this Network Provider'), num_sec=10) view.toolbar.configuration.item_select('Remove this Network Provider', handle_alert=not cancel)
@property def valid_credentials_state(self): """ Checks whether credentials are valid """ view = navigate_to(self, 'Details') cred_state = view.entities.status.get_text_of('Default Credentials') return cred_state == "Valid" @property def exists(self): try: navigate_to(self, 'Details') except ItemNotFound: return False else: return True @cached_property def balancers(self): return self.collections.balancers @cached_property def subnets(self): return self.collections.subnets @cached_property def networks(self): return self.collections.cloud_networks @cached_property def ports(self): return self.collections.ports @cached_property def routers(self): return self.collections.routers @cached_property def security_groups(self): return self.collections.security_groups
@attr.s
[docs]class NetworkProviderCollection(BaseCollection): """Collection object for NetworkProvider object Note: Network providers object are not implemented in mgmt """ ENTITY = NetworkProvider
[docs] def all(self): view = navigate_to(self, 'All') list_networks = view.entities.get_all(surf_pages=True) return [self.instantiate(name=p.name) for p in list_networks]
@navigator.register(NetworkProviderCollection, 'All')
[docs]class All(CFMENavigateStep): VIEW = NetworkProviderView prerequisite = NavigateToAttribute('appliance.server', 'LoggedIn')
[docs] def step(self): self.prerequisite_view.navigation.select('Networks', 'Providers')
@navigator.register(NetworkProvider, 'Details')
[docs]class Details(CFMENavigateStep): prerequisite = NavigateToAttribute('parent', 'All') VIEW = NetworkProviderDetailsView
[docs] def step(self): self.prerequisite_view.entities.get_entity(by_name=self.obj.name).click()
@navigator.register(NetworkProvider, 'CloudSubnets')
[docs]class OpenCloudSubnets(CFMENavigateStep): prerequisite = NavigateToSibling('Details') VIEW = OneProviderSubnetView
[docs] def step(self): self.prerequisite_view.entities.relationships.click_at('Cloud Subnets')
@navigator.register(NetworkProvider, 'CloudNetworks')
[docs]class OpenCloudNetworks(CFMENavigateStep): prerequisite = NavigateToSibling('Details') VIEW = OneProviderCloudNetworkView
[docs] def step(self): self.prerequisite_view.entities.relationships.click_at('Cloud Networks')
@navigator.register(NetworkProvider, 'NetworkRouters')
[docs]class OpenNetworkRouters(CFMENavigateStep): prerequisite = NavigateToSibling('Details') VIEW = OneProviderNetworkRouterView
[docs] def step(self): self.prerequisite_view.entities.relationships.click_at('Network Routers')
@navigator.register(NetworkProvider, 'SecurityGroups')
[docs]class OpenSecurityGroups(CFMENavigateStep): prerequisite = NavigateToSibling('Details') VIEW = OneProviderSecurityGroupView
[docs] def step(self): self.prerequisite_view.entities.relationships.click_at('Security Groups')
@navigator.register(NetworkProvider, 'FloatingIPs')
[docs]class OpenFloatingIPs(CFMENavigateStep): prerequisite = NavigateToSibling('Details')
[docs] def step(self): self.prerequisite_view.entities.relationships.click_at('Floating IPs')
@navigator.register(NetworkProvider, 'NetworkPorts')
[docs]class OpenNetworkPorts(CFMENavigateStep): prerequisite = NavigateToSibling('Details') VIEW = OneProviderNetworkPortView
[docs] def step(self): self.prerequisite_view.entities.relationships.click_at('Network Ports')
@navigator.register(NetworkProvider, 'LoadBalancers')
[docs]class OpenNetworkBalancers(CFMENavigateStep): prerequisite = NavigateToSibling('Details') VIEW = OneProviderBalancerView
[docs] def step(self): self.prerequisite_view.entities.relationships.click_at('Load Balancers')
@navigator.register(NetworkProvider, 'TopologyFromDetails')
[docs]class OpenTopologyFromDetails(CFMENavigateStep): prerequisite = NavigateToSibling('Details')
[docs] def step(self): self.prerequisite_view.entities.overview.click_at('Topology')