def test_extract_pod_annotation(self):
     vif_obj = objects.vif.VIFBase()
     ps = vif.PodState(default_vif=vif_obj)
     d = ps.obj_to_primitive()
     result = utils.extract_pod_annotation(d)
     self.assertEqual(vif.PodState.obj_name(), result.obj_name())
     self.assertEqual(vif_obj, result.default_vif)
Exemple #2
0
def get_pod_state(pod):
    try:
        annotations = pod['metadata']['annotations']
        state_annotation = annotations[constants.K8S_ANNOTATION_VIF]
    except KeyError:
        return None
    state_annotation = jsonutils.loads(state_annotation)
    state = utils.extract_pod_annotation(state_annotation)
    return state
Exemple #3
0
 def _get_pod_state(self, pod):
     # TODO(ivc): same as '_set_vif'
     try:
         annotations = pod['metadata']['annotations']
         state_annotation = annotations[constants.K8S_ANNOTATION_VIF]
     except KeyError:
         return None
     state_annotation = jsonutils.loads(state_annotation)
     state = utils.extract_pod_annotation(state_annotation)
     LOG.debug("Got VIFs from annotation: %r", state)
     return state
Exemple #4
0
 def _get_vifs(self, pod):
     # TODO(ivc): same as VIFHandler._get_vif
     try:
         annotations = pod['metadata']['annotations']
         state_annotation = annotations[k_const.K8S_ANNOTATION_VIF]
     except KeyError:
         return {}
     state_annotation = jsonutils.loads(state_annotation)
     state = utils.extract_pod_annotation(state_annotation)
     vifs_dict = state.vifs
     LOG.debug("Got VIFs from annotation: %r", vifs_dict)
     return vifs_dict
Exemple #5
0
 def _get_in_use_ports(self):
     kubernetes = clients.get_kubernetes_client()
     in_use_ports = []
     running_pods = kubernetes.get(constants.K8S_API_BASE + '/pods')
     for pod in running_pods['items']:
         try:
             annotations = jsonutils.loads(pod['metadata']['annotations'][
                 constants.K8S_ANNOTATION_VIF])
             pod_state = utils.extract_pod_annotation(annotations)
         except KeyError:
             LOG.debug("Skipping pod without kuryr VIF annotation: %s", pod)
         else:
             for vif in pod_state.vifs.values():
                 in_use_ports.append(vif.id)
     return in_use_ports
Exemple #6
0
 def _get_pod_details(self, selflink):
     k8s = clients.get_kubernetes_client()
     pod = k8s.get(selflink)
     annotations = pod['metadata']['annotations']
     resource_version = pod['metadata']['resourceVersion']
     labels = pod['metadata'].get('labels')
     try:
         annotations = annotations[constants.K8S_ANNOTATION_VIF]
         state_annotation = jsonutils.loads(annotations)
         state = utils.extract_pod_annotation(state_annotation)
     except KeyError:
         LOG.exception("No annotations %s", constants.K8S_ANNOTATION_VIF)
         raise
     except ValueError:
         LOG.exception("Unable encode annotations")
         raise
     LOG.info("Got VIFs from annotation: %s", state.vifs)
     return state, labels, resource_version