]> git.proxmox.com Git - ceph.git/blobdiff - ceph/qa/tasks/mgr/dashboard/test_mgr_module.py
import quincy beta 17.1.0
[ceph.git] / ceph / qa / tasks / mgr / dashboard / test_mgr_module.py
index 154700e0b70ea73c48b9ff0f9d44a8b8a854efdc..0766bfd2b467acd6bdf64a97d7dafbc8a1b871a6 100644 (file)
@@ -2,9 +2,11 @@
 from __future__ import absolute_import
 
 import logging
+
 import requests
 
-from .helper import DashboardTestCase, JAny, JObj, JList, JLeaf
+from .helper import (DashboardTestCase, JLeaf, JList, JObj,
+                     module_options_object_schema, module_options_schema)
 
 logger = logging.getLogger(__name__)
 
@@ -31,6 +33,7 @@ class MgrModuleTestCase(DashboardTestCase):
 
 
 class MgrModuleTest(MgrModuleTestCase):
+
     def test_list_disabled_module(self):
         self._ceph_cmd(['mgr', 'module', 'disable', 'iostat'])
         self.wait_until_rest_api_accessible()
@@ -42,23 +45,8 @@ class MgrModuleTest(MgrModuleTestCase):
                 JObj(sub_elems={
                     'name': JLeaf(str),
                     'enabled': JLeaf(bool),
-                    'options': JObj(
-                        {},
-                        allow_unknown=True,
-                        unknown_schema=JObj({
-                            'name': str,
-                            'type': str,
-                            'level': str,
-                            'flags': int,
-                            'default_value': JAny(none=False),
-                            'min': JAny(none=False),
-                            'max': JAny(none=False),
-                            'enum_allowed': JList(str),
-                            'see_also': JList(str),
-                            'desc': str,
-                            'long_desc': str,
-                            'tags': JList(str)
-                        }))
+                    'always_on': JLeaf(bool),
+                    'options': module_options_schema
                 })))
         module_info = self.find_object_in_list('name', 'iostat', data)
         self.assertIsNotNone(module_info)
@@ -75,30 +63,13 @@ class MgrModuleTest(MgrModuleTestCase):
                 JObj(sub_elems={
                     'name': JLeaf(str),
                     'enabled': JLeaf(bool),
-                    'options': JObj(
-                        {},
-                        allow_unknown=True,
-                        unknown_schema=JObj({
-                            'name': str,
-                            'type': str,
-                            'level': str,
-                            'flags': int,
-                            'default_value': JAny(none=False),
-                            'min': JAny(none=False),
-                            'max': JAny(none=False),
-                            'enum_allowed': JList(str),
-                            'see_also': JList(str),
-                            'desc': str,
-                            'long_desc': str,
-                            'tags': JList(str)
-                        }))
+                    'always_on': JLeaf(bool),
+                    'options': module_options_schema
                 })))
         module_info = self.find_object_in_list('name', 'iostat', data)
         self.assertIsNotNone(module_info)
         self.assertTrue(module_info['enabled'])
 
-
-class MgrModuleTelemetryTest(MgrModuleTestCase):
     def test_get(self):
         data = self._get('/api/mgr/module/telemetry')
         self.assertStatus(200)
@@ -111,6 +82,7 @@ class MgrModuleTelemetryTest(MgrModuleTestCase):
                     'channel_ident': bool,
                     'channel_crash': bool,
                     'channel_device': bool,
+                    'channel_perf': bool,
                     'contact': str,
                     'description': str,
                     'enabled': bool,
@@ -122,37 +94,59 @@ class MgrModuleTelemetryTest(MgrModuleTestCase):
                     'url': str
                 }))
 
+    def test_module_options(self):
+        data = self._get('/api/mgr/module/telemetry/options')
+        self.assertStatus(200)
+        schema = JObj({
+            'channel_basic': module_options_object_schema,
+            'channel_crash': module_options_object_schema,
+            'channel_device': module_options_object_schema,
+            'channel_ident': module_options_object_schema,
+            'channel_perf': module_options_object_schema,
+            'contact': module_options_object_schema,
+            'description': module_options_object_schema,
+            'device_url': module_options_object_schema,
+            'enabled': module_options_object_schema,
+            'interval': module_options_object_schema,
+            'last_opt_revision': module_options_object_schema,
+            'leaderboard': module_options_object_schema,
+            'log_level': module_options_object_schema,
+            'log_to_cluster': module_options_object_schema,
+            'log_to_cluster_level': module_options_object_schema,
+            'log_to_file': module_options_object_schema,
+            'organization': module_options_object_schema,
+            'proxy': module_options_object_schema,
+            'url': module_options_object_schema
+        })
+        self.assertSchema(data, schema)
+
+    def test_module_enable(self):
+        self._post('/api/mgr/module/telemetry/enable')
+        self.assertStatus(200)
+
+    def test_disable(self):
+        self._post('/api/mgr/module/iostat/disable')
+        self.assertStatus(200)
+
     def test_put(self):
-        self.set_config_key('config/mgr/mgr/telemetry/contact', '')
-        self.set_config_key('config/mgr/mgr/telemetry/description', '')
-        self.set_config_key('config/mgr/mgr/telemetry/enabled', 'True')
-        self.set_config_key('config/mgr/mgr/telemetry/interval', '72')
-        self.set_config_key('config/mgr/mgr/telemetry/leaderboard', 'False')
-        self.set_config_key('config/mgr/mgr/telemetry/organization', '')
-        self.set_config_key('config/mgr/mgr/telemetry/proxy', '')
-        self.set_config_key('config/mgr/mgr/telemetry/url', '')
+        self.set_config_key('config/mgr/mgr/iostat/log_level', 'critical')
+        self.set_config_key('config/mgr/mgr/iostat/log_to_cluster', 'False')
+        self.set_config_key('config/mgr/mgr/iostat/log_to_cluster_level', 'info')
+        self.set_config_key('config/mgr/mgr/iostat/log_to_file', 'True')
         self._put(
-            '/api/mgr/module/telemetry',
+            '/api/mgr/module/iostat',
             data={
                 'config': {
-                    'contact': 'tux@suse.com',
-                    'description': 'test',
-                    'enabled': False,
-                    'interval': 4711,
-                    'leaderboard': True,
-                    'organization': 'SUSE Linux',
-                    'proxy': 'foo',
-                    'url': 'https://foo.bar/report'
+                    'log_level': 'debug',
+                    'log_to_cluster': True,
+                    'log_to_cluster_level': 'warning',
+                    'log_to_file': False
                 }
             })
         self.assertStatus(200)
-        data = self._get('/api/mgr/module/telemetry')
+        data = self._get('/api/mgr/module/iostat')
         self.assertStatus(200)
-        self.assertEqual(data['contact'], 'tux@suse.com')
-        self.assertEqual(data['description'], 'test')
-        self.assertFalse(data['enabled'])
-        self.assertEqual(data['interval'], 4711)
-        self.assertTrue(data['leaderboard'])
-        self.assertEqual(data['organization'], 'SUSE Linux')
-        self.assertEqual(data['proxy'], 'foo')
-        self.assertEqual(data['url'], 'https://foo.bar/report')
+        self.assertEqual(data['log_level'], 'debug')
+        self.assertTrue(data['log_to_cluster'])
+        self.assertEqual(data['log_to_cluster_level'], 'warning')
+        self.assertFalse(data['log_to_file'])