def process(self, event):
        event_type = event['type']
        kind = event['object'].get('kind')
        name = event['object']['metadata'].get('name')
        ns_id = event['object']['metadata'].get('uid')
        labels = dict(event['object']['metadata'].get('labels', {}))
        print("%s - Got %s %s %s:%s"
              %(self._name, event_type, kind, name, ns_id))
        self._logger.debug("%s - Got %s %s %s:%s"
                           %(self._name, event_type, kind, name, ns_id))

        if event['type'] == 'ADDED' or event['type'] == 'MODIFIED':

            # Process label add.
            # We implicitly add a namespace label as well.
            labels['namespace'] = name
            self._labels.process(ns_id, labels)

            self.vnc_namespace_add(ns_id, name, labels)
            self.add_namespace_security_policy(ns_id)

            if event['type'] == 'MODIFIED' and self._get_namespace(name):
                # If labels on this namespace has changed, update the pods
                # on this namespace with current namespace labels.
                added_labels, removed_labels =\
                    self._get_namespace(name).get_changed_labels()
                namespace_pods = PodKM.get_namespace_pods(name)

                # Remove the old label first.
                #
                # 'Remove' must be done before 'Add', to account for the case
                # where, what got changed was the value for an existing label.
                # This is especially important as, remove label code only
                # considers the key while deleting the label.
                #
                # If Add is done before Remove, then the updated label that
                # was set by 'Add', will be deleted by the 'Remove' call.
                if removed_labels:
                    VncPod.remove_labels(namespace_pods, removed_labels)
                if added_labels:
                    VncPod.add_labels(namespace_pods, added_labels)

        elif event['type'] == 'DELETED':
            self.delete_namespace_security_policy(name)
            # Delete label deletes for this namespace.
            self._labels.process(ns_id)
            self.vnc_namespace_delete(ns_id, name)

        else:
            self._logger.warning(
                'Unknown event type: "{}" Ignoring'.format(event['type']))
Beispiel #2
0
    def process(self, event):
        event_type = event['type']
        kind = event['object'].get('kind')
        name = event['object']['metadata'].get('name')
        ns_id = event['object']['metadata'].get('uid')
        labels = dict(event['object']['metadata'].get('labels', {}))
        print("%s - Got %s %s %s:%s" %
              (self._name, event_type, kind, name, ns_id))
        self._logger.debug("%s - Got %s %s %s:%s" %
                           (self._name, event_type, kind, name, ns_id))

        if event['type'] == 'ADDED' or event['type'] == 'MODIFIED':

            # Process label add.
            # We implicitly add a namespace label as well.
            labels['namespace'] = name
            self._labels.process(ns_id, labels)

            self.vnc_namespace_add(ns_id, name, labels)
            self.add_namespace_security_policy(ns_id)

            if event['type'] == 'MODIFIED' and self._get_namespace(name):
                # If labels on this namespace has changed, update the pods
                # on this namespace with current namespace labels.
                added_labels, removed_labels =\
                    self._get_namespace(name).get_changed_labels()
                namespace_pods = PodKM.get_namespace_pods(name)

                # Remove the old label first.
                #
                # 'Remove' must be done before 'Add', to account for the case
                # where, what got changed was the value for an existing label.
                # This is especially important as, remove label code only
                # considers the key while deleting the label.
                #
                # If Add is done before Remove, then the updated label that
                # was set by 'Add', will be deleted by the 'Remove' call.
                if removed_labels:
                    VncPod.remove_labels(namespace_pods, removed_labels)
                if added_labels:
                    VncPod.add_labels(namespace_pods, added_labels)

        elif event['type'] == 'DELETED':
            self.delete_namespace_security_policy(name)
            # Delete label deletes for this namespace.
            self._labels.process(ns_id)
            self.vnc_namespace_delete(ns_id, name)

        else:
            self._logger.warning('Unknown event type: "{}" Ignoring'.format(
                event['type']))
Beispiel #3
0
    def process(self, event):
        event_type = event['type']
        kind = event['object'].get('kind')
        name = event['object']['metadata'].get('name')
        ns_id = event['object']['metadata'].get('uid')
        labels = dict(event['object']['metadata'].get('labels', {}))
        print("%s - Got %s %s %s:%s" %
              (self._name, event_type, kind, name, ns_id))
        self._logger.debug("%s - Got %s %s %s:%s" %
                           (self._name, event_type, kind, name, ns_id))

        if event['type'] == 'ADDED' or event['type'] == 'MODIFIED':

            # Process label add.
            # We implicitly add a namespace label as well.
            labels['namespace'] = name
            self._labels.process(ns_id, labels)

            self.vnc_namespace_add(ns_id, name, labels)
            self.add_namespace_security_policy(ns_id)

            if event['type'] == 'MODIFIED' and self._get_namespace(name):
                # If labels on this namespace has changed, update the pods
                # on this namespace with current namespace labels.
                added_labels, removed_labels =\
                    self._get_namespace(name).get_changed_labels()
                namespace_pods = PodKM.get_namespace_pods(name)
                if added_labels:
                    VncPod.add_labels(namespace_pods, added_labels)
                if removed_labels:
                    VncPod.remove_labels(namespace_pods, removed_labels)

        elif event['type'] == 'DELETED':
            self.delete_namespace_security_policy(name)
            self.vnc_namespace_delete(ns_id, name)
            # Delete label deletes for this namespace.
            self._labels.process(ns_id)

        else:
            self._logger.warning('Unknown event type: "{}" Ignoring'.format(
                event['type']))