Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ENDOC-755-hub #813

Merged
merged 1 commit into from
Jan 30, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions vuepress/docs/.vuepress/next.js
Original file line number Diff line number Diff line change
Expand Up @@ -109,6 +109,10 @@ module.exports = {
{
title: 'Troubleshooting ECR',
path: path + 'curate/troubleshooting-guide.md'
},
{
title: 'Entando Hub Features and Definitions',
path: path + 'curate/hub-details.md'
}
]
},
Expand Down
92 changes: 92 additions & 0 deletions vuepress/docs/next/docs/curate/hub-details.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,92 @@
---
sidebarDepth: 2
---

# Entando Hub Features and Definitions
## Overview
The Entando Hub is the central catalog where components are published, organized and shared. The reusable components called Bundle Groups come with versioning and publishing management capabilites in the Hub UI. The following describes the details of how this process is defined and accomplished.

Entando Hub Features:

- Centralize components and business capabilities for use across teams, groups, or clients
- Publish and manage components, and communicate component features, versions and metadata
- Perform business-level assessment of component readiness

The Hub can be utilized in several ways in any Entando Application:
* The **Local Hub**, included in the Entando App Builder, displays a collection of ready-to-use components. They can be used to compose an application or as a starting point to create new components.

* **Entando Cloud Hub** is the public catalog containing packaged business capabilities and components provided by Entando and its partners throughout the world.

* **Enterprise Entando Hub**, applied and curated by Entando clients and partners, it can be used to share components within their respective organizations or made available for public use.

[Installation and User Guide](../../tutorials/solution/entando-hub.md)

## Bundle Group Definitions
The key entities in an enterprise Hub are:

- `Bundle Group`: A Bundle Group is a Hub entry, a single unit containing one or more Entando Bundles.
- `Bundle`: An Entando Bundle is the deployment unit within an Entando Application. A bundle can contain one or more components such as micro frontends, microservices, or any of the [component types](../../docs/curate/bundle-component-details.md) allowed in Entando.
- `Bundle Group Version`: A Bundle Group can have one or more versions, each with a particular status.
- `Category`: Each Bundle Group belongs to a specific category. The default categories are solution template, packaged business capability (PBC), and component collection. An admin of an enterprise Hub can create and refine the categories as desired.
- `Organization`: Bundle Groups belong to a single organization. Authors and managers can only update entries within their own organization. A single instance of the Hub can have multiple organizations.
- `User`: User identity is managed within Keycloak, where users are granted roles within a Hub instance. Users must be created in Keycloak, then added in the Hub and assigned to a specific organization.


> A private repository can be used for a bundle, but this requires [an additional Kubernetes Secret](../../tutorials/curate/private-git-repo.md) before deployment via the App Builder.

## Roles

Three roles are defined to provide access to the enterprise Hub features:

