]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
dashboard: fix spelling errors 51227/head
authorJosh Soref <2119212+jsoref@users.noreply.github.com>
Thu, 23 Jun 2022 01:24:12 +0000 (21:24 -0400)
committerJosh Soref <2119212+jsoref@users.noreply.github.com>
Wed, 9 Aug 2023 15:14:20 +0000 (11:14 -0400)
* access
* availability
* dashboard
* depth
* dimless
* evaluation
* executing
* existing
* facts
* gigabytes
* idempotent
* independent
* initial
* inventory
* managed
* must not
* notification
* notifications
* orchestrator
* previously
* promises
* purging
* queried
* repetitive
* split
* subdirectories
* tenant
* the
* timestamp
* transformed
* unavailable
* visibility
* yourself

Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>
37 files changed:
monitoring/ceph-mixin/prometheus_alerts.libsonnet
monitoring/ceph-mixin/prometheus_alerts.yml
monitoring/ceph-mixin/tests_alerts/test_alerts.yml
monitoring/ceph-mixin/tests_dashboards/features/environment.py
monitoring/ceph-mixin/tests_dashboards/util.py
qa/tasks/mgr/dashboard/test_rbd_mirroring.py
qa/tasks/mgr/dashboard/test_user.py
src/pybind/mgr/dashboard/ci/check_grafana_dashboards.py
src/pybind/mgr/dashboard/controllers/_crud.py
src/pybind/mgr/dashboard/controllers/cephfs.py
src/pybind/mgr/dashboard/controllers/host.py
src/pybind/mgr/dashboard/frontend/cypress/e2e/block/images.po.ts
src/pybind/mgr/dashboard/frontend/cypress/e2e/orchestrator/01-hosts.e2e-spec.ts
src/pybind/mgr/dashboard/frontend/cypress/e2e/orchestrator/workflow/02-create-cluster-add-host.feature
src/pybind/mgr/dashboard/frontend/cypress/e2e/rgw/buckets.po.ts
src/pybind/mgr/dashboard/frontend/cypress/e2e/rgw/users.po.ts
src/pybind/mgr/dashboard/frontend/cypress/e2e/ui/notification.e2e-spec.ts
src/pybind/mgr/dashboard/frontend/cypress/e2e/ui/notification.po.ts
src/pybind/mgr/dashboard/frontend/src/app/ceph/block/rbd-namespace-list/rbd-namespace-list.component.ts
src/pybind/mgr/dashboard/frontend/src/app/ceph/cephfs/cephfs-directories/cephfs-directories.component.ts
src/pybind/mgr/dashboard/frontend/src/app/ceph/cluster/hosts/hosts.component.spec.ts
src/pybind/mgr/dashboard/frontend/src/app/ceph/pool/pool-form/pool-form.component.spec.ts
src/pybind/mgr/dashboard/frontend/src/app/ceph/rgw/rgw-bucket-list/rgw-bucket-list.component.spec.ts
src/pybind/mgr/dashboard/frontend/src/app/ceph/rgw/rgw-user-list/rgw-user-list.component.spec.ts
src/pybind/mgr/dashboard/frontend/src/app/ceph/shared/smart-list/fixtures/smart_data_version_1_0_nvme_response.json
src/pybind/mgr/dashboard/frontend/src/app/ceph/shared/smart-list/smart-list.component.ts
src/pybind/mgr/dashboard/frontend/src/app/shared/components/notifications-sidebar/notifications-sidebar.component.ts
src/pybind/mgr/dashboard/frontend/src/app/shared/forms/cd-validators.spec.ts
src/pybind/mgr/dashboard/frontend/src/app/shared/models/image-spec.ts
src/pybind/mgr/dashboard/frontend/src/app/shared/pipes/duration.pipe.ts
src/pybind/mgr/dashboard/frontend/src/app/shared/rxjs/operators/page-visibility.operator.ts [new file with mode: 0644]
src/pybind/mgr/dashboard/frontend/src/app/shared/rxjs/operators/page-visibilty.operator.ts [deleted file]
src/pybind/mgr/dashboard/frontend/src/app/shared/services/motd-notification.service.ts
src/pybind/mgr/dashboard/frontend/src/app/shared/services/timer.service.ts
src/pybind/mgr/dashboard/services/iscsi_config.py
src/pybind/mgr/dashboard/tests/__init__.py
src/pybind/mgr/dashboard/tests/test_osd.py

