From 1e904f1def1c89ac9928f70dbec7efdb59354ef5 Mon Sep 17 00:00:00 2001 From: Neil MacDougall Date: Fri, 29 Jan 2021 14:19:15 +0000 Subject: [PATCH] Upstream 441 (#546) * Fix permission issue in docker all in one image (#4770) * Update website version, tweak github action (#4771) * Improve the presentation of advanced options in endpoint registration (#4766) * Reduce size of text and icons in page header (#4758) * Use a subtle color for the app page header (#4765) * Reduce size of text and icons in page header * Change app page header color * Add support for no authentication (#4386) * Add supprot for no authentication * Fix backend unit tests * Fix backend test failure * Address PR feedback * Address PR feedback * Fix backend unit test mock * Turn off auto-logout if the user can not log off * Ensure local auth user can edit profile * Fix unit tests Co-authored-by: Richard Cox * Upgrade to Angular 10 (#4724) * update packages pre angular update * Fix TS 4.x error * After ng update @angular/core @angular/cli * update @angular/cdk for ng update @angular/material * after ng update @angular/material * @angular-builders/custom-webpack fix - ngtypecheck.ts part of build not used - import `webpack` not known * Row fix part 1 * ngrx-store-localstorage upgrade * after ng update @ngrx/store * after ng update @swimlane/ngx-charts * After @swimlane/ngx-graph bump * fixes for npm install warnings * row fixes part 2 * Fix most of common js deps, bring in typings - seems the build now complains when bringing in js depedencies ``` CommonJS or AMD dependencies can cause optimization bailouts. For more info see: https://angular.io/guide/build#configuring-commonjs-dependencies ``` - the fix is to allow them, though we should look to moving away int eh future - dependencies are... - moment-timezone.... us - js-yaml.... us - webcola & dagre... ngx-graph - all others come from @cfstratos/ajsf-core * Ensure any cards that override abtract properties with @Input have their get & set * Lint fixes * commas not semi colons in object types * Roll back TableCellCustomComponent naming change change * changes following self review * Roll back ngx-monaco-editor from 10.0.0-beta.1 to 9.0.0 - beta 1 is missing loader.js file, which is loaded by beta 1 - see https://github.com/atularen/ngx-monaco-editor/issues/185#issuecomment-690393639 - also tidy location of monaco assets * Fix unit tests * Fix Application Deploy (problem #2) * Add debig for Application Deploy (problem #1) * Fix Org Spaces List * Fix Space Routes List * Safer api keys test * fix app wall test * Fix Application Wall Tests * More debug for Application Deploy * Add more debugging * Revert "Add more debugging" This reverts commit 41bd7a0042a0293a17db68559b15d3becec58446. * Revert "More debug for Application Deploy" This reverts commit 008e91ed6a832a94fedc5c17ac114dbc28347bd4. * Revert "Add debig for Application Deploy (problem #1)" This reverts commit 14e53c06ce3b2283149ecc61c2d2eec01828366b. * Improve home page view (#4740) * Allow k8s namespaces to be added as favourites * Improve the home page * Fix lint issue * Tweaks and refactoring * Add separator to layout menu * Improve incremental loading * Various tidyups and improvements * Tidy ups and improvemts to async loading * Fix progress spinner alignment * Unscubribe * Minor bug fixes and a few tidy ups * Further tidy ups * Fix front end unit tests * Unit test fix * Further unit tests fixes * Endpoint card unit test fixes * Fix unit tests * Tidy up favorite card * Further refinement to the UI * Fix missing dates from recents on CF view * Get app deploy from home screen working * Add message for when no connected endpoints * Unit test fixes * Kubernetes Home Card unit test fixes * Fix unit test error * Move components to remove dependency on large shared module * Fix unit test and add deploy tiles to CF Home Card * Fix word wrap on favorite name * Add tool tip * Style tidy ups * Minor tidy ups * Fix test imports * Fix unit tests * e2e Debugging * Fix for org delete e2e test * E2e Test fix * Address PR feedback so far * Address PR feedback * Fix connected endpoint state check on home screen * Address PR feedback * Restore apps link * Fix unit test * Prevent password show/hide icon from receiving focus (#4776) * Prevent password show/hide icon from receiving focus * Fix lint issues * Create defaults list component (#3987) * Port downstream list filter changes - https://github.com/SUSE/stratos/pull/185 - Apply to feature flag table * Fix e2e tests * Create defaults list component - Intermediate component between simple list and full list - Supply as little config as simple list, all of full list or anywhere in between * Fix test code * Major WIP * Simple change * Trivial change * Trivial Change * WIP * WIP * Tidying up * Avoid chicken & egg linting issue * Fix unit tests * Fix another test * Fix bug where all users were being fetched instead of just those in a cf - best case both cf's connected as admins and call takes a long time - worst case one cf isn't admin and call fails * Fix pick --> omit * Fix typing * Fixes after merge * WIP * Fix unit test * Fixes after merge * Add comments, tidy up * Fix unit tests * Bump gopkg.in/DATA-DOG/go-sqlmock.v1 in /src/jetstream (#4733) Bumps [gopkg.in/DATA-DOG/go-sqlmock.v1](https://github.com/DATA-DOG/go-sqlmock) from 1.3.0 to 1.5.0. - [Release notes](https://github.com/DATA-DOG/go-sqlmock/releases) - [Commits](https://github.com/DATA-DOG/go-sqlmock/compare/v1.3.0...v1.5.0) Signed-off-by: dependabot-preview[bot] Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> * Bump github.com/golang/mock from 1.2.0 to 1.4.4 in /src/jetstream (#4732) Bumps [github.com/golang/mock](https://github.com/golang/mock) from 1.2.0 to 1.4.4. - [Release notes](https://github.com/golang/mock/releases) - [Changelog](https://github.com/golang/mock/blob/master/.goreleaser.yml) - [Commits](https://github.com/golang/mock/compare/v1.2.0...v1.4.4) Signed-off-by: dependabot-preview[bot] Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> * Fix lint issue (#4783) * Endpoint plugins configurable via YAML (#4751) * Add proxy single request API endpoint * Add endpoint plugin generation from a YAML file * Deploy to CF from private GitHub and GitLab repos * Use subtypes for YAML generated endpoints * Nicer YAML format; ignore unknown endpoint types in the DB * Debug issues with mc CLI and minio server (#4790) * Move git tools and some components into their own package (#4752) * Move git tools and some components into their own package - this then becomes more of a git library - includes git - entities (and new git endpoint currently hidden), effects, actions, etc - commit list base items - git scm service and related items * fix unit tests * Update public_api.ts * Update public_api.ts * Fix lint issues Co-authored-by: Neil MacDougall Co-authored-by: Neil MacDougall * Don't fail if we can't access the GitHub API (#4779) * Fix ngDestroy bug on list view component (#4781) * Fix size and position of header notification badge icon (#4778) * Fix size and position of header notification badge icon * Ensure override also applies to dark mode - dark mode brings back in i think specific overrides by material design - ensure our overrides are more specific - flicking between light/dark mode now shows no difference Co-authored-by: Richard Cox * Fix helm endpoint link (#4777) * Prevent password show/hide icon from receiving focus * Fix lint issues * Clicking on a helm repository endpoint should fitler to show it's charts only * Fix for unit test * Address PR feedback * Tidy up and refactor user favorites (#4757) * Allow k8s namespaces to be added as favourites * Improve the home page * Fix lint issue * Tweaks and refactoring * Add separator to layout menu * Improve incremental loading * Various tidyups and improvements * Tidy ups and improvemts to async loading * Fix progress spinner alignment * Unscubribe * Minor bug fixes and a few tidy ups * Further tidy ups * Fix front end unit tests * Unit test fix * Further unit tests fixes * Endpoint card unit test fixes * Fix unit tests * Tidy up favorite card * Further refinement to the UI * Fix missing dates from recents on CF view * Get app deploy from home screen working * Add message for when no connected endpoints * Unit test fixes * Kubernetes Home Card unit test fixes * Fix unit test error * Move components to remove dependency on large shared module * Fix unit test and add deploy tiles to CF Home Card * Fix word wrap on favorite name * Add tool tip * Style tidy ups * Minor tidy ups * Check favorites exists before navigating to them * Fix test imports * First round of tidy ups of the user favorites code * Further refactor to reduce the complexity of user favorites * Fix unit tests * Allow Kubernetes namespaces to be favorited * Fix duplicate import * Tidy ups * e2e Debugging * Fix for org delete e2e test * E2e Test fix * Refactor out common entity operator * Slight refactor * Fix frontend unit tests * Address PR feedback so far * Address PR feedback * Fix connected endpoint state check on home screen * Address PR feedback * Restore apps link * Improve typing * Fix undefined error * Fix unit test * Fix ordering issue * Add a default home card * Fix frong end lint issues * Merge fixes * Fix unit tests * Fix lint issue * Fix lint issue * Fix unit test * Fix merge issue * Fix merge issue * Fix kube favorites not showing and sizing issue * Fix kube endpoint card shortcuts * Reinstate entity validation checks for CF app/org/space * Fix favorite validation * Tidy ups * Fix merge issue * Remove unrelated change * Address PR feedback * Bug fixes * Address PR feedback * Fix link for kubernetes endpoints * Move test docker app off of docker hub to avoid rate limiting (#4802) * Move test docker app off of docker hub to avoid rate limiting * Fix image reference * Handle table cell get/setters better (#4799) - get and set were moved into abstract base class as part of ts bump - we now need to ensure we get/set the correct way - also contains minor cell tidy ups * Fix link for metrics endpoints (#4800) * Fix issue where username/password are not encoded for basic auth (#4796) * Metrics: Ensure Stratos Metrics metadata file is optional (#4801) * Fix link for metrics endpoints * Ensure metrics works with plain Prometheus * Remove test code * Slight optimization in if * Update terminology for SSO Accept List and add to Helm Chart docs (#4797) * Docuement SSO Accept List and rename terminology * Use Allow not Accept * Update log message * Remove debug logging * Document SSO_OPTIONS * Fix double build when using ng serve (#4805) * Fix alignment of no content mesasges on home page view (#4809) * fix unicode rendering in application logstreams (#4808) * User Favorites: Further refactoring to simplify the code base (#4798) * Allow k8s namespaces to be added as favourites * Improve the home page * Fix lint issue * Tweaks and refactoring * Add separator to layout menu * Improve incremental loading * Various tidyups and improvements * Tidy ups and improvemts to async loading * Fix progress spinner alignment * Unscubribe * Minor bug fixes and a few tidy ups * Further tidy ups * Fix front end unit tests * Unit test fix * Further unit tests fixes * Endpoint card unit test fixes * Fix unit tests * Tidy up favorite card * Further refinement to the UI * Fix missing dates from recents on CF view * Get app deploy from home screen working * Add message for when no connected endpoints * Unit test fixes * Kubernetes Home Card unit test fixes * Fix unit test error * Move components to remove dependency on large shared module * Fix unit test and add deploy tiles to CF Home Card * Fix word wrap on favorite name * Add tool tip * Style tidy ups * Minor tidy ups * Check favorites exists before navigating to them * Fix test imports * First round of tidy ups of the user favorites code * Further refactor to reduce the complexity of user favorites * Fix unit tests * Allow Kubernetes namespaces to be favorited * Fix duplicate import * Tidy ups * e2e Debugging * Fix for org delete e2e test * E2e Test fix * Refactor out common entity operator * Slight refactor * Fix frontend unit tests * Address PR feedback so far * Address PR feedback * Fix connected endpoint state check on home screen * Address PR feedback * Restore apps link * Improve typing * Fix undefined error * Fix unit test * Fix ordering issue * Add a default home card * Fix frong end lint issues * Merge fixes * Fix unit tests * Fix lint issue * Fix lint issue * Fix unit test * Fix merge issue * Fix merge issue * Fix kube favorites not showing and sizing issue * Fix kube endpoint card shortcuts * Reinstate entity validation checks for CF app/org/space * Fix favorite validation * Tidy ups * Fix merge issue * Remove unrelated change * Address PR feedback * Bug fixes * User Favorites: More refactoring to simplify * Fix merge issues * More merge fixes * Fix issue with front-end unit tests * Fix unit test issue * Remove unused import * chore: remove trailing comma as this is a non standard (#4815) * remove trailing comma as this is a non standard * remove trailing comma as this is a non standard * remove trailing comma as this is a non standard * Allow backup/restore plugin to be enabled/disabled (#4818) * Home page: Make configurable showing all endpoints or just favorites (#4810) * Fix alignment of no content mesasges on home page view * Allow home view to show all endpoints are just favorites * Fix unit tests * FIx backend test * Changes following review * Fix backend unit test Co-authored-by: Richard Cox * Deploy Applications from Enterprise GitHub and GitLab (#4782) * Frontend for new yaml based git endpoints - register github.com and gitlab.com endpoints and connect with credentials - register and connect to github and gitlan enterprise instances - select these as sources when deploying a cf application * Add proxy single request API endpoint * Add endpoint plugin generation from a YAML file * Deploy to CF from private GitHub and GitLab repos * Use subtypes for YAML generated endpoints * Nicer YAML format; ignore unknown endpoint types in the DB * Fix merge issues and add icon indicator for private repositories * Fix lint issues * Add details component to show username and avatar on endpoint card * Various fixes and improvements * Fix lint issue * Fix merge issues * Unit test fixes * Unit test fix following merge * One more unit test fix * Fix backend unit tests * Fix the deploy types todo (in a verbose way) * Ignore commit id when possible * Fix redeploy stepper * Fix minor bugs in new register git stepper * multiple fixes, remaining todos * update github/gitlab connect readme's, including scope info * In connect helper remove duped header * Fix multiple gitlab issues * Fix deploy app home screen link for github/gitlab with credentials * Ensure app git tab only shows if we have access to repo - can happen if others view app deployed via private repo * Fix clone url & improve error messaging * Improve cf app summary page git info * Fix issue where... - we're waiting for an endpoint that doesn't exist.. in an effect - that endpoint then is created - the effect then fires off the request... long after it should have stopped * Fix multiple gitlab enterprise issues - enterprise gits weren't showing as deploy source types - enterprise gits that weren't connected failed to work (fetching data & deploying) * Fix git enterprise ssl setting, provide hint at time of url required * Show private repo indicator on app git tab * app git tab: handle git fetch failure beter - also rework observables in page * Changes following quick self review * Fix linting * Fixes following testing * Use enum for github string * Ensure Git entities associated with an endpoint are removed on endpoint unregister/disconnect * Fix unit test * Tidy up backend changes * Update app summary page * Show no content message if app git tab cannot show info * display password field instead of text area for token * other changes following review * Fix other issues raised in review (all from single comment) * Fix frontend after updated backend * Apply path escaping fix when url is recreated * Fix some of the e2e tests * Fixes after testing * Fix more e2e tests * Changes following review Co-authored-by: Richard Cox Co-authored-by: Ivan Kapelyukhin * Bump gopkg.in/yaml.v2 from 2.3.0 to 2.4.0 in /src/jetstream (#4817) Bumps [gopkg.in/yaml.v2](https://github.com/go-yaml/yaml) from 2.3.0 to 2.4.0. - [Release notes](https://github.com/go-yaml/yaml/releases) - [Commits](https://github.com/go-yaml/yaml/compare/v2.3.0...v2.4.0) Signed-off-by: dependabot-preview[bot] Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> * Fix ever-increasing array of snackbar references (#4820) * Fix ever-increasing array of snackbar references * Fix isse where latest is always null * Fix snackbar service * K8s add support for more resources (#4780) * k8s: Add support for more resource types in a generic way * Unit test fix * WIP * Fixes for pods view * Tidy ups * Add more resource types * Fix lint issues * Fix build issue * Fix unit test * Unit test fix * Fix unit tests * Fix lint issue * RE-arrange kube entity creation - now assign directly to kube entity catalog - to access custom kube generator resources have to do some funnies in kubernetes-tab-base.component.ts * Fix services in namespace view - kube guid and namespace was mixed up - now follow standard pattern of kube guid then namespace in ctor * Changes following review * Fix unit tests Co-authored-by: Richard Cox * Persist list settings over refresh (#4405) * WIP * Add list reset button & list button tooltips * Few tidy ups, add clear local storage feature * Tweak profile settings section * WIP * WIP * only store pagination sections from lists * Fix clear and auto select multi filter/s on reset * Ingore invalid values * Super basic encryption of pag section * fix reset * Fix max list count & multi-entity selectors stickyness * tidying up * Fix linting * Fix unit tests * Changes following review #1 * Changes following review #2 * Changes following review no. 3 * Fix warning on first load * Fix show org/space e2e failures * improve delete service e2e tests * Ensure list is card mode before waiting to find a card * Remove stray line * Don't use generic url validation for kube endpoints (#4826) - this was recently added - false negative for minikube url (https://192.168.39.159:8443) * Improvement and fix for no-content component (#4827) * Improvements and fixes for no-content component - add colour to improve monotone views on first load - fix issue where no-content header arrow failed to show in production (see https://github.com/angular/angular-cli/issues/17440) * Fix another opacity percentage - seen in import kube table edit endpoint name cell * Bump github.com/mattn/go-sqlite3 from 1.13.0 to 1.14.5 in /src/jetstream (#4816) Bumps [github.com/mattn/go-sqlite3](https://github.com/mattn/go-sqlite3) from 1.13.0 to 1.14.5. - [Release notes](https://github.com/mattn/go-sqlite3/releases) - [Commits](https://github.com/mattn/go-sqlite3/compare/v1.13.0...v1.14.5) Signed-off-by: dependabot-preview[bot] Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> * Document deployment with an ingress; make ingress host optional (#4793) * Minor Kube Fixes (#4829) * Fix home screen kube card pod link * Ensure reset list filter button also resets helm chart repo filter * Ensure we handle the case where the versions info is unable * Fix link for namespaces Co-authored-by: Neil MacDougall * K8s: More resource support - refinements (#4822) * Allow k8s namespaces to be added as favourites * k8s: Add support for more resource types in a generic way * Improve the home page * Fix lint issue * Tweaks and refactoring * Add separator to layout menu * Improve incremental loading * Various tidyups and improvements * Tidy ups and improvemts to async loading * Fix progress spinner alignment * Unscubribe * Minor bug fixes and a few tidy ups * Further tidy ups * Fix front end unit tests * Unit test fix * Further unit tests fixes * Endpoint card unit test fixes * Fix unit tests * Tidy up favorite card * Further refinement to the UI * Fix missing dates from recents on CF view * Get app deploy from home screen working * Add message for when no connected endpoints * Unit test fixes * Kubernetes Home Card unit test fixes * Fix unit test error * Move components to remove dependency on large shared module * Fix unit test and add deploy tiles to CF Home Card * Fix word wrap on favorite name * Add tool tip * Style tidy ups * Minor tidy ups * Check favorites exists before navigating to them * Fix test imports * First round of tidy ups of the user favorites code * Further refactor to reduce the complexity of user favorites * Fix unit tests * Allow Kubernetes namespaces to be favorited * Fix duplicate import * Tidy ups * e2e Debugging * Fix for org delete e2e test * E2e Test fix * Refactor out common entity operator * Slight refactor * Fix frontend unit tests * Unit test fix * Address PR feedback so far * Address PR feedback * Fix connected endpoint state check on home screen * Address PR feedback * Restore apps link * Improve typing * Fix undefined error * Fix unit test * Fix ordering issue * Add a default home card * Fix frong end lint issues * Merge fixes * Fix unit tests * WIP * Fixes for pods view * Tidy ups * Add more resource types * Fix lint issue * Fix lint issue * Fix unit test * Fix lint issues * Fix build issue * Fix unit test * Unit test fix * Fix unit tests * More improvements * Numerous improvements * Fix lint issue * RE-arrange kube entity creation - now assign directly to kube entity catalog - to access custom kube generator resources have to do some funnies in kubernetes-tab-base.component.ts * Fix services in namespace view - kube guid and namespace was mixed up - now follow standard pattern of kube guid then namespace in ctor * Fix merge issues * Changes following review * Fix unit tests * Fix merge issue * Fix merge issues * Changes following merge * Changes following merge * Fix merge conflicts * Only show analysis link when enabled * Fix issue favoriting from side panel * Fix expression changed error * Fix expression changed errors * Fix a few minor issues and unit test * Remove old namespace components * Remvoe TODO * Delete fixes - fixes to delete action param - added to delete pods - successEntityHandler doesn't run, so have to manually clear pagination sections * Fix delete ns - ensure delete action has correct guid - ensure response has kube guid * Fix expanding pod row * Fix show of analysis in namespace resource viewer * Fix fav namespace link * Fix PR issues Co-authored-by: Richard Cox * Add additional information to new kube resource tables (#4825) * Allow k8s namespaces to be added as favourites * k8s: Add support for more resource types in a generic way * Improve the home page * Fix lint issue * Tweaks and refactoring * Add separator to layout menu * Improve incremental loading * Various tidyups and improvements * Tidy ups and improvemts to async loading * Fix progress spinner alignment * Unscubribe * Minor bug fixes and a few tidy ups * Further tidy ups * Fix front end unit tests * Unit test fix * Further unit tests fixes * Endpoint card unit test fixes * Fix unit tests * Tidy up favorite card * Further refinement to the UI * Fix missing dates from recents on CF view * Get app deploy from home screen working * Add message for when no connected endpoints * Unit test fixes * Kubernetes Home Card unit test fixes * Fix unit test error * Move components to remove dependency on large shared module * Fix unit test and add deploy tiles to CF Home Card * Fix word wrap on favorite name * Add tool tip * Style tidy ups * Minor tidy ups * Check favorites exists before navigating to them * Fix test imports * First round of tidy ups of the user favorites code * Further refactor to reduce the complexity of user favorites * Fix unit tests * Allow Kubernetes namespaces to be favorited * Fix duplicate import * Tidy ups * e2e Debugging * Fix for org delete e2e test * E2e Test fix * Refactor out common entity operator * Slight refactor * Fix frontend unit tests * Unit test fix * Address PR feedback so far * Address PR feedback * Fix connected endpoint state check on home screen * Address PR feedback * Restore apps link * Improve typing * Fix undefined error * Fix unit test * Fix ordering issue * Add a default home card * Fix frong end lint issues * Merge fixes * Fix unit tests * WIP * Fixes for pods view * Tidy ups * Add more resource types * Fix lint issue * Fix lint issue * Fix unit test * Fix lint issues * Fix build issue * Fix unit test * Unit test fix * Fix unit tests * More improvements * Numerous improvements * Fix lint issue * RE-arrange kube entity creation - now assign directly to kube entity catalog - to access custom kube generator resources have to do some funnies in kubernetes-tab-base.component.ts * Fix services in namespace view - kube guid and namespace was mixed up - now follow standard pattern of kube guid then namespace in ctor * Fix merge issues * Changes following review * Fix unit tests * Fix merge issue * Fix merge issues * Changes following merge * Changes following merge * Add additional information to new kube resource tables * Fix merge conflicts * Only show analysis link when enabled * Fix issue favoriting from side panel * Fix expression changed error * Fix expression changed errors * Fix a few minor issues and unit test * Remove old namespace components * Remvoe TODO * Fix merge issue * Fix PR issues * Delete fixes - fixes to delete action param - added to delete pods - successEntityHandler doesn't run, so have to manually clear pagination sections * Fix delete ns - ensure delete action has correct guid - ensure response has kube guid * Don't use generic url validation for kube endpoints (#4826) - this was recently added - false negative for minikube url (https://192.168.39.159:8443) * Improvement and fix for no-content component (#4827) * Improvements and fixes for no-content component - add colour to improve monotone views on first load - fix issue where no-content header arrow failed to show in production (see https://github.com/angular/angular-cli/issues/17440) * Fix another opacity percentage - seen in import kube table edit endpoint name cell * Bump github.com/mattn/go-sqlite3 from 1.13.0 to 1.14.5 in /src/jetstream (#4816) Bumps [github.com/mattn/go-sqlite3](https://github.com/mattn/go-sqlite3) from 1.13.0 to 1.14.5. - [Release notes](https://github.com/mattn/go-sqlite3/releases) - [Commits](https://github.com/mattn/go-sqlite3/compare/v1.13.0...v1.14.5) Signed-off-by: dependabot-preview[bot] Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> * Document deployment with an ingress; make ingress host optional (#4793) * Minor Kube Fixes (#4829) * Fix home screen kube card pod link * Ensure reset list filter button also resets helm chart repo filter * Ensure we handle the case where the versions info is unable * Fix link for namespaces Co-authored-by: Neil MacDougall * Fix expanding pod row * Fix show of analysis in namespace resource viewer * Fix fav namespace link Co-authored-by: Neil MacDougall Co-authored-by: Neil MacDougall Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> Co-authored-by: Ivan Kapelyukhin Co-authored-by: Neil MacDougall * Improve SSO documentation with detailed UAA setup (#4833) Document how to properly setup UAA client in production environment, with proper listing in login home page. * Add additional kube resources to Workload page (#4830) * Allow k8s namespaces to be added as favourites * k8s: Add support for more resource types in a generic way * Improve the home page * Fix lint issue * Tweaks and refactoring * Add separator to layout menu * Improve incremental loading * Various tidyups and improvements * Tidy ups and improvemts to async loading * Fix progress spinner alignment * Unscubribe * Minor bug fixes and a few tidy ups * Further tidy ups * Fix front end unit tests * Unit test fix * Further unit tests fixes * Endpoint card unit test fixes * Fix unit tests * Tidy up favorite card * Further refinement to the UI * Fix missing dates from recents on CF view * Get app deploy from home screen working * Add message for when no connected endpoints * Unit test fixes * Kubernetes Home Card unit test fixes * Fix unit test error * Move components to remove dependency on large shared module * Fix unit test and add deploy tiles to CF Home Card * Fix word wrap on favorite name * Add tool tip * Style tidy ups * Minor tidy ups * Check favorites exists before navigating to them * Fix test imports * First round of tidy ups of the user favorites code * Further refactor to reduce the complexity of user favorites * Fix unit tests * Allow Kubernetes namespaces to be favorited * Fix duplicate import * Tidy ups * e2e Debugging * Fix for org delete e2e test * E2e Test fix * Refactor out common entity operator * Slight refactor * Fix frontend unit tests * Unit test fix * Address PR feedback so far * Address PR feedback * Fix connected endpoint state check on home screen * Address PR feedback * Restore apps link * Improve typing * Fix undefined error * Fix unit test * Fix ordering issue * Add a default home card * Fix frong end lint issues * Merge fixes * Fix unit tests * WIP * Fixes for pods view * Tidy ups * Add more resource types * Fix lint issue * Fix lint issue * Fix unit test * Fix lint issues * Fix build issue * Fix unit test * Unit test fix * Fix unit tests * More improvements * Numerous improvements * Fix lint issue * RE-arrange kube entity creation - now assign directly to kube entity catalog - to access custom kube generator resources have to do some funnies in kubernetes-tab-base.component.ts * Fix services in namespace view - kube guid and namespace was mixed up - now follow standard pattern of kube guid then namespace in ctor * Fix merge issues * Changes following review * Fix unit tests * Fix merge issue * Fix merge issues * Changes following merge * Changes following merge * Fix merge conflicts * Only show analysis link when enabled * Fix issue favoriting from side panel * Fix expression changed error * Fix expression changed errors * Fix a few minor issues and unit test * Remove old namespace components * Remvoe TODO * Add additional kube resources to Workload page Two small todos left - tidy up process in helm-release-socket-service - switch service and pods view over to new process and remove old components/files * Convert workload pods and services view to standard resource views * Tidy up HelmReleaseSocketService * Delete fixes - fixes to delete action param - added to delete pods - successEntityHandler doesn't run, so have to manually clear pagination sections * Fix delete ns - ensure delete action has correct guid - ensure response has kube guid * Fix expanding pod row * Fix show of analysis in namespace resource viewer * Fix fav namespace link * Fix PR issues * remove fluff from kube generator * Fixes post merge * Add additional information to new kube resource tables (#4825) * Allow k8s namespaces to be added as favourites * k8s: Add support for more resource types in a generic way * Improve the home page * Fix lint issue * Tweaks and refactoring * Add separator to layout menu * Improve incremental loading * Various tidyups and improvements * Tidy ups and improvemts to async loading * Fix progress spinner alignment * Unscubribe * Minor bug fixes and a few tidy ups * Further tidy ups * Fix front end unit tests * Unit test fix * Further unit tests fixes * Endpoint card unit test fixes * Fix unit tests * Tidy up favorite card * Further refinement to the UI * Fix missing dates from recents on CF view * Get app deploy from home screen working * Add message for when no connected endpoints * Unit test fixes * Kubernetes Home Card unit test fixes * Fix unit test error * Move components to remove dependency on large shared module * Fix unit test and add deploy tiles to CF Home Card * Fix word wrap on favorite name * Add tool tip * Style tidy ups * Minor tidy ups * Check favorites exists before navigating to them * Fix test imports * First round of tidy ups of the user favorites code * Further refactor to reduce the complexity of user favorites * Fix unit tests * Allow Kubernetes namespaces to be favorited * Fix duplicate import * Tidy ups * e2e Debugging * Fix for org delete e2e test * E2e Test fix * Refactor out common entity operator * Slight refactor * Fix frontend unit tests * Unit test fix * Address PR feedback so far * Address PR feedback * Fix connected endpoint state check on home screen * Address PR feedback * Restore apps link * Improve typing * Fix undefined error * Fix unit test * Fix ordering issue * Add a default home card * Fix frong end lint issues * Merge fixes * Fix unit tests * WIP * Fixes for pods view * Tidy ups * Add more resource types * Fix lint issue * Fix lint issue * Fix unit test * Fix lint issues * Fix build issue * Fix unit test * Unit test fix * Fix unit tests * More improvements * Numerous improvements * Fix lint issue * RE-arrange kube entity creation - now assign directly to kube entity catalog - to access custom kube generator resources have to do some funnies in kubernetes-tab-base.component.ts * Fix services in namespace view - kube guid and namespace was mixed up - now follow standard pattern of kube guid then namespace in ctor * Fix merge issues * Changes following review * Fix unit tests * Fix merge issue * Fix merge issues * Changes following merge * Changes following merge * Add additional information to new kube resource tables * Fix merge conflicts * Only show analysis link when enabled * Fix issue favoriting from side panel * Fix expression changed error * Fix expression changed errors * Fix a few minor issues and unit test * Remove old namespace components * Remvoe TODO * Fix merge issue * Fix PR issues * Delete fixes - fixes to delete action param - added to delete pods - successEntityHandler doesn't run, so have to manually clear pagination sections * Fix delete ns - ensure delete action has correct guid - ensure response has kube guid * Don't use generic url validation for kube endpoints (#4826) - this was recently added - false negative for minikube url (https://192.168.39.159:8443) * Improvement and fix for no-content component (#4827) * Improvements and fixes for no-content component - add colour to improve monotone views on first load - fix issue where no-content header arrow failed to show in production (see https://github.com/angular/angular-cli/issues/17440) * Fix another opacity percentage - seen in import kube table edit endpoint name cell * Bump github.com/mattn/go-sqlite3 from 1.13.0 to 1.14.5 in /src/jetstream (#4816) Bumps [github.com/mattn/go-sqlite3](https://github.com/mattn/go-sqlite3) from 1.13.0 to 1.14.5. - [Release notes](https://github.com/mattn/go-sqlite3/releases) - [Commits](https://github.com/mattn/go-sqlite3/compare/v1.13.0...v1.14.5) Signed-off-by: dependabot-preview[bot] Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> * Document deployment with an ingress; make ingress host optional (#4793) * Minor Kube Fixes (#4829) * Fix home screen kube card pod link * Ensure reset list filter button also resets helm chart repo filter * Ensure we handle the case where the versions info is unable * Fix link for namespaces Co-authored-by: Neil MacDougall * Fix expanding pod row * Fix show of analysis in namespace resource viewer * Fix fav namespace link Co-authored-by: Neil MacDougall Co-authored-by: Neil MacDougall Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> Co-authored-by: Ivan Kapelyukhin Co-authored-by: Neil MacDougall * Add comment after review Co-authored-by: Neil MacDougall Co-authored-by: Neil MacDougall Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> Co-authored-by: Ivan Kapelyukhin Co-authored-by: Neil MacDougall * Electron update (#4811) * Add supprot for no authentication * Electron WIP * Electron app WIP * Add packaging * Wait for backend to start * Non-functional tidy ups * Move desktop theme into desktop-extentions - see run.sh for some enable/disable shinanigans * Disable auto-log out when there's no auth - need to tidy up how 'no auth' is determined * Add Local flag * Remove jetstream binary * Allow SessionExpiry to be customised * Add SESSION_STORE_EXPIRY customisation * Re-enable loggin service - should now be a no-op for no auth scenario (session never expires) * Logging change * Disable edit of local endpoints - all the infomation is dynamically created * Add local endpoint indication * Allow packages to only supply routing module * Split out profile settings into it's own component * Add back in dark mode * Add desktop settings page accessible via menu * Fix SESSION_STORE_EXPIRY * Add icon * Add correct icon * Add blank login page * Add basic snackbar integration - Send OS notification instead of snackbar (only covers snackbar service, not all snackbar ref uses) - brings in ngx-electron to get easy isElectron test and access to ipcRenderer - ignores 'return' type used to navigate to area of app * Add a 'install' nav item into desktop-extensions - this can be split out into a separate package * Tweaks * Tweak endpoint card * Remove unused loadsh * A fwe tweaks. Better about page * Add file watch * Add auto-update support * Bug fixes for cf * Only listen for endpointsChanged when running with eletron * Mirror CF Disconnect/Unregister in config * Add warning when disconnecting/unregistering local endpoints * Improve look of DMG * Tweak alert badge. Remove copyright icon * Remove info logging that was debug * Tweaks * Persist last location, start from location * Fix path * Minor tweaks * Tweaks * Fix lint issues * Fix compilation issues * Fix backend test compilation * Fix front-end unit tests * Add test coverage file * Fix build issue * Fix merge issue * Fix backend unit tests * Fix setting bug and read version from file * Exclude desktop extension by default * More improvements * Improvements for initial checkout * Tweak to clean checkout experience * Tidy up * Bump version number to 4.4.0 * Fix bug that broke id on user menu button * Fixes following merge * Fix deploy app snack bar * Ensure backend plugin is included * Add kube desktop support * Fix unit tests * Fix backend build issue * A few minor fixes * Fix issue reading version file Co-authored-by: Richard Cox * Bump ini from 1.3.5 to 1.3.7 in /electron (#4837) Bumps [ini](https://github.com/isaacs/ini) from 1.3.5 to 1.3.7. - [Release notes](https://github.com/isaacs/ini/releases) - [Commits](https://github.com/isaacs/ini/compare/v1.3.5...v1.3.7) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Update versions and change log (#4835) * Fix edit profile button visibility (#4839) - broken as part of electron changes - canEdit$ was incorrectly removed * Ensure initial/default plugins.yaml is included in build (#4840) * Ensure we copy plugins.yaml for AIO and Cloud Foundry (#4841) * Fix filter by name in generic kube resource list (#4845) * Helm Chart: Ensure mariadb port value can be set (#4844) * Helm Chart: Ensure mariadb port value can be set - fixes #4843 * Allow for missing mariadb.port Without this we get the opposite error ``` Error: values don't meet the specifications of the schema(s) in the following chart(s): console: - mariadb.port: Invalid type. Expected: integer, given: null ``` have now tested with and without mariadb.port and now in both cases we get the expected `DB_PORT` value in the rendered template * Update changelog with latest fix (#4846) * Remove junk file * Fix git related issues found in release testing (#4850) * Fix helm chart note for ClusterIP * CF Push: Ensure git credentials are not stored in env var - use a specific var for clone url instead of obj that becomes env var - tidy up logic * Fix issue where path was unescaped, causing proxy fetch of gitlab projects containing %2f to 404 * Update clone failed text, repo does not now have to be public * Apply nginx uri substituion fix to nginx.dev.conf as well - think this is only used by docker compose, which isn't supported anymore * Honour endpoint's ssl config when cloning private git repos (#4852) * Fix helm chart note for ClusterIP * CF Push: Ensure git credentials are not stored in env var - use a specific var for clone url instead of obj that becomes env var - tidy up logic * Fix issue where path was unescaped, causing proxy fetch of gitlab projects containing %2f to 404 * Update clone failed text, repo does not now have to be public * Apply nginx uri substituion fix to nginx.dev.conf as well - think this is only used by docker compose, which isn't supported anymore * Honour endpoint's ssl config when cloning private git repos * Bump docs version to 4.4.0 (#4854) * Update doc and scripts for electron app (#4855) * Update doc and scripts * Fixes for epublish on linux - license string from https://spdx.org/licenses/Apache-2.0.html Co-authored-by: Richard Cox * fix: package.json & package-lock.json to reduce vulnerabilities (#4859) The following vulnerabilities are fixed with an upgrade: - https://snyk.io/vuln/SNYK-JS-IMMER-1019369 Co-authored-by: snyk-bot * Bump electron from 11.0.3 to 11.1.0 in /electron (#4864) Bumps [electron](https://github.com/electron/electron) from 11.0.3 to 11.1.0. - [Release notes](https://github.com/electron/electron/releases) - [Changelog](https://github.com/electron/electron/blob/master/docs/breaking-changes.md) - [Commits](https://github.com/electron/electron/compare/v11.0.3...v11.1.0) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Fix for issue where you can't deploy via Helm to a cluster with PSP enabled (#4863) * Fix issue where Stratos can't be deployed into a k8s cluster with PSP enabled * Readme fix * Fix typo in the new value name * Another typo fix * Document psp values for annotations and extra labels * Only set service account name for db if psp is enabled Co-authored-by: Richard Cox Co-authored-by: Richard Cox Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> Co-authored-by: Ivan Kapelyukhin Co-authored-by: Geoffrey J. Teale Co-authored-by: pg2000 Co-authored-by: Benjamin Gandon Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: snyk-bot --- deploy/kubernetes/console/README.md | 4 ++ .../console/templates/analyzers.yaml | 3 + .../console/templates/config-init.yaml | 10 +++ .../console/templates/database.yaml | 61 ++++++++++++++++ deploy/kubernetes/console/templates/psp.yaml | 45 ++++++++++++ .../console/templates/service-account.yaml | 10 +++ deploy/kubernetes/console/values.yaml | 12 ++++ electron/README.md | 72 +++++++++++++++---- electron/build.sh | 15 ++-- electron/package-lock.json | 14 ++-- electron/package.json | 12 ++-- electron/package.sh | 32 ++++++++- package-lock.json | 6 +- package.json | 2 +- website/internal-versions.json | 1 + 15 files changed, 263 insertions(+), 36 deletions(-) create mode 100644 deploy/kubernetes/console/templates/psp.yaml diff --git a/deploy/kubernetes/console/README.md b/deploy/kubernetes/console/README.md index e2ed7fe44e..79d13c8726 100644 --- a/deploy/kubernetes/console/README.md +++ b/deploy/kubernetes/console/README.md @@ -124,6 +124,10 @@ The following table lists the configurable parameters of the Stratos Helm chart |console.nodeSelector|Node selectors to use for the console Pod|| |mariadb.nodeSelector|Node selectors to use for the database Pod|| |configInit.nodeSelector|Node selectors to use for the configuration Pod|| +|console.pspEnabled|Enable Pod Security Policies. Set this to true if you cluster is configured with PSPs enabled|false| +|console.pspName|Name of an existing Pod Security Policy to use instead of the one created by the chart when PSPs are enabled|| +|console.pspAnnotations|Annotations to be added to all pod security policy resources|| +|console.pspExtraLabels|Additional labels to be added to all pod security policy resources|| ## Accessing the Console diff --git a/deploy/kubernetes/console/templates/analyzers.yaml b/deploy/kubernetes/console/templates/analyzers.yaml index 963f0dbc42..2f722d4083 100644 --- a/deploy/kubernetes/console/templates/analyzers.yaml +++ b/deploy/kubernetes/console/templates/analyzers.yaml @@ -63,6 +63,9 @@ spec: imagePullSecrets: - name: {{.Values.dockerRegistrySecret}} {{- end }} + {{- if and (eq (printf "%s" .Values.kube.auth) "rbac") (.Capabilities.APIVersions.Has "rbac.authorization.k8s.io/v1") }} + serviceAccountName: "stratos" + {{- end }} {{- if not .Values.console.reportsVolumeDisabled }} volumes: - name: data diff --git a/deploy/kubernetes/console/templates/config-init.yaml b/deploy/kubernetes/console/templates/config-init.yaml index 6ed17f1e88..3a0f788d7d 100644 --- a/deploy/kubernetes/console/templates/config-init.yaml +++ b/deploy/kubernetes/console/templates/config-init.yaml @@ -26,6 +26,16 @@ metadata: app.kubernetes.io/version: "{{ .Chart.AppVersion }}" helm.sh/chart: "{{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}" rules: +{{- if .Values.console.pspEnabled }} +- apiGroups: + - extensions + resources: + - podsecuritypolicies + verbs: + - use + resourceNames: + - {{ default (printf "%s-psp" .Release.Name) .Values.console.pspName }} +{{- end }} - apiGroups: - "" resources: diff --git a/deploy/kubernetes/console/templates/database.yaml b/deploy/kubernetes/console/templates/database.yaml index 5f64b162a7..c62f5466e1 100644 --- a/deploy/kubernetes/console/templates/database.yaml +++ b/deploy/kubernetes/console/templates/database.yaml @@ -1,5 +1,63 @@ {{- if not .Values.mariadb.external }} --- +# Service account "stratos-db" for the database, if needed +{{- if and (eq (printf "%s" .Values.kube.auth) "rbac") (.Capabilities.APIVersions.Has "rbac.authorization.k8s.io/v1") (.Values.console.pspEnabled) }} +apiVersion: "v1" +kind: "ServiceAccount" +metadata: + name: "stratos-db" + labels: + app.kubernetes.io/component: "stratos-db" + app.kubernetes.io/instance: "{{ .Release.Name }}" + app.kubernetes.io/name: "stratos" + app.kubernetes.io/version: "{{ .Chart.AppVersion }}" + helm.sh/chart: "{{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}" +{{- end }} +--- +# Role "stratos-db-role" only used by account "[- stratos-db]" +{{- if and (eq (printf "%s" .Values.kube.auth) "rbac") (.Capabilities.APIVersions.Has "rbac.authorization.k8s.io/v1") (.Values.console.pspEnabled) }} +apiVersion: "rbac.authorization.k8s.io/v1" +kind: "Role" +metadata: + name: "stratos-db-role" + labels: + app.kubernetes.io/component: "stratos-db-role" + app.kubernetes.io/instance: "{{ .Release.Name }}" + app.kubernetes.io/name: "stratos" + app.kubernetes.io/version: "{{ .Chart.AppVersion }}" + helm.sh/chart: "{{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}" +rules: +- apiGroups: + - extensions + resources: + - podsecuritypolicies + verbs: + - use + resourceNames: + - {{ default (printf "%s-psp" .Release.Name) .Values.console.pspName }} +{{- end }} +--- +# Role binding for service account "stratos-db" and role "stratos-db-role" +{{- if and (eq (printf "%s" .Values.kube.auth) "rbac") (.Capabilities.APIVersions.Has "rbac.authorization.k8s.io/v1") (.Values.console.pspEnabled) }} +apiVersion: "rbac.authorization.k8s.io/v1" +kind: "RoleBinding" +metadata: + name: "stratos-db-role-binding" + labels: + app.kubernetes.io/component: "stratos-db-role-binding" + app.kubernetes.io/instance: "{{ .Release.Name }}" + app.kubernetes.io/name: "stratos" + app.kubernetes.io/version: "{{ .Chart.AppVersion }}" + helm.sh/chart: "{{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}" +subjects: +- kind: "ServiceAccount" + name: "stratos-db" +roleRef: + apiGroup: "rbac.authorization.k8s.io" + kind: "Role" + name: "stratos-db-role" +{{- end }} +--- {{- if semverCompare ">=1.16" (printf "%s.%s" .Capabilities.KubeVersion.Major (trimSuffix "+" .Capabilities.KubeVersion.Minor) )}} apiVersion: apps/v1 {{- else }} @@ -107,6 +165,9 @@ spec: imagePullSecrets: - name: {{.Values.dockerRegistrySecret}} {{- end }} + {{- if and (eq (printf "%s" .Values.kube.auth) "rbac") (.Capabilities.APIVersions.Has "rbac.authorization.k8s.io/v1") (.Values.console.pspEnabled) }} + serviceAccountName: "stratos-db" + {{- end }} volumes: - name: data {{- if .Values.mariadb.persistence.enabled }} diff --git a/deploy/kubernetes/console/templates/psp.yaml b/deploy/kubernetes/console/templates/psp.yaml new file mode 100644 index 0000000000..2910521ba0 --- /dev/null +++ b/deploy/kubernetes/console/templates/psp.yaml @@ -0,0 +1,45 @@ +{{- if and .Values.console.pspEnabled (not .Values.console.pspName) }} +apiVersion: policy/v1beta1 +kind: PodSecurityPolicy +metadata: + name: {{ .Release.Name }}-psp +{{- if .Values.console.pspAnnotations }} + annotations: +{{ toYaml .Values.console.pspAnnotations | indent 4 }} +{{- end }} + labels: + app.kubernetes.io/name: "stratos" + app.kubernetes.io/instance: "{{ .Release.Name }}" + app.kubernetes.io/version: "{{ .Chart.AppVersion }}" + app.kubernetes.io/component: "console-psp" + helm.sh/chart: "{{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}" +{{- if .Values.console.pspExtraLabels }} +{{ toYaml .Values.console.pspExtraLabels | indent 4 }} +{{- end }} +spec: + privileged: false + allowPrivilegeEscalation: false + allowedCapabilities: + - '*' + volumes: + - 'configMap' + - 'downwardAPI' + - 'emptyDir' + - 'persistentVolumeClaim' + - 'secret' + - 'projected' + hostNetwork: false + hostPID: false + hostIPC: false + runAsUser: + rule: 'RunAsAny' + runAsGroup: + rule: 'RunAsAny' + seLinux: + rule: 'RunAsAny' + supplementalGroups: + rule: 'RunAsAny' + fsGroup: + rule: 'RunAsAny' + readOnlyRootFilesystem: false +{{- end }} \ No newline at end of file diff --git a/deploy/kubernetes/console/templates/service-account.yaml b/deploy/kubernetes/console/templates/service-account.yaml index d8ef0e07d7..bdf6565de2 100644 --- a/deploy/kubernetes/console/templates/service-account.yaml +++ b/deploy/kubernetes/console/templates/service-account.yaml @@ -25,6 +25,16 @@ metadata: app.kubernetes.io/version: "{{ .Chart.AppVersion }}" helm.sh/chart: "{{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}" rules: +{{- if .Values.console.pspEnabled }} +- apiGroups: + - extensions + resources: + - podsecuritypolicies + verbs: + - use + resourceNames: + - {{ default (printf "%s-psp" .Release.Name) .Values.console.pspName }} +{{- end }} - apiGroups: - "" resources: diff --git a/deploy/kubernetes/console/values.yaml b/deploy/kubernetes/console/values.yaml index 3a9f647bff..5c7b537ede 100644 --- a/deploy/kubernetes/console/values.yaml +++ b/deploy/kubernetes/console/values.yaml @@ -110,6 +110,18 @@ console: # Extra labels to apply to Pods podExtraLabels: {} + # Whether PodSecurityPolicy is enabled + pspEnabled: false + + # Optional name of a PodSecurityPolicy to use - if not specified, a default will be created + pspName: + + # Custom annotations to apply to Pod Security Policies + pspAnnotations: {} + + # Extra labels to apply to Pod Security Policies + pspExtraLabels: {} + # Node Selector for console Pod nodeSelector: {} diff --git a/electron/README.md b/electron/README.md index 276bf542f9..260f1ef74b 100644 --- a/electron/README.md +++ b/electron/README.md @@ -1,27 +1,71 @@ # Stratos Desktop -From the top-level Stratos folder: +Stratos Desktop packages Stratos into a Desktop application using the Electron framework. -- Install dependencies with `npm install` -- Change to the `electron folder` with `cd electron` -- Install dependencies for the electron UI with `npm install` -- Run the Electron app with `./run.sh all` +## Quick Start -> Note this builds both the frontend and backend and run the app +From the top-level folder, run: -- To build only the front end before running, use `./run.sh fe` -- To build only the back end before running, use `./run.sh be` -- To run without building either the the back end or front end, use `./run.sh` +``` +cd electron +./package.sh +``` +This will: -You can also run the UI with `ng serve` from the top-level folder and then start electron with: +- Install the npm dependencies for Stratos and the Electron App if needed +- Build the Stratos frontend and backend if needed +- Package the Stratos frontend and backend together with the Electron app + +On a fresh checkout, this will take some time to run - at the end you'll see some log messages indicating where the packaged outputs have been written. + +For Mac OS, you'll get `.app` and `.dmg` files created. The `.app` file can be opened from a terminal with the `open` command. + +> Note, the Stratos back-end is written in go and currently we only build for the current architecture that you are running on - it should be possible with some extra scripts to build +the desktop application for Mac, Windows and Linux in one-go. + +For more information on other scripts you can run for different build/dev scenarios, so below. + +## Overview + +This section provides a short overview on what goes on when Stratos runs as a desktop application. + +Stratos consists of a go backend and an Angular front-end. The Angular frontend is compiled into a set of static files. The go back-end serves up the static files in addition to providing the backend API for Stratos. The frontend resources reside in the `dist` folder. + +For the desktop build, we build the Stratos backend including an extra plugin `desktop` (in `src/jetstream/plugins/desktop`). This adds support for endpoints from local configuration. The frontend is also build including the additional `desktop-extensions` extension (in `src/frontend/packages/desltop-extensions`). This extension also includes a slightly modified theme and some small UI tweaks for the desktop use-case. + +The Electron wrapper is in the `electron` folder - the main file being the `index.js` file. Some of the things this does: + +- Finds a free port and runs the go backend, listening on that port +- Creates a window and loads the UI from the backend +- Sets up file watchers on the local config files that are read for local endpoint information and sends a notification to the Stratos app when these are changed, so that it can update the endpoints + +## Scripts + +From the `electron` folder: + + +To run the Desktop application: + +- `./run.sh all` - This will build both the backend and frontend and then run the app +- `./run.sh fe` - This will build frontend and then run the app +- `./run.sh be` - This will build the backend and then run the app + +> Note: You can also use `all` and `fe` and `be` with the `build.sh` script - when run without any arg, the build script will only build the frontend and backend if they have not previously been built + + +## Frontend Development + +You can run the frontend in development mode, from the top-level folder with `ng serve` just as you would normally. + +You can then run the desktop application using: `./run.sh dev` -to load the UI from `https://127.0.0.1:4200` +This will start the backend and launch the Electron application - but it will load the UI from `https://127.0.0.1:4200` rather than from the built version that the backend serves. -# Packaging +This allows you to make changes to the frontend code and have the application refresh within the webview, just as it would for regular development. -Packaging as a DMG file for Mac: +## Packaging -`./package.sh all` \ No newline at end of file +Electron Forge is used for packaging. \ No newline at end of file diff --git a/electron/build.sh b/electron/build.sh index c27e9b007c..83ead891f9 100755 --- a/electron/build.sh +++ b/electron/build.sh @@ -1,5 +1,12 @@ #!/usr/bin/env bash +# Colours +CYAN="\033[96m" +YELLOW="\033[93m" +RED="\033[91m" +RESET="\033[0m" +BOLD="\033[1m" + # Script folder DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null && pwd )" STRATOS="`cd "${DIR}/..";pwd`" @@ -27,7 +34,7 @@ fi pushd ${DIR} > /dev/null # Checks for fresh run on checkout if [ ! -d "./node_modules" ]; then - echo "Installing node modules ..." + echo -e "${CYAN}${BOLD}Installing node modules for Electron${RESET}" npm install fi popd > /dev/null @@ -37,18 +44,18 @@ pushd ${STRATOS} > /dev/null cat ./package.json | jq -r .version > ${DIR}/version if [ ! -d "./node_modules" ]; then - echo "Installing node modules in top-level folder ..." + echo -e "${CYAN}${BOLD}Installing node modules for front-end ...${RESET}" npm install fi if [ "$1" != "be" ] && [ ! -d "./dist" ]; then BUILD_FRONTEND=true - echo "Frontend has not been built - will build" + echo -e "${CYAN}${BOLD}Frontend has not been built - will build${RESET}" fi if [ ! -f "./src/jetstream/jetstream" ]; then BUILD_BACKEND=true - echo "Backend has not been built - will build" + echo -e "${CYAN}${BOLD}Backend has not been built - will build${RESET}" fi if [ "$BUILD_FRONTEND" == "true" ]; then diff --git a/electron/package-lock.json b/electron/package-lock.json index 3172b2375e..0473c37d54 100644 --- a/electron/package-lock.json +++ b/electron/package-lock.json @@ -1,6 +1,6 @@ { "name": "Stratos", - "version": "4.0.0", + "version": "4.4.1", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -1479,9 +1479,9 @@ } }, "electron": { - "version": "11.0.3", - "resolved": "https://registry.npmjs.org/electron/-/electron-11.0.3.tgz", - "integrity": "sha512-nNfbLi7Q1xfJXOEO2adck5TS6asY4Jxc332E4Te8XfQ9hcaC3GiCdeEqk9FndNCwxhJA5Lr9jfSGRTwWebFa/w==", + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/electron/-/electron-11.1.0.tgz", + "integrity": "sha512-RFAhR/852VMaRd9NSe7jprwSoG9dLc6u1GwnqRWg+/3cy/8Zrwt1Betw1lXiZH7hGuB9K2cqju83Xv5Pq5ZSGA==", "dev": true, "requires": { "@electron/get": "^1.0.1", @@ -1490,9 +1490,9 @@ }, "dependencies": { "@types/node": { - "version": "12.19.8", - "resolved": "https://registry.npmjs.org/@types/node/-/node-12.19.8.tgz", - "integrity": "sha512-D4k2kNi0URNBxIRCb1khTnkWNHv8KSL1owPmS/K5e5t8B2GzMReY7AsJIY1BnP5KdlgC4rj9jk2IkDMasIE7xg==", + "version": "12.19.15", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.19.15.tgz", + "integrity": "sha512-lowukE3GUI+VSYSu6VcBXl14d61Rp5hA1D+61r16qnwC0lYNSqdxcvRh0pswejorHfS+HgwBasM8jLXz0/aOsw==", "dev": true }, "extract-zip": { diff --git a/electron/package.json b/electron/package.json index 55bc0bf085..06c46adacb 100644 --- a/electron/package.json +++ b/electron/package.json @@ -1,7 +1,9 @@ { "name": "Stratos", - "version": "4.0.0", + "version": "4.4.1", "main": "index.js", + "description": "Stratos Electron", + "license" : "Apache-2.0", "scripts": { "ng": "ng", "start": "electron-forge start", @@ -31,7 +33,7 @@ "@electron-forge/maker-squirrel": "^6.0.0-beta.52", "@electron-forge/maker-zip": "^6.0.0-beta.52", "@electron-forge/publisher-github": "^6.0.0-beta.52", - "electron": "^11.0.3" + "electron": "^11.1.0" }, "config": { "forge": { @@ -48,9 +50,7 @@ }, { "name": "@electron-forge/maker-zip", - "platforms": [ - "darwin" - ] + "platforms": [] }, { "name": "@electron-forge/maker-deb", @@ -68,7 +68,7 @@ } } ], - "publishers": [ + "_publishers": [ { "name": "@electron-forge/publisher-github", "config": { diff --git a/electron/package.sh b/electron/package.sh index 54daf1d880..fd0298b2b2 100755 --- a/electron/package.sh +++ b/electron/package.sh @@ -1,5 +1,19 @@ #!/usr/bin/env bash +# Colours +CYAN="\033[96m" +YELLOW="\033[93m" +RED="\033[91m" +RESET="\033[0m" +BOLD="\033[1m" +NORMAL="\033[21m" + +echo -e "${CYAN}${BOLD}=========================\nPackaging Stratos Desktop\n=========================\n${RESET}" + +echo -e "${YELLOW}Note: This will only package for your current architecture and OS${RESET}" + +OS="$(uname -s)" + # Script folder DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null && pwd )" STRATOS="`cd "${DIR}/..";pwd`" @@ -8,11 +22,27 @@ source "${DIR}/build.sh" pushd ${DIR} > /dev/null rm -rf dist/*es5* +VERSION=$(cat ./package.json | jq -r .version) popd > /dev/null -npm run package +#npm run package +npm run epublish # Mac - move the app to the Applications folder if [ "$1" == "-i" ]; then mv ./out/Stratos-darwin-x64/Stratos.app /Applications +fi + +if [ "${OS}" == "Darwin" ]; then + DMG="Stratos-${VERSION}.dmg" + if [ -d "${DIR}/out/Stratos-darwin-x64" ]; then + echo -e "${YELLOW}${BOLD}Mac App${NORMAL} is in ${BOLD}${DIR}/out/Stratos-darwin-x64/Stratos.app${RESET}" + echo -e "${CYAN}You can run the app with:" + echo -e "${YELLOW}open ${DIR}/out/Stratos-darwin-x64/Stratos.app${RESET}" + echo "" + fi + + if [ -f "${DIR}/out/make/${DMG}" ]; then + echo -e "${YELLOW}${BOLD}Mac DMG${NORMAL} is in: ${BOLD}${DIR}/out/make/${DMG}${RESET}" + fi fi \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 1578216fce..68189fc08a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10578,9 +10578,9 @@ "dev": true }, "immer": { - "version": "6.0.9", - "resolved": "https://registry.npmjs.org/immer/-/immer-6.0.9.tgz", - "integrity": "sha512-SyCYnAuiRf67Lvk0VkwFvwtDoEiCMjeamnHvRfnVDyc7re1/rQrNxuL+jJ7lA3WvdC4uznrvbmm+clJ9+XXatg==" + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/immer/-/immer-8.0.1.tgz", + "integrity": "sha512-aqXhGP7//Gui2+UrEtvxZxSquQVXTpZ7KDxfCcKAF3Vysvw0CViVaW9RZ1j1xlIYqaaaipBoqdqeibkc18PNvA==" }, "import-cwd": { "version": "2.1.0", diff --git a/package.json b/package.json index ee4f176af5..9c46afd22f 100644 --- a/package.json +++ b/package.json @@ -75,7 +75,7 @@ "@types/moment-timezone": "^0.5.13", "angular2-virtual-scroll": "^0.4.16", "core-js": "^3.6.5", - "immer": "^6.0.3", + "immer": "^8.0.1", "intersect": "^1.0.1", "lodash-es": "^4.17.14", "mappy-breakpoints": "^0.2.3", diff --git a/website/internal-versions.json b/website/internal-versions.json index 386ffae736..3c374eb08d 100644 --- a/website/internal-versions.json +++ b/website/internal-versions.json @@ -1,4 +1,5 @@ [ + "4.4.0:4.4.0:true", "4.3.0:4.3.0:true", "4.2.1:f912fb9ac3:false", "4.2.0:f912fb9ac3:true",