- `eh-author`: An author can create and edit Bundle Groups for their organization and submit them for publication. They can generate an API key.
- `eh-manager`: A manager has the capabilities of an author, but can also approve a publication request for their organization.
- `eh-admin`: An admin has full access to create, update, and delete Bundle Groups and manage users for the entire Hub instance. An admin can also create categories, organizations and private catalogs, assign users to organizations, and generate API keys.
- `guest`: Any user without one of the preceding roles is considered a guest in the enterprise Hub and is given a read-only view of the public catalog. This is also true for unauthenticated users.
To assign roles to a new Hub user, see the [Entando Hub Installation and User Guide](../../tutorials/solution/entando-hub.md#user-management)

## Bundle Group Versions
The list of Bundle Group versions can be seen by clicking `View Versions` for any entry in the catalog:

![hub-actions.png](./img/hub-actions.png)

The following rules apply to Bundle Group versions:
- Once the first version of a group is published, the organization, name, and category can no longer be changed.
- A new version of a Bundle Group can be created (via the `New Version` option) after the first version has been published.
- There can be at most two active versions: one draft or publication requested version, and one published version.
- When a new version is published, the previous version is set to `Archived`.
- Archived versions are only visible in the versions view and are not shown elsewhere in the user interface.

![hub-versions.png](./img/hub-versions.png)

## Bundle Group Status

The possible statuses for each version of a Bundle Group are as follows:

- `Draft`: This is the default status for the first version of a Bundle Group.
- `Publication Request`: An `eh-author` sets a version to this status to request the `eh-manager` or `eh-admin` to review the version and approve it for publication. The manager or admin may also edit versions with this status.
- `Published`: Versions with this status are visible in the home page catalog of available Bundle Groups, and are also available in the App Builder-facing API. An `eh-manager` or `eh-admin` may edit published versions.
- `Archived`: Previously published versions are assigned this status. No edits can be made to an archived version.
- `Deletion Request`: An `eh-manager` or `eh-admin` can delete versions once this status has been set.

Notes:
- An `eh-author` can change any field except organization while a version is in `Draft` status.
- There is no automated notification process when a publication request is made for a Bundle Group version.

## Application Details

An Entando Hub includes the following key components:

#### Micro Frontends / Widgets
- `Entando Hub App`: This is the main micro frontend which contains the management UI for the Hub entities noted above.
- `Entando Hub Login`: This is an optional login component which can be used in a page’s top navigation.

#### Microservices
A single Spring Boot microservice provides two REST endpoints:
- The first is a backend-for-a-frontend (BFF) service for the Hub UI and contains various entity APIs.
- The second provides methods that support the Entando App Builder integration (7.0+).

#### Content
The content bundle (`entando-hub`) includes a custom template and a page preconfigured with the main Hub micro frontends.

## Next Steps
Install an [enterprise Entando Hub](../../tutorials/solution/entando-hub.md).
5 changes: 4 additions & 1 deletion vuepress/docs/next/docs/getting-started/landing-page.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ The following Solution Templates and other sets of components are available in t

## Entando Customer Portal

The [Entando Customer Portal](../../tutorials/solution/customer-portal.md) streamlines development of a customer-facing, self-service subscription management application. The platform integrates Keycloak role based access control and Jira Service Management as a ticket tracking system.
The [Entando Customer Portal](../../tutorials/solution/customer-portal.md) streamlines development of a customer-facing, self-service subscription management application. The Platform integrates Keycloak role based access control and Jira Service Management as a ticket tracking system.

<img src="./landing-images/customer-portal.png" width="533">

Expand All @@ -27,6 +27,9 @@ The [Entando Hub](../../tutorials/solution/entando-hub.md) empowers a team to sh

<img src="./landing-images/hub-v1.png" width="533">

[Entando Hub Details](../../docs/curate/hub-details.md)
[Entando Hub Installation and User Guide](../../tutorials/solution/entando-hub.md)

## Entando Process Driven Applications Plugin

The [Entando Process Driven Applications Plugin](../../tutorials/solution/pda-tutorial.md) provides a comprehensive and versatile automation scheme for Business Process Management. It comprises a custom UX layer, a Spring Boot Backend for Frontend microservice interface, and integration with the [Red Hat Process Automation Manager](https://www.redhat.com/en/technologies/jboss-middleware/process-automation-manager).
Expand Down
2 changes: 1 addition & 1 deletion vuepress/docs/next/tutorials/consume/external-db-ms.md
Original file line number Diff line number Diff line change
Expand Up @@ -189,4 +189,4 @@ For more details, see [Managing Secrets Using Configuration Files](https://kuber
kubectl apply -f pn-hasldk12-8dsjahj2-YOUR-MS-NAME-conf -n YOUR-NAMESPACE
```

6. Add the bundle to an [enterprise Entando Hub](../solution/entando-hub.md) to share and access from any tenant. You will have to [add the registry](../solution/entando-hub.md#add-a-catalog-as-a-registry-in-your-app-builder) to the Local Hub of the tenant to install the bundle.
6. Add the bundle to an [enterprise Entando Hub](../solution/entando-hub.md) to share and access from any tenant. You will have to [add the registry](../solution/entando-hub.md#add-a-catalog-registry) to the Local Hub of the tenant to install the bundle.
4 changes: 2 additions & 2 deletions vuepress/docs/next/tutorials/consume/multitenancy.md
Original file line number Diff line number Diff line change
Expand Up @@ -171,7 +171,7 @@ kubectl scale deploy/YOUR-APP-NAME-deployment --replicas=1 -n YOUR-NAMESPACE
4. Confirm that the secondary tenant is working correctly. This may include testing the EntandoApp itself (including digital assets delivered via CDS), the AppBuilder, and enterprise search for Solr. The tutorials for each service include verification steps that can be followed once the tenant configuration is fully in place.

## Bundles
Once tenants are in order, [Entando Bundles](../../docs/curate/bundle-details.md) can be deployed independently to each tenant from registries added in the App Builder. Bundles can be centralized in an [enterprise Entando Hub](../solution/entando-hub.md) where all tenants can access them by [adding the registry](../solution/entando-hub.md#add-a-catalog-as-a-registry-in-your-app-builder) in the Local Hub of the App Builder.
Once tenants are in order, [Entando Bundles](../../docs/curate/bundle-details.md) can be deployed independently to each tenant from registries added in the App Builder. Bundles can be centralized in an [enterprise Entando Hub](../solution/entando-hub.md) where all tenants can access them by [adding the registry](../solution/entando-hub.md#add-a-catalog-registry) in the Local Hub of the App Builder.

When bundles are installed to any tenant, the Component Manager injects an `ENTANDO_TENANT_CODE`, an environment variable related to the tenant domain name, into every microservice, identifying which tenant it belongs to.

Expand All @@ -180,7 +180,7 @@ To create or adapt bundles for multitenant applications, environment variables c
* [Create and Publish a Bundle project](../create/pb/publish-simple-bundle.md)
* [Learn about Entando Bundles](../../docs/curate/bundle-details.md)
* [Add an enterprise Entando Hub](../solution/entando-hub.md)
* [Add a Registry to you Local Hub](../solution/entando-hub.md#add-a-catalog-as-a-registry-in-your-app-builder)
* [Add a Registry to you Local Hub](../solution/entando-hub.md#add-a-catalog-registry)
* [Configure External DBMS for Microservices](./external-db-ms.md)

## Appendix
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ sidebarDepth: 2

## Overview

This tutorial describes how to use the Entando Component Generator (ECG) to create microservices and micro frontends for deployment to the [Local Hub](../../../docs/compose/local-hub-overview.md) of an Entando Application or a shared [Entando Hub](../../../docs/getting-started/landing-page.md#entando-hub). The ECG is powered by [JHipster](https://www.jhipster.tech/) and leverages the Entando Blueprint.
This tutorial describes how to use the Entando Component Generator (ECG) to create microservices and micro frontends for deployment to the [Local Hub](../../../docs/compose/local-hub-overview.md) of an Entando Application or a shared [Entando Hub](../../../tutorials/solution/entando-hub.md). The ECG is powered by [JHipster](https://www.jhipster.tech/) and leverages the Entando Blueprint.

The output of this tutorial is [a new bundle project](../../../docs/curate/bundle-details.md#bundle-development-process) with several components:
- A Spring Boot microservice with CRUD operations for a single database entity
Expand Down
Loading
Loading