def test_create_from_obj(self):
        """Test whether a meta object is correctly created from a Kibana object"""

        meta = KibanaObjMeta.create_from_obj(DASHBOARD_OBJ)
        self.assertEqual(meta.id, "2e968fe0-b1bb-11e8-8aac-ef7fd4d8cbad")
        self.assertEqual(meta.title, "GitLab Issues")
        self.assertEqual(meta.type, "dashboard")
        self.assertEqual(meta.version, 9)
        self.assertEqual(meta.updated_at, "2019-01-24T13:20:08.902Z")

        meta = KibanaObjMeta.create_from_obj(DASHBOARD_OBJ_NO_UPDATED_AT)
        self.assertEqual(meta.id, "2e968fe0-b1bb-11e8-8aac-ef7fd4d8cbad")
        self.assertEqual(meta.title, "GitLab Issues")
        self.assertEqual(meta.type, "dashboard")
        self.assertEqual(meta.version, 9)
        self.assertIsNone(meta.updated_at)

        with self.assertLogs(logger, level='WARNING') as cm:
            meta = KibanaObjMeta.create_from_obj(DASHBOARD_OBJ_NO_TITLE)
            self.assertEqual(meta.id, "2e968fe0-b1bb-11e8-8aac-ef7fd4d8cbad")
            self.assertIsNone(meta.title)
            self.assertEqual(meta.type, "dashboard")
            self.assertEqual(meta.version, 9)
            self.assertEqual(meta.updated_at, "2019-01-24T13:20:08.902Z")

            self.assertEqual(cm.output[0], "WARNING:archimedes.kibana_obj_meta:Obj dashboard with id "
                                           "2e968fe0-b1bb-11e8-8aac-ef7fd4d8cbad doesn't have a title")
Exemple #2
0
    def test_create_from_obj(self):
        """Test whether a meta object is correctly created from a Kibana object"""

        meta = KibanaObjMeta.create_from_obj(DASHBOARD_OBJ)
        self.assertEqual(meta.id, "2e968fe0-b1bb-11e8-8aac-ef7fd4d8cbad")
        self.assertEqual(meta.title, "GitLab Issues")
        self.assertEqual(meta.type, "dashboard")
        self.assertEqual(meta.version, 9)
        self.assertEqual(meta.updated_at, "2019-01-24T13:20:08.902Z")

        meta = KibanaObjMeta.create_from_obj(DASHBOARD_OBJ_NO_UPDATED_AT)
        self.assertEqual(meta.id, "2e968fe0-b1bb-11e8-8aac-ef7fd4d8cbad")
        self.assertEqual(meta.title, "GitLab Issues")
        self.assertEqual(meta.type, "dashboard")
        self.assertEqual(meta.version, 9)
        self.assertIsNone(meta.updated_at)
    def test_add_alias(self):
        """Test whether an alias is added to the registry"""

        path = os.path.join(self.tmp_path, REGISTRY_NAME)
        copy_content('data/registry_full', path)

        registry = Registry(self.tmp_path)

        tuples = [t for t in registry.find_all()]
        self.assertEqual(len(tuples), 11)

        new_alias = '12'
        new_obj = KibanaObjMeta.create_from_obj(DASHBOARD_OBJ)
        registry.add(new_obj)

        tuples = [t for t in registry.find_all()]
        self.assertEqual(len(tuples), 12)

        alias, meta = registry.find(new_alias)

        self.assertEqual(meta.id, DASHBOARD_OBJ['id'])
        self.assertEqual(meta.title, DASHBOARD_OBJ['attributes']['title'])
        self.assertEqual(meta.type, DASHBOARD_OBJ['type'])
        self.assertEqual(meta.updated_at, DASHBOARD_OBJ['updated_at'])
        self.assertEqual(meta.version, DASHBOARD_OBJ['version'])
Exemple #4
0
    def find_all(self, obj_type=None):
        """Find all meta information related to the Kibana objects stored in the registry.

        This method returns the KibanaObjMeta in the registry. If `obj_type` is None, it returns the
        content of all the registry. Otherwise, it returns the entries related to the
        aliases with the given `obj_type`.

        :param obj_type: target object type

        :returns a generator of tuples of aliases and metadata in the registry
        """
        if obj_type:
            for alias in self.content.keys():
                if self.content[alias]['type'] == obj_type:
                    meta = KibanaObjMeta.create_from_registry(self.content[alias])
                    yield alias, meta
        else:
            for alias in self.content.keys():
                meta = KibanaObjMeta.create_from_registry(self.content[alias])
                yield alias, meta