index b7ec0da2f04aab24936bf46c979eb32cd63137fe..2cf5568fb8ffff02983c90fb22df09afb0bb2c99 100644 (file)
           },
         },
         {
-          alert: 'CephPGUnavilableBlockingIO',
+          alert: 'CephPGUnavailableBlockingIO',
           'for': '1m',
           expr: '((ceph_health_detail{name="PG_AVAILABILITY"} == 1) - scalar(ceph_health_detail{name="OSD_DOWN"})) == 1',
           labels: { severity: 'critical', type: 'ceph_default', oid: '1.3.6.1.4.1.50495.1.2.1.7.3' },
           expr: 'ceph_health_detail{name="CEPHADM_FAILED_DAEMON"} > 0',
           labels: { severity: 'critical', type: 'ceph_default', oid: '1.3.6.1.4.1.50495.1.2.1.11.1' },
           annotations: {
-            summary: 'A ceph daemon manged by cephadm is down%(cluster)s' % $.MultiClusterSummary(),
+            summary: 'A ceph daemon managed by cephadm is down%(cluster)s' % $.MultiClusterSummary(),
             description: "A daemon managed by cephadm is no longer active. Determine, which daemon is down with 'ceph health detail'. you may start daemons with the 'ceph orch daemon start <daemon_id>'",
           },
         },
index 4a3e6acf389d165e5305c2f9d6d6fc62e46c4344..ae846dc3b84ae08fef1fab8f4ed886033bda6712 100644 (file)
@@ -196,7 +196,7 @@ groups:
           type: "ceph_default"
       - alert: "CephDeviceFailurePredictionTooHigh"
         annotations:
-          description: "The device health module has determined that devices predicted to fail can not be remediated automatically, since too many OSDs would be removed from the cluster to ensure performance and availabililty. Prevent data integrity issues by adding new OSDs so that data may be relocated."
+          description: "The device health module has determined that devices predicted to fail can not be remediated automatically, since too many OSDs would be removed from the cluster to ensure performance and availability. Prevent data integrity issues by adding new OSDs so that data may be relocated."
           documentation: "https://docs.ceph.com/en/latest/rados/operations/health-checks#device-health-toomany"
           summary: "Too many devices are predicted to fail, unable to resolve"
         expr: "ceph_health_detail{name=\"DEVICE_HEALTH_TOOMANY\"} == 1"
@@ -393,7 +393,7 @@ groups:
           oid: "1.3.6.1.4.1.50495.1.2.1.7.5"
           severity: "critical"
           type: "ceph_default"
-      - alert: "CephPGUnavilableBlockingIO"
+      - alert: "CephPGUnavailableBlockingIO"
         annotations:
           description: "Data availability is reduced, impacting the cluster's ability to service I/O. One or more placement groups (PGs) are in a state that blocks I/O."
           documentation: "https://docs.ceph.com/en/latest/rados/operations/health-checks#pg-availability"
@@ -597,7 +597,7 @@ groups:
       - alert: "CephadmDaemonFailed"
         annotations:
           description: "A daemon managed by cephadm is no longer active. Determine, which daemon is down with 'ceph health detail'. you may start daemons with the 'ceph orch daemon start <daemon_id>'"
-          summary: "A ceph daemon manged by cephadm is down"
+          summary: "A ceph daemon managed by cephadm is down"
         expr: "ceph_health_detail{name=\"CEPHADM_FAILED_DAEMON\"} > 0"
         for: "30s"
         labels:
index 1aaea88e7f5a76b67ceaca1c29c9b66ce11c23d6..73cfa7996cf1a624db72991b037bedb25b71bba4 100644 (file)
@@ -784,7 +784,7 @@ tests:
           type: ceph_default
           oid: 1.3.6.1.4.1.50495.1.2.1.11.1
         exp_annotations:
-          summary: A ceph daemon manged by cephadm is down
+          summary: A ceph daemon managed by cephadm is down
           description: "A daemon managed by cephadm is no longer active. Determine, which daemon is down with 'ceph health detail'. you may start daemons with the 'ceph orch daemon start <daemon_id>'"
  - interval: 1m
    input_series:
