)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":19159,"name":"Ifat Afek","email":"ifat.afek@nokia.com","username":"ifat_afek"},"change_message_id":"aa96d43241b9eadf3b163fdf2307abc1ad1c5a7c","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Idan Kinory \u003cidan.kinory@nokia.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2018-06-03 12:23:58 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Kubernetes datasource"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Implements: k8s-datasource"},{"line_number":10,"context_line":"Change-Id: I47057bac9cbac5d856fed74adb24583d2b090d06"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"5f7c97a3_dfbaf76c","line":7,"range":{"start_line":7,"start_character":0,"end_line":7,"end_character":21},"updated":"2018-06-05 09:47:09.000000000","message":"Please add in the comment that currently we support only K8s that runs on top of Nova","commit_id":"98e07ea330291c54320f416a2ff5af8e54fb08fc"}],"vitrage/datasources/__init__.py":[{"author":{"_account_id":19184,"name":"Idan Hefetz","email":"idan.hefetz@nokia.com","username":"idan-hefetz"},"change_message_id":"af30ee6e4cfff68b98e016bae9bb777df7fbe92b","unresolved":false,"context_lines":[{"line_number":26,"context_line":""},{"line_number":27,"context_line":"# Register options for the service"},{"line_number":28,"context_line":"OPTS \u003d ["},{"line_number":29,"context_line":"    cfg.ListOpt(\u0027types\u0027,"},{"line_number":30,"context_line":"                default\u003d[NOVA_HOST_DATASOURCE,"},{"line_number":31,"context_line":"                         NOVA_INSTANCE_DATASOURCE,"},{"line_number":32,"context_line":"                         NOVA_ZONE_DATASOURCE,"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_d59c66c1","line":29,"updated":"2018-05-31 12:57:26.000000000","message":"IMO it should be a default datasource","commit_id":"024ecc613516d54fab04dba510b8564e6a695a89"},{"author":{"_account_id":26095,"name":"Idan Kinory","email":"idan.kinory@nokia.com","username":"idankin"},"change_message_id":"eef8c0ae171e669c1f679f149f27aac05fbd9d62","unresolved":false,"context_lines":[{"line_number":26,"context_line":""},{"line_number":27,"context_line":"# Register options for the service"},{"line_number":28,"context_line":"OPTS \u003d ["},{"line_number":29,"context_line":"    cfg.ListOpt(\u0027types\u0027,"},{"line_number":30,"context_line":"                default\u003d[NOVA_HOST_DATASOURCE,"},{"line_number":31,"context_line":"                         NOVA_INSTANCE_DATASOURCE,"},{"line_number":32,"context_line":"                         NOVA_ZONE_DATASOURCE,"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_b084580c","line":29,"in_reply_to":"5f7c97a3_d59c66c1","updated":"2018-06-03 12:25:13.000000000","message":"Done","commit_id":"024ecc613516d54fab04dba510b8564e6a695a89"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"e71a2debac9928a6347d8dc1b3e939e19e047581","unresolved":false,"context_lines":[{"line_number":32,"context_line":"                         CINDER_VOLUME_DATASOURCE,"},{"line_number":33,"context_line":"                         NEUTRON_PORT_DATASOURCE,"},{"line_number":34,"context_line":"                         NEUTRON_NETWORK_DATASOURCE,"},{"line_number":35,"context_line":"                         ],"},{"line_number":36,"context_line":"                help\u003d\u0027Names of supported data sources\u0027),"},{"line_number":37,"context_line":"    cfg.ListOpt(\u0027path\u0027,"},{"line_number":38,"context_line":"                default\u003d[\u0027vitrage.datasources\u0027],"}],"source_content_type":"text/x-python","patch_set":2,"id":"5f7c97a3_3e0c68eb","line":35,"updated":"2018-06-04 08:15:55.000000000","message":"Do we need to add k8s here?","commit_id":"98e07ea330291c54320f416a2ff5af8e54fb08fc"},{"author":{"_account_id":19159,"name":"Ifat Afek","email":"ifat.afek@nokia.com","username":"ifat_afek"},"change_message_id":"aa96d43241b9eadf3b163fdf2307abc1ad1c5a7c","unresolved":false,"context_lines":[{"line_number":32,"context_line":"                         CINDER_VOLUME_DATASOURCE,"},{"line_number":33,"context_line":"                         NEUTRON_PORT_DATASOURCE,"},{"line_number":34,"context_line":"                         NEUTRON_NETWORK_DATASOURCE,"},{"line_number":35,"context_line":"                         ],"},{"line_number":36,"context_line":"                help\u003d\u0027Names of supported data sources\u0027),"},{"line_number":37,"context_line":"    cfg.ListOpt(\u0027path\u0027,"},{"line_number":38,"context_line":"                default\u003d[\u0027vitrage.datasources\u0027],"}],"source_content_type":"text/x-python","patch_set":2,"id":"5f7c97a3_5f7b47bd","line":35,"in_reply_to":"5f7c97a3_3e0c68eb","updated":"2018-06-05 09:47:09.000000000","message":"I don\u0027t think so. This list sets the default datasources to be used, and is usually overwritten in /etc/vitrage/vitrage.conf. K8s datasource should not be enabled by default since k8s is not always used.","commit_id":"98e07ea330291c54320f416a2ff5af8e54fb08fc"}],"vitrage/datasources/kubernetes/__init__.py":[{"author":{"_account_id":19184,"name":"Idan Hefetz","email":"idan.hefetz@nokia.com","username":"idan-hefetz"},"change_message_id":"af30ee6e4cfff68b98e016bae9bb777df7fbe92b","unresolved":false,"context_lines":[{"line_number":30,"context_line":"               help\u003d\u0027Kubernetes driver class path\u0027,"},{"line_number":31,"context_line":"               required\u003dTrue),"},{"line_number":32,"context_line":"    cfg.StrOpt(DSOpts.UPDATE_METHOD,"},{"line_number":33,"context_line":"               default\u003dUpdateMethod.NONE,"},{"line_number":34,"context_line":"               help\u003d\u0027None: updates only via Vitrage periodic snapshots.\u0027"},{"line_number":35,"context_line":"                    \u0027Pull: updates every [changes_interval] seconds.\u0027"},{"line_number":36,"context_line":"                    \u0027Push: updates by getting notifications from the\u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_b5a52a05","line":33,"range":{"start_line":33,"start_character":23,"end_line":33,"end_character":40},"updated":"2018-05-31 12:57:26.000000000","message":"No updates?","commit_id":"024ecc613516d54fab04dba510b8564e6a695a89"},{"author":{"_account_id":26095,"name":"Idan Kinory","email":"idan.kinory@nokia.com","username":"idankin"},"change_message_id":"eef8c0ae171e669c1f679f149f27aac05fbd9d62","unresolved":false,"context_lines":[{"line_number":30,"context_line":"               help\u003d\u0027Kubernetes driver class path\u0027,"},{"line_number":31,"context_line":"               required\u003dTrue),"},{"line_number":32,"context_line":"    cfg.StrOpt(DSOpts.UPDATE_METHOD,"},{"line_number":33,"context_line":"               default\u003dUpdateMethod.NONE,"},{"line_number":34,"context_line":"               help\u003d\u0027None: updates only via Vitrage periodic snapshots.\u0027"},{"line_number":35,"context_line":"                    \u0027Pull: updates every [changes_interval] seconds.\u0027"},{"line_number":36,"context_line":"                    \u0027Push: updates by getting notifications from the\u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_70c80054","line":33,"range":{"start_line":33,"start_character":23,"end_line":33,"end_character":40},"in_reply_to":"5f7c97a3_b5a52a05","updated":"2018-06-03 12:25:13.000000000","message":"Done","commit_id":"024ecc613516d54fab04dba510b8564e6a695a89"},{"author":{"_account_id":19159,"name":"Ifat Afek","email":"ifat.afek@nokia.com","username":"ifat_afek"},"change_message_id":"aa96d43241b9eadf3b163fdf2307abc1ad1c5a7c","unresolved":false,"context_lines":[{"line_number":29,"context_line":"               help\u003d\u0027Kubernetes driver class path\u0027,"},{"line_number":30,"context_line":"               required\u003dTrue),"},{"line_number":31,"context_line":"    cfg.StrOpt(DSOpts.UPDATE_METHOD,"},{"line_number":32,"context_line":"               default\u003dUpdateMethod.PULL,"},{"line_number":33,"context_line":"               help\u003d\u0027None: updates only via Vitrage periodic snapshots.\u0027"},{"line_number":34,"context_line":"                    \u0027Pull: updates every [changes_interval] seconds.\u0027"},{"line_number":35,"context_line":"                    \u0027Push: updates by getting notifications from the\u0027"}],"source_content_type":"text/x-python","patch_set":2,"id":"5f7c97a3_5f54a721","line":32,"range":{"start_line":32,"start_character":23,"end_line":32,"end_character":40},"updated":"2018-06-05 09:47:09.000000000","message":"Do we plan to support also notifications from k8s?","commit_id":"98e07ea330291c54320f416a2ff5af8e54fb08fc"},{"author":{"_account_id":26095,"name":"Idan Kinory","email":"idan.kinory@nokia.com","username":"idankin"},"change_message_id":"e82c76ee43ec2866be539743766d0f583c301767","unresolved":false,"context_lines":[{"line_number":29,"context_line":"               help\u003d\u0027Kubernetes driver class path\u0027,"},{"line_number":30,"context_line":"               required\u003dTrue),"},{"line_number":31,"context_line":"    cfg.StrOpt(DSOpts.UPDATE_METHOD,"},{"line_number":32,"context_line":"               default\u003dUpdateMethod.PULL,"},{"line_number":33,"context_line":"               help\u003d\u0027None: updates only via Vitrage periodic snapshots.\u0027"},{"line_number":34,"context_line":"                    \u0027Pull: updates every [changes_interval] seconds.\u0027"},{"line_number":35,"context_line":"                    \u0027Push: updates by getting notifications from the\u0027"}],"source_content_type":"text/x-python","patch_set":2,"id":"5f7c97a3_aa630041","line":32,"range":{"start_line":32,"start_character":23,"end_line":32,"end_character":40},"in_reply_to":"5f7c97a3_5f54a721","updated":"2018-06-07 08:19:41.000000000","message":"Not at the moment. k8s nodes are nova instances so notifications will be received from nova datasource","commit_id":"98e07ea330291c54320f416a2ff5af8e54fb08fc"}],"vitrage/datasources/kubernetes/driver.py":[{"author":{"_account_id":19184,"name":"Idan Hefetz","email":"idan.hefetz@nokia.com","username":"idan-hefetz"},"change_message_id":"af30ee6e4cfff68b98e016bae9bb777df7fbe92b","unresolved":false,"context_lines":[{"line_number":29,"context_line":"    def __init__(self, conf):"},{"line_number":30,"context_line":"        super(KubernetesDriver, self).__init__()"},{"line_number":31,"context_line":"        self.conf \u003d conf"},{"line_number":32,"context_line":"        if not self.conf.kubernetes.config_file:"},{"line_number":33,"context_line":"            LOG.warning(\u0027kubernetes config file is not defined\u0027)"},{"line_number":34,"context_line":"        try:"},{"line_number":35,"context_line":"            kubeconf \u003d self.conf.kubernetes.config_file"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_d585465b","line":32,"range":{"start_line":32,"start_character":15,"end_line":32,"end_character":47},"updated":"2018-05-31 12:57:26.000000000","message":"where is this defined?\ncan\u0027t find it in datasources/kubernetes/__init__.py","commit_id":"024ecc613516d54fab04dba510b8564e6a695a89"},{"author":{"_account_id":19184,"name":"Idan Hefetz","email":"idan.hefetz@nokia.com","username":"idan-hefetz"},"change_message_id":"af30ee6e4cfff68b98e016bae9bb777df7fbe92b","unresolved":false,"context_lines":[{"line_number":40,"context_line":"            LOG.exception(\u0027kubernetes driver init failure %s\u0027, e)"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"    def get_all(self, datasource_action):"},{"line_number":43,"context_line":"        return self.make_pickleable(self._filter_data(self.client.list_node()),"},{"line_number":44,"context_line":"                                    KUBERNETES_DATASOURCE,"},{"line_number":45,"context_line":"                                    datasource_action)"},{"line_number":46,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_b599aa6d","line":43,"range":{"start_line":43,"start_character":54,"end_line":43,"end_character":65},"updated":"2018-05-31 12:57:26.000000000","message":"This wont be defined in case config file loading failed","commit_id":"024ecc613516d54fab04dba510b8564e6a695a89"},{"author":{"_account_id":26095,"name":"Idan Kinory","email":"idan.kinory@nokia.com","username":"idankin"},"change_message_id":"eef8c0ae171e669c1f679f149f27aac05fbd9d62","unresolved":false,"context_lines":[{"line_number":40,"context_line":"            LOG.exception(\u0027kubernetes driver init failure %s\u0027, e)"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"    def get_all(self, datasource_action):"},{"line_number":43,"context_line":"        return self.make_pickleable(self._filter_data(self.client.list_node()),"},{"line_number":44,"context_line":"                                    KUBERNETES_DATASOURCE,"},{"line_number":45,"context_line":"                                    datasource_action)"},{"line_number":46,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_07862f67","line":43,"range":{"start_line":43,"start_character":54,"end_line":43,"end_character":65},"in_reply_to":"5f7c97a3_b599aa6d","updated":"2018-06-03 12:25:13.000000000","message":"Done","commit_id":"024ecc613516d54fab04dba510b8564e6a695a89"},{"author":{"_account_id":19184,"name":"Idan Hefetz","email":"idan.hefetz@nokia.com","username":"idan-hefetz"},"change_message_id":"af30ee6e4cfff68b98e016bae9bb777df7fbe92b","unresolved":false,"context_lines":[{"line_number":44,"context_line":"                                    KUBERNETES_DATASOURCE,"},{"line_number":45,"context_line":"                                    datasource_action)"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    def _filter_data(self, nodes):"},{"line_number":48,"context_line":"        entitys \u003d []"},{"line_number":49,"context_line":"        node_details \u003d {}"},{"line_number":50,"context_line":"        items \u003d nodes.items"},{"line_number":51,"context_line":"        for item in items:"},{"line_number":52,"context_line":"            metadata \u003d item.metadata"},{"line_number":53,"context_line":"            node_details[kubProp.NAME] \u003d metadata.name"},{"line_number":54,"context_line":"            node_details[kubProp.UID] \u003d metadata.uid"},{"line_number":55,"context_line":"            node_details[kubProp.CREATION_TIMESTAMP] \u003d\\"},{"line_number":56,"context_line":"                metadata.creation_timestamp"},{"line_number":57,"context_line":"            node_details[kubProp.EXTERNALID] \u003d \\"},{"line_number":58,"context_line":"                item.spec.external_id"},{"line_number":59,"context_line":"            node_details[kubProp.PROVIDER_NAME] \u003d \\"},{"line_number":60,"context_line":"                item.spec.provider_id.split(\":///\")[0]"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"            entitys.append(copy.deepcopy(node_details))"},{"line_number":63,"context_line":"        return [{\u0027resources\u0027: entitys}]"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_753b1237","line":63,"range":{"start_line":47,"start_character":0,"end_line":63,"end_character":39},"updated":"2018-05-31 12:57:26.000000000","message":"can create a new dict each time instead of reusing and copying:\n\n    def _filter_data(self, nodes):\n        entitys \u003d []\n        for item in nodes.items:\n            metadata \u003d item.metadata\n            node_details \u003d {\n                kubProp.NAME: metadata.name,\n                kubProp.UID: metadata.uid,\n               kubProp.CREATION_TIMESTAMP:metadata.creation_timestamp\n            kubProp.EXTERNALID: item.spec.external_id\n            kubProp.PROVIDER_NAME: item.spec.provider_id.split(\":///\")[0]\n\n            entitys.append(node_details)\n        return [{\u0027resources\u0027: entitys}]","commit_id":"024ecc613516d54fab04dba510b8564e6a695a89"},{"author":{"_account_id":26095,"name":"Idan Kinory","email":"idan.kinory@nokia.com","username":"idankin"},"change_message_id":"eef8c0ae171e669c1f679f149f27aac05fbd9d62","unresolved":false,"context_lines":[{"line_number":44,"context_line":"                                    KUBERNETES_DATASOURCE,"},{"line_number":45,"context_line":"                                    datasource_action)"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    def _filter_data(self, nodes):"},{"line_number":48,"context_line":"        entitys \u003d []"},{"line_number":49,"context_line":"        node_details \u003d {}"},{"line_number":50,"context_line":"        items \u003d nodes.items"},{"line_number":51,"context_line":"        for item in items:"},{"line_number":52,"context_line":"            metadata \u003d item.metadata"},{"line_number":53,"context_line":"            node_details[kubProp.NAME] \u003d metadata.name"},{"line_number":54,"context_line":"            node_details[kubProp.UID] \u003d metadata.uid"},{"line_number":55,"context_line":"            node_details[kubProp.CREATION_TIMESTAMP] \u003d\\"},{"line_number":56,"context_line":"                metadata.creation_timestamp"},{"line_number":57,"context_line":"            node_details[kubProp.EXTERNALID] \u003d \\"},{"line_number":58,"context_line":"                item.spec.external_id"},{"line_number":59,"context_line":"            node_details[kubProp.PROVIDER_NAME] \u003d \\"},{"line_number":60,"context_line":"                item.spec.provider_id.split(\":///\")[0]"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"            entitys.append(copy.deepcopy(node_details))"},{"line_number":63,"context_line":"        return [{\u0027resources\u0027: entitys}]"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_67b12344","line":63,"range":{"start_line":47,"start_character":0,"end_line":63,"end_character":39},"in_reply_to":"5f7c97a3_753b1237","updated":"2018-06-03 12:25:13.000000000","message":"Done","commit_id":"024ecc613516d54fab04dba510b8564e6a695a89"},{"author":{"_account_id":19159,"name":"Ifat Afek","email":"ifat.afek@nokia.com","username":"ifat_afek"},"change_message_id":"aa96d43241b9eadf3b163fdf2307abc1ad1c5a7c","unresolved":false,"context_lines":[{"line_number":40,"context_line":"    def _k8s_client(conf):"},{"line_number":41,"context_line":"        try:"},{"line_number":42,"context_line":"            if not conf.kubernetes.config_file:"},{"line_number":43,"context_line":"                LOG.warning(\u0027kubernetes config file is not defined\u0027)"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"            kubeconf \u003d conf.kubernetes.config_file"},{"line_number":46,"context_line":"            config.load_kube_config(config_file\u003dkubeconf)"}],"source_content_type":"text/x-python","patch_set":2,"id":"5f7c97a3_2202f00a","line":43,"range":{"start_line":43,"start_character":16,"end_line":43,"end_character":68},"updated":"2018-06-05 09:47:09.000000000","message":"You should fail here and exit the client creation","commit_id":"98e07ea330291c54320f416a2ff5af8e54fb08fc"},{"author":{"_account_id":26095,"name":"Idan Kinory","email":"idan.kinory@nokia.com","username":"idankin"},"change_message_id":"e82c76ee43ec2866be539743766d0f583c301767","unresolved":false,"context_lines":[{"line_number":40,"context_line":"    def _k8s_client(conf):"},{"line_number":41,"context_line":"        try:"},{"line_number":42,"context_line":"            if not conf.kubernetes.config_file:"},{"line_number":43,"context_line":"                LOG.warning(\u0027kubernetes config file is not defined\u0027)"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"            kubeconf \u003d conf.kubernetes.config_file"},{"line_number":46,"context_line":"            config.load_kube_config(config_file\u003dkubeconf)"}],"source_content_type":"text/x-python","patch_set":2,"id":"5f7c97a3_4ab6ec8c","line":43,"range":{"start_line":43,"start_character":16,"end_line":43,"end_character":68},"in_reply_to":"5f7c97a3_2202f00a","updated":"2018-06-07 08:19:41.000000000","message":"Done","commit_id":"98e07ea330291c54320f416a2ff5af8e54fb08fc"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"e71a2debac9928a6347d8dc1b3e939e19e047581","unresolved":false,"context_lines":[{"line_number":46,"context_line":"            config.load_kube_config(config_file\u003dkubeconf)"},{"line_number":47,"context_line":"            k8s_client \u003d client.CoreV1Api()"},{"line_number":48,"context_line":"            if k8s_client is None:"},{"line_number":49,"context_line":"                raise Exception"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"            return k8s_client"},{"line_number":52,"context_line":"        except Exception as e:"}],"source_content_type":"text/x-python","patch_set":2,"id":"5f7c97a3_be18781e","line":49,"updated":"2018-06-04 08:15:55.000000000","message":"Please, add some error message here","commit_id":"98e07ea330291c54320f416a2ff5af8e54fb08fc"},{"author":{"_account_id":26095,"name":"Idan Kinory","email":"idan.kinory@nokia.com","username":"idankin"},"change_message_id":"e82c76ee43ec2866be539743766d0f583c301767","unresolved":false,"context_lines":[{"line_number":46,"context_line":"            config.load_kube_config(config_file\u003dkubeconf)"},{"line_number":47,"context_line":"            k8s_client \u003d client.CoreV1Api()"},{"line_number":48,"context_line":"            if k8s_client is None:"},{"line_number":49,"context_line":"                raise Exception"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"            return k8s_client"},{"line_number":52,"context_line":"        except Exception as e:"}],"source_content_type":"text/x-python","patch_set":2,"id":"5f7c97a3_6ab96877","line":49,"in_reply_to":"5f7c97a3_be18781e","updated":"2018-06-07 08:19:41.000000000","message":"Done","commit_id":"98e07ea330291c54320f416a2ff5af8e54fb08fc"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"e71a2debac9928a6347d8dc1b3e939e19e047581","unresolved":false,"context_lines":[{"line_number":49,"context_line":"                raise Exception"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"            return k8s_client"},{"line_number":52,"context_line":"        except Exception as e:"},{"line_number":53,"context_line":"            LOG.exception(\u0027Create k8s client - Got Exception: %s\u0027, e)"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"    def get_all(self, datasource_action):"}],"source_content_type":"text/x-python","patch_set":2,"id":"5f7c97a3_3e25485d","line":52,"updated":"2018-06-04 08:15:55.000000000","message":"Can we handle less general exception here?","commit_id":"98e07ea330291c54320f416a2ff5af8e54fb08fc"},{"author":{"_account_id":19159,"name":"Ifat Afek","email":"ifat.afek@nokia.com","username":"ifat_afek"},"change_message_id":"aa96d43241b9eadf3b163fdf2307abc1ad1c5a7c","unresolved":false,"context_lines":[{"line_number":57,"context_line":"                                    KUBERNETES_DATASOURCE,"},{"line_number":58,"context_line":"                                    datasource_action)"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"    def _filter_data(self, nodes):"},{"line_number":61,"context_line":"        entitys \u003d []"},{"line_number":62,"context_line":"        for item in nodes.items:"},{"line_number":63,"context_line":"            metadata \u003d item.metadata"}],"source_content_type":"text/x-python","patch_set":2,"id":"5f7c97a3_e272b8ad","line":60,"range":{"start_line":60,"start_character":8,"end_line":60,"end_character":20},"updated":"2018-06-05 09:47:09.000000000","message":"Why is this function called _filter_data? It doesn\u0027t seem to filter anything. I think it should be renamed to _convert_nodes / _translate_nodes / _prepare_entities etc.","commit_id":"98e07ea330291c54320f416a2ff5af8e54fb08fc"},{"author":{"_account_id":26095,"name":"Idan Kinory","email":"idan.kinory@nokia.com","username":"idankin"},"change_message_id":"e82c76ee43ec2866be539743766d0f583c301767","unresolved":false,"context_lines":[{"line_number":57,"context_line":"                                    KUBERNETES_DATASOURCE,"},{"line_number":58,"context_line":"                                    datasource_action)"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"    def _filter_data(self, nodes):"},{"line_number":61,"context_line":"        entitys \u003d []"},{"line_number":62,"context_line":"        for item in nodes.items:"},{"line_number":63,"context_line":"            metadata \u003d item.metadata"}],"source_content_type":"text/x-python","patch_set":2,"id":"5f7c97a3_aa32200e","line":60,"range":{"start_line":60,"start_character":8,"end_line":60,"end_character":20},"in_reply_to":"5f7c97a3_e272b8ad","updated":"2018-06-07 08:19:41.000000000","message":"Done","commit_id":"98e07ea330291c54320f416a2ff5af8e54fb08fc"},{"author":{"_account_id":19159,"name":"Ifat Afek","email":"ifat.afek@nokia.com","username":"ifat_afek"},"change_message_id":"aa96d43241b9eadf3b163fdf2307abc1ad1c5a7c","unresolved":false,"context_lines":[{"line_number":58,"context_line":"                                    datasource_action)"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"    def _filter_data(self, nodes):"},{"line_number":61,"context_line":"        entitys \u003d []"},{"line_number":62,"context_line":"        for item in nodes.items:"},{"line_number":63,"context_line":"            metadata \u003d item.metadata"},{"line_number":64,"context_line":"            node_details \u003d {"}],"source_content_type":"text/x-python","patch_set":2,"id":"5f7c97a3_c21f7c59","line":61,"range":{"start_line":61,"start_character":8,"end_line":61,"end_character":15},"updated":"2018-06-05 09:47:09.000000000","message":"entities","commit_id":"98e07ea330291c54320f416a2ff5af8e54fb08fc"},{"author":{"_account_id":26095,"name":"Idan Kinory","email":"idan.kinory@nokia.com","username":"idankin"},"change_message_id":"e82c76ee43ec2866be539743766d0f583c301767","unresolved":false,"context_lines":[{"line_number":58,"context_line":"                                    datasource_action)"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"    def _filter_data(self, nodes):"},{"line_number":61,"context_line":"        entitys \u003d []"},{"line_number":62,"context_line":"        for item in nodes.items:"},{"line_number":63,"context_line":"            metadata \u003d item.metadata"},{"line_number":64,"context_line":"            node_details \u003d {"}],"source_content_type":"text/x-python","patch_set":2,"id":"5f7c97a3_2a1e1074","line":61,"range":{"start_line":61,"start_character":8,"end_line":61,"end_character":15},"in_reply_to":"5f7c97a3_c21f7c59","updated":"2018-06-07 08:19:41.000000000","message":"Done","commit_id":"98e07ea330291c54320f416a2ff5af8e54fb08fc"}],"vitrage/datasources/kubernetes/properties.py":[{"author":{"_account_id":19184,"name":"Idan Hefetz","email":"idan.hefetz@nokia.com","username":"idan-hefetz"},"change_message_id":"af30ee6e4cfff68b98e016bae9bb777df7fbe92b","unresolved":false,"context_lines":[{"line_number":13,"context_line":"# under the License."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"KUBERNETES_DATASOURCE \u003d \u0027kubernetes\u0027"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"class kubernetesProperties(object):"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_95802ec1","line":16,"range":{"start_line":16,"start_character":0,"end_line":16,"end_character":36},"updated":"2018-05-31 12:57:26.000000000","message":"already defined in datasources/kubernetes/__init__.py","commit_id":"024ecc613516d54fab04dba510b8564e6a695a89"},{"author":{"_account_id":19184,"name":"Idan Hefetz","email":"idan.hefetz@nokia.com","username":"idan-hefetz"},"change_message_id":"af30ee6e4cfff68b98e016bae9bb777df7fbe92b","unresolved":false,"context_lines":[{"line_number":16,"context_line":"KUBERNETES_DATASOURCE \u003d \u0027kubernetes\u0027"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"class kubernetesProperties(object):"},{"line_number":20,"context_line":"    NAME \u003d \u0027name\u0027"},{"line_number":21,"context_line":"    METADATA \u003d \u0027metadata\u0027"},{"line_number":22,"context_line":"    NETWORK \u003d \u0027network\u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_15741efd","line":19,"range":{"start_line":19,"start_character":6,"end_line":19,"end_character":7},"updated":"2018-05-31 12:57:26.000000000","message":"Capital","commit_id":"024ecc613516d54fab04dba510b8564e6a695a89"},{"author":{"_account_id":26095,"name":"Idan Kinory","email":"idan.kinory@nokia.com","username":"idankin"},"change_message_id":"eef8c0ae171e669c1f679f149f27aac05fbd9d62","unresolved":false,"context_lines":[{"line_number":16,"context_line":"KUBERNETES_DATASOURCE \u003d \u0027kubernetes\u0027"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"class kubernetesProperties(object):"},{"line_number":20,"context_line":"    NAME \u003d \u0027name\u0027"},{"line_number":21,"context_line":"    METADATA \u003d \u0027metadata\u0027"},{"line_number":22,"context_line":"    NETWORK \u003d \u0027network\u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_07eb8f12","line":19,"range":{"start_line":19,"start_character":6,"end_line":19,"end_character":7},"in_reply_to":"5f7c97a3_15741efd","updated":"2018-06-03 12:25:13.000000000","message":"Done","commit_id":"024ecc613516d54fab04dba510b8564e6a695a89"},{"author":{"_account_id":19184,"name":"Idan Hefetz","email":"idan.hefetz@nokia.com","username":"idan-hefetz"},"change_message_id":"af30ee6e4cfff68b98e016bae9bb777df7fbe92b","unresolved":false,"context_lines":[{"line_number":34,"context_line":"    CREATION_TIMESTAMP \u003d \u0027creation_timestamp\u0027"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"class kubeClusterProperies(object):"},{"line_number":38,"context_line":"    KUBERNETES_CLUSTER \u003d \u0027kubernetes.cluster\u0027"},{"line_number":39,"context_line":"    CLUSTER_ID \u003d \u0027Kubernetes Cluster\u0027"},{"line_number":40,"context_line":"    AVAILABLE \u003d \u0027available\u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_356fda28","line":37,"range":{"start_line":37,"start_character":6,"end_line":37,"end_character":7},"updated":"2018-05-31 12:57:26.000000000","message":"Capital","commit_id":"024ecc613516d54fab04dba510b8564e6a695a89"},{"author":{"_account_id":26095,"name":"Idan Kinory","email":"idan.kinory@nokia.com","username":"idankin"},"change_message_id":"eef8c0ae171e669c1f679f149f27aac05fbd9d62","unresolved":false,"context_lines":[{"line_number":34,"context_line":"    CREATION_TIMESTAMP \u003d \u0027creation_timestamp\u0027"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"class kubeClusterProperies(object):"},{"line_number":38,"context_line":"    KUBERNETES_CLUSTER \u003d \u0027kubernetes.cluster\u0027"},{"line_number":39,"context_line":"    CLUSTER_ID \u003d \u0027Kubernetes Cluster\u0027"},{"line_number":40,"context_line":"    AVAILABLE \u003d \u0027available\u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_87debf6a","line":37,"range":{"start_line":37,"start_character":6,"end_line":37,"end_character":7},"in_reply_to":"5f7c97a3_356fda28","updated":"2018-06-03 12:25:13.000000000","message":"Done","commit_id":"024ecc613516d54fab04dba510b8564e6a695a89"}],"vitrage/datasources/kubernetes/transformer.py":[{"author":{"_account_id":19184,"name":"Idan Hefetz","email":"idan.hefetz@nokia.com","username":"idan-hefetz"},"change_message_id":"af30ee6e4cfff68b98e016bae9bb777df7fbe92b","unresolved":false,"context_lines":[{"line_number":39,"context_line":"        super(KubernetesTransformer, self).__init__(transformers, conf)"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"    def _create_vertex(self, entity_event):"},{"line_number":42,"context_line":"        metadata \u003d {"},{"line_number":43,"context_line":"            VProps.NAME: \u0027k8s_cluster\u0027,"},{"line_number":44,"context_line":"        }"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"        entity_key \u003d self._create_entity_key(entity_event)"},{"line_number":47,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_f599621e","line":44,"range":{"start_line":42,"start_character":0,"end_line":44,"end_character":9},"updated":"2018-05-31 12:57:26.000000000","message":"Support only one cluster, perhaps take the actual cluster name?","commit_id":"024ecc613516d54fab04dba510b8564e6a695a89"},{"author":{"_account_id":26095,"name":"Idan Kinory","email":"idan.kinory@nokia.com","username":"idankin"},"change_message_id":"eef8c0ae171e669c1f679f149f27aac05fbd9d62","unresolved":false,"context_lines":[{"line_number":39,"context_line":"        super(KubernetesTransformer, self).__init__(transformers, conf)"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"    def _create_vertex(self, entity_event):"},{"line_number":42,"context_line":"        metadata \u003d {"},{"line_number":43,"context_line":"            VProps.NAME: \u0027k8s_cluster\u0027,"},{"line_number":44,"context_line":"        }"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"        entity_key \u003d self._create_entity_key(entity_event)"},{"line_number":47,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_55110caf","line":44,"range":{"start_line":42,"start_character":0,"end_line":44,"end_character":9},"in_reply_to":"5f7c97a3_f599621e","updated":"2018-06-03 12:25:13.000000000","message":"Done","commit_id":"024ecc613516d54fab04dba510b8564e6a695a89"},{"author":{"_account_id":19184,"name":"Idan Hefetz","email":"idan.hefetz@nokia.com","username":"idan-hefetz"},"change_message_id":"af30ee6e4cfff68b98e016bae9bb777df7fbe92b","unresolved":false,"context_lines":[{"line_number":62,"context_line":"    def _create_snapshot_entity_vertex(self, entity_event):"},{"line_number":63,"context_line":"        return self._create_vertex(entity_event)"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"    def _create_update_entity_vertex(self, entity_event):"},{"line_number":66,"context_line":"        return self._create_vertex(entity_event)"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"    def _create_snapshot_neighbors(self, entity_event):"},{"line_number":69,"context_line":"        return self._create_node_neighbors(entity_event)"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_757312e8","line":66,"range":{"start_line":65,"start_character":0,"end_line":66,"end_character":48},"updated":"2018-05-31 12:57:26.000000000","message":"i think this is not needed as you dont support update method","commit_id":"024ecc613516d54fab04dba510b8564e6a695a89"},{"author":{"_account_id":26095,"name":"Idan Kinory","email":"idan.kinory@nokia.com","username":"idankin"},"change_message_id":"eef8c0ae171e669c1f679f149f27aac05fbd9d62","unresolved":false,"context_lines":[{"line_number":62,"context_line":"    def _create_snapshot_entity_vertex(self, entity_event):"},{"line_number":63,"context_line":"        return self._create_vertex(entity_event)"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"    def _create_update_entity_vertex(self, entity_event):"},{"line_number":66,"context_line":"        return self._create_vertex(entity_event)"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"    def _create_snapshot_neighbors(self, entity_event):"},{"line_number":69,"context_line":"        return self._create_node_neighbors(entity_event)"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_f52138fe","line":66,"range":{"start_line":65,"start_character":0,"end_line":66,"end_character":48},"in_reply_to":"5f7c97a3_757312e8","updated":"2018-06-03 12:25:13.000000000","message":"That\u0027s true, but this method is defined as an abstract method at the parent class so it must be overridden.","commit_id":"024ecc613516d54fab04dba510b8564e6a695a89"},{"author":{"_account_id":19184,"name":"Idan Hefetz","email":"idan.hefetz@nokia.com","username":"idan-hefetz"},"change_message_id":"af30ee6e4cfff68b98e016bae9bb777df7fbe92b","unresolved":false,"context_lines":[{"line_number":68,"context_line":"    def _create_snapshot_neighbors(self, entity_event):"},{"line_number":69,"context_line":"        return self._create_node_neighbors(entity_event)"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"    def _create_update_neighbors(self, entity_event):"},{"line_number":72,"context_line":"        return self._create_node_neighbors(entity_event)"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"    def _create_entity_key(self, event):"},{"line_number":75,"context_line":"        LOG.debug(\u0027Creating key for kubernetes node event: %s\u0027, str(event))"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_157e5eae","line":72,"range":{"start_line":71,"start_character":0,"end_line":72,"end_character":56},"updated":"2018-05-31 12:57:26.000000000","message":"same here","commit_id":"024ecc613516d54fab04dba510b8564e6a695a89"},{"author":{"_account_id":19184,"name":"Idan Hefetz","email":"idan.hefetz@nokia.com","username":"idan-hefetz"},"change_message_id":"af30ee6e4cfff68b98e016bae9bb777df7fbe92b","unresolved":false,"context_lines":[{"line_number":72,"context_line":"        return self._create_node_neighbors(entity_event)"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"    def _create_entity_key(self, event):"},{"line_number":75,"context_line":"        LOG.debug(\u0027Creating key for kubernetes node event: %s\u0027, str(event))"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"        key_fields \u003d self._key_values(KUBERNETES_DATASOURCE, \u0027k8s_cluster\u0027)"},{"line_number":78,"context_line":"        key \u003d tbase.build_key(key_fields)"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_95434e6c","line":75,"range":{"start_line":75,"start_character":0,"end_line":75,"end_character":75},"updated":"2018-05-31 12:57:26.000000000","message":"can this be removed?","commit_id":"024ecc613516d54fab04dba510b8564e6a695a89"},{"author":{"_account_id":26095,"name":"Idan Kinory","email":"idan.kinory@nokia.com","username":"idankin"},"change_message_id":"eef8c0ae171e669c1f679f149f27aac05fbd9d62","unresolved":false,"context_lines":[{"line_number":72,"context_line":"        return self._create_node_neighbors(entity_event)"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"    def _create_entity_key(self, event):"},{"line_number":75,"context_line":"        LOG.debug(\u0027Creating key for kubernetes node event: %s\u0027, str(event))"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"        key_fields \u003d self._key_values(KUBERNETES_DATASOURCE, \u0027k8s_cluster\u0027)"},{"line_number":78,"context_line":"        key \u003d tbase.build_key(key_fields)"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_951ec4b9","line":75,"range":{"start_line":75,"start_character":0,"end_line":75,"end_character":75},"in_reply_to":"5f7c97a3_95434e6c","updated":"2018-06-03 12:25:13.000000000","message":"Done","commit_id":"024ecc613516d54fab04dba510b8564e6a695a89"},{"author":{"_account_id":19184,"name":"Idan Hefetz","email":"idan.hefetz@nokia.com","username":"idan-hefetz"},"change_message_id":"af30ee6e4cfff68b98e016bae9bb777df7fbe92b","unresolved":false,"context_lines":[{"line_number":74,"context_line":"    def _create_entity_key(self, event):"},{"line_number":75,"context_line":"        LOG.debug(\u0027Creating key for kubernetes node event: %s\u0027, str(event))"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"        key_fields \u003d self._key_values(KUBERNETES_DATASOURCE, \u0027k8s_cluster\u0027)"},{"line_number":78,"context_line":"        key \u003d tbase.build_key(key_fields)"},{"line_number":79,"context_line":"        LOG.debug(\u0027Created key: %s\u0027, key)"},{"line_number":80,"context_line":"        return key"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_55613604","line":77,"range":{"start_line":77,"start_character":61,"end_line":77,"end_character":74},"updated":"2018-05-31 12:57:26.000000000","message":"always?","commit_id":"024ecc613516d54fab04dba510b8564e6a695a89"},{"author":{"_account_id":26095,"name":"Idan Kinory","email":"idan.kinory@nokia.com","username":"idankin"},"change_message_id":"eef8c0ae171e669c1f679f149f27aac05fbd9d62","unresolved":false,"context_lines":[{"line_number":74,"context_line":"    def _create_entity_key(self, event):"},{"line_number":75,"context_line":"        LOG.debug(\u0027Creating key for kubernetes node event: %s\u0027, str(event))"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"        key_fields \u003d self._key_values(KUBERNETES_DATASOURCE, \u0027k8s_cluster\u0027)"},{"line_number":78,"context_line":"        key \u003d tbase.build_key(key_fields)"},{"line_number":79,"context_line":"        LOG.debug(\u0027Created key: %s\u0027, key)"},{"line_number":80,"context_line":"        return key"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_b51bc0c8","line":77,"range":{"start_line":77,"start_character":61,"end_line":77,"end_character":74},"in_reply_to":"5f7c97a3_55613604","updated":"2018-06-03 12:25:13.000000000","message":"Done","commit_id":"024ecc613516d54fab04dba510b8564e6a695a89"},{"author":{"_account_id":19184,"name":"Idan Hefetz","email":"idan.hefetz@nokia.com","username":"idan-hefetz"},"change_message_id":"af30ee6e4cfff68b98e016bae9bb777df7fbe92b","unresolved":false,"context_lines":[{"line_number":76,"context_line":""},{"line_number":77,"context_line":"        key_fields \u003d self._key_values(KUBERNETES_DATASOURCE, \u0027k8s_cluster\u0027)"},{"line_number":78,"context_line":"        key \u003d tbase.build_key(key_fields)"},{"line_number":79,"context_line":"        LOG.debug(\u0027Created key: %s\u0027, key)"},{"line_number":80,"context_line":"        return key"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"    def get_vitrage_type(self):"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_15573e28","line":79,"range":{"start_line":79,"start_character":8,"end_line":79,"end_character":41},"updated":"2018-05-31 12:57:26.000000000","message":"can this be removed?","commit_id":"024ecc613516d54fab04dba510b8564e6a695a89"},{"author":{"_account_id":26095,"name":"Idan Kinory","email":"idan.kinory@nokia.com","username":"idankin"},"change_message_id":"eef8c0ae171e669c1f679f149f27aac05fbd9d62","unresolved":false,"context_lines":[{"line_number":76,"context_line":""},{"line_number":77,"context_line":"        key_fields \u003d self._key_values(KUBERNETES_DATASOURCE, \u0027k8s_cluster\u0027)"},{"line_number":78,"context_line":"        key \u003d tbase.build_key(key_fields)"},{"line_number":79,"context_line":"        LOG.debug(\u0027Created key: %s\u0027, key)"},{"line_number":80,"context_line":"        return key"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"    def get_vitrage_type(self):"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_757be8f3","line":79,"range":{"start_line":79,"start_character":8,"end_line":79,"end_character":41},"in_reply_to":"5f7c97a3_15573e28","updated":"2018-06-03 12:25:13.000000000","message":"Done","commit_id":"024ecc613516d54fab04dba510b8564e6a695a89"},{"author":{"_account_id":21414,"name":"Yujun Zhang","email":"zhang.yujunz@zte.com.cn","username":"yujunz"},"change_message_id":"f420925f5951b89aaffb6e889980223cb0bc6df4","unresolved":false,"context_lines":[{"line_number":85,"context_line":""},{"line_number":86,"context_line":"    def _get_cluster_name(self):"},{"line_number":87,"context_line":"        kubeconf \u003d file_utils.load_yaml_file(self.conf.kubernetes.config_file)"},{"line_number":88,"context_line":"        cluster_name \u003d kubeconf[\u0027clusters\u0027][0][\u0027name\u0027]"},{"line_number":89,"context_line":"        return cluster_name"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"    def _create_node_neighbors(self, entity_event):"}],"source_content_type":"text/x-python","patch_set":2,"id":"5f7c97a3_29c995ab","line":88,"updated":"2018-06-04 02:26:43.000000000","message":"Always use the first cluster? Why not taking from current context?","commit_id":"98e07ea330291c54320f416a2ff5af8e54fb08fc"},{"author":{"_account_id":26095,"name":"Idan Kinory","email":"idan.kinory@nokia.com","username":"idankin"},"change_message_id":"e82c76ee43ec2866be539743766d0f583c301767","unresolved":false,"context_lines":[{"line_number":85,"context_line":""},{"line_number":86,"context_line":"    def _get_cluster_name(self):"},{"line_number":87,"context_line":"        kubeconf \u003d file_utils.load_yaml_file(self.conf.kubernetes.config_file)"},{"line_number":88,"context_line":"        cluster_name \u003d kubeconf[\u0027clusters\u0027][0][\u0027name\u0027]"},{"line_number":89,"context_line":"        return cluster_name"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"    def _create_node_neighbors(self, entity_event):"}],"source_content_type":"text/x-python","patch_set":2,"id":"5f7c97a3_ca9c3c6c","line":88,"in_reply_to":"5f7c97a3_29c995ab","updated":"2018-06-07 08:19:41.000000000","message":"fixed. thanks","commit_id":"98e07ea330291c54320f416a2ff5af8e54fb08fc"},{"author":{"_account_id":19159,"name":"Ifat Afek","email":"ifat.afek@nokia.com","username":"ifat_afek"},"change_message_id":"aa96d43241b9eadf3b163fdf2307abc1ad1c5a7c","unresolved":false,"context_lines":[{"line_number":88,"context_line":"        cluster_name \u003d kubeconf[\u0027clusters\u0027][0][\u0027name\u0027]"},{"line_number":89,"context_line":"        return cluster_name"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"    def _create_node_neighbors(self, entity_event):"},{"line_number":92,"context_line":"        neighbors \u003d []"},{"line_number":93,"context_line":"        for neighbor in entity_event[\u0027resources\u0027]:"},{"line_number":94,"context_line":"            neighbor[DSProps.ENTITY_TYPE] \u003d entity_event[DSProps.ENTITY_TYPE]"}],"source_content_type":"text/x-python","patch_set":2,"id":"5f7c97a3_a2f4c088","line":91,"range":{"start_line":91,"start_character":8,"end_line":91,"end_character":30},"updated":"2018-06-05 09:47:09.000000000","message":"Please add a comment that the neighbours are existing Nova instances.  The current transformer supports only k8s on top of Nova.","commit_id":"98e07ea330291c54320f416a2ff5af8e54fb08fc"},{"author":{"_account_id":26095,"name":"Idan Kinory","email":"idan.kinory@nokia.com","username":"idankin"},"change_message_id":"e82c76ee43ec2866be539743766d0f583c301767","unresolved":false,"context_lines":[{"line_number":88,"context_line":"        cluster_name \u003d kubeconf[\u0027clusters\u0027][0][\u0027name\u0027]"},{"line_number":89,"context_line":"        return cluster_name"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"    def _create_node_neighbors(self, entity_event):"},{"line_number":92,"context_line":"        neighbors \u003d []"},{"line_number":93,"context_line":"        for neighbor in entity_event[\u0027resources\u0027]:"},{"line_number":94,"context_line":"            neighbor[DSProps.ENTITY_TYPE] \u003d entity_event[DSProps.ENTITY_TYPE]"}],"source_content_type":"text/x-python","patch_set":2,"id":"5f7c97a3_4a0cac93","line":91,"range":{"start_line":91,"start_character":8,"end_line":91,"end_character":30},"in_reply_to":"5f7c97a3_a2f4c088","updated":"2018-06-07 08:19:41.000000000","message":"Done","commit_id":"98e07ea330291c54320f416a2ff5af8e54fb08fc"},{"author":{"_account_id":19159,"name":"Ifat Afek","email":"ifat.afek@nokia.com","username":"ifat_afek"},"change_message_id":"aa96d43241b9eadf3b163fdf2307abc1ad1c5a7c","unresolved":false,"context_lines":[{"line_number":90,"context_line":""},{"line_number":91,"context_line":"    def _create_node_neighbors(self, entity_event):"},{"line_number":92,"context_line":"        neighbors \u003d []"},{"line_number":93,"context_line":"        for neighbor in entity_event[\u0027resources\u0027]:"},{"line_number":94,"context_line":"            neighbor[DSProps.ENTITY_TYPE] \u003d entity_event[DSProps.ENTITY_TYPE]"},{"line_number":95,"context_line":"            neighbor[DSProps.DATASOURCE_ACTION] \u003d \\"},{"line_number":96,"context_line":"                entity_event[DSProps.DATASOURCE_ACTION]"}],"source_content_type":"text/x-python","patch_set":2,"id":"5f7c97a3_428fec74","line":93,"range":{"start_line":93,"start_character":37,"end_line":93,"end_character":48},"updated":"2018-06-05 09:47:09.000000000","message":"Please use the KubProps property name","commit_id":"98e07ea330291c54320f416a2ff5af8e54fb08fc"},{"author":{"_account_id":26095,"name":"Idan Kinory","email":"idan.kinory@nokia.com","username":"idankin"},"change_message_id":"e82c76ee43ec2866be539743766d0f583c301767","unresolved":false,"context_lines":[{"line_number":90,"context_line":""},{"line_number":91,"context_line":"    def _create_node_neighbors(self, entity_event):"},{"line_number":92,"context_line":"        neighbors \u003d []"},{"line_number":93,"context_line":"        for neighbor in entity_event[\u0027resources\u0027]:"},{"line_number":94,"context_line":"            neighbor[DSProps.ENTITY_TYPE] \u003d entity_event[DSProps.ENTITY_TYPE]"},{"line_number":95,"context_line":"            neighbor[DSProps.DATASOURCE_ACTION] \u003d \\"},{"line_number":96,"context_line":"                entity_event[DSProps.DATASOURCE_ACTION]"}],"source_content_type":"text/x-python","patch_set":2,"id":"5f7c97a3_6a0f2888","line":93,"range":{"start_line":93,"start_character":37,"end_line":93,"end_character":48},"in_reply_to":"5f7c97a3_428fec74","updated":"2018-06-07 08:19:41.000000000","message":"Done","commit_id":"98e07ea330291c54320f416a2ff5af8e54fb08fc"}],"vitrage/entity_graph/processor/processor.py":[{"author":{"_account_id":19184,"name":"Idan Hefetz","email":"idan.hefetz@nokia.com","username":"idan-hefetz"},"change_message_id":"af30ee6e4cfff68b98e016bae9bb777df7fbe92b","unresolved":false,"context_lines":[{"line_number":78,"context_line":"        \"\"\""},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"        LOG.debug(\u0027Add entity to entity graph:\\n%s\u0027, new_vertex)"},{"line_number":81,"context_line":"        if new_vertex.properties[VProps.VITRAGE_TYPE] \u003d\u003d \u0027kubernetes\u0027:"},{"line_number":82,"context_line":"            LOG.info(\u0027processor KUKU_new vertex:\\n%s\u0027, new_vertex)"},{"line_number":83,"context_line":"            LOG.info(\u0027processor KUKU_neighbors:\\n%s\u0027, neighbors)"},{"line_number":84,"context_line":"        self._add_resource_details_to_alarm(new_vertex, neighbors)"},{"line_number":85,"context_line":"        self.entity_graph.add_vertex(new_vertex)"},{"line_number":86,"context_line":"        self._connect_neighbors(neighbors, set(), GraphAction.CREATE_ENTITY)"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_700fa02d","line":83,"range":{"start_line":81,"start_character":0,"end_line":83,"end_character":64},"updated":"2018-05-31 12:57:26.000000000","message":"I\u0027m not sure about this KUKU :)","commit_id":"024ecc613516d54fab04dba510b8564e6a695a89"},{"author":{"_account_id":26095,"name":"Idan Kinory","email":"idan.kinory@nokia.com","username":"idankin"},"change_message_id":"eef8c0ae171e669c1f679f149f27aac05fbd9d62","unresolved":false,"context_lines":[{"line_number":78,"context_line":"        \"\"\""},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"        LOG.debug(\u0027Add entity to entity graph:\\n%s\u0027, new_vertex)"},{"line_number":81,"context_line":"        if new_vertex.properties[VProps.VITRAGE_TYPE] \u003d\u003d \u0027kubernetes\u0027:"},{"line_number":82,"context_line":"            LOG.info(\u0027processor KUKU_new vertex:\\n%s\u0027, new_vertex)"},{"line_number":83,"context_line":"            LOG.info(\u0027processor KUKU_neighbors:\\n%s\u0027, neighbors)"},{"line_number":84,"context_line":"        self._add_resource_details_to_alarm(new_vertex, neighbors)"},{"line_number":85,"context_line":"        self.entity_graph.add_vertex(new_vertex)"},{"line_number":86,"context_line":"        self._connect_neighbors(neighbors, set(), GraphAction.CREATE_ENTITY)"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_f535b8dc","line":83,"range":{"start_line":81,"start_character":0,"end_line":83,"end_character":64},"in_reply_to":"5f7c97a3_700fa02d","updated":"2018-06-03 12:25:13.000000000","message":"Done","commit_id":"024ecc613516d54fab04dba510b8564e6a695a89"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"e71a2debac9928a6347d8dc1b3e939e19e047581","unresolved":false,"context_lines":[{"line_number":78,"context_line":"        \"\"\""},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"        LOG.debug(\u0027Add entity to entity graph:\\n%s\u0027, new_vertex)"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"        self._add_resource_details_to_alarm(new_vertex, neighbors)"},{"line_number":83,"context_line":"        self.entity_graph.add_vertex(new_vertex)"},{"line_number":84,"context_line":"        self._connect_neighbors(neighbors, set(), GraphAction.CREATE_ENTITY)"}],"source_content_type":"text/x-python","patch_set":2,"id":"5f7c97a3_5eb844e4","side":"PARENT","line":81,"updated":"2018-06-04 08:15:55.000000000","message":"It\u0027s not related change","commit_id":"3c576e4e96f48acaf95ade309294981b35b1c5fc"}],"vitrage/tests/mocks/trace_generator.py":[{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"e71a2debac9928a6347d8dc1b3e939e19e047581","unresolved":false,"context_lines":[{"line_number":272,"context_line":"    static_values \u003d []"},{"line_number":273,"context_line":"    for node_name in vm_host_mapping:"},{"line_number":274,"context_line":"        static_values.append(combine_data(node_name, None,"},{"line_number":275,"context_line":"                                          spec.get(EXTERNAL_INFO_KEY, None)))"},{"line_number":276,"context_line":""},{"line_number":277,"context_line":"    return static_values"},{"line_number":278,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"5f7c97a3_9ea33cb2","line":275,"updated":"2018-06-04 08:15:55.000000000","message":"nit: \u0027get\u0027 method will return None by default. we don\u0027t need to specify it","commit_id":"98e07ea330291c54320f416a2ff5af8e54fb08fc"},{"author":{"_account_id":26095,"name":"Idan Kinory","email":"idan.kinory@nokia.com","username":"idankin"},"change_message_id":"e82c76ee43ec2866be539743766d0f583c301767","unresolved":false,"context_lines":[{"line_number":272,"context_line":"    static_values \u003d []"},{"line_number":273,"context_line":"    for node_name in vm_host_mapping:"},{"line_number":274,"context_line":"        static_values.append(combine_data(node_name, None,"},{"line_number":275,"context_line":"                                          spec.get(EXTERNAL_INFO_KEY, None)))"},{"line_number":276,"context_line":""},{"line_number":277,"context_line":"    return static_values"},{"line_number":278,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"5f7c97a3_ad779a9f","line":275,"in_reply_to":"5f7c97a3_9ea33cb2","updated":"2018-06-07 08:19:41.000000000","message":"I agree. it appears the same in all other methods, so I think is better to be consistent","commit_id":"98e07ea330291c54320f416a2ff5af8e54fb08fc"},{"author":{"_account_id":19159,"name":"Ifat Afek","email":"ifat.afek@nokia.com","username":"ifat_afek"},"change_message_id":"485797a1e2dfff75619f27b40e4ebefccd3775a1","unresolved":false,"context_lines":[{"line_number":272,"context_line":"    static_values \u003d []"},{"line_number":273,"context_line":"    for node_name in vm_host_mapping:"},{"line_number":274,"context_line":"        static_values.append(combine_data(node_name, None,"},{"line_number":275,"context_line":"                                          spec.get(EXTERNAL_INFO_KEY, None)))"},{"line_number":276,"context_line":""},{"line_number":277,"context_line":"    return static_values"},{"line_number":278,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"5f7c97a3_e866e0bb","line":275,"in_reply_to":"5f7c97a3_ad779a9f","updated":"2018-06-07 08:48:28.000000000","message":"I would make it right even if other people made the same mistake before :-)","commit_id":"98e07ea330291c54320f416a2ff5af8e54fb08fc"},{"author":{"_account_id":26095,"name":"Idan Kinory","email":"idan.kinory@nokia.com","username":"idankin"},"change_message_id":"cbd6210c174aa174800612ba6470d3d1af531f0e","unresolved":false,"context_lines":[{"line_number":272,"context_line":"    static_values \u003d []"},{"line_number":273,"context_line":"    for node_name in vm_host_mapping:"},{"line_number":274,"context_line":"        static_values.append(combine_data(node_name, None,"},{"line_number":275,"context_line":"                                          spec.get(EXTERNAL_INFO_KEY, None)))"},{"line_number":276,"context_line":""},{"line_number":277,"context_line":"    return static_values"},{"line_number":278,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"5f7c97a3_e84820b4","line":275,"in_reply_to":"5f7c97a3_e866e0bb","updated":"2018-06-07 09:11:52.000000000","message":"Fixed. thanks :)","commit_id":"98e07ea330291c54320f416a2ff5af8e54fb08fc"}],"vitrage/tests/resources/datasources_values/kubernetes_config.yaml":[{"author":{"_account_id":19159,"name":"Ifat Afek","email":"ifat.afek@nokia.com","username":"ifat_afek"},"change_message_id":"485797a1e2dfff75619f27b40e4ebefccd3775a1","unresolved":false,"context_lines":[{"line_number":1,"context_line":"apiVersion: v1"},{"line_number":2,"context_line":"clusters:"},{"line_number":3,"context_line":"- cluster:"},{"line_number":4,"context_line":"    certificate-authority-data:"},{"line_number":5,"context_line":"    server: https://127.0.0.1:8080"},{"line_number":6,"context_line":"  name: kubernetes"},{"line_number":7,"context_line":"contexts:"},{"line_number":8,"context_line":"- context:"},{"line_number":9,"context_line":"    cluster: kubernetes"},{"line_number":10,"context_line":"    user: kubernetes-admin"},{"line_number":11,"context_line":"  name: kubernetes-admin@kubernetes"},{"line_number":12,"context_line":"current-context: kubernetes-admin@kubernetes"},{"line_number":13,"context_line":"kind: Config"},{"line_number":14,"context_line":"preferences: {}"},{"line_number":15,"context_line":"users:"},{"line_number":16,"context_line":"- name: kubernetes-admin"},{"line_number":17,"context_line":"  user:"},{"line_number":18,"context_line":"    client-certificate-data:"},{"line_number":19,"context_line":"    client-key-data:"}],"source_content_type":"text/x-yaml","patch_set":3,"id":"5f7c97a3_882c0c4b","line":19,"range":{"start_line":1,"start_character":0,"end_line":19,"end_character":20},"updated":"2018-06-07 08:48:28.000000000","message":"This file does not belong here. The datasources_values folder should contain only files related to state/severity definitions. Please put it in a prometheus folder.","commit_id":"4cb87a0fe4e1179f2e8f10760c79a7d19719bfa3"}],"vitrage/tests/unit/datasources/kubernetes/test_kubernetes_transformer.py":[{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"e71a2debac9928a6347d8dc1b3e939e19e047581","unresolved":false,"context_lines":[{"line_number":59,"context_line":"            InstanceTransformer(cls.transformers, cls.conf)"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"    def test_snapshot_event_transform(self):"},{"line_number":62,"context_line":"        LOG.debug(\u0027Test tactual transform action for \u0027"},{"line_number":63,"context_line":"                  \u0027snapshot and snapshot init events\u0027)"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"        k8s_spec_list \u003d \\"}],"source_content_type":"text/x-python","patch_set":2,"id":"5f7c97a3_1e8f2c2f","line":62,"updated":"2018-06-04 08:15:55.000000000","message":"Do we really need logging in tests?","commit_id":"98e07ea330291c54320f416a2ff5af8e54fb08fc"},{"author":{"_account_id":19159,"name":"Ifat Afek","email":"ifat.afek@nokia.com","username":"ifat_afek"},"change_message_id":"aa96d43241b9eadf3b163fdf2307abc1ad1c5a7c","unresolved":false,"context_lines":[{"line_number":152,"context_line":""},{"line_number":153,"context_line":"            key_values \u003d kubernetes_transformer._key_values("},{"line_number":154,"context_line":"                KUBERNETES_DATASOURCE,"},{"line_number":155,"context_line":"                \u0027k8s_cluster\u0027)"},{"line_number":156,"context_line":"            expected_key \u003d tbase.build_key(key_values)"},{"line_number":157,"context_line":""},{"line_number":158,"context_line":"            self.assertEqual(expected_key, observed_key)"}],"source_content_type":"text/x-python","patch_set":2,"id":"5f7c97a3_2292f04c","line":155,"range":{"start_line":155,"start_character":16,"end_line":155,"end_character":29},"updated":"2018-06-05 09:47:09.000000000","message":"It should be defined in KubProps","commit_id":"98e07ea330291c54320f416a2ff5af8e54fb08fc"},{"author":{"_account_id":19159,"name":"Ifat Afek","email":"ifat.afek@nokia.com","username":"ifat_afek"},"change_message_id":"aa96d43241b9eadf3b163fdf2307abc1ad1c5a7c","unresolved":false,"context_lines":[{"line_number":173,"context_line":""},{"line_number":174,"context_line":"        # Test action"},{"line_number":175,"context_line":"        placeholder \u003d \\"},{"line_number":176,"context_line":"            transformer.create_neighbor_placeholder_vertex(**properties)"},{"line_number":177,"context_line":""},{"line_number":178,"context_line":"        # Test assertions"},{"line_number":179,"context_line":"        observed_uuid \u003d placeholder.vertex_id"}],"source_content_type":"text/x-python","patch_set":2,"id":"5f7c97a3_a2cb6048","line":176,"range":{"start_line":176,"start_character":24,"end_line":176,"end_character":58},"updated":"2018-06-05 09:47:09.000000000","message":"I believe that this function is implemented in the base class, and I don\u0027t think it is relevant to k8s. I don\u0027t see a use case where the k8s_cluster will be created as a placeholder by another datasource. I think that this test can be removed.","commit_id":"98e07ea330291c54320f416a2ff5af8e54fb08fc"},{"author":{"_account_id":26095,"name":"Idan Kinory","email":"idan.kinory@nokia.com","username":"idankin"},"change_message_id":"e82c76ee43ec2866be539743766d0f583c301767","unresolved":false,"context_lines":[{"line_number":173,"context_line":""},{"line_number":174,"context_line":"        # Test action"},{"line_number":175,"context_line":"        placeholder \u003d \\"},{"line_number":176,"context_line":"            transformer.create_neighbor_placeholder_vertex(**properties)"},{"line_number":177,"context_line":""},{"line_number":178,"context_line":"        # Test assertions"},{"line_number":179,"context_line":"        observed_uuid \u003d placeholder.vertex_id"}],"source_content_type":"text/x-python","patch_set":2,"id":"5f7c97a3_addeba0d","line":176,"range":{"start_line":176,"start_character":24,"end_line":176,"end_character":58},"in_reply_to":"5f7c97a3_a2cb6048","updated":"2018-06-07 08:19:41.000000000","message":"Done","commit_id":"98e07ea330291c54320f416a2ff5af8e54fb08fc"}]}
