From 014a4655812fee3122a415f17a243d2b82fe0bfb Mon Sep 17 00:00:00 2001 From: Andrea Decorte Date: Thu, 21 Apr 2022 23:49:17 +0200 Subject: [PATCH] Add support for IngressClass [kubernetes#5232] --- i18n/de/messages.de.xlf | 129 +- i18n/es/messages.es.xlf | 116 +- i18n/fr/messages.fr.xlf | 104 +- i18n/ja/messages.ja.xlf | 104 +- i18n/ko/messages.ko.xlf | 104 +- i18n/messages.xlf | 2019 +++++++++-------- i18n/zh-Hans/messages.zh-Hans.xlf | 104 +- i18n/zh-Hant-HK/messages.zh-Hant-HK.xlf | 104 +- i18n/zh-Hant/messages.zh-Hant.xlf | 104 +- src/app/backend/api/types.go | 2 + src/app/backend/handler/apihandler.go | 42 + .../resource/common/resourcechannels.go | 28 + .../backend/resource/ingressclass/common.go | 54 + .../backend/resource/ingressclass/detail.go | 68 + .../resource/ingressclass/detail_test.go | 69 + src/app/backend/resource/ingressclass/list.go | 95 + .../resource/ingressclass/list_test.go | 134 ++ src/app/frontend/chrome/nav/template.html | 7 +- src/app/frontend/chrome/routing.ts | 4 + src/app/frontend/common/components/module.ts | 2 + .../components/resourcelist/groupids.ts | 1 + .../resourcelist/ingressclass/component.ts | 59 + .../resourcelist/ingressclass/template.html | 98 + .../common/services/resource/endpoint.ts | 1 + src/app/frontend/overview/template.html | 2 + .../ingressclass/detail/component.ts | 68 + .../discovery/ingressclass/detail/style.scss | 23 + .../ingressclass/detail/template.html | 43 + .../discovery/ingressclass/list/component.ts | 21 + .../resource/discovery/ingressclass/module.ts | 28 + .../discovery/ingressclass/routing.ts | 46 + .../frontend/resource/discovery/template.html | 2 + src/app/frontend/search/template.html | 2 + src/app/frontend/typings/root.api.ts | 13 + 34 files changed, 2588 insertions(+), 1212 deletions(-) create mode 100644 src/app/backend/resource/ingressclass/common.go create mode 100644 src/app/backend/resource/ingressclass/detail.go create mode 100644 src/app/backend/resource/ingressclass/detail_test.go create mode 100644 src/app/backend/resource/ingressclass/list.go create mode 100644 src/app/backend/resource/ingressclass/list_test.go create mode 100644 src/app/frontend/common/components/resourcelist/ingressclass/component.ts create mode 100644 src/app/frontend/common/components/resourcelist/ingressclass/template.html create mode 100644 src/app/frontend/resource/discovery/ingressclass/detail/component.ts create mode 100644 src/app/frontend/resource/discovery/ingressclass/detail/style.scss create mode 100644 src/app/frontend/resource/discovery/ingressclass/detail/template.html create mode 100644 src/app/frontend/resource/discovery/ingressclass/list/component.ts create mode 100644 src/app/frontend/resource/discovery/ingressclass/module.ts create mode 100644 src/app/frontend/resource/discovery/ingressclass/routing.ts diff --git a/i18n/de/messages.de.xlf b/i18n/de/messages.de.xlf index 02749f9c98ba..ae67257900d7 100644 --- a/i18n/de/messages.de.xlf +++ b/i18n/de/messages.de.xlf @@ -595,6 +595,10 @@ src/app/frontend/resource/discovery/ingress/detail/template.html 23 + + src/app/frontend/resource/discovery/ingressclass/detail/template.html + 22 + src/app/frontend/resource/discovery/service/detail/template.html 22 @@ -653,11 +657,11 @@ Konfiguration und Storage src/app/frontend/overview/template.html - 56 + 58 src/app/frontend/search/template.html - 52 + 54 @@ -693,11 +697,11 @@ src/app/frontend/overview/template.html - 73 + 75 src/app/frontend/search/template.html - 68 + 70 @@ -815,6 +819,10 @@ src/app/frontend/common/components/resourcelist/ingress/template.html 44 + + src/app/frontend/common/components/resourcelist/ingressclass/template.html + 44 + src/app/frontend/common/components/resourcelist/job/template.html 69 @@ -1593,7 +1601,7 @@ src/app/frontend/chrome/nav/template.html - 68 + 67 @@ -1611,7 +1619,7 @@ src/app/frontend/chrome/nav/template.html - 77 + 82 @@ -1620,7 +1628,7 @@ src/app/frontend/chrome/nav/template.html - 83 + 88 @@ -1629,7 +1637,7 @@ src/app/frontend/chrome/nav/template.html - 89 + 94 @@ -1638,7 +1646,7 @@ src/app/frontend/chrome/nav/template.html - 95 + 100 @@ -1647,7 +1655,7 @@ src/app/frontend/chrome/nav/template.html - 101 + 106 @@ -1656,7 +1664,7 @@ src/app/frontend/chrome/nav/template.html - 105 + 110 @@ -1665,7 +1673,7 @@ src/app/frontend/chrome/nav/template.html - 111 + 116 @@ -1674,7 +1682,7 @@ src/app/frontend/chrome/nav/template.html - 115 + 120 @@ -1683,7 +1691,7 @@ src/app/frontend/chrome/nav/template.html - 120 + 125 @@ -1691,7 +1699,15 @@ Events src/app/frontend/chrome/nav/template.html - 125 + 130 + + + + Ingress Classes + Ingress Classes + + src/app/frontend/chrome/nav/template.html + 77 @@ -1700,7 +1716,7 @@ src/app/frontend/chrome/nav/template.html - 129 + 134 @@ -1709,7 +1725,7 @@ src/app/frontend/chrome/nav/template.html - 134 + 139 @@ -1718,7 +1734,7 @@ src/app/frontend/chrome/nav/template.html - 139 + 144 @@ -1727,7 +1743,7 @@ src/app/frontend/chrome/nav/template.html - 143 + 148 @@ -1736,7 +1752,7 @@ src/app/frontend/chrome/nav/template.html - 149 + 154 @@ -1745,7 +1761,7 @@ src/app/frontend/chrome/nav/template.html - 155 + 160 @@ -1754,7 +1770,7 @@ src/app/frontend/chrome/nav/template.html - 160 + 165 @@ -1763,7 +1779,7 @@ src/app/frontend/chrome/nav/template.html - 168 + 173 @@ -1772,7 +1788,7 @@ src/app/frontend/chrome/nav/template.html - 179 + 184 @@ -1781,7 +1797,7 @@ src/app/frontend/chrome/nav/template.html - 187 + 192 @@ -1790,7 +1806,7 @@ src/app/frontend/chrome/nav/template.html - 192 + 197 @@ -2022,7 +2038,7 @@ src/app/frontend/overview/template.html - 64 + 66 src/app/frontend/resource/cluster/serviceaccount/detail/template.html @@ -2038,7 +2054,7 @@ src/app/frontend/search/template.html - 60 + 62 @@ -2141,6 +2157,10 @@ src/app/frontend/common/components/resourcelist/ingress/template.html 23 + + src/app/frontend/common/components/resourcelist/ingressclass/template.html + 23 + src/app/frontend/common/components/resourcelist/job/template.html 29 @@ -2978,6 +2998,51 @@ 128 +<<<<<<< HEAD +======= + + + Deployments + Deployments + + src/app/frontend/common/components/resourcelist/deployment/template.html + 24 + + + src/app/frontend/common/components/workloadstatus/template.html + 74 + + + + Ingress Classes + Ingress Classes + + src/app/frontend/common/components/resourcelist/ingressclass/template.html + 21 + + + + Controller + Controller + + src/app/frontend/common/components/resourcelist/ingressclass/template.html + 55 + + + src/app/frontend/resource/discovery/ingressclass/detail/template.html + 29 + + + + Events + Events + + src/app/frontend/common/components/resourcelist/event/template.html + 22 + + +>>>>>>> 008a153d6 (Add support for IngressClass [#5232]) + Created Erstellungszeitpunkt @@ -3029,6 +3094,10 @@ src/app/frontend/common/components/resourcelist/ingress/template.html 116 + + src/app/frontend/common/components/resourcelist/ingressclass/template.html + 65 + src/app/frontend/common/components/resourcelist/job/template.html 124 @@ -5735,6 +5804,10 @@ src/app/frontend/resource/config/storageclass/detail/template.html 37 + + src/app/frontend/resource/discovery/ingressclass/detail/template.html + 37 + Data diff --git a/i18n/es/messages.es.xlf b/i18n/es/messages.es.xlf index dc1a62004986..86a1ba9b6a3f 100644 --- a/i18n/es/messages.es.xlf +++ b/i18n/es/messages.es.xlf @@ -595,6 +595,10 @@ src/app/frontend/resource/discovery/ingress/detail/template.html 23 + + src/app/frontend/resource/discovery/ingressclass/detail/template.html + 22 + src/app/frontend/resource/discovery/service/detail/template.html 22 @@ -653,11 +657,11 @@ Configuración y almacenamiento src/app/frontend/overview/template.html - 56 + 58 src/app/frontend/search/template.html - 52 + 54 @@ -693,11 +697,11 @@ src/app/frontend/overview/template.html - 73 + 75 src/app/frontend/search/template.html - 68 + 70 @@ -815,6 +819,10 @@ src/app/frontend/common/components/resourcelist/ingress/template.html 44 + + src/app/frontend/common/components/resourcelist/ingressclass/template.html + 44 + src/app/frontend/common/components/resourcelist/job/template.html 69 @@ -1592,7 +1600,7 @@ src/app/frontend/chrome/nav/template.html - 68 + 67 @@ -1610,7 +1618,7 @@ src/app/frontend/chrome/nav/template.html - 77 + 82 @@ -1619,7 +1627,7 @@ src/app/frontend/chrome/nav/template.html - 83 + 88 @@ -1628,7 +1636,7 @@ src/app/frontend/chrome/nav/template.html - 89 + 94 @@ -1637,7 +1645,7 @@ src/app/frontend/chrome/nav/template.html - 95 + 100 @@ -1646,7 +1654,7 @@ src/app/frontend/chrome/nav/template.html - 101 + 106 @@ -1655,7 +1663,7 @@ src/app/frontend/chrome/nav/template.html - 105 + 110 @@ -1664,7 +1672,7 @@ src/app/frontend/chrome/nav/template.html - 111 + 116 @@ -1673,7 +1681,7 @@ src/app/frontend/chrome/nav/template.html - 115 + 120 @@ -1682,7 +1690,7 @@ src/app/frontend/chrome/nav/template.html - 120 + 125 @@ -1690,7 +1698,15 @@ Eventos src/app/frontend/chrome/nav/template.html - 125 + 130 + + + + Ingress Classes + Ingress Classes + + src/app/frontend/chrome/nav/template.html + 77 @@ -1698,7 +1714,7 @@ Espacios de Nombre src/app/frontend/chrome/nav/template.html - 129 + 134 @@ -1706,7 +1722,7 @@ Políticas de Red src/app/frontend/chrome/nav/template.html - 134 + 139 @@ -1714,7 +1730,7 @@ Nodos src/app/frontend/chrome/nav/template.html - 139 + 144 @@ -1722,7 +1738,7 @@ Volúmenes Persistentes src/app/frontend/chrome/nav/template.html - 143 + 148 @@ -1730,7 +1746,7 @@ Vinculaciones de roles src/app/frontend/chrome/nav/template.html - 149 + 154 @@ -1738,7 +1754,7 @@ Roles src/app/frontend/chrome/nav/template.html - 155 + 160 @@ -1746,7 +1762,7 @@ Cuentas de Servicio src/app/frontend/chrome/nav/template.html - 160 + 165 @@ -1754,7 +1770,7 @@ Definiciones de recursos personalizadas src/app/frontend/chrome/nav/template.html - 168 + 173 @@ -1762,7 +1778,7 @@ Complementos src/app/frontend/chrome/nav/template.html - 179 + 184 @@ -1770,7 +1786,7 @@ Ajustes src/app/frontend/chrome/nav/template.html - 187 + 192 @@ -1779,7 +1795,7 @@ src/app/frontend/chrome/nav/template.html - 192 + 197 @@ -2011,7 +2027,7 @@ src/app/frontend/overview/template.html - 64 + 66 src/app/frontend/resource/cluster/serviceaccount/detail/template.html @@ -2027,7 +2043,7 @@ src/app/frontend/search/template.html - 60 + 62 @@ -2130,6 +2146,10 @@ src/app/frontend/common/components/resourcelist/ingress/template.html 23 + + src/app/frontend/common/components/resourcelist/ingressclass/template.html + 23 + src/app/frontend/common/components/resourcelist/job/template.html 29 @@ -2391,6 +2411,26 @@ 68 + + Ingress Classes + Ingress Classes + + src/app/frontend/common/components/resourcelist/ingressclass/template.html + 21 + + + + Controller + Controller + + src/app/frontend/common/components/resourcelist/ingressclass/template.html + 55 + + + src/app/frontend/resource/discovery/ingressclass/detail/template.html + 29 + + Horizontal Pod Autoscaler Horizontal Pod Autoscaler @@ -2967,6 +3007,18 @@ 128 + + Deployments + Deployments + + src/app/frontend/common/components/resourcelist/deployment/template.html + 24 + + + src/app/frontend/common/components/workloadstatus/template.html + 74 + + Created Fecha de creación @@ -3018,6 +3070,10 @@ src/app/frontend/common/components/resourcelist/ingress/template.html 116 + + src/app/frontend/common/components/resourcelist/ingressclass/template.html + 65 + src/app/frontend/common/components/resourcelist/job/template.html 124 @@ -5724,6 +5780,10 @@ src/app/frontend/resource/config/storageclass/detail/template.html 37 + + src/app/frontend/resource/discovery/ingressclass/detail/template.html + 37 + Data diff --git a/i18n/fr/messages.fr.xlf b/i18n/fr/messages.fr.xlf index ac3bd7656794..41bca20eac97 100644 --- a/i18n/fr/messages.fr.xlf +++ b/i18n/fr/messages.fr.xlf @@ -595,6 +595,10 @@ src/app/frontend/resource/discovery/ingress/detail/template.html 23 + + src/app/frontend/resource/discovery/ingressclass/detail/template.html + 22 + src/app/frontend/resource/discovery/service/detail/template.html 22 @@ -653,11 +657,11 @@ Configuration et Stockage src/app/frontend/overview/template.html - 56 + 58 src/app/frontend/search/template.html - 52 + 54 @@ -693,11 +697,11 @@ src/app/frontend/overview/template.html - 73 + 75 src/app/frontend/search/template.html - 68 + 70 @@ -815,6 +819,10 @@ src/app/frontend/common/components/resourcelist/ingress/template.html 44 + + src/app/frontend/common/components/resourcelist/ingressclass/template.html + 44 + src/app/frontend/common/components/resourcelist/job/template.html 69 @@ -1593,7 +1601,7 @@ src/app/frontend/chrome/nav/template.html - 68 + 67 @@ -1611,7 +1619,7 @@ src/app/frontend/chrome/nav/template.html - 77 + 82 @@ -1620,7 +1628,7 @@ src/app/frontend/chrome/nav/template.html - 83 + 88 @@ -1629,7 +1637,7 @@ src/app/frontend/chrome/nav/template.html - 89 + 94 @@ -1638,7 +1646,7 @@ src/app/frontend/chrome/nav/template.html - 95 + 100 @@ -1647,7 +1655,7 @@ src/app/frontend/chrome/nav/template.html - 101 + 106 @@ -1656,7 +1664,7 @@ src/app/frontend/chrome/nav/template.html - 105 + 110 @@ -1665,7 +1673,7 @@ src/app/frontend/chrome/nav/template.html - 111 + 116 @@ -1674,7 +1682,7 @@ src/app/frontend/chrome/nav/template.html - 115 + 120 @@ -1683,7 +1691,7 @@ src/app/frontend/chrome/nav/template.html - 120 + 125 @@ -1691,7 +1699,15 @@ Events src/app/frontend/chrome/nav/template.html - 125 + 130 + + + + Ingress Classes + Ingress Classes + + src/app/frontend/chrome/nav/template.html + 77 @@ -1700,7 +1716,7 @@ src/app/frontend/chrome/nav/template.html - 129 + 134 @@ -1709,7 +1725,7 @@ src/app/frontend/chrome/nav/template.html - 134 + 139 @@ -1718,7 +1734,7 @@ src/app/frontend/chrome/nav/template.html - 139 + 144 @@ -1727,7 +1743,7 @@ src/app/frontend/chrome/nav/template.html - 143 + 148 @@ -1736,7 +1752,7 @@ src/app/frontend/chrome/nav/template.html - 149 + 154 @@ -1745,7 +1761,7 @@ src/app/frontend/chrome/nav/template.html - 155 + 160 @@ -1754,7 +1770,7 @@ src/app/frontend/chrome/nav/template.html - 160 + 165 @@ -1763,7 +1779,7 @@ src/app/frontend/chrome/nav/template.html - 168 + 173 @@ -1772,7 +1788,7 @@ src/app/frontend/chrome/nav/template.html - 179 + 184 @@ -1781,7 +1797,7 @@ src/app/frontend/chrome/nav/template.html - 187 + 192 @@ -1790,7 +1806,7 @@ src/app/frontend/chrome/nav/template.html - 192 + 197 @@ -2022,7 +2038,7 @@ src/app/frontend/overview/template.html - 64 + 66 src/app/frontend/resource/cluster/serviceaccount/detail/template.html @@ -2038,7 +2054,7 @@ src/app/frontend/search/template.html - 60 + 62 @@ -2141,6 +2157,10 @@ src/app/frontend/common/components/resourcelist/ingress/template.html 23 + + src/app/frontend/common/components/resourcelist/ingressclass/template.html + 23 + src/app/frontend/common/components/resourcelist/job/template.html 29 @@ -2402,6 +2422,26 @@ 68 + + Ingress Classes + Ingress Classes + + src/app/frontend/common/components/resourcelist/ingressclass/template.html + 21 + + + + Controller + Controller + + src/app/frontend/common/components/resourcelist/ingressclass/template.html + 55 + + + src/app/frontend/resource/discovery/ingressclass/detail/template.html + 29 + + Horizontal Pod Autoscaler Horizontal Pod Autoscaler @@ -3029,6 +3069,10 @@ src/app/frontend/common/components/resourcelist/ingress/template.html 116 + + src/app/frontend/common/components/resourcelist/ingressclass/template.html + 65 + src/app/frontend/common/components/resourcelist/job/template.html 124 @@ -5746,6 +5790,10 @@ src/app/frontend/resource/config/storageclass/detail/template.html 37 + + src/app/frontend/resource/discovery/ingressclass/detail/template.html + 37 + Data diff --git a/i18n/ja/messages.ja.xlf b/i18n/ja/messages.ja.xlf index 4c571c2984ea..20b6dcedbf60 100644 --- a/i18n/ja/messages.ja.xlf +++ b/i18n/ja/messages.ja.xlf @@ -852,6 +852,10 @@ src/app/frontend/common/components/resourcelist/ingress/template.html 23 + + src/app/frontend/common/components/resourcelist/ingressclass/template.html + 23 + src/app/frontend/common/components/resourcelist/job/template.html 29 @@ -992,6 +996,10 @@ src/app/frontend/common/components/resourcelist/ingress/template.html 44 + + src/app/frontend/common/components/resourcelist/ingressclass/template.html + 44 + src/app/frontend/common/components/resourcelist/job/template.html 69 @@ -1361,6 +1369,26 @@ 41 + + Ingress Classes + Ingress Classes + + src/app/frontend/common/components/resourcelist/ingressclass/template.html + 21 + + + + Controller + Controller + + src/app/frontend/common/components/resourcelist/ingressclass/template.html + 55 + + + src/app/frontend/resource/discovery/ingressclass/detail/template.html + 29 + + Events Events @@ -1432,6 +1460,10 @@ src/app/frontend/common/components/resourcelist/ingress/template.html 116 + + src/app/frontend/common/components/resourcelist/ingressclass/template.html + 65 + src/app/frontend/common/components/resourcelist/job/template.html 124 @@ -3180,7 +3212,7 @@ src/app/frontend/overview/template.html - 64 + 66 src/app/frontend/resource/cluster/serviceaccount/detail/template.html @@ -3196,7 +3228,7 @@ src/app/frontend/search/template.html - 60 + 62 @@ -3208,11 +3240,11 @@ src/app/frontend/overview/template.html - 73 + 75 src/app/frontend/search/template.html - 68 + 70 @@ -3499,7 +3531,7 @@ src/app/frontend/chrome/nav/template.html - 68 + 67 @@ -3517,7 +3549,7 @@ src/app/frontend/chrome/nav/template.html - 77 + 82 @@ -3526,7 +3558,7 @@ src/app/frontend/chrome/nav/template.html - 83 + 88 @@ -3535,7 +3567,7 @@ src/app/frontend/chrome/nav/template.html - 89 + 94 @@ -3544,7 +3576,7 @@ src/app/frontend/chrome/nav/template.html - 95 + 100 @@ -3553,7 +3585,7 @@ src/app/frontend/chrome/nav/template.html - 101 + 106 @@ -3562,7 +3594,7 @@ src/app/frontend/chrome/nav/template.html - 105 + 110 @@ -3571,7 +3603,7 @@ src/app/frontend/chrome/nav/template.html - 111 + 116 @@ -3580,7 +3612,7 @@ src/app/frontend/chrome/nav/template.html - 115 + 120 @@ -3589,7 +3621,7 @@ src/app/frontend/chrome/nav/template.html - 120 + 125 @@ -3597,7 +3629,15 @@ イベント src/app/frontend/chrome/nav/template.html - 125 + 130 + + + + Ingress Classes + Ingress Classes + + src/app/frontend/chrome/nav/template.html + 77 @@ -3606,7 +3646,7 @@ src/app/frontend/chrome/nav/template.html - 129 + 134 @@ -3615,7 +3655,7 @@ src/app/frontend/chrome/nav/template.html - 134 + 139 @@ -3624,7 +3664,7 @@ src/app/frontend/chrome/nav/template.html - 139 + 144 @@ -3633,7 +3673,7 @@ src/app/frontend/chrome/nav/template.html - 143 + 148 @@ -3642,7 +3682,7 @@ src/app/frontend/chrome/nav/template.html - 149 + 154 @@ -3651,7 +3691,7 @@ src/app/frontend/chrome/nav/template.html - 155 + 160 @@ -3660,7 +3700,7 @@ src/app/frontend/chrome/nav/template.html - 160 + 165 @@ -3669,7 +3709,7 @@ src/app/frontend/chrome/nav/template.html - 168 + 173 @@ -3678,7 +3718,7 @@ src/app/frontend/chrome/nav/template.html - 179 + 184 @@ -3695,7 +3735,7 @@ src/app/frontend/chrome/nav/template.html - 187 + 192 @@ -3704,7 +3744,7 @@ src/app/frontend/chrome/nav/template.html - 192 + 197 @@ -3982,6 +4022,10 @@ src/app/frontend/resource/discovery/ingress/detail/template.html 23 + + src/app/frontend/resource/discovery/ingressclass/detail/template.html + 22 + src/app/frontend/resource/discovery/service/detail/template.html 22 @@ -5047,11 +5091,11 @@ Config and Storage src/app/frontend/overview/template.html - 56 + 58 src/app/frontend/search/template.html - 52 + 54 @@ -5606,6 +5650,10 @@ src/app/frontend/resource/config/storageclass/detail/template.html 37 + + src/app/frontend/resource/discovery/ingressclass/detail/template.html + 37 + Data diff --git a/i18n/ko/messages.ko.xlf b/i18n/ko/messages.ko.xlf index 5866629009dd..c9e05c2ea527 100644 --- a/i18n/ko/messages.ko.xlf +++ b/i18n/ko/messages.ko.xlf @@ -1035,6 +1035,10 @@ src/app/frontend/common/components/resourcelist/ingress/template.html 23 + + src/app/frontend/common/components/resourcelist/ingressclass/template.html + 23 + src/app/frontend/common/components/resourcelist/job/template.html 29 @@ -1175,6 +1179,10 @@ src/app/frontend/common/components/resourcelist/ingress/template.html 44 + + src/app/frontend/common/components/resourcelist/ingressclass/template.html + 44 + src/app/frontend/common/components/resourcelist/job/template.html 69 @@ -1544,6 +1552,26 @@ 41 + + Ingress Classes + Ingress Classes + + src/app/frontend/common/components/resourcelist/ingressclass/template.html + 21 + + + + Controller + Controller + + src/app/frontend/common/components/resourcelist/ingressclass/template.html + 55 + + + src/app/frontend/resource/discovery/ingressclass/detail/template.html + 29 + + Events Events @@ -1615,6 +1643,10 @@ src/app/frontend/common/components/resourcelist/ingress/template.html 116 + + src/app/frontend/common/components/resourcelist/ingressclass/template.html + 65 + src/app/frontend/common/components/resourcelist/job/template.html 124 @@ -3163,7 +3195,7 @@ src/app/frontend/overview/template.html - 64 + 66 src/app/frontend/resource/cluster/serviceaccount/detail/template.html @@ -3179,7 +3211,7 @@ src/app/frontend/search/template.html - 60 + 62 @@ -3191,11 +3223,11 @@ src/app/frontend/overview/template.html - 73 + 75 src/app/frontend/search/template.html - 68 + 70 @@ -3482,7 +3514,7 @@ src/app/frontend/chrome/nav/template.html - 68 + 67 @@ -3500,7 +3532,7 @@ src/app/frontend/chrome/nav/template.html - 77 + 82 @@ -3509,7 +3541,7 @@ src/app/frontend/chrome/nav/template.html - 83 + 88 @@ -3518,7 +3550,7 @@ src/app/frontend/chrome/nav/template.html - 89 + 94 @@ -3527,7 +3559,7 @@ src/app/frontend/chrome/nav/template.html - 95 + 100 @@ -3536,7 +3568,7 @@ src/app/frontend/chrome/nav/template.html - 101 + 106 @@ -3545,7 +3577,7 @@ src/app/frontend/chrome/nav/template.html - 105 + 110 @@ -3554,7 +3586,7 @@ src/app/frontend/chrome/nav/template.html - 111 + 116 @@ -3563,7 +3595,7 @@ src/app/frontend/chrome/nav/template.html - 115 + 120 @@ -3572,7 +3604,7 @@ src/app/frontend/chrome/nav/template.html - 120 + 125 @@ -3580,7 +3612,15 @@ Events src/app/frontend/chrome/nav/template.html - 125 + 130 + + + + Ingress Classes + Ingress Classes + + src/app/frontend/chrome/nav/template.html + 77 @@ -3589,7 +3629,7 @@ src/app/frontend/chrome/nav/template.html - 129 + 134 @@ -3598,7 +3638,7 @@ src/app/frontend/chrome/nav/template.html - 134 + 139 @@ -3607,7 +3647,7 @@ src/app/frontend/chrome/nav/template.html - 139 + 144 @@ -3616,7 +3656,7 @@ src/app/frontend/chrome/nav/template.html - 143 + 148 @@ -3625,7 +3665,7 @@ src/app/frontend/chrome/nav/template.html - 149 + 154 @@ -3634,7 +3674,7 @@ src/app/frontend/chrome/nav/template.html - 155 + 160 @@ -3643,7 +3683,7 @@ src/app/frontend/chrome/nav/template.html - 160 + 165 @@ -3652,7 +3692,7 @@ src/app/frontend/chrome/nav/template.html - 168 + 173 @@ -3661,7 +3701,7 @@ src/app/frontend/chrome/nav/template.html - 179 + 184 @@ -3678,7 +3718,7 @@ src/app/frontend/chrome/nav/template.html - 187 + 192 @@ -3687,7 +3727,7 @@ src/app/frontend/chrome/nav/template.html - 192 + 197 @@ -3969,6 +4009,10 @@ src/app/frontend/resource/discovery/ingress/detail/template.html 23 + + src/app/frontend/resource/discovery/ingressclass/detail/template.html + 22 + src/app/frontend/resource/discovery/service/detail/template.html 22 @@ -5083,11 +5127,11 @@ Config and Storage src/app/frontend/overview/template.html - 56 + 58 src/app/frontend/search/template.html - 52 + 54 @@ -5673,6 +5717,10 @@ src/app/frontend/resource/config/storageclass/detail/template.html 37 + + src/app/frontend/resource/discovery/ingressclass/detail/template.html + 37 + Data diff --git a/i18n/messages.xlf b/i18n/messages.xlf index 0e8f8c413122..7b46a5e715a4 100644 --- a/i18n/messages.xlf +++ b/i18n/messages.xlf @@ -369,7 +369,7 @@ src/app/frontend/overview/template.html - 64 + 66 src/app/frontend/resource/cluster/serviceaccount/detail/template.html @@ -385,7 +385,7 @@ src/app/frontend/search/template.html - 60 + 62 @@ -407,11 +407,11 @@ src/app/frontend/overview/template.html - 73 + 75 src/app/frontend/search/template.html - 68 + 70 @@ -647,6 +647,27 @@ 42 + + + + src/app/frontend/chrome/notifications/template.html + 47,48 + + + + There are no notifications + + src/app/frontend/chrome/notifications/template.html + 63,65 + + + + Remove all notifications + + src/app/frontend/chrome/notifications/template.html + 71 + + Search @@ -720,27 +741,6 @@ 71 - - - - src/app/frontend/chrome/notifications/template.html - 47,48 - - - - There are no notifications - - src/app/frontend/chrome/notifications/template.html - 63,65 - - - - Remove all notifications - - src/app/frontend/chrome/notifications/template.html - 71 - - Workloads @@ -808,7 +808,7 @@ Service src/app/frontend/chrome/nav/template.html - 68,69 + 67,68 @@ -818,151 +818,165 @@ 73 + + Ingress Classes + + src/app/frontend/chrome/nav/template.html + 77 + + Services src/app/frontend/chrome/nav/template.html - 77 + 82 Config and Storage src/app/frontend/chrome/nav/template.html - 83 + 88 Config Maps src/app/frontend/chrome/nav/template.html - 89,90 + 94,95 Persistent Volume Claims src/app/frontend/chrome/nav/template.html - 95,96 + 100,101 Secrets src/app/frontend/chrome/nav/template.html - 101 + 106 Storage Classes src/app/frontend/chrome/nav/template.html - 105 + 110 Cluster src/app/frontend/chrome/nav/template.html - 111 + 116 Cluster Role Bindings src/app/frontend/chrome/nav/template.html - 115,116 + 120,121 Cluster Roles src/app/frontend/chrome/nav/template.html - 120 + 125 Events src/app/frontend/chrome/nav/template.html - 125 + 130 Namespaces src/app/frontend/chrome/nav/template.html - 129 + 134 Network Policies src/app/frontend/chrome/nav/template.html - 134,135 + 139,140 Nodes src/app/frontend/chrome/nav/template.html - 139 + 144 Persistent Volumes src/app/frontend/chrome/nav/template.html - 143,144 + 148,149 Role Bindings src/app/frontend/chrome/nav/template.html - 149,150 + 154,155 Roles src/app/frontend/chrome/nav/template.html - 155 + 160 Service Accounts src/app/frontend/chrome/nav/template.html - 160,161 + 165,166 Custom Resource Definitions src/app/frontend/chrome/nav/template.html - 168,169 + 173,174 Settings src/app/frontend/chrome/nav/template.html - 187 + 192 About src/app/frontend/chrome/nav/template.html - 192 + 197 Plugins src/app/frontend/chrome/nav/template.html - 179 + 184 + + + + Search for + + src/app/frontend/common/components/breadcrumbs/component.ts + 143 @@ -986,11 +1000,11 @@ 33 - - Search for + + - src/app/frontend/common/components/breadcrumbs/component.ts - 143 + src/app/frontend/chrome/nav/pinner/template.html + 22,23 @@ -1057,247 +1071,258 @@ 48 - - + + Show less - src/app/frontend/chrome/nav/pinner/template.html - 22,23 + src/app/frontend/common/components/chips/template.html + 55 - - Preview Deployment + + Show all - src/app/frontend/common/dialogs/previewdeployment/template.html - 18 + src/app/frontend/common/components/chips/template.html + 57 - - Delete a resource + + Image:  - src/app/frontend/common/dialogs/deleteresource/template.html - 18 + src/app/frontend/common/components/container/template.html + 19 - - This action is equivalent to: + + Image - src/app/frontend/common/dialogs/deleteresource/template.html - 29 + src/app/frontend/common/components/container/template.html + 32 - src/app/frontend/common/dialogs/editresource/template.html - 33 + src/app/frontend/resource/cluster/persistentvolume/detail/source/template.html + 344 + + + Status - src/app/frontend/common/dialogs/scaleresource/template.html - 48 + src/app/frontend/common/components/condition/template.html + 44 - - - Delete - src/app/frontend/common/components/list/column/menu/template.html - 57 + src/app/frontend/common/components/container/template.html + 39 - src/app/frontend/common/dialogs/deleteresource/template.html - 43 + src/app/frontend/common/components/quotas/template.html + 52 - - - Cancel - src/app/frontend/common/dialogs/deleteresource/template.html - 47 + src/app/frontend/common/components/resourcelist/persistentvolume/template.html + 93 - src/app/frontend/common/dialogs/editresource/template.html - 47 + src/app/frontend/common/components/resourcelist/persistentvolumeclaim/template.html + 86 - src/app/frontend/common/dialogs/restartresource/template.html - 46 + src/app/frontend/common/components/resourcelist/pod/template.html + 118 - src/app/frontend/common/dialogs/scaleresource/template.html - 65 + src/app/frontend/resource/cluster/namespace/detail/template.html + 28 - src/app/frontend/common/dialogs/triggerresource/template.html + src/app/frontend/resource/cluster/persistentvolume/detail/template.html 29 - src/app/frontend/create/from/form/createnamespace/template.html - 72 + src/app/frontend/resource/config/persistentvolumeclaim/detail/template.html + 28 - src/app/frontend/create/from/form/createsecret/template.html - 95 + src/app/frontend/resource/workloads/pod/detail/template.html + 55 + + + Ready - src/app/frontend/create/from/form/template.html - 360 + src/app/frontend/common/components/container/template.html + 44 - src/app/frontend/create/from/input/template.html - 48 + src/app/frontend/common/components/endpoint/cardlist/template.html + 67 - src/app/frontend/resource/config/secret/detail/edit/template.html - 35 + src/app/frontend/common/components/resourcelist/node/template.html + 80 - - Are you sure you want to delete  in namespace ? + + Started - src/app/frontend/common/dialogs/deleteresource/template.html - 21,23 + src/app/frontend/common/components/container/template.html + 50 - - Trigger a + + Reason - src/app/frontend/common/dialogs/triggerresource/template.html - 18 + src/app/frontend/common/components/condition/template.html + 68 - - - will be triggered. - src/app/frontend/common/dialogs/triggerresource/template.html - 20 + src/app/frontend/common/components/container/template.html + 58 - - - Trigger - src/app/frontend/common/components/list/column/menu/template.html - 31 + src/app/frontend/common/components/container/template.html + 72 - src/app/frontend/common/dialogs/triggerresource/template.html - 25 + src/app/frontend/common/components/resourcelist/event/template.html + 68 - - - Edit a resource - src/app/frontend/common/dialogs/editresource/template.html - 18 + src/app/frontend/common/components/resourcelist/persistentvolume/template.html + 126 + + + src/app/frontend/resource/cluster/persistentvolume/detail/template.html + 60 - - Update + + Message - src/app/frontend/common/dialogs/editresource/template.html - 43 + src/app/frontend/common/components/condition/template.html + 76 - src/app/frontend/resource/config/secret/detail/edit/template.html - 31 + src/app/frontend/common/components/container/template.html + 64 - - - Scale a resource - src/app/frontend/common/dialogs/scaleresource/template.html - 18 + src/app/frontend/common/components/container/template.html + 78 - - - will be updated to reflect the desired replicas count. - src/app/frontend/common/dialogs/scaleresource/template.html - 20 + src/app/frontend/common/components/resourcelist/event/template.html + 76 + + + src/app/frontend/resource/cluster/persistentvolume/detail/template.html + 66 - - Desired replicas + + Exit Code - src/app/frontend/common/dialogs/scaleresource/template.html - 26 + src/app/frontend/common/components/container/template.html + 84 - - Actual replicas + + Signal - src/app/frontend/common/dialogs/scaleresource/template.html - 38 + src/app/frontend/common/components/container/template.html + 90 - - Scale + + Started At - src/app/frontend/common/components/list/column/menu/template.html - 35 + src/app/frontend/common/components/container/template.html + 98 + + + Environment Variables - src/app/frontend/common/dialogs/scaleresource/template.html - 61 + src/app/frontend/common/components/container/template.html + 106,108 - - Edit resource + + Environment variable - src/app/frontend/common/components/actionbar/detailactions/edit/template.html - 21 + src/app/frontend/common/components/container/template.html + 116 + + + src/app/frontend/common/components/container/template.html + 133 + + + src/app/frontend/common/components/container/template.html + 153 - - Delete resource + + bytes - src/app/frontend/common/components/actionbar/detailactions/delete/template.html - 21 + src/app/frontend/common/components/container/template.html + 140 + + + src/app/frontend/common/components/container/template.html + 160 - - Restart a resource + + Commands - src/app/frontend/common/dialogs/restartresource/template.html - 18 + src/app/frontend/common/components/container/template.html + 170 - - This action is equivalent to: + + Arguments - src/app/frontend/common/dialogs/restartresource/template.html - 29 + src/app/frontend/common/components/container/template.html + 184 - - Restart + + Mounts - src/app/frontend/common/components/actionbar/detailactions/restart/template.html - 21 + src/app/frontend/common/components/container/template.html + 199 + + + Security Context - src/app/frontend/common/components/list/column/menu/template.html - 53 + src/app/frontend/common/components/container/template.html + 214 - src/app/frontend/common/dialogs/restartresource/template.html - 42 + src/app/frontend/resource/workloads/pod/detail/template.html + 102 - - in namespace will be restarted. + + Liveness Probe - src/app/frontend/common/dialogs/restartresource/template.html - 21,23 + src/app/frontend/common/components/container/template.html + 226 - - Show less + + Readiness Probe - src/app/frontend/common/components/chips/template.html - 55 + src/app/frontend/common/components/container/template.html + 236 - - Show all + + Startup Probe - src/app/frontend/common/components/chips/template.html - 57 + src/app/frontend/common/components/container/template.html + 246 @@ -1403,6 +1428,10 @@ src/app/frontend/common/components/resourcelist/ingress/template.html 23 + + src/app/frontend/common/components/resourcelist/ingressclass/template.html + 23 + src/app/frontend/common/components/resourcelist/job/template.html 29 @@ -1516,244 +1545,258 @@ 47 - - Ready + + Preview Deployment - src/app/frontend/common/components/container/template.html - 44 + src/app/frontend/common/dialogs/previewdeployment/template.html + 18 + + + Delete a resource - src/app/frontend/common/components/endpoint/cardlist/template.html - 67 + src/app/frontend/common/dialogs/deleteresource/template.html + 18 + + + This action is equivalent to: - src/app/frontend/common/components/resourcelist/node/template.html - 80 + src/app/frontend/common/dialogs/deleteresource/template.html + 29 - - - Image:  - src/app/frontend/common/components/container/template.html - 19 + src/app/frontend/common/dialogs/editresource/template.html + 33 + + + src/app/frontend/common/dialogs/scaleresource/template.html + 48 - - Image + + Delete - src/app/frontend/common/components/container/template.html - 32 + src/app/frontend/common/components/list/column/menu/template.html + 57 - src/app/frontend/resource/cluster/persistentvolume/detail/source/template.html - 344 + src/app/frontend/common/dialogs/deleteresource/template.html + 43 - - Status + + Cancel - src/app/frontend/common/components/condition/template.html - 44 + src/app/frontend/common/dialogs/deleteresource/template.html + 47 - src/app/frontend/common/components/container/template.html - 39 + src/app/frontend/common/dialogs/editresource/template.html + 47 - src/app/frontend/common/components/quotas/template.html - 52 + src/app/frontend/common/dialogs/restartresource/template.html + 46 - src/app/frontend/common/components/resourcelist/persistentvolume/template.html - 93 + src/app/frontend/common/dialogs/scaleresource/template.html + 65 - src/app/frontend/common/components/resourcelist/persistentvolumeclaim/template.html - 86 + src/app/frontend/common/dialogs/triggerresource/template.html + 29 - src/app/frontend/common/components/resourcelist/pod/template.html - 118 + src/app/frontend/create/from/form/createnamespace/template.html + 72 - src/app/frontend/resource/cluster/namespace/detail/template.html - 28 + src/app/frontend/create/from/form/createsecret/template.html + 95 - src/app/frontend/resource/cluster/persistentvolume/detail/template.html - 29 + src/app/frontend/create/from/form/template.html + 360 - src/app/frontend/resource/config/persistentvolumeclaim/detail/template.html - 28 + src/app/frontend/create/from/input/template.html + 48 - src/app/frontend/resource/workloads/pod/detail/template.html - 55 + src/app/frontend/resource/config/secret/detail/edit/template.html + 35 - - Started + + Are you sure you want to delete  in namespace ? - src/app/frontend/common/components/container/template.html - 50 + src/app/frontend/common/dialogs/deleteresource/template.html + 21,23 - - Reason + + Edit a resource - src/app/frontend/common/components/condition/template.html - 68 + src/app/frontend/common/dialogs/editresource/template.html + 18 + + + Update - src/app/frontend/common/components/container/template.html - 58 + src/app/frontend/common/dialogs/editresource/template.html + 43 - src/app/frontend/common/components/container/template.html - 72 + src/app/frontend/resource/config/secret/detail/edit/template.html + 31 + + + Restart a resource - src/app/frontend/common/components/resourcelist/event/template.html - 68 - - - src/app/frontend/common/components/resourcelist/persistentvolume/template.html - 126 - - - src/app/frontend/resource/cluster/persistentvolume/detail/template.html - 60 + src/app/frontend/common/dialogs/restartresource/template.html + 18 - - Message + + This action is equivalent to: - src/app/frontend/common/components/condition/template.html - 76 + src/app/frontend/common/dialogs/restartresource/template.html + 29 + + + Restart - src/app/frontend/common/components/container/template.html - 64 + src/app/frontend/common/components/actionbar/detailactions/restart/template.html + 21 - src/app/frontend/common/components/container/template.html - 78 + src/app/frontend/common/components/list/column/menu/template.html + 53 - src/app/frontend/common/components/resourcelist/event/template.html - 76 + src/app/frontend/common/dialogs/restartresource/template.html + 42 + + + in namespace will be restarted. - src/app/frontend/resource/cluster/persistentvolume/detail/template.html - 66 + src/app/frontend/common/dialogs/restartresource/template.html + 21,23 - - Exit Code + + Filter - src/app/frontend/common/components/container/template.html - 84 + src/app/frontend/common/components/list/filter/template.html + 29 - - Signal + + Filter objects by name - src/app/frontend/common/components/container/template.html - 90 + src/app/frontend/common/components/list/filter/template.html + 34 - - Started At + + There is nothing to display here - src/app/frontend/common/components/container/template.html - 98 + src/app/frontend/common/components/list/zerostate/template.html + 22 - - - Environment Variables - src/app/frontend/common/components/container/template.html - 106,108 + src/app/frontend/common/components/zerostate/template.html + 23 - - Environment variable + + No resources found. - src/app/frontend/common/components/container/template.html - 116 + src/app/frontend/common/components/list/zerostate/template.html + 27 + + + Scale a resource - src/app/frontend/common/components/container/template.html - 133 + src/app/frontend/common/dialogs/scaleresource/template.html + 18 + + + will be updated to reflect the desired replicas count. - src/app/frontend/common/components/container/template.html - 153 + src/app/frontend/common/dialogs/scaleresource/template.html + 20 - - bytes + + Desired replicas - src/app/frontend/common/components/container/template.html - 140 + src/app/frontend/common/dialogs/scaleresource/template.html + 26 + + + Actual replicas - src/app/frontend/common/components/container/template.html - 160 + src/app/frontend/common/dialogs/scaleresource/template.html + 38 - - Commands + + Scale - src/app/frontend/common/components/container/template.html - 170 + src/app/frontend/common/components/list/column/menu/template.html + 35 - - - Arguments - src/app/frontend/common/components/container/template.html - 184 + src/app/frontend/common/dialogs/scaleresource/template.html + 61 - - Mounts + + Trigger a - src/app/frontend/common/components/container/template.html - 199 + src/app/frontend/common/dialogs/triggerresource/template.html + 18 - - Security Context + + will be triggered. - src/app/frontend/common/components/container/template.html - 214 + src/app/frontend/common/dialogs/triggerresource/template.html + 20 + + + Trigger - src/app/frontend/resource/workloads/pod/detail/template.html - 102 + src/app/frontend/common/components/list/column/menu/template.html + 31 - - - Liveness Probe - src/app/frontend/common/components/container/template.html - 226 + src/app/frontend/common/dialogs/triggerresource/template.html + 25 - - Readiness Probe + + Delete resource - src/app/frontend/common/components/container/template.html - 236 + src/app/frontend/common/components/actionbar/detailactions/delete/template.html + 21 - - Startup Probe + + Edit resource - src/app/frontend/common/components/container/template.html - 246 + src/app/frontend/common/components/actionbar/detailactions/edit/template.html + 21 @@ -1770,18 +1813,11 @@ 21 - - Filter - - src/app/frontend/common/components/list/filter/template.html - 29 - - - - Filter objects by name + + Scale resource - src/app/frontend/common/components/list/filter/template.html - 34 + src/app/frontend/common/components/actionbar/detailactions/scale/template.html + 21 @@ -1791,13 +1827,6 @@ 21 - - Scale resource - - src/app/frontend/common/components/actionbar/detailactions/scale/template.html - 21 - - Conditions @@ -1951,6 +1980,10 @@ src/app/frontend/common/components/resourcelist/ingress/template.html 44 + + src/app/frontend/common/components/resourcelist/ingressclass/template.html + 44 + src/app/frontend/common/components/resourcelist/job/template.html 69 @@ -2253,24 +2286,6 @@ 39 - - There is nothing to display here - - src/app/frontend/common/components/list/zerostate/template.html - 22 - - - src/app/frontend/common/components/zerostate/template.html - 23 - - - - No resources found. - - src/app/frontend/common/components/list/zerostate/template.html - 27 - - Rules @@ -2363,143 +2378,85 @@ 52 - - Namespace + + Edit - src/app/frontend/common/components/objectmeta/template.html - 50 + src/app/frontend/common/components/list/column/menu/template.html + 49 - src/app/frontend/common/components/resourcelist/configmap/template.html - 58 + src/app/frontend/settings/global/namespace/editdialog/template.html + 45 + + + Actions - src/app/frontend/common/components/resourcelist/crdobject/template.html - 52 + src/app/frontend/common/components/list/column/menu/template.html + 66 + + + Exec - src/app/frontend/common/components/resourcelist/cronjob/template.html - 71 + src/app/frontend/common/components/list/column/menu/template.html + 27 + + + Unpin - src/app/frontend/common/components/resourcelist/daemonset/template.html - 81 + src/app/frontend/common/components/list/column/menu/template.html + 41 + + + Pin - src/app/frontend/common/components/resourcelist/deployment/template.html - 81 + src/app/frontend/common/components/list/column/menu/template.html + 43 + + + Namespace conflict - src/app/frontend/common/components/resourcelist/event/template.html - 59 - - - src/app/frontend/common/components/resourcelist/horizontalpodautoscaler/template.html - 50 - - - src/app/frontend/common/components/resourcelist/ingress/template.html - 58 - - - src/app/frontend/common/components/resourcelist/job/template.html - 84 - - - src/app/frontend/common/components/resourcelist/networkpolicy/template.html - 54 - - - src/app/frontend/common/components/resourcelist/persistentvolumeclaim/template.html - 66 - - - src/app/frontend/common/components/resourcelist/plugin/template.html - 64 - - - src/app/frontend/common/components/resourcelist/pod/template.html - 81 - - - src/app/frontend/common/components/resourcelist/replicaset/template.html - 84 - - - src/app/frontend/common/components/resourcelist/replicationcontroller/template.html - 78 - - - src/app/frontend/common/components/resourcelist/role/template.html - 53 - - - src/app/frontend/common/components/resourcelist/rolebinding/template.html - 53 - - - src/app/frontend/common/components/resourcelist/secret/template.html - 57 - - - src/app/frontend/common/components/resourcelist/service/template.html - 68 - - - src/app/frontend/common/components/resourcelist/serviceaccount/template.html - 54 - - - src/app/frontend/common/components/resourcelist/statefulset/template.html - 81 - - - src/app/frontend/common/components/subject/template.html - 48 - - - src/app/frontend/create/from/form/template.html - 145 - - - src/app/frontend/resource/workloads/deployment/detail/template.html - 232 - - - src/app/frontend/settings/global/namespace/adddialog/template.html - 29 + src/app/frontend/common/components/namespace/changedialog/template.html + 19 + + + Selected namespace is different than namespace of currently selected resource. - src/app/frontend/settings/global/namespace/template.html - 27 + src/app/frontend/common/components/namespace/changedialog/template.html + 22 - - Endpoint links are external links that will be open in a new tab. + + Do you want to stay on current page and change namespace from to ? - src/app/frontend/common/components/resourcelist/ingress/template.html - 80 + src/app/frontend/common/components/namespace/changedialog/template.html + 24,26 - - Endpoints open_in_new + + Yes - src/app/frontend/common/components/resourcelist/ingress/template.html - 76,80 + src/app/frontend/common/components/namespace/changedialog/template.html + 32 - - Host links are external links that will be open in a new tab. + + No - src/app/frontend/common/components/resourcelist/ingress/template.html - 97 + src/app/frontend/common/components/namespace/changedialog/template.html + 35 - - Hosts open_in_new + + Metadata - src/app/frontend/common/components/resourcelist/ingress/template.html - 93,97 + src/app/frontend/common/components/objectmeta/template.html + 19 @@ -2552,6 +2509,10 @@ src/app/frontend/common/components/resourcelist/ingress/template.html 116 + + src/app/frontend/common/components/resourcelist/ingressclass/template.html + 65 + src/app/frontend/common/components/resourcelist/job/template.html 124 @@ -2621,142 +2582,200 @@ 75 - - Edit + + Namespace:  - src/app/frontend/common/components/list/column/menu/template.html - 49 + src/app/frontend/common/components/objectmeta/template.html + 29 - src/app/frontend/settings/global/namespace/editdialog/template.html - 45 + src/app/frontend/resource/workloads/deployment/detail/template.html + 199 - - Actions + + Namespace - src/app/frontend/common/components/list/column/menu/template.html - 66 + src/app/frontend/common/components/objectmeta/template.html + 50 - - - Exec - src/app/frontend/common/components/list/column/menu/template.html - 27 + src/app/frontend/common/components/resourcelist/configmap/template.html + 58 - - - Unpin - src/app/frontend/common/components/list/column/menu/template.html - 41 + src/app/frontend/common/components/resourcelist/crdobject/template.html + 52 - - - Pin - src/app/frontend/common/components/list/column/menu/template.html - 43 + src/app/frontend/common/components/resourcelist/cronjob/template.html + 71 - - - Namespace conflict - src/app/frontend/common/components/namespace/changedialog/template.html - 19 + src/app/frontend/common/components/resourcelist/daemonset/template.html + 81 - - - Selected namespace is different than namespace of currently selected resource. - src/app/frontend/common/components/namespace/changedialog/template.html - 22 + src/app/frontend/common/components/resourcelist/deployment/template.html + 81 - - - Do you want to stay on current page and change namespace from to ? - src/app/frontend/common/components/namespace/changedialog/template.html - 24,26 + src/app/frontend/common/components/resourcelist/event/template.html + 59 - - - Yes - src/app/frontend/common/components/namespace/changedialog/template.html - 32 + src/app/frontend/common/components/resourcelist/horizontalpodautoscaler/template.html + 50 - - - No - src/app/frontend/common/components/namespace/changedialog/template.html - 35 + src/app/frontend/common/components/resourcelist/ingress/template.html + 58 - - - Metadata - src/app/frontend/common/components/objectmeta/template.html - 19 + src/app/frontend/common/components/resourcelist/job/template.html + 84 - - - Namespace:  - src/app/frontend/common/components/objectmeta/template.html - 29 + src/app/frontend/common/components/resourcelist/networkpolicy/template.html + 54 - src/app/frontend/resource/workloads/deployment/detail/template.html - 199 + src/app/frontend/common/components/resourcelist/persistentvolumeclaim/template.html + 66 - - - UID - src/app/frontend/common/components/objectmeta/template.html - 71 + src/app/frontend/common/components/resourcelist/plugin/template.html + 64 - - - Annotations - src/app/frontend/common/components/objectmeta/template.html - 88 + src/app/frontend/common/components/resourcelist/pod/template.html + 81 - - - Pods status - src/app/frontend/common/components/podstatus/template.html - 20 + src/app/frontend/common/components/resourcelist/replicaset/template.html + 84 - src/app/frontend/resource/workloads/deployment/detail/template.html - 119 + src/app/frontend/common/components/resourcelist/replicationcontroller/template.html + 78 - - - Desired:  - src/app/frontend/common/components/podstatus/template.html + src/app/frontend/common/components/resourcelist/role/template.html 53 - - - Running:  - src/app/frontend/common/components/podstatus/template.html - 26 + src/app/frontend/common/components/resourcelist/rolebinding/template.html + 53 - - - Succeeded:  - src/app/frontend/common/components/podstatus/template.html - 33 + src/app/frontend/common/components/resourcelist/secret/template.html + 57 + + + src/app/frontend/common/components/resourcelist/service/template.html + 68 + + + src/app/frontend/common/components/resourcelist/serviceaccount/template.html + 54 + + + src/app/frontend/common/components/resourcelist/statefulset/template.html + 81 + + + src/app/frontend/common/components/subject/template.html + 48 + + + src/app/frontend/create/from/form/template.html + 145 + + + src/app/frontend/resource/workloads/deployment/detail/template.html + 232 + + + src/app/frontend/settings/global/namespace/adddialog/template.html + 29 + + + src/app/frontend/settings/global/namespace/template.html + 27 + + + + UID + + src/app/frontend/common/components/objectmeta/template.html + 71 + + + + Annotations + + src/app/frontend/common/components/objectmeta/template.html + 88 + + + + Endpoint links are external links that will be open in a new tab. + + src/app/frontend/common/components/resourcelist/ingress/template.html + 80 + + + + Endpoints open_in_new + + src/app/frontend/common/components/resourcelist/ingress/template.html + 76,80 + + + + Host links are external links that will be open in a new tab. + + src/app/frontend/common/components/resourcelist/ingress/template.html + 97 + + + + Hosts open_in_new + + src/app/frontend/common/components/resourcelist/ingress/template.html + 93,97 + + + + Pods status + + src/app/frontend/common/components/podstatus/template.html + 20 + + + src/app/frontend/resource/workloads/deployment/detail/template.html + 119 + + + + Desired:  + + src/app/frontend/common/components/podstatus/template.html + 53 + + + + Running:  + + src/app/frontend/common/components/podstatus/template.html + 26 + + + + Succeeded:  + + src/app/frontend/common/components/podstatus/template.html + 33 @@ -2920,6 +2939,20 @@ 20 + + Objects + + src/app/frontend/common/components/resourcelist/crdobject/template.html + 21 + + + + No resources found in the selected namespace. + + src/app/frontend/common/components/resourcelist/crdobject/template.html + 92 + + Group @@ -2945,20 +2978,6 @@ 81 - - Objects - - src/app/frontend/common/components/resourcelist/crdobject/template.html - 21 - - - - No resources found in the selected namespace. - - src/app/frontend/common/components/resourcelist/crdobject/template.html - 92 - - Versions @@ -3090,6 +3109,35 @@ 68 + + Ingress Classes + + src/app/frontend/common/components/resourcelist/ingressclass/template.html + 21 + + + + Controller + + src/app/frontend/common/components/resourcelist/ingressclass/template.html + 55 + + + src/app/frontend/resource/discovery/ingressclass/detail/template.html + 29 + + + + Phase + + src/app/frontend/common/components/resourcelist/namespace/template.html + 72 + + + src/app/frontend/resource/cluster/node/detail/template.html + 30 + + CPU requests (cores) @@ -3118,17 +3166,6 @@ 121 - - Phase - - src/app/frontend/common/components/resourcelist/namespace/template.html - 72 - - - src/app/frontend/resource/cluster/node/detail/template.html - 30 - - Capacity @@ -3210,20 +3247,6 @@ 55 - - Workload Status - - src/app/frontend/common/components/workloadstatus/template.html - 20 - - - - You can deploy a containerized app, select other namespace or take the Dashboard Tour open_in_new to learn more. - - src/app/frontend/common/components/zerostate/template.html - 26,35 - - Restarts @@ -3249,6 +3272,20 @@ 146 + + Workload Status + + src/app/frontend/common/components/workloadstatus/template.html + 20 + + + + You can deploy a containerized app, select other namespace or take the Dashboard Tour open_in_new to learn more. + + src/app/frontend/common/components/zerostate/template.html + 26,35 + + Cluster IP @@ -3499,13 +3536,6 @@ 60 - - Shell in in - - src/app/frontend/shell/template.html - 22,33 - - Logs from @@ -3608,39 +3638,204 @@ 28 - - Learn more open_in_new + + General-purpose web UI for Kubernetes clusters - src/app/frontend/create/from/file/template.html - 28,30 + src/app/frontend/about/template.html + 30 + + + Kubernetes Dashboard is made possible by the Dashboard community as an open source project. - src/app/frontend/create/from/form/createnamespace/template.html - 50,52 + src/app/frontend/about/template.html + 37,41 + + + Global settings - src/app/frontend/create/from/form/createsecret/template.html - 50,52 + src/app/frontend/settings/global/template.html + 21 + + + Global settings are stored in config map, so all of them are applied for every instance of the app. - src/app/frontend/create/from/form/createsecret/template.html - 76,78 + src/app/frontend/settings/global/template.html + 23 + + + Cluster name - src/app/frontend/create/from/form/template.html - 52,54 + src/app/frontend/settings/global/template.html + 26 - src/app/frontend/create/from/form/template.html - 81,83 + src/app/frontend/settings/global/template.html + 34 + + + Cluster name appears in the browser window title if it is set. - src/app/frontend/create/from/form/template.html - 113,115 + src/app/frontend/settings/global/template.html + 28 + + + Items per page - src/app/frontend/create/from/form/template.html - 134,136 + src/app/frontend/settings/global/template.html + 42 + + + + Max number of items that can be displayed on every list view. + + src/app/frontend/settings/global/template.html + 44 + + + + Labels limit + + src/app/frontend/settings/global/template.html + 58 + + + + Max number of labels that are displayed by default on most views. + + src/app/frontend/settings/global/template.html + 60 + + + + Logs auto-refresh time interval + + src/app/frontend/settings/global/template.html + 74 + + + + Number of seconds between every auto-refresh of logs. + + src/app/frontend/settings/global/template.html + 76 + + + + Resource auto-refresh time interval + + src/app/frontend/settings/global/template.html + 92 + + + + Number of seconds between every auto-refresh of every resource. Set 0 to disable. + + src/app/frontend/settings/global/template.html + 94 + + + + Disable access denied notification + + src/app/frontend/settings/global/template.html + 110 + + + + Hides all access denied warnings in the notification panel. + + src/app/frontend/settings/global/template.html + 112 + + + + Reload + + src/app/frontend/settings/global/template.html + 132 + + + + Local settings + + src/app/frontend/settings/local/template.html + 19 + + + + Local settings are stored in the browser cookies, so they are not synchronized between multiple devices. Changes are applied automatically on every change. + + src/app/frontend/settings/local/template.html + 21,24 + + + + Theme + + src/app/frontend/settings/local/template.html + 26 + + + + Choose color theme of the dashboard + + src/app/frontend/settings/local/template.html + 28 + + + + Language + + src/app/frontend/settings/local/template.html + 41 + + + + Change the language of the dashboard + + src/app/frontend/settings/local/template.html + 43 + + + + Learn more open_in_new + + src/app/frontend/create/from/file/template.html + 28,30 + + + src/app/frontend/create/from/form/createnamespace/template.html + 50,52 + + + src/app/frontend/create/from/form/createsecret/template.html + 50,52 + + + src/app/frontend/create/from/form/createsecret/template.html + 76,78 + + + src/app/frontend/create/from/form/template.html + 52,54 + + + src/app/frontend/create/from/form/template.html + 81,83 + + + src/app/frontend/create/from/form/template.html + 113,115 + + + src/app/frontend/create/from/form/template.html + 134,136 src/app/frontend/create/from/form/template.html @@ -3734,129 +3929,6 @@ 23,25 - - General-purpose web UI for Kubernetes clusters - - src/app/frontend/about/template.html - 30 - - - - Kubernetes Dashboard is made possible by the Dashboard community as an open source project. - - src/app/frontend/about/template.html - 37,41 - - - - Global settings - - src/app/frontend/settings/global/template.html - 21 - - - - Global settings are stored in config map, so all of them are applied for every instance of the app. - - src/app/frontend/settings/global/template.html - 23 - - - - Cluster name - - src/app/frontend/settings/global/template.html - 26 - - - src/app/frontend/settings/global/template.html - 34 - - - - Cluster name appears in the browser window title if it is set. - - src/app/frontend/settings/global/template.html - 28 - - - - Items per page - - src/app/frontend/settings/global/template.html - 42 - - - - Max number of items that can be displayed on every list view. - - src/app/frontend/settings/global/template.html - 44 - - - - Labels limit - - src/app/frontend/settings/global/template.html - 58 - - - - Max number of labels that are displayed by default on most views. - - src/app/frontend/settings/global/template.html - 60 - - - - Logs auto-refresh time interval - - src/app/frontend/settings/global/template.html - 74 - - - - Number of seconds between every auto-refresh of logs. - - src/app/frontend/settings/global/template.html - 76 - - - - Resource auto-refresh time interval - - src/app/frontend/settings/global/template.html - 92 - - - - Number of seconds between every auto-refresh of every resource. Set 0 to disable. - - src/app/frontend/settings/global/template.html - 94 - - - - Disable access denied notification - - src/app/frontend/settings/global/template.html - 110 - - - - Hides all access denied warnings in the notification panel. - - src/app/frontend/settings/global/template.html - 112 - - - - Reload - - src/app/frontend/settings/global/template.html - 132 - - Default namespace @@ -3892,73 +3964,6 @@ 60 - - Local settings - - src/app/frontend/settings/local/template.html - 19 - - - - Local settings are stored in the browser cookies, so they are not synchronized between multiple devices. Changes are applied automatically on every change. - - src/app/frontend/settings/local/template.html - 21,24 - - - - Theme - - src/app/frontend/settings/local/template.html - 26 - - - - Choose color theme of the dashboard - - src/app/frontend/settings/local/template.html - 28 - - - - Language - - src/app/frontend/settings/local/template.html - 41 - - - - Change the language of the dashboard - - src/app/frontend/settings/local/template.html - 43 - - - - Can't find plugin "" - - src/app/frontend/common/services/pluginloader/clientloader.service.ts - 42 - - - - Can't find dependency "" for plugin "" - - src/app/frontend/common/services/pluginloader/clientloader.service.ts - 48 - - - - Config and Storage - - src/app/frontend/overview/template.html - 56 - - - src/app/frontend/search/template.html - 52 - - Resource information @@ -3997,6 +4002,10 @@ src/app/frontend/resource/discovery/ingress/detail/template.html 23 + + src/app/frontend/resource/discovery/ingressclass/detail/template.html + 22 + src/app/frontend/resource/discovery/service/detail/template.html 22 @@ -4040,6 +4049,10 @@ src/app/frontend/resource/config/storageclass/detail/template.html 37 + + src/app/frontend/resource/discovery/ingressclass/detail/template.html + 37 + Data @@ -4067,81 +4080,190 @@ 40 - - Read documentation + + Read documentation + + src/app/frontend/about/actionbar/template.html + 24 + + + + Provide feedback + + src/app/frontend/about/actionbar/template.html + 35 + + + + Add Namespace + + src/app/frontend/settings/global/namespace/adddialog/template.html + 20 + + + + Provide a namespace name that should be added to the namespace fallback list + + src/app/frontend/settings/global/namespace/adddialog/template.html + 23 + + + + Add + + src/app/frontend/settings/global/namespace/adddialog/template.html + 47,49 + + + + Edit Namespace List + + src/app/frontend/settings/global/namespace/editdialog/template.html + 20 + + + + Remove namespaces from the list and confirm to save the changes. + + src/app/frontend/settings/global/namespace/editdialog/template.html + 23 + + + + No namespaces selected + + src/app/frontend/settings/global/namespace/editdialog/template.html + 36 + + + + Settings have changed since last reload + + src/app/frontend/settings/global/saveanywaysdialog/template.html + 18 + + + + Do you want to save them anyways? + + src/app/frontend/settings/global/saveanywaysdialog/template.html + 19 + + + + Refresh + + src/app/frontend/settings/global/saveanywaysdialog/template.html + 28 + + + + Config and Storage + + src/app/frontend/overview/template.html + 58 + + + src/app/frontend/search/template.html + 54 + + + + Can't find plugin "" + + src/app/frontend/common/services/pluginloader/clientloader.service.ts + 42 + + + + Can't find dependency "" for plugin "" + + src/app/frontend/common/services/pluginloader/clientloader.service.ts + 48 + + + + Resource Information + + src/app/frontend/crd/detail/template.html + 22 + + + + Accepted Names - src/app/frontend/about/actionbar/template.html - 24 + src/app/frontend/crd/detail/template.html + 55 - - Provide feedback + + Scope - src/app/frontend/about/actionbar/template.html + src/app/frontend/crd/detail/template.html 35 - - Add Namespace + + Version - src/app/frontend/settings/global/namespace/adddialog/template.html - 20 + src/app/frontend/crd/detail/template.html + 29 - - Provide a namespace name that should be added to the namespace fallback list + + Subresources - src/app/frontend/settings/global/namespace/adddialog/template.html - 23 + src/app/frontend/crd/detail/template.html + 47 - - Add + + Plural - src/app/frontend/settings/global/namespace/adddialog/template.html - 47,49 + src/app/frontend/crd/detail/template.html + 62 - - Edit Namespace List + + List Kind - src/app/frontend/settings/global/namespace/editdialog/template.html - 20 + src/app/frontend/crd/detail/template.html + 77 - - Remove namespaces from the list and confirm to save the changes. + + Singular - src/app/frontend/settings/global/namespace/editdialog/template.html - 23 + src/app/frontend/crd/detail/template.html + 67 - - No namespaces selected + + Short Names - src/app/frontend/settings/global/namespace/editdialog/template.html - 36 + src/app/frontend/crd/detail/template.html + 82 - - Settings have changed since last reload + + Categories - src/app/frontend/settings/global/saveanywaysdialog/template.html - 18 + src/app/frontend/crd/detail/template.html + 87 - - Do you want to save them anyways? + + Shell in in - src/app/frontend/settings/global/saveanywaysdialog/template.html - 19 + src/app/frontend/shell/template.html + 22,33 - - Refresh + + Volume Name - src/app/frontend/settings/global/saveanywaysdialog/template.html - 28 + src/app/frontend/resource/config/persistentvolumeclaim/detail/template.html + 38 @@ -4468,76 +4590,6 @@ 383 - - Resource Information - - src/app/frontend/crd/detail/template.html - 22 - - - - Accepted Names - - src/app/frontend/crd/detail/template.html - 55 - - - - Scope - - src/app/frontend/crd/detail/template.html - 35 - - - - Version - - src/app/frontend/crd/detail/template.html - 29 - - - - Subresources - - src/app/frontend/crd/detail/template.html - 47 - - - - Plural - - src/app/frontend/crd/detail/template.html - 62 - - - - List Kind - - src/app/frontend/crd/detail/template.html - 77 - - - - Singular - - src/app/frontend/crd/detail/template.html - 67 - - - - Short Names - - src/app/frontend/crd/detail/template.html - 82 - - - - Categories - - src/app/frontend/crd/detail/template.html - 87 - - Session Affinity @@ -4564,51 +4616,6 @@ 38 - - Volume Name - - src/app/frontend/resource/config/persistentvolumeclaim/detail/template.html - 38 - - - - Label Selector - - src/app/frontend/resource/workloads/replicationcontroller/detail/template.html - 30 - - - src/app/frontend/resource/workloads/statefulset/detail/template.html - 30 - - - - Init images - - src/app/frontend/resource/workloads/daemonset/detail/template.html - 48 - - - src/app/frontend/resource/workloads/deployment/detail/template.html - 272 - - - src/app/frontend/resource/workloads/job/detail/template.html - 67 - - - src/app/frontend/resource/workloads/replicaset/detail/template.html - 56 - - - src/app/frontend/resource/workloads/replicationcontroller/detail/template.html - 48 - - - src/app/frontend/resource/workloads/statefulset/detail/template.html - 48 - - Ingress Class Name @@ -4651,6 +4658,44 @@ 73 + + Label Selector + + src/app/frontend/resource/workloads/replicationcontroller/detail/template.html + 30 + + + src/app/frontend/resource/workloads/statefulset/detail/template.html + 30 + + + + Init images + + src/app/frontend/resource/workloads/daemonset/detail/template.html + 48 + + + src/app/frontend/resource/workloads/deployment/detail/template.html + 272 + + + src/app/frontend/resource/workloads/job/detail/template.html + 67 + + + src/app/frontend/resource/workloads/replicaset/detail/template.html + 56 + + + src/app/frontend/resource/workloads/replicationcontroller/detail/template.html + 48 + + + src/app/frontend/resource/workloads/statefulset/detail/template.html + 48 + + Pods:  @@ -5048,6 +5093,13 @@ 151 + + Suffix '' not recognized. + + src/app/frontend/common/components/graph/helper.ts + 58 + + Pod Selector @@ -5083,13 +5135,6 @@ 23 - - Suffix '' not recognized. - - src/app/frontend/common/components/graph/helper.ts - 58 - - App name diff --git a/i18n/zh-Hans/messages.zh-Hans.xlf b/i18n/zh-Hans/messages.zh-Hans.xlf index 96fa011b6a35..11b87d8fc2ea 100644 --- a/i18n/zh-Hans/messages.zh-Hans.xlf +++ b/i18n/zh-Hans/messages.zh-Hans.xlf @@ -1035,6 +1035,10 @@ src/app/frontend/common/components/resourcelist/ingress/template.html 23 + + src/app/frontend/common/components/resourcelist/ingressclass/template.html + 23 + src/app/frontend/common/components/resourcelist/job/template.html 29 @@ -1175,6 +1179,10 @@ src/app/frontend/common/components/resourcelist/ingress/template.html 44 + + src/app/frontend/common/components/resourcelist/ingressclass/template.html + 44 + src/app/frontend/common/components/resourcelist/job/template.html 69 @@ -1544,6 +1552,26 @@ 41 + + Ingress Classes + Ingress Classes + + src/app/frontend/common/components/resourcelist/ingressclass/template.html + 21 + + + + Controller + Controller + + src/app/frontend/common/components/resourcelist/ingressclass/template.html + 55 + + + src/app/frontend/resource/discovery/ingressclass/detail/template.html + 29 + + Events Events @@ -1615,6 +1643,10 @@ src/app/frontend/common/components/resourcelist/ingress/template.html 116 + + src/app/frontend/common/components/resourcelist/ingressclass/template.html + 65 + src/app/frontend/common/components/resourcelist/job/template.html 124 @@ -3161,7 +3193,7 @@ src/app/frontend/overview/template.html - 64 + 66 src/app/frontend/resource/cluster/serviceaccount/detail/template.html @@ -3177,7 +3209,7 @@ src/app/frontend/search/template.html - 60 + 62 @@ -3189,11 +3221,11 @@ src/app/frontend/overview/template.html - 73 + 75 src/app/frontend/search/template.html - 68 + 70 @@ -3478,7 +3510,7 @@ src/app/frontend/chrome/nav/template.html - 68 + 67 @@ -3496,7 +3528,7 @@ src/app/frontend/chrome/nav/template.html - 77 + 82 @@ -3505,7 +3537,7 @@ src/app/frontend/chrome/nav/template.html - 83 + 88 @@ -3513,7 +3545,7 @@ Config Maps src/app/frontend/chrome/nav/template.html - 89 + 94 @@ -3521,7 +3553,7 @@ Persistent Volume Claims src/app/frontend/chrome/nav/template.html - 95 + 100 @@ -3529,7 +3561,7 @@ Secrets src/app/frontend/chrome/nav/template.html - 101 + 106 @@ -3537,7 +3569,7 @@ Storage Classes src/app/frontend/chrome/nav/template.html - 105 + 110 @@ -3545,7 +3577,7 @@ 集群 src/app/frontend/chrome/nav/template.html - 111 + 116 @@ -3553,7 +3585,7 @@ Cluster Role Bindings src/app/frontend/chrome/nav/template.html - 115 + 120 @@ -3561,7 +3593,7 @@ Cluster Roles src/app/frontend/chrome/nav/template.html - 120 + 125 @@ -3569,7 +3601,15 @@ 事件 src/app/frontend/chrome/nav/template.html - 125 + 130 + + + + Ingress Classes + Ingress Classes + + src/app/frontend/chrome/nav/template.html + 77 @@ -3577,7 +3617,7 @@ 命名空间 src/app/frontend/chrome/nav/template.html - 129 + 134 @@ -3585,7 +3625,7 @@ 网络策略 src/app/frontend/chrome/nav/template.html - 134 + 139 @@ -3593,7 +3633,7 @@ Nodes src/app/frontend/chrome/nav/template.html - 139 + 144 @@ -3601,7 +3641,7 @@ Persistent Volumes src/app/frontend/chrome/nav/template.html - 143 + 148 @@ -3609,7 +3649,7 @@ Role Bindings src/app/frontend/chrome/nav/template.html - 149 + 154 @@ -3617,7 +3657,7 @@ Roles src/app/frontend/chrome/nav/template.html - 155 + 160 @@ -3625,7 +3665,7 @@ 服务账号 src/app/frontend/chrome/nav/template.html - 160 + 165 @@ -3633,7 +3673,7 @@ 自定义资源 src/app/frontend/chrome/nav/template.html - 168 + 173 @@ -3641,7 +3681,7 @@ 插件 src/app/frontend/chrome/nav/template.html - 179 + 184 @@ -3657,7 +3697,7 @@ 设置 src/app/frontend/chrome/nav/template.html - 187 + 192 @@ -3665,7 +3705,7 @@ 关于 src/app/frontend/chrome/nav/template.html - 192 + 197 @@ -3933,6 +3973,10 @@ src/app/frontend/resource/discovery/ingress/detail/template.html 23 + + src/app/frontend/resource/discovery/ingressclass/detail/template.html + 22 + src/app/frontend/resource/discovery/service/detail/template.html 22 @@ -4976,11 +5020,11 @@ Config and Storage src/app/frontend/overview/template.html - 56 + 58 src/app/frontend/search/template.html - 52 + 54 @@ -5534,6 +5578,10 @@ src/app/frontend/resource/config/storageclass/detail/template.html 37 + + src/app/frontend/resource/discovery/ingressclass/detail/template.html + 37 + Data diff --git a/i18n/zh-Hant-HK/messages.zh-Hant-HK.xlf b/i18n/zh-Hant-HK/messages.zh-Hant-HK.xlf index ffae42ef85e1..31565eba669b 100644 --- a/i18n/zh-Hant-HK/messages.zh-Hant-HK.xlf +++ b/i18n/zh-Hant-HK/messages.zh-Hant-HK.xlf @@ -1035,6 +1035,10 @@ src/app/frontend/common/components/resourcelist/ingress/template.html 23 + + src/app/frontend/common/components/resourcelist/ingressclass/template.html + 23 + src/app/frontend/common/components/resourcelist/job/template.html 29 @@ -1175,6 +1179,10 @@ src/app/frontend/common/components/resourcelist/ingress/template.html 44 + + src/app/frontend/common/components/resourcelist/ingressclass/template.html + 44 + src/app/frontend/common/components/resourcelist/job/template.html 69 @@ -1544,6 +1552,26 @@ 41 + + Ingress Classes + Ingress Classes + + src/app/frontend/common/components/resourcelist/ingressclass/template.html + 21 + + + + Controller + Controller + + src/app/frontend/common/components/resourcelist/ingressclass/template.html + 55 + + + src/app/frontend/resource/discovery/ingressclass/detail/template.html + 29 + + Events Events @@ -1615,6 +1643,10 @@ src/app/frontend/common/components/resourcelist/ingress/template.html 116 + + src/app/frontend/common/components/resourcelist/ingressclass/template.html + 65 + src/app/frontend/common/components/resourcelist/job/template.html 124 @@ -3155,7 +3187,7 @@ src/app/frontend/overview/template.html - 64 + 66 src/app/frontend/resource/cluster/serviceaccount/detail/template.html @@ -3171,7 +3203,7 @@ src/app/frontend/search/template.html - 60 + 62 @@ -3183,11 +3215,11 @@ src/app/frontend/overview/template.html - 73 + 75 src/app/frontend/search/template.html - 68 + 70 @@ -3474,7 +3506,7 @@ src/app/frontend/chrome/nav/template.html - 68 + 67 @@ -3492,7 +3524,7 @@ src/app/frontend/chrome/nav/template.html - 77 + 82 @@ -3501,7 +3533,7 @@ src/app/frontend/chrome/nav/template.html - 83 + 88 @@ -3510,7 +3542,7 @@ src/app/frontend/chrome/nav/template.html - 89 + 94 @@ -3519,7 +3551,7 @@ src/app/frontend/chrome/nav/template.html - 95 + 100 @@ -3528,7 +3560,7 @@ src/app/frontend/chrome/nav/template.html - 101 + 106 @@ -3537,7 +3569,7 @@ src/app/frontend/chrome/nav/template.html - 105 + 110 @@ -3546,7 +3578,7 @@ src/app/frontend/chrome/nav/template.html - 111 + 116 @@ -3555,7 +3587,7 @@ src/app/frontend/chrome/nav/template.html - 115 + 120 @@ -3564,7 +3596,7 @@ src/app/frontend/chrome/nav/template.html - 120 + 125 @@ -3572,7 +3604,15 @@ Events src/app/frontend/chrome/nav/template.html - 125 + 130 + + + + Ingress Classes + Ingress Classes + + src/app/frontend/chrome/nav/template.html + 77 @@ -3581,7 +3621,7 @@ src/app/frontend/chrome/nav/template.html - 129 + 134 @@ -3590,7 +3630,7 @@ src/app/frontend/chrome/nav/template.html - 134 + 139 @@ -3599,7 +3639,7 @@ src/app/frontend/chrome/nav/template.html - 139 + 144 @@ -3608,7 +3648,7 @@ src/app/frontend/chrome/nav/template.html - 143 + 148 @@ -3617,7 +3657,7 @@ src/app/frontend/chrome/nav/template.html - 149 + 154 @@ -3626,7 +3666,7 @@ src/app/frontend/chrome/nav/template.html - 155 + 160 @@ -3635,7 +3675,7 @@ src/app/frontend/chrome/nav/template.html - 160 + 165 @@ -3644,7 +3684,7 @@ src/app/frontend/chrome/nav/template.html - 168 + 173 @@ -3653,7 +3693,7 @@ src/app/frontend/chrome/nav/template.html - 179 + 184 @@ -3670,7 +3710,7 @@ src/app/frontend/chrome/nav/template.html - 187 + 192 @@ -3679,7 +3719,7 @@ src/app/frontend/chrome/nav/template.html - 192 + 197 @@ -3961,6 +4001,10 @@ src/app/frontend/resource/discovery/ingress/detail/template.html 23 + + src/app/frontend/resource/discovery/ingressclass/detail/template.html + 22 + src/app/frontend/resource/discovery/service/detail/template.html 22 @@ -5078,11 +5122,11 @@ Config and Storage src/app/frontend/overview/template.html - 56 + 58 src/app/frontend/search/template.html - 52 + 54 @@ -5668,6 +5712,10 @@ src/app/frontend/resource/config/storageclass/detail/template.html 37 + + src/app/frontend/resource/discovery/ingressclass/detail/template.html + 37 + Data diff --git a/i18n/zh-Hant/messages.zh-Hant.xlf b/i18n/zh-Hant/messages.zh-Hant.xlf index 7b886dca0f80..6d1583cf2540 100644 --- a/i18n/zh-Hant/messages.zh-Hant.xlf +++ b/i18n/zh-Hant/messages.zh-Hant.xlf @@ -1035,6 +1035,10 @@ src/app/frontend/common/components/resourcelist/ingress/template.html 23 + + src/app/frontend/common/components/resourcelist/ingressclass/template.html + 23 + src/app/frontend/common/components/resourcelist/job/template.html 29 @@ -1175,6 +1179,10 @@ src/app/frontend/common/components/resourcelist/ingress/template.html 44 + + src/app/frontend/common/components/resourcelist/ingressclass/template.html + 44 + src/app/frontend/common/components/resourcelist/job/template.html 69 @@ -1544,6 +1552,26 @@ 41 + + Ingress Classes + Ingress Classes + + src/app/frontend/common/components/resourcelist/ingressclass/template.html + 21 + + + + Controller + Controller + + src/app/frontend/common/components/resourcelist/ingressclass/template.html + 55 + + + src/app/frontend/resource/discovery/ingressclass/detail/template.html + 29 + + Events Events @@ -1615,6 +1643,10 @@ src/app/frontend/common/components/resourcelist/ingress/template.html 116 + + src/app/frontend/common/components/resourcelist/ingressclass/template.html + 65 + src/app/frontend/common/components/resourcelist/job/template.html 124 @@ -3163,7 +3195,7 @@ src/app/frontend/overview/template.html - 64 + 66 src/app/frontend/resource/cluster/serviceaccount/detail/template.html @@ -3179,7 +3211,7 @@ src/app/frontend/search/template.html - 60 + 62 @@ -3191,11 +3223,11 @@ src/app/frontend/overview/template.html - 73 + 75 src/app/frontend/search/template.html - 68 + 70 @@ -3482,7 +3514,7 @@ src/app/frontend/chrome/nav/template.html - 68 + 67 @@ -3500,7 +3532,7 @@ src/app/frontend/chrome/nav/template.html - 77 + 82 @@ -3509,7 +3541,7 @@ src/app/frontend/chrome/nav/template.html - 83 + 88 @@ -3518,7 +3550,7 @@ src/app/frontend/chrome/nav/template.html - 89 + 94 @@ -3527,7 +3559,7 @@ src/app/frontend/chrome/nav/template.html - 95 + 100 @@ -3536,7 +3568,7 @@ src/app/frontend/chrome/nav/template.html - 101 + 106 @@ -3545,7 +3577,7 @@ src/app/frontend/chrome/nav/template.html - 105 + 110 @@ -3554,7 +3586,7 @@ src/app/frontend/chrome/nav/template.html - 111 + 116 @@ -3563,7 +3595,7 @@ src/app/frontend/chrome/nav/template.html - 115 + 120 @@ -3572,7 +3604,7 @@ src/app/frontend/chrome/nav/template.html - 120 + 125 @@ -3580,7 +3612,15 @@ Events src/app/frontend/chrome/nav/template.html - 125 + 130 + + + + Ingress Classes + Ingress Classes + + src/app/frontend/chrome/nav/template.html + 77 @@ -3589,7 +3629,7 @@ src/app/frontend/chrome/nav/template.html - 129 + 134 @@ -3598,7 +3638,7 @@ src/app/frontend/chrome/nav/template.html - 134 + 139 @@ -3607,7 +3647,7 @@ src/app/frontend/chrome/nav/template.html - 139 + 144 @@ -3616,7 +3656,7 @@ src/app/frontend/chrome/nav/template.html - 143 + 148 @@ -3625,7 +3665,7 @@ src/app/frontend/chrome/nav/template.html - 149 + 154 @@ -3634,7 +3674,7 @@ src/app/frontend/chrome/nav/template.html - 155 + 160 @@ -3643,7 +3683,7 @@ src/app/frontend/chrome/nav/template.html - 160 + 165 @@ -3652,7 +3692,7 @@ src/app/frontend/chrome/nav/template.html - 168 + 173 @@ -3661,7 +3701,7 @@ src/app/frontend/chrome/nav/template.html - 179 + 184 @@ -3678,7 +3718,7 @@ src/app/frontend/chrome/nav/template.html - 187 + 192 @@ -3687,7 +3727,7 @@ src/app/frontend/chrome/nav/template.html - 192 + 197 @@ -3969,6 +4009,10 @@ src/app/frontend/resource/discovery/ingress/detail/template.html 23 + + src/app/frontend/resource/discovery/ingressclass/detail/template.html + 22 + src/app/frontend/resource/discovery/service/detail/template.html 22 @@ -5086,11 +5130,11 @@ Config and Storage src/app/frontend/overview/template.html - 56 + 58 src/app/frontend/search/template.html - 52 + 54 @@ -5676,6 +5720,10 @@ src/app/frontend/resource/config/storageclass/detail/template.html 37 + + src/app/frontend/resource/discovery/ingressclass/detail/template.html + 37 + Data diff --git a/src/app/backend/api/types.go b/src/app/backend/api/types.go index 51e1f3ee5875..34ea9ab478c6 100644 --- a/src/app/backend/api/types.go +++ b/src/app/backend/api/types.go @@ -148,6 +148,7 @@ const ( ResourceKindPlugin = "plugin" ResourceKindEndpoint = "endpoint" ResourceKindNetworkPolicy = "networkpolicy" + ResourceKindIngressClass = "ingressclass" ) // Scalable method return whether ResourceKind is scalable. @@ -223,6 +224,7 @@ var KindToAPIMapping = map[string]APIMapping{ ResourceKindEvent: {"events", ClientTypeDefault, true}, ResourceKindHorizontalPodAutoscaler: {"horizontalpodautoscalers", ClientTypeAutoscalingClient, true}, ResourceKindIngress: {"ingresses", ClientTypeNetworkingClient, true}, + ResourceKindIngressClass: {"ingressclasses", ClientTypeNetworkingClient, false}, ResourceKindJob: {"jobs", ClientTypeBatchClient, true}, ResourceKindCronJob: {"cronjobs", ClientTypeBetaBatchClient, true}, ResourceKindLimitRange: {"limitrange", ClientTypeDefault, true}, diff --git a/src/app/backend/handler/apihandler.go b/src/app/backend/handler/apihandler.go index 29cebc5b0885..f320273e7729 100644 --- a/src/app/backend/handler/apihandler.go +++ b/src/app/backend/handler/apihandler.go @@ -54,6 +54,7 @@ import ( "github.com/kubernetes/dashboard/src/app/backend/resource/event" "github.com/kubernetes/dashboard/src/app/backend/resource/horizontalpodautoscaler" "github.com/kubernetes/dashboard/src/app/backend/resource/ingress" + "github.com/kubernetes/dashboard/src/app/backend/resource/ingressclass" "github.com/kubernetes/dashboard/src/app/backend/resource/job" "github.com/kubernetes/dashboard/src/app/backend/resource/logs" ns "github.com/kubernetes/dashboard/src/app/backend/resource/namespace" @@ -688,6 +689,15 @@ func CreateHTTPAPIHandler(iManager integration.IntegrationManager, cManager clie To(apiHandler.handleGetStorageClassPersistentVolumes). Writes(persistentvolume.PersistentVolumeList{})) + apiV1Ws.Route( + apiV1Ws.GET("/ingressclass"). + To(apiHandler.handleGetIngressClassList). + Writes(ingressclass.IngressClassList{})) + apiV1Ws.Route( + apiV1Ws.GET("/ingressclass/{ingressclass}"). + To(apiHandler.handleGetIngressClass). + Writes(ingressclass.IngressClass{})) + apiV1Ws.Route( apiV1Ws.GET("/log/source/{namespace}/{resourceName}/{resourceType}"). To(apiHandler.handleLogSource). @@ -2554,6 +2564,38 @@ func (apiHandler *APIHandler) handleGetStorageClassPersistentVolumes(request *re response.WriteHeaderAndEntity(http.StatusOK, result) } +func (apiHandler *APIHandler) handleGetIngressClassList(request *restful.Request, response *restful.Response) { + k8sClient, err := apiHandler.cManager.Client(request) + if err != nil { + errors.HandleInternalError(response, err) + return + } + + dataSelect := parser.ParseDataSelectPathParameter(request) + result, err := ingressclass.GetIngressClassList(k8sClient, dataSelect) + if err != nil { + errors.HandleInternalError(response, err) + return + } + response.WriteHeaderAndEntity(http.StatusOK, result) +} + +func (apiHandler *APIHandler) handleGetIngressClass(request *restful.Request, response *restful.Response) { + k8sClient, err := apiHandler.cManager.Client(request) + if err != nil { + errors.HandleInternalError(response, err) + return + } + + name := request.PathParameter("ingressclass") + result, err := ingressclass.GetIngressClass(k8sClient, name) + if err != nil { + errors.HandleInternalError(response, err) + return + } + response.WriteHeaderAndEntity(http.StatusOK, result) +} + func (apiHandler *APIHandler) handleGetPodPersistentVolumeClaims(request *restful.Request, response *restful.Response) { k8sClient, err := apiHandler.cManager.Client(request) diff --git a/src/app/backend/resource/common/resourcechannels.go b/src/app/backend/resource/common/resourcechannels.go index 5ea6b75633d0..32507b30331e 100644 --- a/src/app/backend/resource/common/resourcechannels.go +++ b/src/app/backend/resource/common/resourcechannels.go @@ -112,6 +112,9 @@ type ResourceChannels struct { // List and error channels to StorageClasses StorageClassList StorageClassListChannel + // List and error channels to IngressClasses + IngressClassList IngressClassListChannel + // List and error channels to Roles RoleList RoleListChannel @@ -943,3 +946,28 @@ func GetStorageClassListChannel(client client.Interface, numReads int) StorageCl return channel } + +// IngressClassListChannel is a list and error channels to ingress classes. +type IngressClassListChannel struct { + List chan *networkingv1.IngressClassList + Error chan error +} + +// GetIngressClassListChannel returns a pair of channels to a ingress class list and +// errors that both must be read numReads times. +func GetIngressClassListChannel(client client.Interface, numReads int) IngressClassListChannel { + channel := IngressClassListChannel{ + List: make(chan *networkingv1.IngressClassList, numReads), + Error: make(chan error, numReads), + } + + go func() { + list, err := client.NetworkingV1().IngressClasses().List(context.TODO(), api.ListEverything) + for i := 0; i < numReads; i++ { + channel.List <- list + channel.Error <- err + } + }() + + return channel +} diff --git a/src/app/backend/resource/ingressclass/common.go b/src/app/backend/resource/ingressclass/common.go new file mode 100644 index 000000000000..5cfe080ef5ff --- /dev/null +++ b/src/app/backend/resource/ingressclass/common.go @@ -0,0 +1,54 @@ +// Copyright 2017 The Kubernetes Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package ingressclass + +import ( + "github.com/kubernetes/dashboard/src/app/backend/resource/dataselect" + networkingv1 "k8s.io/api/networking/v1" +) + +// The code below allows to perform complex data section on []networkingv1.IngressClass + +type IngressClassCell networkingv1.IngressClass + +func (self IngressClassCell) GetProperty(name dataselect.PropertyName) dataselect.ComparableValue { + switch name { + case dataselect.NameProperty: + return dataselect.StdComparableString(self.ObjectMeta.Name) + case dataselect.CreationTimestampProperty: + return dataselect.StdComparableTime(self.ObjectMeta.CreationTimestamp.Time) + case dataselect.NamespaceProperty: + return dataselect.StdComparableString(self.ObjectMeta.Namespace) + default: + // if name is not supported then just return a constant dummy value, sort will have no effect. + return nil + } +} + +func toCells(std []networkingv1.IngressClass) []dataselect.DataCell { + cells := make([]dataselect.DataCell, len(std)) + for i := range std { + cells[i] = IngressClassCell(std[i]) + } + return cells +} + +func fromCells(cells []dataselect.DataCell) []networkingv1.IngressClass { + std := make([]networkingv1.IngressClass, len(cells)) + for i := range std { + std[i] = networkingv1.IngressClass(cells[i].(IngressClassCell)) + } + return std +} diff --git a/src/app/backend/resource/ingressclass/detail.go b/src/app/backend/resource/ingressclass/detail.go new file mode 100644 index 000000000000..278aae0441e8 --- /dev/null +++ b/src/app/backend/resource/ingressclass/detail.go @@ -0,0 +1,68 @@ +// Copyright 2017 The Kubernetes Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package ingressclass + +import ( + "context" + "log" + + networkingv1 "k8s.io/api/networking/v1" + metaV1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/client-go/kubernetes" +) + +// IngressClassDetail provides the presentation layer view of Ingress Class resource. +type IngressClassDetail struct { + // Extends list item structure. + IngressClass `json:",inline"` + Parameters map[string]string `json:"parameters"` +} + +// GetIngressClass returns Storage Class resource. +func GetIngressClass(client kubernetes.Interface, name string) (*IngressClassDetail, error) { + log.Printf("Getting details of %s ingress class", name) + + ic, err := client.NetworkingV1().IngressClasses().Get(context.TODO(), name, metaV1.GetOptions{}) + if err != nil { + return nil, err + } + + ingressClass := toIngressClassDetail(ic) + return &ingressClass, err +} + +func toIngressClassDetail(ingressClass *networkingv1.IngressClass) IngressClassDetail { + parametersMap := make(map[string]string) + parameters := ingressClass.Spec.Parameters + if parameters != nil { + // Mandatory parameters + parametersMap["Kind"] = parameters.Kind + parametersMap["Name"] = parameters.Name + // Optional parameters + if parameters.APIGroup != nil { + parametersMap["ApiGroup"] = *parameters.APIGroup + } + if parameters.Namespace != nil { + parametersMap["Namespace"] = *parameters.Namespace + } + if parameters.Scope != nil { + parametersMap["Scope"] = *parameters.Scope + } + } + return IngressClassDetail{ + IngressClass: toIngressClass(ingressClass), + Parameters: parametersMap, + } +} diff --git a/src/app/backend/resource/ingressclass/detail_test.go b/src/app/backend/resource/ingressclass/detail_test.go new file mode 100644 index 000000000000..63669487c3c9 --- /dev/null +++ b/src/app/backend/resource/ingressclass/detail_test.go @@ -0,0 +1,69 @@ +// Copyright 2017 The Kubernetes Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package ingressclass + +import ( + "reflect" + "testing" + + "github.com/kubernetes/dashboard/src/app/backend/api" + networkingv1 "k8s.io/api/networking/v1" + metaV1 "k8s.io/apimachinery/pkg/apis/meta/v1" +) + +func TestToIngressClassDetails(t *testing.T) { + paramRef := networkingv1.IngressClassParametersReference{Kind: "pods", Name: "test"} + apiGroup := "k8s.example.com" + scope := "Namespace" + paramFullRef := networkingv1.IngressClassParametersReference{Kind: "pods", Name: "test", APIGroup: &apiGroup, Scope: &scope} + cases := []struct { + ingressClass *networkingv1.IngressClass + expected IngressClassDetail + }{ + { + ingressClass: &networkingv1.IngressClass{ + ObjectMeta: metaV1.ObjectMeta{Name: "test-ic"}, + Spec: networkingv1.IngressClassSpec{Controller: "k8s.io/ingress-nginx", Parameters: ¶mRef}, + }, + expected: IngressClassDetail{ + IngressClass: IngressClass{ + ObjectMeta: api.ObjectMeta{Name: "test-ic"}, + TypeMeta: api.TypeMeta{Kind: "ingressclass"}, + Controller: "k8s.io/ingress-nginx"}, + Parameters: map[string]string{"Kind": "pods", "Name": "test"}, + }, + }, { + ingressClass: &networkingv1.IngressClass{ + ObjectMeta: metaV1.ObjectMeta{Name: "test-ic"}, + Spec: networkingv1.IngressClassSpec{Controller: "k8s.io/ingress-nginx", Parameters: ¶mFullRef}, + }, + expected: IngressClassDetail{ + IngressClass: IngressClass{ + ObjectMeta: api.ObjectMeta{Name: "test-ic"}, + TypeMeta: api.TypeMeta{Kind: "ingressclass"}, + Controller: "k8s.io/ingress-nginx"}, + Parameters: map[string]string{"ApiGroup": "k8s.example.com", "Kind": "pods", "Name": "test", "Scope": "Namespace"}, + }, + }, + } + + for _, c := range cases { + actual := toIngressClassDetail(c.ingressClass) + + if !reflect.DeepEqual(actual, c.expected) { + t.Errorf("toIngressClassDetails(%#v) == \ngot %#v, \nexpected %#v", c.ingressClass, actual, c.expected) + } + } +} diff --git a/src/app/backend/resource/ingressclass/list.go b/src/app/backend/resource/ingressclass/list.go new file mode 100644 index 000000000000..149509fdc8db --- /dev/null +++ b/src/app/backend/resource/ingressclass/list.go @@ -0,0 +1,95 @@ +// Copyright 2017 The Kubernetes Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package ingressclass + +import ( + "log" + + "github.com/kubernetes/dashboard/src/app/backend/api" + "github.com/kubernetes/dashboard/src/app/backend/errors" + "github.com/kubernetes/dashboard/src/app/backend/resource/common" + "github.com/kubernetes/dashboard/src/app/backend/resource/dataselect" + networkingv1 "k8s.io/api/networking/v1" + "k8s.io/client-go/kubernetes" +) + +// IngressClassList holds a list of Ingress Class objects in the cluster. +type IngressClassList struct { + ListMeta api.ListMeta `json:"listMeta"` + Items []IngressClass `json:"items"` + + // List of non-critical errors, that occurred during resource retrieval. + Errors []error `json:"errors"` +} + +// IngressClass is a representation of a Kubernetes Ingress Class object. +type IngressClass struct { + ObjectMeta api.ObjectMeta `json:"objectMeta"` + TypeMeta api.TypeMeta `json:"typeMeta"` + Controller string `json:"controller"` +} + +// GetIngressClassList returns a list of all Ingress class objects in the cluster. +func GetIngressClassList(client kubernetes.Interface, dsQuery *dataselect.DataSelectQuery) ( + *IngressClassList, error) { + log.Print("Getting list of ingress classes in the cluster") + + channels := &common.ResourceChannels{ + IngressClassList: common.GetIngressClassListChannel(client, 1), + } + + return GetIngressClassListFromChannels(channels, dsQuery) +} + +// GetIngressClassListFromChannels returns a list of all ingress class objects in the cluster. +func GetIngressClassListFromChannels(channels *common.ResourceChannels, + dsQuery *dataselect.DataSelectQuery) (*IngressClassList, error) { + ingressClasses := <-channels.IngressClassList.List + err := <-channels.IngressClassList.Error + nonCriticalErrors, criticalError := errors.HandleError(err) + if criticalError != nil { + return nil, criticalError + } + + return toIngressClassList(ingressClasses.Items, nonCriticalErrors, dsQuery), nil +} + +func toIngressClassList(ingressClasses []networkingv1.IngressClass, nonCriticalErrors []error, + dsQuery *dataselect.DataSelectQuery) *IngressClassList { + + ingressClassList := &IngressClassList{ + Items: make([]IngressClass, 0), + ListMeta: api.ListMeta{TotalItems: len(ingressClasses)}, + Errors: nonCriticalErrors, + } + + ingressClassCells, filteredTotal := dataselect.GenericDataSelectWithFilter(toCells(ingressClasses), dsQuery) + ingressClasses = fromCells(ingressClassCells) + ingressClassList.ListMeta = api.ListMeta{TotalItems: filteredTotal} + + for _, ingressClass := range ingressClasses { + ingressClassList.Items = append(ingressClassList.Items, toIngressClass(&ingressClass)) + } + + return ingressClassList +} + +func toIngressClass(ingressClass *networkingv1.IngressClass) IngressClass { + return IngressClass{ + ObjectMeta: api.NewObjectMeta(ingressClass.ObjectMeta), + TypeMeta: api.NewTypeMeta(api.ResourceKindIngressClass), + Controller: ingressClass.Spec.Controller, + } +} diff --git a/src/app/backend/resource/ingressclass/list_test.go b/src/app/backend/resource/ingressclass/list_test.go new file mode 100644 index 000000000000..4f93bdf5c8e3 --- /dev/null +++ b/src/app/backend/resource/ingressclass/list_test.go @@ -0,0 +1,134 @@ +// Copyright 2017 The Kubernetes Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package ingressclass + +import ( + "reflect" + "testing" + + "github.com/kubernetes/dashboard/src/app/backend/api" + "github.com/kubernetes/dashboard/src/app/backend/resource/dataselect" + networkingv1 "k8s.io/api/networking/v1" + metaV1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/client-go/kubernetes/fake" +) + +func TestGetIngressClassList(t *testing.T) { + cases := []struct { + ingressClassList *networkingv1.IngressClassList + expectedActions []string + expected *IngressClassList + }{ + { + ingressClassList: &networkingv1.IngressClassList{ + Items: []networkingv1.IngressClass{ + { + ObjectMeta: metaV1.ObjectMeta{ + Name: "ingress-1", + Labels: map[string]string{}, + }, + }, + }}, + expectedActions: []string{"list"}, + expected: &IngressClassList{ + ListMeta: api.ListMeta{TotalItems: 1}, + Items: []IngressClass{ + { + ObjectMeta: api.ObjectMeta{ + Name: "ingress-1", + Labels: map[string]string{}, + }, + TypeMeta: api.TypeMeta{Kind: api.ResourceKindIngressClass}, + }, + }, + Errors: []error{}, + }, + }, + } + + for _, c := range cases { + fakeClient := fake.NewSimpleClientset(c.ingressClassList) + + actual, _ := GetIngressClassList(fakeClient, dataselect.NoDataSelect) + + actions := fakeClient.Actions() + if len(actions) != len(c.expectedActions) { + t.Errorf("Unexpected actions: %v, expected %d actions got %d", actions, + len(c.expectedActions), len(actions)) + continue + } + + for i, verb := range c.expectedActions { + if actions[i].GetVerb() != verb { + t.Errorf("Unexpected action: %+v, expected %s", + actions[i], verb) + } + } + + if !reflect.DeepEqual(actual, c.expected) { + t.Errorf("GetIngressClassList(client) == got\n%#v, expected\n %#v", actual, c.expected) + } + } +} + +func TestToIngressClass(t *testing.T) { + paramRef := networkingv1.IngressClassParametersReference{Kind: "pods", Name: "test"} + cases := []struct { + ingressClass *networkingv1.IngressClass + expected IngressClass + }{ + { + ingressClass: &networkingv1.IngressClass{}, + expected: IngressClass{ + TypeMeta: api.TypeMeta{Kind: api.ResourceKindIngressClass}, + }, + }, { + ingressClass: &networkingv1.IngressClass{ + ObjectMeta: metaV1.ObjectMeta{Name: "test-ic"}}, + expected: IngressClass{ + ObjectMeta: api.ObjectMeta{Name: "test-ic"}, + TypeMeta: api.TypeMeta{Kind: api.ResourceKindIngressClass}, + }, + }, { + ingressClass: &networkingv1.IngressClass{ + ObjectMeta: metaV1.ObjectMeta{Name: "test-ic"}, + Spec: networkingv1.IngressClassSpec{Controller: "k8s.io/ingress-nginx"}, + }, + expected: IngressClass{ + ObjectMeta: api.ObjectMeta{Name: "test-ic"}, + TypeMeta: api.TypeMeta{Kind: api.ResourceKindIngressClass}, + Controller: "k8s.io/ingress-nginx", + }, + }, { + ingressClass: &networkingv1.IngressClass{ + ObjectMeta: metaV1.ObjectMeta{Name: "test-ic"}, + Spec: networkingv1.IngressClassSpec{Controller: "k8s.io/ingress-nginx", Parameters: ¶mRef}, + }, + expected: IngressClass{ + ObjectMeta: api.ObjectMeta{Name: "test-ic"}, + TypeMeta: api.TypeMeta{Kind: api.ResourceKindIngressClass}, + Controller: "k8s.io/ingress-nginx", + }, + }, + } + + for _, c := range cases { + actual := toIngressClass(c.ingressClass) + + if !reflect.DeepEqual(actual, c.expected) { + t.Errorf("toIngressClass(%#v) == \ngot %#v, \nexpected %#v", c.ingressClass, actual, c.expected) + } + } +} diff --git a/src/app/frontend/chrome/nav/template.html b/src/app/frontend/chrome/nav/template.html index c27d4f43884e..feaaeb7b2565 100644 --- a/src/app/frontend/chrome/nav/template.html +++ b/src/app/frontend/chrome/nav/template.html @@ -64,16 +64,21 @@ Service Ingresses + Ingress Classes Services diff --git a/src/app/frontend/chrome/routing.ts b/src/app/frontend/chrome/routing.ts index 6cf5ffb95a46..b526b6e00730 100644 --- a/src/app/frontend/chrome/routing.ts +++ b/src/app/frontend/chrome/routing.ts @@ -129,6 +129,10 @@ const routes: Routes = [ path: 'ingress', loadChildren: () => import('resource/discovery/ingress/module').then(m => m.IngressModule), }, + { + path: 'ingressclass', + loadChildren: () => import('resource/discovery/ingressclass/module').then(m => m.IngressClassModule), + }, { path: 'service', loadChildren: () => import('resource/discovery/service/module').then(m => m.ServiceModule), diff --git a/src/app/frontend/common/components/module.ts b/src/app/frontend/common/components/module.ts index 8187f2abdd12..9b846e63085d 100644 --- a/src/app/frontend/common/components/module.ts +++ b/src/app/frontend/common/components/module.ts @@ -78,6 +78,7 @@ import {DaemonSetListComponent} from './resourcelist/daemonset/component'; import {DeploymentListComponent} from './resourcelist/deployment/component'; import {EventListComponent} from './resourcelist/event/component'; import {HorizontalPodAutoscalerListComponent} from './resourcelist/horizontalpodautoscaler/component'; +import {IngressClassListComponent} from './resourcelist/ingressclass/component'; import {IngressListComponent} from './resourcelist/ingress/component'; import {JobListComponent} from './resourcelist/job/component'; import {NamespaceListComponent} from './resourcelist/namespace/component'; @@ -146,6 +147,7 @@ const components = [ GraphMetricsComponent, HiddenPropertyComponent, HorizontalPodAutoscalerListComponent, + IngressClassListComponent, IngressListComponent, IngressRuleFlatListComponent, InternalEndpointComponent, diff --git a/src/app/frontend/common/components/resourcelist/groupids.ts b/src/app/frontend/common/components/resourcelist/groupids.ts index b0371298f758..1d16eec685ed 100644 --- a/src/app/frontend/common/components/resourcelist/groupids.ts +++ b/src/app/frontend/common/components/resourcelist/groupids.ts @@ -21,6 +21,7 @@ export enum ListIdentifier { node = 'nodeList', persistentVolume = 'persistentVolumeList', storageClass = 'storageClassList', + ingressClass = 'ingressClassList', cronJob = 'cronJobList', crd = 'crdList', crdObject = 'crdObjectList', diff --git a/src/app/frontend/common/components/resourcelist/ingressclass/component.ts b/src/app/frontend/common/components/resourcelist/ingressclass/component.ts new file mode 100644 index 000000000000..02e971f61ffb --- /dev/null +++ b/src/app/frontend/common/components/resourcelist/ingressclass/component.ts @@ -0,0 +1,59 @@ +// Copyright 2017 The Kubernetes Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +import {HttpParams} from '@angular/common/http'; +import {ChangeDetectionStrategy, ChangeDetectorRef, Component, Input} from '@angular/core'; +import {IngressClass, IngressClassList} from '@api/root.api'; +import {Observable} from 'rxjs'; + +import {ResourceListBase} from '@common/resources/list'; +import {NotificationsService} from '@common/services/global/notifications'; +import {EndpointManager, Resource} from '@common/services/resource/endpoint'; +import {ResourceService} from '@common/services/resource/resource'; +import {MenuComponent} from '../../list/column/menu/component'; +import {ListGroupIdentifier, ListIdentifier} from '../groupids'; + +@Component({ + selector: 'kd-ingress-class-list', + templateUrl: './template.html', + changeDetection: ChangeDetectionStrategy.OnPush, +}) +export class IngressClassListComponent extends ResourceListBase { + @Input() endpoint = EndpointManager.resource(Resource.ingressClass).list(); + + constructor( + private readonly ic_: ResourceService, + notifications: NotificationsService, + cdr: ChangeDetectorRef + ) { + super('ingressclass', notifications, cdr); + this.id = ListIdentifier.ingressClass; + this.groupId = ListGroupIdentifier.cluster; + + // Register action columns. + this.registerActionColumn('menu', MenuComponent); + } + + getResourceObservable(params?: HttpParams): Observable { + return this.ic_.get(this.endpoint, undefined, params); + } + + map(ingressClassList: IngressClassList): IngressClass[] { + return ingressClassList.items; + } + + getDisplayColumns(): string[] { + return ['name', 'controller', 'created']; + } +} diff --git a/src/app/frontend/common/components/resourcelist/ingressclass/template.html b/src/app/frontend/common/components/resourcelist/ingressclass/template.html new file mode 100644 index 000000000000..3a269379769d --- /dev/null +++ b/src/app/frontend/common/components/resourcelist/ingressclass/template.html @@ -0,0 +1,98 @@ + + + +
Ingress Classes
+
Items: {{ totalItems }}
+
+ +
+ +
+
+ + + + Name + + {{ sc.objectMeta.name }} + + + + + Controller + {{ sc.controller }} + + + + Created + + + + + + + + + + + + + + + + +
+ +
+
+ +
+ +
+
diff --git a/src/app/frontend/common/services/resource/endpoint.ts b/src/app/frontend/common/services/resource/endpoint.ts index a441551cedb1..c1e1190473a9 100644 --- a/src/app/frontend/common/services/resource/endpoint.ts +++ b/src/app/frontend/common/services/resource/endpoint.ts @@ -33,6 +33,7 @@ export enum Resource { namespace = 'namespace', persistentVolume = 'persistentvolume', storageClass = 'storageclass', + ingressClass = 'ingressclass', clusterRole = 'clusterrole', clusterRoleBinding = 'clusterrolebinding', role = 'role', diff --git a/src/app/frontend/overview/template.html b/src/app/frontend/overview/template.html index b3a773b55f99..e91aebd125f8 100644 --- a/src/app/frontend/overview/template.html +++ b/src/app/frontend/overview/template.html @@ -47,6 +47,8 @@
+
diff --git a/src/app/frontend/resource/discovery/ingressclass/detail/component.ts b/src/app/frontend/resource/discovery/ingressclass/detail/component.ts new file mode 100644 index 000000000000..1d971fee3f08 --- /dev/null +++ b/src/app/frontend/resource/discovery/ingressclass/detail/component.ts @@ -0,0 +1,68 @@ +// Copyright 2017 The Kubernetes Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +import {Component, OnDestroy, OnInit} from '@angular/core'; +import {ActivatedRoute} from '@angular/router'; +import {IngressClassDetail} from '@api/root.api'; +import {Subject} from 'rxjs'; +import {takeUntil} from 'rxjs/operators'; + +import {ActionbarService, ResourceMeta} from '@common/services/global/actionbar'; +import {NotificationsService} from '@common/services/global/notifications'; +import {EndpointManager, Resource} from '@common/services/resource/endpoint'; +import {ResourceService} from '@common/services/resource/resource'; + +@Component({ + selector: 'kd-ingress-class-detail', + templateUrl: './template.html', + styleUrls: ['./style.scss'], +}) +export class IngressClassDetailComponent implements OnInit, OnDestroy { + private readonly endpoint_ = EndpointManager.resource(Resource.ingressClass); + private readonly unsubscribe_ = new Subject(); + + ingressClass: IngressClassDetail; + isInitialized = false; + + constructor( + private readonly ingressClass_: ResourceService, + private readonly actionbar_: ActionbarService, + private readonly activatedRoute_: ActivatedRoute, + private readonly notifications_: NotificationsService + ) {} + + ngOnInit(): void { + const resourceName = this.activatedRoute_.snapshot.params.resourceName; + + this.ingressClass_ + .get(this.endpoint_.detail(), resourceName) + .pipe(takeUntil(this.unsubscribe_)) + .subscribe((d: IngressClassDetail) => { + this.ingressClass = d; + this.notifications_.pushErrors(d.errors); + this.actionbar_.onInit.emit(new ResourceMeta('Ingress Class', d.objectMeta, d.typeMeta)); + this.isInitialized = true; + }); + } + + ngOnDestroy(): void { + this.unsubscribe_.next(); + this.unsubscribe_.complete(); + this.actionbar_.onDetailsLeave.emit(); + } + + getParameterNames(): string[] { + return this.ingressClass.parameters ? Object.keys(this.ingressClass.parameters) : []; + } +} diff --git a/src/app/frontend/resource/discovery/ingressclass/detail/style.scss b/src/app/frontend/resource/discovery/ingressclass/detail/style.scss new file mode 100644 index 000000000000..1b08d10a84df --- /dev/null +++ b/src/app/frontend/resource/discovery/ingressclass/detail/style.scss @@ -0,0 +1,23 @@ +// Copyright 2017 The Kubernetes Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +@use '../../../../variables' as *; +@use '../../../../mixins' as *; + +.kd-ingress-class-parameter-icon { + @include kd-icon-size($caption-font-size-base); + + align-self: center; + margin-left: $baseline-grid * 0.5; +} diff --git a/src/app/frontend/resource/discovery/ingressclass/detail/template.html b/src/app/frontend/resource/discovery/ingressclass/detail/template.html new file mode 100644 index 000000000000..e8f46134a8c4 --- /dev/null +++ b/src/app/frontend/resource/discovery/ingressclass/detail/template.html @@ -0,0 +1,43 @@ + + + + + +
Resource information
+
+ +
Controller
+
{{ ingressClass?.controller }}
+
+ +
+ {{ parameter }} + tune +
+
{{ ingressClass?.parameters[parameter] }}
+
+
+
diff --git a/src/app/frontend/resource/discovery/ingressclass/list/component.ts b/src/app/frontend/resource/discovery/ingressclass/list/component.ts new file mode 100644 index 000000000000..b898242f1d38 --- /dev/null +++ b/src/app/frontend/resource/discovery/ingressclass/list/component.ts @@ -0,0 +1,21 @@ +// Copyright 2017 The Kubernetes Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +import {Component} from '@angular/core'; + +@Component({ + selector: 'kd-ingress-class-list-state', + template: '', +}) +export class IngressClassListComponent {} diff --git a/src/app/frontend/resource/discovery/ingressclass/module.ts b/src/app/frontend/resource/discovery/ingressclass/module.ts new file mode 100644 index 000000000000..d6bca5594065 --- /dev/null +++ b/src/app/frontend/resource/discovery/ingressclass/module.ts @@ -0,0 +1,28 @@ +// Copyright 2017 The Kubernetes Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +import {NgModule} from '@angular/core'; + +import {ComponentsModule} from '@common/components/module'; +import {SharedModule} from '../../../shared.module'; + +import {IngressClassDetailComponent} from './detail/component'; +import {IngressClassListComponent} from './list/component'; +import {IngressClassRoutingModule} from './routing'; + +@NgModule({ + imports: [SharedModule, ComponentsModule, IngressClassRoutingModule], + declarations: [IngressClassListComponent, IngressClassDetailComponent], +}) +export class IngressClassModule {} diff --git a/src/app/frontend/resource/discovery/ingressclass/routing.ts b/src/app/frontend/resource/discovery/ingressclass/routing.ts new file mode 100644 index 000000000000..67243ebdec24 --- /dev/null +++ b/src/app/frontend/resource/discovery/ingressclass/routing.ts @@ -0,0 +1,46 @@ +// Copyright 2017 The Kubernetes Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +import {NgModule} from '@angular/core'; +import {Route, RouterModule} from '@angular/router'; +import {DEFAULT_ACTIONBAR} from '@common/components/actionbars/routing'; + +import {DISCOVERY_ROUTE} from '../routing'; + +import {IngressClassDetailComponent} from './detail/component'; +import {IngressClassListComponent} from './list/component'; + +const INGRESSCLASS_LIST_ROUTE: Route = { + path: '', + component: IngressClassListComponent, + data: { + breadcrumb: 'Ingress Classes', + parent: DISCOVERY_ROUTE, + }, +}; + +const INGRESSCLASS_DETAIL_ROUTE: Route = { + path: ':resourceName', + component: IngressClassDetailComponent, + data: { + breadcrumb: '{{ resourceName }}', + parent: INGRESSCLASS_LIST_ROUTE, + }, +}; + +@NgModule({ + imports: [RouterModule.forChild([INGRESSCLASS_LIST_ROUTE, INGRESSCLASS_DETAIL_ROUTE, DEFAULT_ACTIONBAR])], + exports: [RouterModule], +}) +export class IngressClassRoutingModule {} diff --git a/src/app/frontend/resource/discovery/template.html b/src/app/frontend/resource/discovery/template.html index 14d581052dcb..dc5558dac039 100644 --- a/src/app/frontend/resource/discovery/template.html +++ b/src/app/frontend/resource/discovery/template.html @@ -17,6 +17,8 @@
+
diff --git a/src/app/frontend/search/template.html b/src/app/frontend/search/template.html index 2f68dd6eb41c..aa9acd6a5867 100644 --- a/src/app/frontend/search/template.html +++ b/src/app/frontend/search/template.html @@ -43,6 +43,8 @@
+
diff --git a/src/app/frontend/typings/root.api.ts b/src/app/frontend/typings/root.api.ts index d1b9081a6874..26d729e732a4 100644 --- a/src/app/frontend/typings/root.api.ts +++ b/src/app/frontend/typings/root.api.ts @@ -211,6 +211,10 @@ export interface StorageClassList extends ResourceList { items: StorageClass[]; } +export interface IngressClassList extends ResourceList { + items: IngressClass[]; +} + // Simple detail types export type ClusterRole = Resource; @@ -405,6 +409,10 @@ export interface StorageClass extends Resource { parameters: StringMap[]; } +export interface IngressClass extends Resource { + controller: string; +} + // Detail types export interface ReplicaSetDetail extends ResourceDetail { @@ -581,6 +589,11 @@ export interface StorageClassDetail extends ResourceDetail { provisioner: string; } +export interface IngressClassDetail extends ResourceDetail { + parameters: StringMap; + controller: string; +} + export interface ConfigMapDetail extends ResourceDetail { data: StringMap; }