@@ -1243,7 +1243,7 @@ tests:
         exp_annotations:
           documentation: https://docs.ceph.com/en/latest/rados/operations/health-checks#device-health-toomany
           summary: Too many devices are predicted to fail, unable to resolve
-          description: "The device health module has determined that devices predicted to fail can not be remediated automatically, since too many OSDs would be removed from the cluster to ensure performance and availabililty. Prevent data integrity issues by adding new OSDs so that data may be relocated."
+          description: "The device health module has determined that devices predicted to fail can not be remediated automatically, since too many OSDs would be removed from the cluster to ensure performance and availability. Prevent data integrity issues by adding new OSDs so that data may be relocated."
  - interval: 1m
    input_series:
     - series: 'ceph_health_detail{name="DEVICE_HEALTH_IN_USE"}'
@@ -1754,15 +1754,15 @@ tests:
    alert_rule_test:
     # PG_AVAILABILITY and OSD_DOWN not firing .. no alert
     - eval_time: 1m
-      alertname: CephPGUnavilableBlockingIO
+      alertname: CephPGUnavailableBlockingIO
       exp_alerts:
     # PG_AVAILABILITY firing, but osd_down is active .. no alert
     - eval_time: 5m
-      alertname: CephPGUnavilableBlockingIO
+      alertname: CephPGUnavailableBlockingIO
       exp_alerts:
     # PG_AVAILABILITY firing, AND OSD_DOWN is not active...raise the alert
     - eval_time: 15m
-      alertname: CephPGUnavilableBlockingIO
+      alertname: CephPGUnavailableBlockingIO
       exp_alerts:
       - exp_labels:
           name: "PG_AVAILABILITY"
index 5dc76a09e41d0ce5dc0e2dfbef3e3741660833fc..aa040ef9411c96b8a4a6a60e74364bb88043b9db 100644 (file)
@@ -93,7 +93,7 @@ def step_impl(context, interval):
 def step_impl(context, eval_time):
     eval_time_without_unit, unit = resolve_time_and_unit(eval_time)
     if eval_time_without_unit is None:
