def _get_namespaces(self, namespace_selector, namespace=None):
     matching_namespaces = []
     if not namespace_selector and namespace:
         matching_namespaces.append(self.kubernetes.get(
             '{}/namespaces/{}'.format(constants.K8S_API_BASE, namespace)))
     else:
         matching_namespaces.extend(driver_utils.get_namespaces(
             namespace_selector).get('items'))
     return matching_namespaces
 def _get_pods(self, pod_selector, namespace=None, namespace_selector=None):
     matching_pods = {"items": []}
     if namespace_selector:
         matching_namespaces = driver_utils.get_namespaces(
             namespace_selector)
         for ns in matching_namespaces.get('items'):
             matching_pods = driver_utils.get_pods(pod_selector,
                                                   ns['metadata']['name'])
     else:
         matching_pods = driver_utils.get_pods(pod_selector, namespace)
     return matching_pods.get('items')
 def _get_namespaces_cidr(self, namespace_selector, namespace=None):
     cidrs = []
     if not namespace_selector and namespace:
         ns = self.kubernetes.get(
             '{}/namespaces/{}'.format(constants.K8S_API_BASE, namespace))
         ns_cidr = driver_utils.get_namespace_subnet_cidr(ns)
         cidrs.append({'cidr': ns_cidr, 'namespace': namespace})
     else:
         matching_namespaces = driver_utils.get_namespaces(
             namespace_selector)
         for ns in matching_namespaces.get('items'):
             # NOTE(ltomasbo): This requires the namespace handler to be
             # also enabled
             ns_cidr = driver_utils.get_namespace_subnet_cidr(ns)
             ns_name = ns['metadata']['name']
             cidrs.append({'cidr': ns_cidr, 'namespace': ns_name})
     return cidrs
 def _get_pods_ips(self, pod_selector, namespace=None,
                   namespace_selector=None):
     ips = []
     matching_pods = {"items": []}
     if namespace_selector:
         matching_namespaces = driver_utils.get_namespaces(
             namespace_selector)
         for ns in matching_namespaces.get('items'):
             matching_pods = driver_utils.get_pods(pod_selector,
                                                   ns['metadata']['name'])
     else:
         matching_pods = driver_utils.get_pods(pod_selector, namespace)
     for pod in matching_pods.get('items'):
         if pod['status'].get('podIP'):
             pod_ip = pod['status']['podIP']
             ns = pod['metadata']['namespace']
             ips.append({'cidr': pod_ip, 'namespace': ns})
     return ips