Exemple #5
0
    def __find_remote_objs(self):
        """Return the meta information of the Kibana objects stored in Kibana."""

        for obj in self.kibana.find_all():
            if obj['type'] not in [
                    VISUALIZATION, INDEX_PATTERN, SEARCH, DASHBOARD
            ]:
                continue

            meta_obj = KibanaObjMeta.create_from_obj(obj)
            yield meta_obj
    def test_add_alias_duplicated(self):
        """Test whether an exception is thrown when the same object already exists in the registry"""

        path = os.path.join(self.tmp_path, REGISTRY_NAME)
        copy_content('data/registry_slim', path)

        registry = Registry(self.tmp_path)

        new_obj = KibanaObjMeta.create_from_obj(VISUALIZATION_OBJ_DUPLICATED)
        with self.assertRaises(RegistryError):
            registry.add(new_obj)
    def test_initialization_no_updated_at(self):
        """Test whether attributes are initialized"""

        obj = KibanaObjMeta(id=DASHBOARD_OBJ_NO_UPDATED_AT['id'],
                            title=DASHBOARD_OBJ_NO_UPDATED_AT['attributes']['title'],
                            type=DASHBOARD_OBJ_NO_UPDATED_AT['type'],
                            version=DASHBOARD_OBJ_NO_UPDATED_AT['version'])

        self.assertEqual(obj.id, "2e968fe0-b1bb-11e8-8aac-ef7fd4d8cbad")
        self.assertEqual(obj.title, "GitLab Issues")
        self.assertEqual(obj.type, "dashboard")
        self.assertEqual(obj.version, 9)
        self.assertIsNone(obj.updated_at)
Exemple #8
0
    def test_initialization(self):
        """Test whether attributes are initialized"""

        obj = KibanaObjMeta(id=DASHBOARD_OBJ['id'],
                            title=DASHBOARD_OBJ['attributes']['title'],
                            type=DASHBOARD_OBJ['type'],
                            version=DASHBOARD_OBJ['version'],
                            updated_at=DASHBOARD_OBJ['updated_at'])

        self.assertEqual(obj.id, "2e968fe0-b1bb-11e8-8aac-ef7fd4d8cbad")
        self.assertEqual(obj.title, "GitLab Issues")
        self.assertEqual(obj.type, "dashboard")
        self.assertEqual(obj.version, 9)
        self.assertEqual(obj.updated_at, "2019-01-24T13:20:08.902Z")
    def test_repr_no_updated_at(self):
        """Test whether the repr method doesn't fail when updated_at is null"""

        obj = KibanaObjMeta.create_from_obj(DASHBOARD_OBJ_NO_UPDATED_AT)
        str_repr = repr(obj)

        expected = {
            'id': obj.id,
            'type': obj.type,
            'version': obj.version,
            'title': obj.title
        }

        self.assertEqual(str_repr, json.dumps(expected, sort_keys=True, indent=4))
    def test_repr_no_title(self):
        """Test whether the repr method properly works for object without a title"""

        obj = KibanaObjMeta.create_from_obj(DASHBOARD_OBJ_NO_TITLE)
        str_repr = repr(obj)

        expected = {
            'id': obj.id,
            'type': obj.type,
            'version': obj.version,
            'title': obj.title,
            'updated_at': obj.updated_at
        }

        self.assertEqual(str_repr, json.dumps(expected, sort_keys=True, indent=4))
    def test_add_alias_force(self):
        """Test whether an object is overwritten if it already exists in the registry and the param force is on"""

        path = os.path.join(self.tmp_path, REGISTRY_NAME)
        copy_content('data/registry_slim', path)

        registry = Registry(self.tmp_path)

        tuples = [t for t in registry.find_all()]
        self.assertEqual(len(tuples), 2)

        new_obj = KibanaObjMeta.create_from_obj(VISUALIZATION_OBJ_DUPLICATED)
        registry.add(new_obj, force=True)

        tuples = [t for t in registry.find_all()]
        self.assertEqual(len(tuples), 2)
Exemple #12
0
    def find(self, alias):
        """Find the meta information of a Kibana object based on its alias.

        This method retrieves from the registry the target alias and
        KibanaObjMeta linked to it.

        :param alias: target alias

        :returns a tuple composed of an alias and metadata
        """
        if alias not in self.content:
            cause = "Alias %s not found in registry" % alias
            logger.error(cause)
            raise NotFoundError(cause=cause)

        meta = KibanaObjMeta.create_from_registry(self.content[alias])
        return alias, meta
Exemple #13
0
    def __find_local_objs(self):
        """Return the meta information of the Kibana objects stored on disk."""

        for path, obj in self.manager.find_all():
            meta_obj = KibanaObjMeta.create_from_obj(obj)
            yield meta_obj
Exemple #14
0
    def __find_remote_objs(self):
        """Return the meta information of the Kibana objects stored in Kibana."""

        for obj in self.kibana.find_all():
            meta_obj = KibanaObjMeta.create_from_obj(obj)
            yield meta_obj