-        raise ValueError(f'Invalid evalution time: {eval_time}. ' +
+        raise ValueError(f'Invalid evaluation time: {eval_time}. ' +
                            'A valid time looks like "1m" where you have a number plus a unit')
     global_context.promql_expr_test.set_eval_time(eval_time_without_unit, unit)
 
index 1fce6559dfb9c0e3f042be8c1e5933fdfc2ac157..835dedee7eb5945a3d8cfe67986bd53dd9b96074 100644 (file)
@@ -85,7 +85,7 @@ def add_default_dashboards_variables(data: Dict[str, Any]) -> None:
 def replace_grafana_expr_variables(expr: str, variable: str, value: Any) -> str:
     """ Replace grafana variables in expression with a value
 
-    It should match the whole word, 'osd' musn't match with the 'osd' prefix in 'osd_hosts'
+    It should match the whole word, 'osd' must not match with the 'osd' prefix in 'osd_hosts'
     >>> replace_grafana_expr_variables('metric{name~="$osd_hosts|$other|$osd"}', \
         'osd', 'replacement')
     'metric{name~="$osd_hosts|$other|replacement"}'
index b6a86e40563fb6ae44297fa69a153f77da7f1e40..d868950cff9166043c9fe650be4511f093e4b419 100644 (file)
@@ -189,7 +189,7 @@ class RbdMirroringTest(DashboardTestCase):
         self._task_post('/api/block/mirroring/pool/rbd/bootstrap/peer', import_data)
         self.assertStatus(400)
 
-        # cannot import "youself" as peer
+        # cannot import "yourself" as peer
         import_data['direction'] = 'rx'
         self._task_post('/api/block/mirroring/pool/rbd/bootstrap/peer', import_data)
         self.assertStatus(400)
index 3a6464f5a5b7f7eeed890bf1cc8987da8b7a3be8..da958900ff4f00ff2d27473c663bd842a2c2e1ee 100644 (file)
@@ -271,7 +271,7 @@ class UserTest(DashboardTestCase):
                          'Password must not contain sequential characters.')
         self._reset_login_to_admin('test1')
 
-    def test_change_password_contains_repetetive_characters(self):
+    def test_change_password_contains_repetitive_characters(self):
         self.create_user('test1', 'mypassword10#', ['read-only'], force_password=False)
         self.login('test1', 'mypassword10#')
         self._post('/api/user/test1/change_password', {
index d37337b404ed4c38f6463798c8d64bfb48b4d111..317dc45ce2efc12d5cd806534402527ec09e0725 100644 (file)
@@ -77,7 +77,7 @@ def get_grafana_dashboards(base_dir):
                 dashboard_config = json.load(f)
                 uid = dashboard_config.get('uid')
                 # if it's not a grafana dashboard, skip checks
-                # Fields in a dasbhoard:
+                # Fields in a dashboard:
                 # https://grafana.com/docs/grafana/latest/dashboards/json-model/#json-fields
                 expected_fields = [
                     'id', 'uid', 'title', 'tags', 'style', 'timezone', 'editable',
index 4a57ac06cc588cad0c3a28fa5e87cd6ca60c20ed..240a2b5ab8c4a0c34df24b409f24bbf640edf865 100644 (file)
@@ -155,7 +155,7 @@ class Container:
         raise NotImplementedError
 
     def to_dict(self, key=''):
-        # intialize the schema of this container
+        # initialize the schema of this container
         ui_schemas = []
         control_schema = {
             'type': self._property_type(),
index 69de90f3780ba86ab4064e650a632acd1a1580bc..abb680397385389498455dd157d109c2e7377c04 100644 (file)
@@ -328,7 +328,7 @@ class CephFS(RESTController):
                                      "No cephfs with id {0}".format(fs_id))
 
         # Decorate the metadata with some fields that will be
-        # indepdendent of whether it's a kernel or userspace
+        # independent of whether it's a kernel or userspace
         # client, so that the javascript doesn't have to grok that.
         for client in clients:
             if "ceph_version" in client['client_metadata']:  # pragma: no cover - no complexity
index 812b9c035ae3d7837c4231bf8cd199b8ae16d4c1..c0062b94d705e4c0950d48a7aaa95e2870a27d13 100644 (file)
@@ -226,7 +226,7 @@ def get_inventories(hosts: Optional[List[str]] = None,
     :param hosts: Hostnames to query.
     :param refresh: Ask the Orchestrator to refresh the inventories. Note the this is an
                     asynchronous operation, the updated version of inventories need to
-                    be re-qeuried later.
+                    be re-queried later.
     :return: Returns list of inventory.
     :rtype: list
     """
index bf6cbc05263b00ad3b54b685f94450238f5817dd..89927305d100db2c486053886f5e4e66e5b76cd1 100644 (file)
@@ -97,7 +97,7 @@ export class ImagesPageHelper extends PageHelper {
     // Check for visibility of modal container
     cy.get('.modal-header').should('be.visible');
 
-    // If purgeing a specific pool, selects that pool if given
+    // If purging a specific pool, selects that pool if given
     if (pool !== undefined) {
       this.selectOption('poolName', pool);
       cy.get('#poolName').should('have.class', 'ng-valid'); // check if pool is selected
index 8ad2a1dafda06c419670aa141e8ad7bce28587f9..c7ac2c485d049c089dc98cfe4e92de94dccfb2b1 100644 (file)
@@ -14,7 +14,7 @@ describe('Hosts page', () => {
       cy.fixture('orchestrator/services.json').as('services');
     });
 
-    it('should not add an exsiting host', function () {
+    it('should not add an existing host', function () {
       const hostname = Cypress._.sample(this.hosts).name;
       hosts.navigateTo('add');
       hosts.add(hostname, true);
index be49fcba099359f62a9c58ba62d00e60e7b3dd93..a71cdb7928233396020d77a4b1ff7527f04037e6 100644 (file)
@@ -51,7 +51,7 @@ Feature: Cluster expansion host addition
             | ceph-node-01 |
             | ceph-node-02 |
 
-    Scenario: Add exisiting host and verify it failed
+    Scenario: Add existing host and verify it failed
         Given I am on the "Add Hosts" section
         And I should see a row with "ceph-node-00"
         When I click on "Add" button
index a27be3c6ba48767b4fb3bda9a5fb88ce10f17d53..93b77fe6bbc43b0b171033111b5f4bf35d5fdaa6 100644 (file)
@@ -162,7 +162,7 @@ export class BucketsPageHelper extends PageHelper {
 
     // Check invalid placement target input
     this.selectOwner(BucketsPageHelper.USERS[1]);
-    // The drop down error message will not appear unless a valid option is previsously selected.
+    // The drop down error message will not appear unless a valid option is previously selected.
     this.selectPlacementTarget('default-placement');
     this.selectPlacementTarget('-- Select a placement target --');
     cy.get('@nameInputField').click(); // Trigger validation
index 980cced88072d8fd91ffe9f037441f2cc98a4a18..3cffa08ce275eee85b3f603954ad07d268861d9f 100644 (file)
@@ -12,7 +12,7 @@ export class UsersPageHelper extends PageHelper {
   create(tenant: string, user_id: string, fullname: string, email: string, maxbuckets: string) {
     // Enter in user_id
     cy.get('#user_id').type(user_id);
-    // Show Tenanat
+    // Show Tenant
     cy.get('#show_tenant').click({ force: true });
     // Enter in tenant
     cy.get('#tenant').type(tenant);
index b69f26f58dc3818fc5ad61798d1832e1870dd1c9..8e2d621fe141c5d07cf0fa4168407c6ded35cd52 100644 (file)
@@ -50,7 +50,7 @@ describe('Notification page', () => {
     notification.getToast().should('not.exist');
     notification.open();
     notification.getNotifications().should('have.length.gt', 0);
-    notification.getClearNotficationsBtn().should('be.visible');
+    notification.getClearNotificationsBtn().should('be.visible');
     notification.clearNotifications();
   });
 });
index 12c424e350d7482be9c5447ccd546d07fa5ec941..47f333b6458945bcb7309d3302b311a2c99a754e 100644 (file)
@@ -1,7 +1,7 @@
 import { PageHelper } from '../page-helper.po';
 
 export class NotificationSidebarPageHelper extends PageHelper {
-  getNotificatinoIcon() {
+  getNotificationIcon() {
     return cy.get('cd-notifications a');
   }
 
@@ -17,7 +17,7 @@ export class NotificationSidebarPageHelper extends PageHelper {
     return this.getSidebar().find('.card.tc_notification');
   }
 
-  getClearNotficationsBtn() {
+  getClearNotificationsBtn() {
     return this.getSidebar().find('button.btn-block');
   }
 
@@ -26,14 +26,14 @@ export class NotificationSidebarPageHelper extends PageHelper {
   }
 
   open() {
-    this.getNotificatinoIcon().click();
+    this.getNotificationIcon().click();
     this.getSidebar().should('be.visible');
   }
 
   clearNotifications() {
     // It can happen that although notifications are cleared, by the time we check the notifications
     // amount, another notification can appear, so we check it more than once (if needed).
-    this.getClearNotficationsBtn().click();
+    this.getClearNotificationsBtn().click();
     this.getNotifications()
       .should('have.length.gte', 0)
       .then(($elems) => {
index 4617e13e4247c00cd13c3560cd8b18318f617ec8..8e7812d7194125c26e4d8397c8537b16f726986b 100644 (file)
@@ -84,12 +84,12 @@ export class RbdNamespaceListComponent implements OnInit {
       pools = pools.filter(
         (pool: any) => this.rbdService.isRBDPool(pool) && pool.type === 'replicated'
       );
-      const promisses: Observable<any>[] = [];
+      const promises: Observable<any>[] = [];
       pools.forEach((pool: any) => {
-        promisses.push(this.rbdService.listNamespaces(pool['pool_name']));
+        promises.push(this.rbdService.listNamespaces(pool['pool_name']));
       });
-      if (promisses.length > 0) {
-        forkJoin(promisses).subscribe((data: Array<Array<string>>) => {
+      if (promises.length > 0) {
+        forkJoin(promises).subscribe((data: Array<Array<string>>) => {
           const result: any[] = [];
           for (let i = 0; i < data.length; i++) {
             const namespaces = data[i];
index 841d635b1a0957c1b8d067952397b784ff3589ac..9fd445dc23dd3f4f6179b36d5773447df8fb68c0 100644 (file)
@@ -242,7 +242,7 @@ export class CephfsDirectoriesComponent implements OnInit, OnChanges {
 
   private disableCreateSnapshot(): string | boolean {
     const folders = this.selectedDir.path.split('/').slice(1);
-    // With deph of 4 or more we have the subvolume files/folders for which we cannot create
+    // With depth of 4 or more we have the subvolume files/folders for which we cannot create
     // a snapshot. Somehow, you can create a snapshot of the subvolume but not its files.
     if (folders.length >= 4 && folders[0] === 'volumes') {
       return $localize`Cannot create snapshots for files/folders in the subvolume ${folders[2]}`;
@@ -645,7 +645,7 @@ export class CephfsDirectoriesComponent implements OnInit, OnChanges {
     }
     const node = this.getNode(parent);
     if (!node) {
-      // Node will not be found for new sub sub directories - this is the intended behaviour
+      // Node will not be found for new sub directories - this is the intended behaviour
       return;
     }
     const children = this.getChildren(parent);
index 43be6e8c758227d52aa6e7fb6dddca8c38920e17..6c9311cbeb8210b6ea534c228fbd7c9afd8157d0 100644 (file)
@@ -162,7 +162,7 @@ describe('HostsComponent', () => {
     expect(spans[2].textContent).toContain('rgw: 1');
   });
 
-  it('should test if host facts are tranformed correctly if orch available', () => {
+  it('should test if host facts are transformed correctly if orch available', () => {
     const features = [OrchestratorFeature.HOST_FACTS];
     const payload = [
       {
@@ -227,7 +227,7 @@ describe('HostsComponent', () => {
     expect(spans[7].textContent).toBe('N/A');
   });
 
-  it('should test if host facts are unavailable if get_fatcs orch feature is not available', () => {
+  it('should test if host facts are unavailable if get_facts orch feature is not available', () => {
     const payload = [
       {
         hostname: 'host_test',
index 87b791b690307b537ac5df3a1df28e8503f380a1..7e2bccb32dd2d10f492a0088383f862e7635c31a 100644 (file)
@@ -528,7 +528,7 @@ describe('PoolFormComponent', () => {
       expect(component.getMaxSize()).toBe(3);
     });
 
-    it('should return the osd count as minimum if its lower the the rule minimum', () => {
+    it('should return the osd count as minimum if its lower the rule minimum', () => {
       component.info.osd_count = 0;
       formHelper.setValue('crushRule', component.info.crush_rules_replicated[0]);
       const control = form.get('crushRule');
index ff070579317652ed649c2135c3c271d631ca70f6..58d6fa983d38cf4a2a256527fb0f80881a848e3a 100644 (file)
@@ -87,7 +87,7 @@ describe('RgwBucketListComponent', () => {
     });
   });
 
-  it('should test if bucket data is tranformed correctly', () => {
+  it('should test if bucket data is transformed correctly', () => {
     rgwBucketServiceListSpy.and.returnValue(
       of([
         {
index 2f886ccf5d4a42cfa5f740e9496de884d859451c..6d30c5b729466175c3bdfbb3f738dd331cc02cfe 100644 (file)
@@ -81,7 +81,7 @@ describe('RgwUserListComponent', () => {
     });
   });
 
-  it('should test if rgw-user data is tranformed correctly', () => {
+  it('should test if rgw-user data is transformed correctly', () => {
     rgwUserServiceListSpy.and.returnValue(
       of([
         {
index fce50658a4484ee17c1c3f5f405ec9ab57c6eab3..e339ab819dce73c8db9bd1ffaf3dd9a699cd82a5 100644 (file)
@@ -79,7 +79,7 @@
         "Local Time is:                      Thu Oct 24 10:17:06 2019 CEST",
         "Firmware Updates (0x16):            3 Slots, no Reset required",
         "Optional Admin Commands (0x0017):   Security Format Frmw_DL Self_Test",
-        "Optional NVM Commands (0x005f):     Comp Wr_Unc DS_Mngmt Wr_Zero Sav/Sel_Feat Timestmp",
+        "Optional NVM Commands (0x005f):     Comp Wr_Unc DS_Mngmt Wr_Zero Sav/Sel_Feat Timestamp",
         "Maximum Data Transfer Size:         512 Pages",
         "Warning  Comp. Temp. Threshold:     85 Celsius",
         "Critical Comp. Temp. Threshold:     85 Celsius",
index abfdcfe5be57fe3785ae92f5ea2739955c7231e8..3ad0a8c564d2a71c87fca131a5d33460e436dec1 100644 (file)
@@ -194,7 +194,7 @@ smartmontools is required to successfully retrieve data.`;
         prop: 'errors_corrected_by_rereads_rewrites',
         name: $localize`Errors Corrected by Rereads/Rewrites`
       },
-      { prop: 'gigabytes_processed', name: $localize`Gigabyes Processed` },
+      { prop: 'gigabytes_processed', name: $localize`Gigabytes Processed` },
       { prop: 'total_errors_corrected', name: $localize`Total Errors Corrected` },
       { prop: 'total_uncorrected_errors', name: $localize`Total Errors Uncorrected` }
     ];
index 39369ffd5bebc5005efa52f786f0a43e1fa81efb..3868f55ba53e1ab472789d8ebd3ad0cb21617c73 100644 (file)
@@ -147,8 +147,8 @@ export class NotificationsSidebarComponent implements OnInit, OnDestroy {
   }
 
   _handleTasks(executingTasks: ExecutingTask[]) {
-    for (const excutingTask of executingTasks) {
-      excutingTask.description = this.taskMessageService.getRunningTitle(excutingTask);
+    for (const executingTask of executingTasks) {
+      executingTask.description = this.taskMessageService.getRunningTitle(executingTask);
     }
     this.executingTasks = executingTasks;
   }
index 5cf90fdea5cb3b68af08cda544bc2391c686e749..a0954990be50d7474cb210d9d54be4879fc7527c 100644 (file)
@@ -608,7 +608,7 @@ describe('CdValidators', () => {
     });
   });
 
-  describe('dimmlessBinary validators', () => {
+  describe('dimlessBinary validators', () => {
     const i18nMock = (a: string, b: { value: string }) => a.replace('{{value}}', b.value);
 
     beforeEach(() => {
index 8b56b291c73f042a599e5f9ca5da71057ee3b8b6..c6260011a9f999ab0f4fbefd84cfff7aa2560fbb 100644 (file)
@@ -1,10 +1,10 @@
 export class ImageSpec {
   static fromString(imageSpec: string) {
-    const imageSpecSplited = imageSpec.split('/');
+    const imageSpecSplit = imageSpec.split('/');
 
-    const poolName = imageSpecSplited[0];
-    const namespace = imageSpecSplited.length >= 3 ? imageSpecSplited[1] : null;
-    const imageName = imageSpecSplited.length >= 3 ? imageSpecSplited[2] : imageSpecSplited[1];
+    const poolName = imageSpecSplit[0];
+    const namespace = imageSpecSplit.length >= 3 ? imageSpecSplit[1] : null;
+    const imageName = imageSpecSplit.length >= 3 ? imageSpecSplit[2] : imageSpecSplit[1];
 
     return new this(poolName, namespace, imageName);
   }
index 687153b21b6e7e24d9398eee2a6d820564a23d97..0a9507a182789ee71def2450546f12fedae83dc3 100644 (file)
@@ -10,7 +10,7 @@ export class DurationPipe implements PipeTransform {
    * source: https://stackoverflow.com/a/34270811
    *
    * @param  {number} seconds The number of seconds to be processed
-   * @return {string}         The phrase describing the the amount of time
+   * @return {string}         The phrase describing the amount of time
    */
   transform(seconds: number): string {
     if (seconds === null || seconds <= 0) {
diff --git a/src/pybind/mgr/dashboard/frontend/src/app/shared/rxjs/operators/page-visibility.operator.ts b/src/pybind/mgr/dashboard/frontend/src/app/shared/rxjs/operators/page-visibility.operator.ts
new file mode 100644 (file)
index 0000000..22644dc
--- /dev/null
@@ -0,0 +1,20 @@
+import { fromEvent, Observable, partition } from 'rxjs';
+import { repeatWhen, shareReplay, takeUntil } from 'rxjs/operators';
+
+export function whenPageVisible() {
+  const visibilitychange$ = fromEvent(document, 'visibilitychange').pipe(
+    shareReplay({ refCount: true, bufferSize: 1 })
+  );
+
+  const [pageVisible$, pageHidden$] = partition(
+    visibilitychange$,
+    () => document.visibilityState === 'visible'
+  );
+
+  return function <T>(source: Observable<T>) {
+    return source.pipe(
+      takeUntil(pageHidden$),
+      repeatWhen(() => pageVisible$)
+    );
+  };
+}
diff --git a/src/pybind/mgr/dashboard/frontend/src/app/shared/rxjs/operators/page-visibilty.operator.ts b/src/pybind/mgr/dashboard/frontend/src/app/shared/rxjs/operators/page-visibilty.operator.ts
deleted file mode 100644 (file)
index 22644dc..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-import { fromEvent, Observable, partition } from 'rxjs';
-import { repeatWhen, shareReplay, takeUntil } from 'rxjs/operators';
-
-export function whenPageVisible() {
-  const visibilitychange$ = fromEvent(document, 'visibilitychange').pipe(
-    shareReplay({ refCount: true, bufferSize: 1 })
-  );
-
-  const [pageVisible$, pageHidden$] = partition(
-    visibilitychange$,
-    () => document.visibilityState === 'visible'
-  );
-
-  return function <T>(source: Observable<T>) {
-    return source.pipe(
-      takeUntil(pageHidden$),
-      repeatWhen(() => pageVisible$)
-    );
-  };
-}
index d2ee89f9cd168b7890d4e5faaafff117679a51e3..c2602204c43cef3e9fbe53e9501e4f8785c6d6d3 100644 (file)
@@ -5,7 +5,7 @@ import { BehaviorSubject, EMPTY, Observable, of, Subscription } from 'rxjs';
 import { catchError, delay, mergeMap, repeat, tap } from 'rxjs/operators';
 
 import { Motd, MotdService } from '~/app/shared/api/motd.service';
-import { whenPageVisible } from '../rxjs/operators/page-visibilty.operator';
+import { whenPageVisible } from '../rxjs/operators/page-visibility.operator';
 
 @Injectable({
   providedIn: 'root'
index 716b710968f339963a4fb69ba063cb2c1a6d8dc8..f1c38e38a978bd3eff4b90f427ad1ac042620107 100644 (file)
@@ -3,7 +3,7 @@ import { Injectable } from '@angular/core';
 import { Observable, timer } from 'rxjs';
 import { observeOn, shareReplay, switchMap } from 'rxjs/operators';
 
-import { whenPageVisible } from '../rxjs/operators/page-visibilty.operator';
+import { whenPageVisible } from '../rxjs/operators/page-visibility.operator';
 import { NgZoneSchedulerService } from './ngzone-scheduler.service';
 
 @Injectable({
index c1898a463cac96f8f85e5136ad33c683b09c7b9f..492afa947741aa7df51e2d5ff5bbd15c54352fd9 100644 (file)
@@ -67,7 +67,7 @@ class IscsiGatewaysConfig(object):
                         del config['gateways'][gateway_name]
                         cls._save_config(config)
                 except RequestException:
-                    # If gateway is not acessible, it should be removed manually
+                    # If gateway is not accessible, it should be removed manually
                     # or we will try to update automatically next time
                     continue
 
index 51d233208b94cb9d3e8888b64664b4aaec605e70..ece3ef721bf76ab3e4b97541949beb14d47647fb 100644 (file)
@@ -120,7 +120,7 @@ class ControllerTestCase(helper.CPWebCase):
             inst = ctrl()
 
             # We need to cache the controller endpoints because
-            # BaseController#endpoints method is not idempontent
+            # BaseController#endpoints method is not idempotent
             # and a controller might be needed by more than one
             # unit test.
             if ctrl not in cls._endpoints_cache:
index 144a98e49af4634c57c209a5c82def46ba3e1807..c3cd0dca88dca5ba6a4beac9a426903d0ca769d6 100644 (file)
@@ -196,7 +196,7 @@ class OsdHelper(object):
                 self.available = available
                 self.path = path
 
-        def create_invetory_host(host, devices_data):
+        def create_inventory_host(host, devices_data):
             inventory_host = mock.Mock()
             inventory_host.devices.devices = []
             for data in devices_data:
@@ -209,7 +209,7 @@ class OsdHelper(object):
         for device in devices_data:
             hosts.add(device['host'])
 
-        inventory = [create_invetory_host(host, devices_data) for host in hosts]
+        inventory = [create_inventory_host(host, devices_data) for host in hosts]
         orch_client_mock.inventory.list.return_value = inventory