diff --git a/.github/workflows/main.yaml b/.github/workflows/main.yaml index 1725557f..280b5a1d 100644 --- a/.github/workflows/main.yaml +++ b/.github/workflows/main.yaml @@ -1,10 +1,10 @@ name: Go package on: + # These will only run from a known contributor push: branches: - main - pull_request_target: jobs: pr_check: @@ -61,9 +61,9 @@ jobs: with: go-version: '1.18' - - name: 'Create env file' + - name: 'Create env test file' run: | - echo "${{ secrets.ENV_FILE }}" > .env + cat ./env.actions > .env - name: Test run: make test diff --git a/Dockerfile b/Dockerfile index 64e22e83..d6736a7f 100644 --- a/Dockerfile +++ b/Dockerfile @@ -5,6 +5,7 @@ ENV GO111MODULE=on USER root RUN go get -d -v RUN make validate-schema +RUN make publish-search-index-dry-run RUN CGO_ENABLED=1 go build -o /go/bin/chrome-service-backend # Build the migration binary. diff --git a/Makefile b/Makefile index 6ca15bd5..bf352167 100644 --- a/Makefile +++ b/Makefile @@ -39,6 +39,11 @@ validate-schema: publish-search-index: go run cmd/search/* +publish-search-index-dry-run: export SEARCH_INDEX_DRY_RUN = true + +publish-search-index-dry-run: + go run cmd/search/* + kafka: podman-compose -f local/kafka-compose.yaml up diff --git a/cmd/kafka/testMessage.go b/cmd/kafka/testMessage.go index c1a7b58e..e7dda829 100644 --- a/cmd/kafka/testMessage.go +++ b/cmd/kafka/testMessage.go @@ -20,7 +20,6 @@ func main() { Topic: cfg.KafkaConfig.KafkaTopics[0], Balancer: &kafka.LeastBytes{}, }) - defer kafkaWriter.Close() body := `{ @@ -45,6 +44,9 @@ func main() { Value: []byte(body), } + fmt.Println("Targeting Topic: ", kafkaWriter.Topic) + fmt.Println("Sending message", body) + err := kafkaWriter.WriteMessages(context.TODO(), msg) if err != nil { log.Fatalf("Could not write message due to error : %v", err) diff --git a/cmd/search/publishSearchIndex.go b/cmd/search/publishSearchIndex.go index 4bafafe4..6198f289 100644 --- a/cmd/search/publishSearchIndex.go +++ b/cmd/search/publishSearchIndex.go @@ -9,6 +9,7 @@ import ( "net/url" "os" "path/filepath" + "strconv" "strings" "github.com/joho/godotenv" @@ -96,21 +97,44 @@ func convertAltTitles(jsonEntry interface{}) []string { return altTitles } -func flattenLinks(data interface{}) ([]LinkEntry, error) { +func parseLinkEntry(item map[string]interface{}) (LinkEntry, bool) { + id, idOk := item["id"].(string) + if !idOk || len(id) == 0 { + return LinkEntry{}, false + } + + title, titleOk := item["title"].(string) + if !titleOk || len(title) == 0 { + return LinkEntry{}, false + } + + href, hrefOk := item["href"].(string) + if !hrefOk || len(href) == 0 { + return LinkEntry{}, false + } + + return LinkEntry{ + Id: id, + Title: title, + Href: href, + }, true +} + +func flattenLinks(data interface{}, locator string) ([]LinkEntry, error) { flatData := []LinkEntry{} topLevel, ok := data.(map[string]interface{}) // this is top section or a group item of nav file if ok && topLevel["navItems"] != nil { - data, err := flattenLinks(topLevel["navItems"]) + data, err := flattenLinks(topLevel["navItems"], fmt.Sprintf("%s.%s", locator, "navItems")) return append(flatData, data...), err } // argument came in as an array isArray, ok := data.([]interface{}) if ok { - for _, item := range isArray { - items, err := flattenLinks(item) + for i, item := range isArray { + items, err := flattenLinks(item, fmt.Sprintf("%s[%d]", locator, i)) if err != nil { return []LinkEntry{}, err } @@ -146,10 +170,10 @@ func flattenLinks(data interface{}) ([]LinkEntry, error) { _, nestedRoutesOk := i["routes"].([]interface{}) if ok && idOk { // all of these are required and type assertion can't fail - link := LinkEntry{ - Id: id, - Title: i["title"].(string), - Href: i["href"].(string), + link, linkOk := parseLinkEntry(i) + if !linkOk { + err := fmt.Errorf("[ERROR] parsing link for href entry at %s", locator) + return []LinkEntry{}, err } // Alternative titles are optional @@ -164,13 +188,13 @@ func flattenLinks(data interface{}) ([]LinkEntry, error) { } flatData = append(flatData, link) } else if nestedRoutesOk { - nestedItems, err := flattenLinks(r) + nestedItems, err := flattenLinks(r, fmt.Sprintf("%s.%s", locator, "routes")) if err != nil { return []LinkEntry{}, err } flatData = append(flatData, nestedItems...) } else { - fmt.Printf("[WARN] Unable to convert link id %v to string. %v\n", id, i) + fmt.Printf("[WARN] Unable to convert link id %v to string. %v in file %s\n", id, i, locator) } } return flatData, nil @@ -181,10 +205,10 @@ func flattenLinks(data interface{}) ([]LinkEntry, error) { if ok { href, ok := item["href"].(string) if ok && len(href) > 0 { - link := LinkEntry{ - Id: item["id"].(string), - Title: item["title"].(string), - Href: item["href"].(string), + link, linkOk := parseLinkEntry(item) + if !linkOk { + err := fmt.Errorf("[ERROR] parsing link for href entry at %s", locator) + return []LinkEntry{}, err } // Alternative titles are optional @@ -379,7 +403,7 @@ func constructIndex(env SearchEnv) ([]ModuleIndexEntry, error) { return []ModuleIndexEntry{}, err } - flatData, err := flattenLinks(navItemData) + flatData, err := flattenLinks(navItemData, file) if err != nil { return []ModuleIndexEntry{}, err } @@ -515,7 +539,6 @@ func deployIndex(env SearchEnv, envSecret string, ssoHost string, hydraHost stri if err != nil { return err } - index, err := constructIndex(env) if err != nil { return err @@ -537,6 +560,7 @@ func main() { Prod: os.Getenv("SEARCH_CLIENT_SECRET_PROD"), Stage: os.Getenv("SEARCH_CLIENT_SECRET_STAGE"), } + ssoHosts := EnvMap{ Prod: "https://sso.redhat.com", Stage: "https://sso.stage.redhat.com", @@ -547,14 +571,31 @@ func main() { Stage: "https://access.stage.redhat.com", } + dryRun, _ := strconv.ParseBool(os.Getenv("SEARCH_INDEX_DRY_RUN")) + + errors := []error{} for _, env := range []SearchEnv{Stage, Prod} { - fmt.Println("Attempt to publish search index for ", env, " environment.") - err := deployIndex(env, secrets[env], ssoHosts[env], hydraHost[env]) + var err error + if dryRun { + fmt.Println("Attempt dry run search index for", env, "environment.") + _, err = constructIndex(env) + } else { + fmt.Println("Attempt to publish search index for", env, "environment.") + err = deployIndex(env, secrets[env], ssoHosts[env], hydraHost[env]) + } if err != nil { - fmt.Println("Failed to deploy search index for ", env, "environment.") + fmt.Println("[ERROR] Failed to deploy search index for", env, "environment.") fmt.Println(err) + errors = append(errors, err) } } - fmt.Println("Search index published successfully") + if len(errors) == 0 { + fmt.Println("Search index published successfully") + } else { + fmt.Println("Search index publishing failed. See above errors.") + if dryRun { + os.Exit(1) + } + } } diff --git a/cmd/search/static-services-entries.json b/cmd/search/static-services-entries.json index 923f5db8..433c232b 100644 --- a/cmd/search/static-services-entries.json +++ b/cmd/search/static-services-entries.json @@ -1,4 +1,70 @@ [ + { + "id": "openshift-advisor", + "links": [ + { + "custom": true, + "id": "OPENSHIFT.insights.Advisor.recommendations", + "href": "/openshift/insights/advisor/recommendations", + "title": "Red Hat OpenShift Cluster Manager Recommendations", + "description": "See targeted recommendations to optimize your OpenShift clusters’ availability, performance, and security.", + "alt_title": [ + "Insights Advisor", + "OpenShift Advisor", + "Advisor", + "Recommendations", + "Proactive support", + "Proactive support", + "risk", + "support", + "update", + "update risk", + "update", + "issues", + "remediation", + "cluster state", + "recommendation", + "cluster health", + "remote health", + "proactive", + "support", + "fix", + "problem", + "issue" + ] + }, + { + "custom": true, + "id": "OPENSHIFT.insights.Advisor.advisor-clusters", + "href": "/openshift/insights/advisor/clusters", + "title": "Red Hat OpenShift Cluster Manager Advisor", + "alt_title": [ + "Insights Advisor", + "OpenShift Advisor", + "Advisor", + "Recommendations", + "Proactive support", + "Proactive support", + "risk", + "support", + "update", + "update risk", + "update", + "issues", + "remediation", + "cluster state", + "recommendation", + "cluster health", + "remote health", + "proactive", + "support", + "fix", + "problem", + "issue" + ] + } + ] + }, { "id": "quay", "links": [ @@ -18,6 +84,52 @@ } ] }, + { + "id": "ansible-drift", + "links": [ + { + "custom": true, + "id": "ANSIBLE.operations.Drift.drift", + "href": "/ansible/drift/", + "title": "Ansible Drift Comparison", + "description": "Compare systems in your Ansible inventory to one another or against a set baseline.", + "alt_title": [ + "Comparison", + "system details", + "system facts", + "troubleshooting", + "configuration drift", + "configuration differences", + "baseline", + "configuration standard", + "drift from baseline", + "drift over time", + "configuration changes", + "drift" + ] + }, + { + "custom": true, + "id": "ANSIBLE.operations.Drift.drift.baseline", + "href": "/ansible/drift/baselines", + "title": "Ansible Drift Baselines", + "alt_title": [ + "Comparison", + "system details", + "system facts", + "troubleshooting", + "configuration drift", + "configuration differences", + "baseline", + "configuration standard", + "drift from baseline", + "drift over time", + "configuration changes", + "drift" + ] + } + ] + }, { "id": "ACS-custom", "links": [ @@ -56,5 +168,411 @@ "alt_title": ["ROKS", "IBM Cloud", "OpenShift on IBM Cloud"] } ] + }, + { + "id": "patch-system", + "links": [ + { + "custom": true, + "id": "RHEL.Content.Patch.patch", + "href": "/insights/patch/systems", + "title": "Patch Systems", + "subtitle": "Red Hat Insights for RHEL", + "alt_title": [ + "Patch", + "content", + "advisories", + "insights", + "Rhel", + "patch", + "updates", + "update", + "systems", + "upgrade" + ] + } + ] + }, + { + "id": "patch-template", + "links": [ + { + "custom": true, + "id": "RHEL.Content.Patch.template", + "href": "/insights/patch/templates", + "title": "Red Hat Patch Templates", + "alt_title": [ + "Template", + "patch template", + "content template", + "insights", + "Patch cycle", + "content management", + "patching", + "update", + "content view" + ] + } + ] + }, + { + "id": "rhel-content-patch-packages", + "links": [ + { + "custom": true, + "id": "RHEL.patch", + "href": "/insights/patch/packages", + "title": "RHEL Packages", + "alt_title": [ + "Packages", + "updates", + "insights", + "repositories", + "rpm", + "dnf", + "yum", + "errata", + "patch", + "advisories", + "patching", + "templates", + "content management", + "content view", + "patch cycle", + "satellite", + "RHSA", + "RHBA", + "RHEA" + ] + } + ] + }, + { + "id": "malware", + "links": [ + { + "custom": true, + "id": "RHEL.security.malware.signatures", + "href": "/insights/malware/signatures", + "title": "Malware signatures", + "alt_title": [ + "Malware", + "security", + "X_Force", + "Yara", + "scanner", + "risk" + ] + }, + { + "custom": true, + "id": "RHEL.security.malware.malwareSystems", + "href": "/insights/malware/systems", + "title": "Malware systems", + "alt_title": [ + "Malware", + "security", + "X_Force", + "Yara", + "scanner", + "risk" + ] + } + ] + }, + { + "id": "openshift-vulnerability", + "links": [ + { + "custom": true, + "id": "OPENSHIFT.cves", + "href": "/openshift/insights/vulnerability/cves", + "title": "Red Hat Openshift Vulnerability Dashboard", + "description": "Identify and prioritize security vulnerabilities within your OpenShift clusters based on severity and frequency.", + "alt_title": [ + "CVEs", + "CVE", + "security", + "Vulnerability", + "Vulnerability Management", + "insights", + "vulnerable", + "exposure", + "Weakness", + "compliance", + "security gap", + "breach", + "patch", + "security", + "vulnerabilities", + "cve", + "common vulnerability exposure", + "cvss", + "risk", + "critical", + "errata" + ] + }, + { + "id": "OPENSHIFT.vulnerabilityClusters", + "href": "/openshift/insights/vulnerability/clusters", + "title": "Red Hat Openshift Vulnerability Clusters", + "alt_title": [ + "CVEs", + "CVE", + "security", + "Vulnerability", + "Vulnerability Management", + "insights", + "vulnerable", + "exposure", + "Weakness", + "compliance", + "security gap", + "breach", + "patch", + "security", + "vulnerabilities", + "cve", + "common vulnerability exposure", + "cvss", + "risk", + "critical", + "errata" + ] + } + ] + }, + { + "id": "rhel-drift", + "links": [ + { + "custom": true, + "id": "RHEL.Operations.Drift.drift", + "href": "/insights/drift/", + "title": "RHEL Drift Comparison", + "description": "Compare your Red Hat Enterprise Linux systems to one another or against a set baseline.", + "alt_title": [ + "Drift", + "Comparison", + "Baseline", + "insights", + "Comparison", + "system details", + "system facts", + "troubleshooting", + "configuration drift", + "configuration differences", + "baseline", + "configuration standard", + "drift from baseline", + "drift over time", + "configuration changes", + "history" + ] + }, + { + "custom": true, + "id": "RHEL.Operations.Drift.drift.baseline", + "href": "/insights/drift/baselines", + "title": "RHEL Drift Baselines", + "alt_title": [ + "Drift", + "Comparison", + "Baseline", + "insights", + "Comparison", + "system details", + "system facts", + "troubleshooting", + "configuration drift", + "configuration differences", + "baseline", + "configuration standard", + "drift from baseline", + "drift over time", + "configuration changes", + "history" + ] + } + ] + }, + { + "id": "rhel-inventory-systems", + "links": [ + { + "custom": true, + "id": "RHEL.Inventory.systems", + "href": "/insights/inventory", + "title": "RHEL Inventory Systems", + "alt_title":[ + "Inventory", + "rhel systems", + "my systems", + "hosts", + "boxes", + "rhel", + "linux", + "insights", + "systems", + "hosts", + "rhel", + "linux", + "hostname(s)", + "machine(s)", + "server(s)" + ] + } + ] + }, + { + "id": "rhel-policies", + "links": [ + { + "custom": true, + "id": "RHEL.policies", + "href": "/insights/policies", + "title": "RHEL Policies", + "alt_title":[ + "policies", + "facts", + "conditions", + "trigger", "notifications", + "alerts", + "insights", + "notify", + "integration", + "conditions", + "alerts", + "events", + "raise alerts on system configuration changes" + ] + } + ] + }, + { + "id": "costManagement", + "links": [ + { + "custom": true, + "id": "SETTINGS.applications.costManagement", + "href": "/settings/applications/cost-management", + "title": "Cost Management", + "alt_title": [ + "cost management", + "cost", + "finsights", + "finops", + "chargeback", + "showback", + "cost management for openshift", + "openshift cost", + "rhcm", + "spend", + "distribute", + "cost model", + "money", + "bill", + "billing", + "financial", + "chargeback", + "showback", + "rate", + "save", + "savings" + ] + } + ] + }, + { + "id": "compliance", + "links": [ + { + "custom": true, + "id": "complianceReports", + "href": "/insights/compliance/reports", + "title": "Reports", + "alt_title": [ + "Compliance", + "security", + "regulatory" + ], + "description": "Evaluate your Red Hat Enterprise systems’ compliance with security or regulatory standards." + }, + { + "custom": true, + "id": "scapPolicies", + "href": "/insights/compliance/scappolicies", + "title": "SCAP Policies", + "alt_title": [ + "SCAP", + "security content automation protocol", + "policies" + ] + } + ] + }, + { + "id": "hybrid-committed-spend", + "links": [ + { + "custom": true, + "id": "business-services.hybridCommittedSpend.overview", + "href": "/business-services/hybrid-committed-spend", + "title": "Hybrid Committed Spend Overview", + "alt_title": [ + "HCS", + "committed spend", + "spend", + "commitment burndown", + "spend", + "committed", + "drawdown" + ] + } + ] + }, + { + "id": "rhel-tasks", + "links": [ + { + "custom": true, + "id": "RHEL.tasks", + "href": "/insights/tasks", + "title": "RHEL Tasks", + "alt_title": [ + "Task", + "upgrade", + "update", + "insights", + "automation", + "leapp", + "migrate", + "version", + "9.0", + "8.0", + "convert", + "conversion", + "migration" + ] + } + ] + }, + { + "id": "rhel-dashboard", + "links": [ + { + "custom": true, + "id": "RHEL.dashboard", + "href": "/insights/dashboard", + "title": "Insights Dashboard", + "subtitle": "Red Hat Insights for RHEL", + "alt_title": [ + "Dashboard", + "insights", + "Rhel" + ] + } + ] } -] \ No newline at end of file +] diff --git a/config/config.go b/config/config.go index 5b494148..cdf24b8c 100644 --- a/config/config.go +++ b/config/config.go @@ -25,6 +25,10 @@ type KafkaCfg struct { type IntercomConfig struct { fallback string + acs string + acs_dev string + ansible string + ansible_dev string openshift string openshift_dev string hacCore string @@ -148,7 +152,7 @@ func init() { options.DbSSLMode = "disable" options.DbSSLRootCert = "" options.KafkaConfig = KafkaCfg{ - KafkaTopics: []string{"platform-chrome"}, + KafkaTopics: []string{"platform.chrome"}, KafkaBrokers: []string{"localhost:9092"}, } @@ -165,6 +169,10 @@ func init() { // env variables from .env or pod env variables options.IntercomConfig = IntercomConfig{ fallback: os.Getenv("INTERCOM_DEFAULT"), + acs: os.Getenv("INTERCOM_ACS"), + acs_dev: os.Getenv("INTERCOM_ACS_DEV"), + ansible: os.Getenv("INTERCOM_ANSIBLE"), + ansible_dev: os.Getenv("INTERCOM_ANSIBLE_DEV"), openshift: os.Getenv("INTERCOM_OPENSHIFT"), openshift_dev: os.Getenv("INTERCOM_OPENSHIFT_DEV"), hacCore: os.Getenv("INTERCOM_HAC_CORE"), diff --git a/deploy/clowdapp.yml b/deploy/clowdapp.yml index 2a63d14d..de173816 100644 --- a/deploy/clowdapp.yml +++ b/deploy/clowdapp.yml @@ -16,7 +16,7 @@ objects: kafkaTopics: # one replica for now; most of this will change - replicas: 1 - partitions: 64 + partitions: 8 topicName: platform.chrome deployments: - name: api @@ -72,6 +72,26 @@ objects: secretKeyRef: name: chrome-service-backend key: INTERCOM_DEFAULT + - name: INTERCOM_ACS + valueFrom: + secretKeyRef: + name: chrome-service-backend + key: INTERCOM_ACS + - name: INTERCOM_ACS_DEV + valueFrom: + secretKeyRef: + name: chrome-service-backend + key: INTERCOM_ACS_DEV + - name: INTERCOM_ANSIBLE + valueFrom: + secretKeyRef: + name: chrome-service-backend + key: INTERCOM_ANSIBLE + - name: INTERCOM_ANSIBLE_DEV + valueFrom: + secretKeyRef: + name: chrome-service-backend + key: INTERCOM_ANSIBLE_DEV - name: INTERCOM_HAC_CORE valueFrom: secretKeyRef: @@ -113,6 +133,10 @@ objects: name: chrome-service-backend data: INTERCOM_OPENSHIFT: aW5zaWdodHMtcmJhYw== + INTERCOM_ACS: dGVzdFZhbHVl + INTERCOM_ACS_DEV: dGVzdFZhbHVl + INTERCOM_ANSIBLE: dGVzdFZhbHVl + INTERCOM_ANSIBLE_DEV: dGVzdFZhbHVl INTERCOM_DEFAULT: dGVzdFZhbHVl INTERCOM_HAC_CORE: dGVzdFZhbHVl INTERCOM_OPENSHIFT_DEV: dGVzdFZhbHVl diff --git a/docs/cloud-services-config.md b/docs/cloud-services-config.md index c4778c02..6940dfcd 100644 --- a/docs/cloud-services-config.md +++ b/docs/cloud-services-config.md @@ -290,7 +290,7 @@ If your link does not fit into any existing section and you need a new one, foll { id: string; // unique section id title: string; // title of a section - icon: "CloudUploadAltIcon" | "AutomationIcon" | BoxesIcon" | "DatabaseIcon" | "RocketIcon" | "UsersIcon" | "InfrastructureIcon" | "BellIcon" | "ChartLineIcon" | "CloudSecurityIcon" | "CreditCardIcon" | "CogIcon" | "ShoppingCartIcon"; // icon representing section + icon: "CloudUploadAltIcon" | "AutomationIcon" | "BoxesIcon" | "DatabaseIcon" | "RocketIcon" | "UsersIcon" | "InfrastructureIcon" | "BellIcon" | "ChartLineIcon" | "CloudSecurityIcon" | "CreditCardIcon" | "CogIcon" | "ShoppingCartIcon"; // icon representing section description: string; // short section description links: string[] // list of links } diff --git a/docs/intercom-keys.md b/docs/intercom-keys.md new file mode 100644 index 00000000..54560a5a --- /dev/null +++ b/docs/intercom-keys.md @@ -0,0 +1,21 @@ +# Adding or Updating Intercom Keys in chrome-service + +## Overview + +Some teams wish to use Intercom Messenger for their apps and will need API secrets added. This requires adding the keys themselves into the vault and then exposing environment variables that point to them in `chrome-service`. + +## Adding secrets to the vault + +The secrets themselves will go in + +https://vault.devshift.net/ui/vault/secrets/insights/show/secrets/insights-dev/platform-experience-dev/chrome-service-backend + +typically with one for stage (denoted by the `_DEV` ending) and one for prod (without `_DEV`). These secret names will be added to `config.go` and `clowdapp.yml` below. + +## Updating chrome-service + +In `config.go`, you need to update `options.IntercomConfig` with the environment variable names and their corresponding secret names in the vault. In `clowdapp.yml`, you need to update `env` with the secret names that point to our `chrome-service-backend` in the vault. Also in the file, dummy secrets need to be added to `data` for CI/CD purposes (you can just copy the ones that are already provided). + +## Bumping the secrets version in app-interface + +Update [this line](https://gitlab.cee.redhat.com/service/app-interface/-/blob/master/data/services/insights/chrome-service/namespaces/chrome-service-stage.yml#L38) to update secrets in stage with the new secrets version (you may need to message someone if you don't have vault permissions to see file versioning). \ No newline at end of file diff --git a/docs/sso-scopes.md b/docs/sso-scopes.md new file mode 100644 index 00000000..073b0009 --- /dev/null +++ b/docs/sso-scopes.md @@ -0,0 +1,37 @@ +# Custom service SSO Scope + +By default, hybrid cloud console requires only a base set of SSO scopes. If your service requires additional Keycloak scopes, you can instruct the chroming service to attempt user re-authentication to update the user session token. + +If the chroming service finds that a UI module is requires a scope and the scope was not request in previous authentication request it will try to re-authenticate the user. **This does not mean the user will have to type credentials again**. The behavior of the re-auth depends on the account state and the scope requirements. It can be a silent which will result in a browser refresh, or a one time additional registration form might appear. + +## Adding additional SSO Scopes: + +To trigger re-authentication, the chroming service must know that specific UI module requires it. This can be done by adding the `ssoScopes` attribute to a module configuration in the `fed-modules.json` file. Follow these steps: + +1. Find `fed-mods.json` for a relevant environment (prod/stage/stable/preview) file(s). +2. Find relevant UI module based on the module key. +3. Add the new scope(s) id to the `config.ssoScopes` array. If the array does not exist create it. + +A sample changes can look like this: + +```diff +diff --git a/static/beta/prod/modules/fed-modules.json b/static/beta/prod/modules/fed-modules.json +index bb8aab0..b716df6 100644 +--- a/static/beta/prod/modules/fed-modules.json ++++ b/static/beta/prod/modules/fed-modules.json +@@ -162,7 +162,12 @@ + } + ] + } +- ] ++ ], ++ "config": { ++ "ssoScopes": [ ++ "rhfull" ++ ] ++ } + }, + "openshift": { + "manifestLocation": "/apps/openshift/fed-mods.json", + +``` diff --git a/env.actions b/env.actions new file mode 100644 index 00000000..b8b005da --- /dev/null +++ b/env.actions @@ -0,0 +1,7 @@ +PGSQL_USER=chrome +PGSQL_PASSWORD=chrome +PGSQL_HOSTNAME=0.0.0.0 +PGSQL_PORT=5432 +PGSQL_DATABASE=postgres +UNLEASH_API_TOKEN=default:development.unleash-insecure-api-token +UNLEASH_ADMIN_TOKEN=*:*.unleash-insecure-api-token diff --git a/go.mod b/go.mod index c8fd7213..59570b19 100644 --- a/go.mod +++ b/go.mod @@ -24,8 +24,10 @@ require ( github.com/beorn7/perks v1.0.1 // indirect github.com/cespare/xxhash/v2 v2.1.2 // indirect github.com/davecgh/go-spew v1.1.1 // indirect + github.com/go-chi/cors v1.2.1 // indirect github.com/go-sql-driver/mysql v1.7.0 // indirect github.com/golang/protobuf v1.5.2 // indirect + github.com/google/uuid v1.3.0 // indirect github.com/jackc/chunkreader/v2 v2.0.1 // indirect github.com/jackc/pgconn v1.13.0 // indirect github.com/jackc/pgio v1.0.0 // indirect diff --git a/go.sum b/go.sum index 4ac0896c..85d4474a 100644 --- a/go.sum +++ b/go.sum @@ -72,6 +72,8 @@ github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMo github.com/go-chi/chi v4.0.2+incompatible/go.mod h1:eB3wogJHnLi3x/kFX2A+IbTBlXxmMeXJVKy9tTv1XzQ= github.com/go-chi/chi/v5 v5.0.7 h1:rDTPXLDHGATaeHvVlLcR4Qe0zftYethFucbjVQ1PxU8= github.com/go-chi/chi/v5 v5.0.7/go.mod h1:DslCQbL2OYiznFReuXYUmQ2hGd1aDpCnlMNITLSKoi8= +github.com/go-chi/cors v1.2.1 h1:xEC8UT3Rlp2QuWNEr4Fs/c2EAGVKBwy/1vHx3bppil4= +github.com/go-chi/cors v1.2.1/go.mod h1:sSbTewc+6wYHBBCW7ytsFSn836hqM7JxpglAy2Vzc58= github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= @@ -143,6 +145,8 @@ github.com/google/pprof v0.0.0-20200229191704-1ebb73c60ed3/go.mod h1:ZgVRPoUq/hf github.com/google/pprof v0.0.0-20200430221834-fc25d7d30c6d/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= +github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I= +github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= github.com/gorilla/websocket v1.5.0 h1:PPwGk2jz7EePpoHN/+ClbZu8SPxiqlu12wZP/3sWmnc= diff --git a/main.go b/main.go index f3f8200d..d8f34bfb 100644 --- a/main.go +++ b/main.go @@ -3,6 +3,7 @@ package main import ( "flag" "fmt" + "github.com/go-chi/cors" "log" "net/http" "strconv" @@ -56,7 +57,7 @@ func main() { subrouter.Route("/emit-message", routes.BroadcastMessage) }) - // We might want to setup some event listeners at some point, but the pod will + // We might want to set up some event listeners at some point, but the pod will // have to restart for these to take effect. We can't enable and disable websockets on the fly if featureflags.IsEnabled("chrome-service.websockets.enabled") { // start the connection hub @@ -64,6 +65,12 @@ func main() { logrus.Infoln("Enabling WebSockets") kafka.InitializeConsumers() router.Route("/wss/chrome-service/v1/", func(subrouter chi.Router) { + subrouter.Use(cors.Handler(cors.Options{ + AllowedOrigins: []string{ + "wss://stage.foo.redhat.com:1337", + "wss://prod.foo.redhat.com:1337", + }, + })) subrouter.Route("/ws", routes.MakeWsRoute) }) } else { diff --git a/rest/cloudevents/cloudEvents.go b/rest/cloudevents/cloudEvents.go index 84c4df29..ff22d1ec 100644 --- a/rest/cloudevents/cloudEvents.go +++ b/rest/cloudevents/cloudEvents.go @@ -2,8 +2,8 @@ package cloudevents import ( "fmt" - "time" "net/url" + "time" "github.com/RedHatInsights/chrome-service-backend/rest/connectionhub" ) @@ -44,7 +44,7 @@ func (uri URI) IsValid() error { if err != nil { return fmt.Errorf("URI is not valid. Expected a valid URI, but got %v.", uri) } - return nil; + return nil } // TODO: Specify accepted data payload @@ -75,3 +75,19 @@ func WrapPayload[P any](payload P, source URI, id string, messageType string) En type KafkaEnvelope struct { Envelope[connectionhub.WsMessage] } + +func ValidatePayload(p KafkaEnvelope) error { + payloadErr := p.DataContentType.IsValid() + if payloadErr != nil { + return fmt.Errorf("Kafka message payload needs to be JSON formatted, %v", payloadErr) + } + specErr := p.SpecVersion.IsValid() + if specErr != nil { + return fmt.Errorf("%v", specErr) + } + sourceErr := p.Source.IsValid() + if sourceErr != nil { + return fmt.Errorf("%v", sourceErr) + } + return nil +} diff --git a/rest/connectionhub/connectionHub.go b/rest/connectionhub/connectionHub.go index 686ad0d5..c781c07a 100644 --- a/rest/connectionhub/connectionHub.go +++ b/rest/connectionhub/connectionHub.go @@ -8,6 +8,20 @@ import ( "github.com/sirupsen/logrus" ) +const ( + // Time allowed to write a message to the peer. + writeWait = 10 * time.Second + + // Time allowed to read the next pong message from the peer. + pongWait = 60 * time.Second + + // Send pings to peer with this period. Must be less than pongWait. + pingPeriod = (pongWait * 9) / 10 + + // Maximum message size allowed from peer. + maxMessageSize = 512 +) + type clients = map[string]*Client type Client struct { @@ -179,24 +193,11 @@ func (h *connectionHub) Run() { } } -const ( - // Time allowed to write a message to the peer. - writeWait = 10 * time.Second - - // Time allowed to read the next pong message from the peer. - pongWait = 60 * time.Second - - // Send pings to peer with this period. Must be less than pongWait. - pingPeriod = (pongWait * 9) / 10 - - // Maximum message size allowed from peer. - maxMessageSize = 512 -) - func (c Client) ReadPump() { conn := c.Conn - // close connection after client is was removed + // close connection after client is removed defer func() { + logrus.Info(c) ConnectionHub.Unregister <- c conn.Ws.Close() }() @@ -217,7 +218,7 @@ func (c Client) ReadPump() { break } var messagePayload WsMessage - json.Unmarshal(msg, &messagePayload) + err = json.Unmarshal(msg, &messagePayload) if err != nil { logrus.Errorln("Unable to unmarshall incoming WS message: ", err) break @@ -241,7 +242,10 @@ func (c Client) ReadPump() { // write writes a message with the given message type and payload. func (c *Connection) write(mt int, payload []byte) error { - c.Ws.SetWriteDeadline(time.Now().Add(writeWait)) + err := c.Ws.SetWriteDeadline(time.Now().Add(writeWait)) + if err != nil { + logrus.Errorf("Cannot write message %v", err) + } return c.Ws.WriteMessage(mt, payload) } diff --git a/rest/kafka/consumers.go b/rest/kafka/consumers.go index b3d94b22..5481f15b 100644 --- a/rest/kafka/consumers.go +++ b/rest/kafka/consumers.go @@ -4,13 +4,14 @@ import ( "context" "encoding/json" "fmt" - "log" - "github.com/RedHatInsights/chrome-service-backend/config" "github.com/RedHatInsights/chrome-service-backend/rest/cloudevents" "github.com/RedHatInsights/chrome-service-backend/rest/connectionhub" + "github.com/google/uuid" "github.com/segmentio/kafka-go" "github.com/sirupsen/logrus" + "log" + "os" ) type kafkaConsumer struct { @@ -18,7 +19,46 @@ type kafkaConsumer struct { Readers map[string]*kafka.Reader } -var KafkaConsumer = kafkaConsumer{} +var Consumer = kafkaConsumer{} + +const TenMb = 10e7 + +func createReader(topic string) *kafka.Reader { + cfg := config.Get() + hostname, err := os.Hostname() + if err != nil { + logrus.Errorln("Couldn't get hostname, using UUID") + hostname = uuid.NewString() + } + r := kafka.NewReader(kafka.ReaderConfig{ + Brokers: cfg.KafkaConfig.KafkaBrokers, + // The consumer group will match the pod name via hostname + // ex platform.chrome.chrome-service-api.. + GroupID: fmt.Sprintf("platform.chrome.%s", hostname), + StartOffset: kafka.LastOffset, + Topic: topic, + Logger: kafka.LoggerFunc(logrus.Debugf), + ErrorLogger: kafka.LoggerFunc(logrus.Errorf), + MaxBytes: TenMb, + }) + logrus.Infoln("Creating new kafka reader for topic:", topic) + return r +} + +func InitializeConsumers() { + cfg := config.Get() + topics := cfg.KafkaConfig.KafkaTopics + readers := make(map[string]*kafka.Reader) + for _, topic := range topics { + readers[topic] = createReader(topic) + } + + Consumer.Readers = readers + + for _, r := range readers { + go startKafkaReader(r) + } +} func startKafkaReader(r *kafka.Reader) { defer r.Close() @@ -34,17 +74,17 @@ func startKafkaReader(r *kafka.Reader) { var p cloudevents.KafkaEnvelope err = json.Unmarshal(m.Value, &p) if err != nil { - logrus.Errorln(fmt.Sprintf("Unable Unmarshal message %s\n", string(m.Value))) + logrus.Errorln(fmt.Sprintf("Unable to unmarshal message %s\n", string(m.Value))) } else if p.Data.Payload == nil { - logrus.Errorln(fmt.Sprintf("No message will be emitted doe to missing payload %s! Message might not follow cloud events spec.\n", string(m.Value))) + logrus.Errorln(fmt.Sprintf("No message will be emitted due to missing payload %s! Message might not follow cloud events spec.\n", string(m.Value))) } else { event := cloudevents.WrapPayload(p.Data.Payload, p.Source, p.Id, p.Type) event.Time = p.Time data, err := json.Marshal(event) if err != nil { - log.Println("Unable marshal payload data", p, err) + log.Println("Unable to marshal payload data", p, err) } else { - validateErr := validatePayload(p) + validateErr := cloudevents.ValidatePayload(p) if validateErr == nil { newMessage := connectionhub.Message{ Destinations: connectionhub.MessageDestinations{ @@ -73,50 +113,3 @@ func startKafkaReader(r *kafka.Reader) { log.Fatal("failed to close reader:", err) } } - -func validatePayload(p cloudevents.KafkaEnvelope) error { - payloadErr := p.DataContentType.IsValid() - if payloadErr != nil { - return fmt.Errorf("Kafka message payload needs to be JSON formatted, %v", payloadErr) - } - specErr := p.SpecVersion.IsValid() - if specErr != nil { - return fmt.Errorf("%v", specErr) - } - sourceErr := p.Source.IsValid() - if sourceErr != nil { - return fmt.Errorf("%v", sourceErr) - } - return nil -} - -func createReader(topic string) *kafka.Reader { - config := config.Get() - r := kafka.NewReader(kafka.ReaderConfig{ - Brokers: config.KafkaConfig.KafkaBrokers, - GroupID: "platform.chrome", - StartOffset: kafka.LastOffset, - Topic: topic, - Logger: kafka.LoggerFunc(logrus.Debugf), - ErrorLogger: kafka.LoggerFunc(logrus.Errorf), - MinBytes: 1, // 1B - MaxBytes: 10e7, // 10MB - }) - logrus.Infoln("Creating new kafka reader for topic:", topic) - return r -} - -func InitializeConsumers() { - config := config.Get() - topics := config.KafkaConfig.KafkaTopics - readers := make(map[string]*kafka.Reader) - for _, topic := range topics { - readers[topic] = createReader(topic) - } - - KafkaConsumer.Readers = readers - - for _, r := range readers { - go startKafkaReader(r) - } -} diff --git a/rest/util/testutils.go b/rest/util/testutils.go index cc4e0388..e3402f48 100644 --- a/rest/util/testutils.go +++ b/rest/util/testutils.go @@ -2,11 +2,7 @@ package util import ( "fmt" - "os" - "regexp" - "github.com/RedHatInsights/chrome-service-backend/config" - "github.com/joho/godotenv" ) const ProjectName = "chrome-service-backend" @@ -25,16 +21,3 @@ func SetupTestConfig() *config.ChromeServiceConfig { cfg.FeatureFlagConfig.FullURL = fmt.Sprintf("%s://%s:%d/api/", cfg.FeatureFlagConfig.Scheme, cfg.FeatureFlagConfig.Hostname, cfg.FeatureFlagConfig.Port) return cfg } - -// TODO: Break test config out into env files in the future -// LoadEnv loads env vars from .env -func LoadEnv() { - re := regexp.MustCompile(`^(.*` + ProjectName + `)`) - cwd, _ := os.Getwd() - rootPath := re.Find([]byte(cwd)) - - err := godotenv.Load(string(rootPath) + `/.env.test`) - if err != nil { - fmt.Println(err) - } -} diff --git a/static/beta/itless/navigation/iam-navigation.json b/static/beta/itless/navigation/iam-navigation.json index a5dac0a2..6043765f 100644 --- a/static/beta/itless/navigation/iam-navigation.json +++ b/static/beta/itless/navigation/iam-navigation.json @@ -48,5 +48,20 @@ } ] } + ], + "alt_title": [ + "Authentication Policy", + "2FA", + "Identity and Access Management", + "IAM", + "User Access", + "User Management", + "access management", + "rbac", + "2FA", + "two factor auth", + "two factor authentication", + "two-factor auth", + "two-factor authentication" ] } diff --git a/static/beta/itless/navigation/rhel-navigation.json b/static/beta/itless/navigation/rhel-navigation.json index 8ebef3eb..68e0a73e 100644 --- a/static/beta/itless/navigation/rhel-navigation.json +++ b/static/beta/itless/navigation/rhel-navigation.json @@ -33,7 +33,27 @@ "title": "Recommendations", "href": "/insights/advisor/recommendations", "product": "Red Hat Insights", - "description": "See targeted recommendations to optimize your Red Hat Enterprise Linux systems’ availability, performance, and security." + "description": "See targeted recommendations to optimize your Red Hat Enterprise Linux systems’ availability, performance, and security.", + "alt_title": [ + "Rules", + "recommendations", + "insights", + "configuration", + "security", + "stability", + "performance", + "advisor", + "incidents", + "recommendations", + "configuration", + "pathways", + "critical", + "upgrade", + "upgrade risk", + "incident", + "recommendation", + "pathway" + ] }, { "id": "advisorSystems", @@ -61,7 +81,13 @@ "title": "Advisories", "href": "/insights/patch/advisories", "product": "Red Hat Insights", - "description": "View applicable advisories and updates for your Red Hat Enterprise Linux systems." + "description": "View applicable advisories and updates for your Red Hat Enterprise Linux systems.", + "alt_title": [ + "Errata", + "patch", + "updates", + "insights" + ] }, { "id": "patchSystems", @@ -112,6 +138,35 @@ "href": "/insights/vulnerability/systems", "product": "Red Hat Insights" } + ], + "alt_title": [ + "CVEs", + "CVE", + "Security", + "Vulnerability", + "Vulnerability Management", + "insights", + "Vulnerable", + "exposure", + "Weakness", + "compliance", + "security gap", + "breach", + "Hearltbleed", + "Spectre", + "Patch", + "security", + "vulnerabilities", + "cve", + "common vulnerability exposure", + "cvss", + "risk", + "critical", + "security rule", + "errata", + "affected but not vulnerable", + "severity", + "CVE-" ] }, { @@ -124,7 +179,28 @@ "title": "Reports", "href": "/insights/compliance/reports", "product": "Red Hat Insights", - "description": "Evaluate your Red Hat Enterprise systems’ compliance with security or regulatory standards." + "description": "Evaluate your Red Hat Enterprise systems’ compliance with security or regulatory standards.", + "alt_title": [ + "Compliance", + "security", + "policies", + "SCAP", + "policy", + "insights", + "regulatory", + "regulations", + "OpenSCAP", + "PCI", + "HIPAA", + "DSS", + "CSI", + "C2S", + "rules", + "DISA STIG", + "PCI-DSS", + "NIST", + "OSPP" + ] }, { "id": "scapPolicies", @@ -220,7 +296,20 @@ "title": "Remediations", "href": "/insights/remediations", "product": "Red Hat Insights", - "description": "Use Ansible Playbooks to resolve configuration, security, and compliance issues identified on your Red Hat Enterprise Linux systems." + "description": "Use Ansible Playbooks to resolve configuration, security, and compliance issues identified on your Red Hat Enterprise Linux systems.", + "alt_title": [ + "Remediate", + "playbook", + "fix", + "solve", + "find it fix it", + "fifi", + "cloud connector", + "insights", + "automation", + "Ansible", + "patch" + ] }, { "id": "tasks", diff --git a/static/beta/prod/modules/fed-modules.json b/static/beta/prod/modules/fed-modules.json index 889e5405..bb8aab01 100644 --- a/static/beta/prod/modules/fed-modules.json +++ b/static/beta/prod/modules/fed-modules.json @@ -144,7 +144,7 @@ "module": "./RootApp", "routes": [ { - "pathname": "/settings/connector" + "pathname": "/insights/connector" } ] } @@ -467,6 +467,9 @@ }, "ansibleDashboard": { "manifestLocation": "/apps/ansible-dashboard/fed-mods.json", + "analytics": { + "APIKey": "AGLlIXeY0q6tUZVRqmRwr9zAYS95u2QJ" + }, "modules": [ { "id": "ansible-dashboard", @@ -485,6 +488,9 @@ }, "automationHub": { "manifestLocation": "/apps/automation-hub/fed-mods.json", + "analytics": { + "APIKey": "AGLlIXeY0q6tUZVRqmRwr9zAYS95u2QJ" + }, "modules": [ { "id": "ansible-automation-hub", @@ -499,6 +505,9 @@ }, "automationAnalytics": { "manifestLocation": "/apps/automation-analytics/fed-mods.json", + "analytics": { + "APIKey": "AGLlIXeY0q6tUZVRqmRwr9zAYS95u2QJ" + }, "modules": [ { "id": "ansible-automation-analytics", @@ -635,11 +644,11 @@ } ] }, - "starter": { - "manifestLocation": "/apps/starter/fed-mods.json", + "frontend-starter-app": { + "manifestLocation": "/apps/frontend-starter-app/fed-mods.json", "modules": [ { - "id": "starter", + "id": "frontend-starter-app", "module": "./RootApp", "routes": [ { @@ -771,6 +780,11 @@ }, "hybridCommittedSpend": { "manifestLocation": "/apps/hybrid-committed-spend/fed-mods.json", + "config": { + "ssoScopes": [ + "api.billing.hcs_reports" + ] + }, "modules": [ { "id": "hybrid-committed-spend", @@ -857,11 +871,31 @@ "props": { "bundle": "iam" } + }, + { + "pathname": "/hac/learning-resources", + "props": { + "bundle": "hac" + } } ] } ] }, + "serviceAccounts": { + "manifestLocation": "/apps/service-accounts/fed-mods.json", + "modules": [ + { + "id": "service-accounts", + "module": "./RootApp", + "routes": [ + { + "pathname": "/iam/service-accounts" + } + ] + } + ] + }, "quay-ui-plugin": { "manifestLocation": "/apps/quay/plugin-manifest.json", "modules": [ @@ -875,5 +909,24 @@ ] } ] + }, + "seatsAdminUi": { + "manifestLocation": "/apps/seats-admin-ui/fed-mods.json", + "config": { + "ssoScopes": [ + "api.iam.access" + ] + }, + "modules": [ + { + "id": "seats-admin", + "module": "./RootApp", + "routes": [ + { + "pathname": "/ansible/seats-administration" + } + ] + } + ] } } diff --git a/static/beta/prod/navigation/ansible-navigation.json b/static/beta/prod/navigation/ansible-navigation.json index 2dbd2d94..a630e759 100644 --- a/static/beta/prod/navigation/ansible-navigation.json +++ b/static/beta/prod/navigation/ansible-navigation.json @@ -9,6 +9,12 @@ "filterable": false, "href": "/ansible/ansible-dashboard" }, + { + "id": "learningResources", + "appId": "learningResources", + "title": "Learning Resources", + "href": "/ansible/learning-resources" + }, { "title": "Automation Hub", "expandable": true, @@ -130,7 +136,24 @@ "title": "Recommendations", "href": "/ansible/advisor/recommendations", "product": "Red Hat Insights", - "description": "See targeted recommendations to optimize your Ansible hosts’ availability, performance, and security." + "description": "See targeted recommendations to optimize your Ansible hosts’ availability, performance, and security.", + "alt_title": [ + "Rules", + "recommendations", + "Configuration", + "security", + "stability", + "performance", + "advisor", + "incidents", + "pathways", + "critical", + "upgrade", + "upgrade risk", + "incident", + "recommendation", + "pathway" + ] }, { "id": "systems", @@ -174,7 +197,19 @@ "appId": "policies", "title": "Policies", "href": "/ansible/policies", - "description": "Monitor your Ansible hosts against set parameters to detect deviation or misalignment." + "description": "Monitor your Ansible hosts against set parameters to detect deviation or misalignment.", + "subtitle": "Red Hat Insights for Ansible", + "alt_title": [ + "Policies", + "Policy", + "notifications", + "notify", + "integration", + "conditions", + "alerts", + "events", + "raise alerts on system configuration changes" + ] } ] }, diff --git a/static/beta/prod/navigation/application-pipeline-navigation.json b/static/beta/prod/navigation/application-pipeline-navigation.json index 596b30aa..f04785b4 100644 --- a/static/beta/prod/navigation/application-pipeline-navigation.json +++ b/static/beta/prod/navigation/application-pipeline-navigation.json @@ -2,23 +2,17 @@ "id": "hac", "title": "Trusted Application Pipeline", "navItems": [ - { - "id": "demoPlugin", - "appId": "hacCore", - "title": "Demo Plugin", - "dynamicNav": "hacCore/admin-demo-section" - }, - { - "id": "devDemoPlugin", - "appId": "hacCore", - "title": "Demo Plugin", - "dynamicNav": "hacCore/dev-demo-section" - }, { "id": "flatNav", "appId": "hacCore", "title": "Flat nav", "dynamicNav": "hacCore" + }, + { + "id": "learningResources", + "appId": "applicationServices", + "title": "Learning Resources", + "href": "/hac/learning-resources" } ] } diff --git a/static/beta/prod/navigation/application-services-navigation.json b/static/beta/prod/navigation/application-services-navigation.json index c9f07712..aaeac5f7 100644 --- a/static/beta/prod/navigation/application-services-navigation.json +++ b/static/beta/prod/navigation/application-services-navigation.json @@ -60,7 +60,22 @@ "appId": "trustedContent", "title": "Trusted Content", "href": "/application-services/trusted-content", - "description": "Increase trust and integrity in source code and accelerate the application development process." + "description": "Increase trust and integrity in source code and accelerate the application development process.", + "alt_title": [ + "software supply chain", + "vulnerability", + "security", + "risk management", + "oss", + "trusted", + "content", + "CRDA", + "VEX", + "SBOM", + "source code", + "remediation", + "software composition" + ] } ] }, diff --git a/static/beta/prod/navigation/business-services-navigation.json b/static/beta/prod/navigation/business-services-navigation.json index c5e2abb3..7edd8de3 100644 --- a/static/beta/prod/navigation/business-services-navigation.json +++ b/static/beta/prod/navigation/business-services-navigation.json @@ -14,16 +14,7 @@ "id": "overview", "appId": "hybridCommittedSpend", "title": "Overview", - "href": "/business-services/hybrid-committed-spend", - "permissions": [ - { - "method": "apiRequest", - "args": [{ - "url": "https://billing.api.redhat.com/v1/authorization/hcsEnrollment", - "accessor": "hcsDeal" - }] - } - ] + "href": "/business-services/hybrid-committed-spend" }, { "id": "details", diff --git a/static/beta/prod/navigation/edge-navigation.json b/static/beta/prod/navigation/edge-navigation.json index bda0fc5b..34db0d98 100644 --- a/static/beta/prod/navigation/edge-navigation.json +++ b/static/beta/prod/navigation/edge-navigation.json @@ -20,6 +20,12 @@ } ] }, + { + "id": "learningResources", + "appId": "learningResources", + "title": "Learning Resources", + "href": "/edge/learning-resources" + }, { "title": "Manage Images", "expandable": true, @@ -31,13 +37,6 @@ "href": "/edge/manage-images" } ] - }, - { - "title": "Learning resources", - "id": "learningResources", - "filterable": false, - "appId": "edge", - "href": "/edge/learning-resources" } ] } diff --git a/static/beta/prod/navigation/iam-navigation.json b/static/beta/prod/navigation/iam-navigation.json index 3c7ea2de..6a800100 100644 --- a/static/beta/prod/navigation/iam-navigation.json +++ b/static/beta/prod/navigation/iam-navigation.json @@ -76,11 +76,38 @@ } ] }, + { + "id": "serviceAccounts", + "title": "Service Accounts", + "appId": "serviceAccounts", + "href": "/iam/service-accounts", + "permissions": [ + { + "method": "featureFlag", + "args": ["platform.iam.service-accounts", true] + } + ] + }, { "id": "learningResources", "appId": "learningResources", "title": "Learning Resources", "href": "/iam/learning-resources" } + ], + "alt_title": [ + "Authentication Policy", + "2FA", + "Identity and Access Management", + "IAM", + "User Access", + "User Management", + "access management", + "rbac", + "2FA", + "two factor auth", + "two factor authentication", + "two-factor auth", + "two-factor authentication" ] } diff --git a/static/beta/prod/navigation/openshift-navigation.json b/static/beta/prod/navigation/openshift-navigation.json index 56f53c2c..58df7a22 100644 --- a/static/beta/prod/navigation/openshift-navigation.json +++ b/static/beta/prod/navigation/openshift-navigation.json @@ -10,6 +10,12 @@ "product": "Red Hat OpenShift Cluster Manager", "description": "View, Register, or Create an OpenShift Cluster." }, + { + "id": "learningResources", + "appId": "learningResources", + "title": "Learning Resources", + "href": "/openshift/learning-resources" + }, { "id": "overview", "appId": "openshift", @@ -137,7 +143,8 @@ "title": "Overview", "filterable": false, "href": "/openshift/cost-management", - "product": "Red Hat Cost Management" + "product": "Red Hat Cost Management", + "subtitle": "Red Hat Insights for OpenShift" }, { "id": "costManagementOptimizations", @@ -205,7 +212,13 @@ "appId": "costManagement", "title": "Cost Models", "href": "/openshift/cost-management/cost-models", - "product": "Red Hat Cost Management" + "product": "Red Hat Cost Management", + "permissions": [ + { + "method": "featureFlag", + "args": ["cost-management.ui.nav.settings", false] + } + ] }, { "id": "costExplorer", @@ -213,6 +226,19 @@ "title": "Cost Explorer", "href": "/openshift/cost-management/explorer", "product": "Red Hat Cost Management" + }, + { + "id": "settings", + "appId": "costManagement", + "title": "Settings", + "href": "/openshift/cost-management/settings", + "product": "Red Hat Cost Management", + "permissions": [ + { + "method": "featureFlag", + "args": ["cost-management.ui.nav.settings", true] + } + ] } ] } @@ -224,13 +250,6 @@ "href": "https://marketplace.redhat.com", "filterable": false, "isExternal": true - }, - { - "id": "documentation", - "href": "https://access.redhat.com/documentation/en-us/openshift_cluster_manager/", - "title": "Documentation", - "filterable": false, - "isExternal": true } ] } diff --git a/static/beta/prod/navigation/quay-navigation.json b/static/beta/prod/navigation/quay-navigation.json index e9b28e31..7650be34 100644 --- a/static/beta/prod/navigation/quay-navigation.json +++ b/static/beta/prod/navigation/quay-navigation.json @@ -41,5 +41,49 @@ } ] } + ], + "alt_title": [ + "artifact", + "clair", + "container", + "container image", + "Container image distribution and replication", + "Container image hosting platform", + "Container image management platform", + "Container image replication and synchronization", + "Container image repository and hosting", + "Container image scanning and vulnerability management", + "Container image storage", + "Container image versioning and tagging", + "container registry", + "Container registry solution", + "Container security and compliance", + "cosign", + "CRI-O", + "CVE", + "digest", + "docker", + "Docker container management", + "helm", + "image pull", + "image push", + "image tag", + "Kubernetes container registry", + "manifest", + "OCI", + "podman", + "Private container registry solution", + "Quay", + "quay.io", + "registry", + "repository", + "sbom", + "scanner", + "scanning", + "Secure container registry", + "security scan", + "tag", + "vulnerability", + "vulnerability scanning" ] } diff --git a/static/beta/prod/navigation/rhel-navigation.json b/static/beta/prod/navigation/rhel-navigation.json index 6e8854a7..be2c6a7e 100644 --- a/static/beta/prod/navigation/rhel-navigation.json +++ b/static/beta/prod/navigation/rhel-navigation.json @@ -15,13 +15,15 @@ "expandable": true, "id": "inventory", "description": "View details about your Red Hat Enterprise Linux systems.", + "subtitle": "Red Hat Insights for RHEL", "routes": [ { "id": "systems", "appId": "inventory", "title": "Systems", "href": "/insights/inventory", - "product": "Red Hat Insights" + "product": "Red Hat Insights", + "subtitle": "Red Hat Insights for RHEL" }, { "id": "groups", @@ -43,7 +45,42 @@ "title": "Images", "href": "/insights/image-builder", "product": "Red Hat Insights", - "description": "Build and manage Red Hat Enterprise Linux images and environments." + "subtitle": "Red Hat Insights for RHEL", + "description": "Build and manage Red Hat Enterprise Linux images and environments.", + "alt_title": [ + "Images", + "image", + "image builder", + "my images", + "gold image", + "template image", + "vm template", + "image template", + "blueprint", + "image", + "builder", + "images", + "build", + "image-builder", + "insights", + "Build image", + "image builder", + "gold image", + "blueprint", + "template image", + "vm template", + "image template", + "vmware template", + "packer build", + "packer template", + "RHEL AMI", + "RHEL machine image", + "azure", + "aws", + "build", + "assemble", + "image-builder" + ] }, { "title": "System Configuration", @@ -53,17 +90,56 @@ "id": "rhc", "appId": "connector", "title": "Remote Host Configuration (RHC)", - "href": "/settings/connector", + "href": "/insights/connector", "product": "Red Hat Insights", - "description": "Configure your systems to execute Ansible Playbooks." + "subtitle": "Red Hat Insights for RHEL", + "description": "Configure your systems to execute Ansible Playbooks.", + "alt_title": [ + "Remote host configuration", + "connect systems", + "connection options", + "connect settings", + "settings", + "Register", + "rhc", + "RHC", + "rhcd" + ] }, { "id": "activationKeys", "appId": "connector", "title": "Activation keys", - "href": "/settings/connector/activation-keys", + "href": "/insights/connector/activation-keys", + "product": "Red Hat Insights", + "subtitle": "Red Hat Insights for RHEL", + "description": "Create activation keys to register your systems and configure repositories without using a username and password.", + "alt_title": [ + "Subscription key", + "sca", + "simple content access", + "activate", + "register", + "AK", + "repositories", + "system purpose", + "sla", + "content" + ] + }, + { + "id": "stalenessAndCulling", + "appId": "inventory", + "title": "Staleness and Culling", + "href": "/insights/inventory/staleness-and-culling", "product": "Red Hat Insights", - "description": "Create activation keys to register your systems and configure repositories without using a username and password." + "description": "Inventory Host Staleness and Culling", + "permissions": [ + { + "method": "featureFlag", + "args": ["hbi.custom-staleness", true] + } + ] } ] } @@ -79,20 +155,55 @@ "title": "Advisories", "href": "/insights/patch/advisories", "product": "Red Hat Insights", - "description": "View applicable advisories and updates for your Red Hat Enterprise Linux systems." + "subtitle": "Red Hat Insights for RHEL", + "description": "View applicable advisories and updates for your Red Hat Enterprise Linux systems.", + "alt_title": [ + "Errata", + "patch", + "updates", + "insights" + ] }, { "appId": "patch", "title": "Packages", "href": "/insights/patch/packages", - "product": "Red Hat Insights" + "product": "Red Hat Insights", + "subtitle": "Red Hat Insights for RHEL" }, { + "id": "repositories", "appId": "contentSources", "title": "Repositories", - "href": "/settings/content", + "href": "/insights/content", "product": "Red Hat Insights", - "isBeta": true + "subtitle": "Red Hat Insights for RHEL", + "alt_title": [ + "Content", + "custom content", + "my content", + "my repos", + "repos", + "repo", + "repositories", + "repository", + "insights", + "repository sets", + "popular", + "Red hat repositories", + "Snapshots", + "compare", + "custom content", + "Red hat repositories", + "popular", + "nvidia", + "epel", + "add repositories", + "introspect", + "content", + "dnf", + "yum" + ] }, { "title": "Patch", @@ -128,7 +239,27 @@ "title": "Recommendations", "href": "/insights/advisor/recommendations", "product": "Red Hat Insights", - "description": "View details about your Red Hat Enterprise Linux systems." + "description": "View details about your Red Hat Enterprise Linux systems.", + "alt_title": [ + "Rules", + "recommendations", + "insights", + "configuration", + "security", + "stability", + "performance", + "advisor", + "incidents", + "recommendations", + "configuration", + "pathways", + "critical", + "upgrade", + "upgrade risk", + "incident", + "recommendation", + "pathway" + ] }, { "id": "advisorSystems", @@ -166,9 +297,12 @@ ] }, { + "id": "policies", "appId": "policies", "title": "Policies", - "href": "/insights/policies" + "href": "/insights/policies", + "subtitle": "Red Hat Insights for RHEL", + "description": "Monitor your RHEL hosts against set parameters to detect deviation or misalignment." } ] }, @@ -177,15 +311,18 @@ "expandable": true, "routes": [ { + "id": "vulnerability", "title": "Vulnerability", "expandable": true, + "subtitle": "Red Hat Insights for RHEL", "routes": [ { - "id": "vulnerability", + "id": "cves", "appId": "vulnerability", "title": "CVEs", "href": "/insights/vulnerability/cves", "product": "Red Hat Insights", + "subtitle": "Red Hat Insights for RHEL", "description": "Identify and prioritize security vulnerabilities within your Red Hat Enterprise Linux systems based on severity and frequency." }, { @@ -202,6 +339,35 @@ "href": "/insights/vulnerability/systems", "product": "Red Hat Insights" } + ], + "alt_title": [ + "CVEs", + "CVE", + "Security", + "Vulnerability", + "Vulnerability Management", + "insights", + "Vulnerable", + "exposure", + "Weakness", + "compliance", + "security gap", + "breach", + "Hearltbleed", + "Spectre", + "Patch", + "security", + "vulnerabilities", + "cve", + "common vulnerability exposure", + "cvss", + "risk", + "critical", + "security rule", + "errata", + "affected but not vulnerable", + "severity", + "CVE-" ] }, { @@ -214,7 +380,28 @@ "title": "Reports", "href": "/insights/compliance/reports", "product": "Red Hat Insights", - "description": "Evaluate your Red Hat Enterprise systems’ compliance with security or regulatory standards." + "description": "Evaluate your Red Hat Enterprise systems’ compliance with security or regulatory standards.", + "alt_title": [ + "Compliance", + "security", + "policies", + "SCAP", + "policy", + "insights", + "regulatory", + "regulations", + "OpenSCAP", + "PCI", + "HIPAA", + "DSS", + "CSI", + "C2S", + "rules", + "DISA STIG", + "PCI-DSS", + "NIST", + "OSPP" + ] }, { "id": "scapPolicies", @@ -283,7 +470,30 @@ "title": "Subscription Inventory", "href": "/insights/subscriptions/inventory", "product": "Subscription Watch", - "description": "List your purchased subscriptions and view more information about each one." + "subtitle": "Red Hat Insights for RHEL", + "description": "List your purchased subscriptions and view more information about each one.", + "alt_title": [ + "subscription", + "subscriptions", + "subscription list", + "subscription inventory", + "inventory", + "Red Hat Subscription Management", + "yearly", + "on-demand", + "contract", + "purchase", + "annual", + "BYOS", + "bring your own subscription", + "PAYG", + "pay as you go", + "renew", + "renewals", + "expiring", + "expiration", + "expired" + ] }, { "id": "manifests", @@ -291,7 +501,14 @@ "title": "Manifests", "href": "/insights/subscriptions/manifests", "product": "Subscription Watch", - "description": "Export subscription manifests for Red Hat Satellite." + "subtitle": "Red Hat Insights for RHEL", + "description": "Export subscription manifests for Red Hat Satellite.", + "alt_title": [ + "manifests", + "subscription allocations", + "distributors", + "Satellite" + ] }, { "id": "subscriptionsDocumentation", @@ -308,7 +525,21 @@ "title": "Resource Optimization", "href": "/insights/ros", "product": "Red Hat Insights", - "description": "Optimize your public cloud-based Red Hat Enterprise Linux systems based on CPU, memory, and disk input/output performance." + "subtitle": "Red Hat Insights for RHEL", + "description": "Optimize your public cloud-based Red Hat Enterprise Linux systems based on CPU, memory, and disk input/output performance.", + "alt_title": [ + "optimization", + "optimisation", + "optimize", + "optimise", + "usage", + "utilization", + "utilisation", + "save", + "savings", + "resource optimization", + "resource optimisation" + ] } ] }, @@ -322,14 +553,29 @@ "title": "Remediations", "href": "/insights/remediations", "product": "Red Hat Insights", - "description": "Use Ansible Playbooks to resolve configuration, security, and compliance issues identified on your Red Hat Enterprise Linux systems." + "subtitle": "Red Hat Insights for RHEL", + "description": "Use Ansible Playbooks to resolve configuration, security, and compliance issues identified on your Red Hat Enterprise Linux systems.", + "alt_title": [ + "Remediate", + "playbook", + "fix", + "solve", + "find it fix it", + "fifi", + "cloud connector", + "insights", + "automation", + "Ansible", + "patch" + ] }, { "id": "tasks", "appId": "tasks", "title": "Tasks", "href": "/insights/tasks", - "product": "Red Hat Insights" + "product": "Red Hat Insights", + "subtitle": "Red Hat Insights for RHEL" } ] }, @@ -340,31 +586,16 @@ "filterable": false, "href": "/insights/registration", "product": "Red Hat Insights", + "subtitle": "Red Hat Insights for RHEL", "description": "Register your systems with the Red Hat Insights Client to view them on the Red Hat Hybrid Cloud Console." }, { - "title": "Product Materials", - "expandable": true, - "routes": [ - { - "id": "productMaterialDocumentation", - "title": "Documentation", - "isExternal": true, - "href": "https://access.redhat.com/documentation/en-us/red_hat_insights/" - }, - { - "id": "securityInformation", - "title": "Security Information", - "href": "https://www.redhat.com/en/technologies/management/insights/data-application-security", - "isExternal": true - }, - { - "id": "apis", - "appId": "apiDocs", - "title": "APIs", - "href": "/docs/api" - } - ] + "id": "learningResources", + "appId": "learningResources", + "title": "Learning Resources", + "filterable": false, + "href": "/insights/learning-resources", + "product": "Red Hat Insights" } ] } diff --git a/static/beta/prod/navigation/settings-navigation.json b/static/beta/prod/navigation/settings-navigation.json index de305a6d..792a5db8 100644 --- a/static/beta/prod/navigation/settings-navigation.json +++ b/static/beta/prod/navigation/settings-navigation.json @@ -33,18 +33,30 @@ "credentials" ] }, - { - "id": "repositories", - "appId": "contentSources", - "title": "Repositories", - "href": "/settings/content" - }, { "id": "integrations", "appId": "notifications", "title": "Integrations", "description": "Route event-triggered notifications to your preferred third-party tools and platforms, such as Splunk and ServiceNow.", - "href": "/settings/integrations" + "href": "/settings/integrations", + "alt_title":[ + "integrations", + "Splunk", + "Service Now", + "SNOW", + "integrate", + "webhook", + "Slack", + "Google Chat", + "Microsoft Teams", + "third party integration", + "event driven", + "alerting", + "automation", + "operational workflow", + "google spaces", + "ms teams" + ] }, { "title": "Notifications", @@ -71,54 +83,6 @@ } ] }, - { - "title": "Remote Host Configuration", - "expandable": true, - "routes": [ - { - "id": "manageConfiguration", - "appId": "connector", - "title": "Manage configuration", - "href": "/settings/connector", - "description": "Configure your systems to execute Ansible Playbooks." - }, - { - "id": "activationKeys", - "appId": "connector", - "title": "Activation Keys", - "href": "/settings/connector/activation-keys", - "description": "Create activation keys to register your systems and configure repositories without using a username and password." - } - ] - }, - { - "title": "Applications", - "expandable": true, - "permissions": [ - { - "method": "isOrgAdmin", - "apps": [ - "cost-management" - ] - } - ], - "routes": [ - { - "id": "costManagement", - "appId": "applications", - "title": "Cost Management", - "href": "/settings/applications/cost-management", - "permissions": [ - { - "method": "isEntitled", - "args": [ - "cost_management" - ] - } - ] - } - ] - }, { "id": "learningResources", "appId": "learningResources", diff --git a/static/beta/prod/navigation/staging-navigation.json b/static/beta/prod/navigation/staging-navigation.json index 8ae634e3..f2a248c0 100644 --- a/static/beta/prod/navigation/staging-navigation.json +++ b/static/beta/prod/navigation/staging-navigation.json @@ -3,9 +3,9 @@ "title": "Staging Bundle", "navItems": [ { - "id": "starter", + "id": "frontend-starter-app", "title": "Starter App", - "appId": "starter", + "appId": "frontend-starter-app", "href": "/staging/starter" } ] diff --git a/static/beta/prod/services/services.json b/static/beta/prod/services/services.json index 17597ab5..69ac0f3c 100644 --- a/static/beta/prod/services/services.json +++ b/static/beta/prod/services/services.json @@ -16,10 +16,27 @@ "icon": "AutomationIcon", "description": "Solve problems once, in one place, and scale up.", "links": [ - "ansible.automationAnalytics", - "ansible.collections", - "ansible.inventory", - "ansible.remediations" + { + "isGroup": true, + "id": "ansible", + "title": "Ansible", + "links": [ + "ansible.automationAnalytics", + "ansible.collections", + "ansible.inventory", + "ansible.remediations", + "ansible.tasks" + ] + }, + { + "isGroup": true, + "id": "rhel", + "title": "RHEL", + "links": [ + "rhel.remediations", + "rhel.tasks" + ] + } ] }, { @@ -68,7 +85,6 @@ "description": "Manage the lifecycle and enhance security of your RHEL systems at the edge." }, "rhel.imageBuilder", - "settings.repositories", "quay.quay" ] }, @@ -91,7 +107,8 @@ "links": [ "openshift.clusters", "openshift.overview", - "openshift.releases" + "openshift.releases", + "rhel.inventory" ] }, { @@ -151,8 +168,18 @@ "isGroup": true, "title": "Ansible", "links": [ - "ansible.recommendations", - "ansible.comparision", + { + "href": "/ansible/advisor/recommendations", + "title": "Advisor Recommendations", + "subtitle": "Red Hat Insights for Ansible", + "description": "See targeted recommendations to optimize your Ansible hosts’ availability, performance, and security." + }, + { + "title": "Drift Comparison", + "href": "/ansible/drift", + "subtitle": "Red Hat Insights for Ansible", + "description": "Compare systems in your Ansible inventory to one another or against a set baseline." + }, "ansible.policies" ] }, @@ -161,8 +188,18 @@ "isGroup": true, "title": "OpenShift", "links": [ - "openshift.recommendations", - "openshift.cves" + { + "href": "/openshift/insights/advisor/recommendations", + "title": "Advisor Recommendations", + "subtitle": "Red Hat Insights for OpenShift", + "description": "See targeted recommendations to optimize your OpenShift clusters’ availability, performance, and security." + }, + { + "href": "/openshift/insights/vulnerability/cves", + "title": "Vulnerability Dashboard", + "subtitle": "Red Hat Insights for OpenShift", + "description": "Identify and prioritize security vulnerabilities within your OpenShift clusters based on severity and frequency." + } ] }, { @@ -170,15 +207,29 @@ "isGroup": true, "title": "RHEL", "links": [ - "rhel.recommendations", - "rhel.imageBuilder", - "rhel.vulnerability", - "rhel.complianceReports", - "rhel.signatures", - "rhel.activationKeys", - "rhel.rhc", - "rhel.subscriptionsInventory", - "rhel.manifests", + { + "href": "/insights/advisor/recommendations", + "title": "Advisor Recommendations", + "subtitle": "Red Hat Insights for RHEL", + "description": "View details about your Red Hat Enterprise Linux systems." + }, + "rhel.advisories", + "rhel.remediations", + "rhel.packages", + "rhel.repositories", + { + "href": "/insights/drift", + "title": "Drift Comparison", + "subtitle": "Red Hat Insights for RHEL", + "description": "Compare systems in your Red Hat Enterprise Linux inventory to one another or against a set baseline." + }, + { + "href": "/insights/patch/templates", + "title": "Patch Templates", + "subtitle": "Red Hat Insights for RHEL" + }, + "rhel.tasks", + "rhel.policies", "rhel.ros" ] } @@ -211,20 +262,44 @@ "isGroup": true, "title": "OpenShift", "links": [ - "openshift.cves" + { + "href": "/openshift/insights/vulnerability/cves", + "title": "Vulnerability Dashboard", + "subtitle": "Red Hat Insights for OpenShift" + } ] }, { "isGroup": true, "title": "RHEL", "links": [ - "rhel.recommendations", + { + "href": "/insights/advisor/recommendations", + "title": "Advisor Recommendations", + "subtitle": "Red Hat Insights for RHEL", + "description": "View details about your Red Hat Enterprise Linux systems." + }, "rhel.advisories", - "rhel.complianceReports", + { + "href": "/insights/compliance/reports", + "title": "Compliance", + "subtitle":"Red Hat Insights for RHEL", + "description": "Evaluate your Red Hat Enterprise systems’ compliance with security or regulatory standards." + }, "edge.groups", - "rhel.signatures", + { + "href": "/insights/malware/signatures", + "title": "Malware", + "subtitle": "Red Hat Insights for RHEL", + "description": "Identify potential malware on your Red Hat Enterprise Linux systems." + }, "rhel.remediations", - "rhel.vulnerability" + { + "href": "/insights/vulnerability/cves", + "title": "Vulnerability", + "subtitle": "Red Hat Insights for RHEL", + "description": "Identify and prioritize security vulnerabilities within your Red Hat Enterprise Linux systems based on severity and frequency." + } ] }, { @@ -236,6 +311,66 @@ } ] }, + { + "id": "operations", + "title": "Operations", + "icon": "MonitoringIcon", + "links": [ + { + "id": "ansible", + "isGroup": true, + "title": "Ansible", + "links": [ + { + "href": "/ansible/advisor/recommendations", + "title": "Advisor Recommendations", + "subtitle": "Red Hat Insights for Ansible", + "description": "See targeted recommendations to optimize your Ansible hosts’ availability, performance, and security." + }, + { + "href": "/ansible/drift", + "title": "Drift Comparison", + "subtitle": "Red Hat Insights for Ansible", + "description": "Compare systems in your Ansible inventory to one another or against a set baseline." + }, + "ansible.policies" + ] + }, + { + "isGroup": true, + "id": "openshift", + "title": "OpenShift", + "links": [ + { + "href": "/openshift/insights/advisor/recommendations", + "title": "Advisor Recommendations", + "subtitle": "Red Hat Insights for OpenShift", + "description": "See targeted recommendations to optimize your OpenShift clusters’ availability, performance, and security." + } + ] + }, + { + "isGroup": true, + "id": "rhel", + "title": "RHEL", + "links": [ + { + "href": "/insights/advisor/recommendations", + "title": "Advisor Recommendations", + "subtitle": "Red Hat Insights for RHEL", + "description": "See targeted recommendations to optimize your Red Hat Enterprise Linux hosts’ availability, performance, and security." + }, + { + "href": "/insights/drift", + "title": "Drift Comparison", + "subtitle": "Red Hat Insights for RHEL", + "description": "Compare systems in your Red Hat Enterprise Linux inventory to one another or against a set baseline." + }, + "rhel.policies" + ] + } + ] + }, { "id": "spendManagement", "icon": "CreditCardIcon", @@ -243,8 +378,7 @@ "description": "Control costs and monitor committed spend.", "links": [ "openshift.costManagement", - "rhel.subscriptionsInventory", - "rhel.resourceOptimization", + "rhel.ros", "business-services.hybridCommittedSpend" ] }, @@ -254,10 +388,16 @@ "title": "System Configuration", "description": "Connect your RHEL systems to Hybrid Cloud Console services.", "links": [ - "settings.activationKeys", + "rhel.activationKeys", "rhel.manifests", "rhel.registerSystems", - "settings.manageConfiguration" + "settings.manageConfiguration", + { + "href": "/insights/connector", + "title": "Remote Host Configuration", + "subtitle": "Red Hat Insights for RHEL", + "description": "Configure your systems to execute Ansible Playbooks." + } ] }, { diff --git a/static/beta/stage/main.yml b/static/beta/stage/main.yml index aeb40a08..10ee8eb7 100644 --- a/static/beta/stage/main.yml +++ b/static/beta/stage/main.yml @@ -96,6 +96,13 @@ edge: - v1 isBeta: true +idmsvc: + title: "Directory & Domain Services" + api: + versions: + - v1 + isBeta: true + image-builder: title: Image Builder api: diff --git a/static/beta/stage/modules/fed-modules.json b/static/beta/stage/modules/fed-modules.json index 986f176a..bd3cfe1d 100644 --- a/static/beta/stage/modules/fed-modules.json +++ b/static/beta/stage/modules/fed-modules.json @@ -30,13 +30,16 @@ }, { "pathname": "/user-preferences/notifications" + }, + { + "pathname": "/settings/notifications/user-preferences" } ] } ] }, "learningResources": { - "manifestLocation": "/apps/learningResources/fed-mods.json", + "manifestLocation": "/apps/learning-resources/fed-mods.json", "defaultDocumentTitle": "Learning Resources", "modules": [ { @@ -78,6 +81,18 @@ "props": { "bundle": "iam" } + }, + { + "pathname": "/hac/learning-resources", + "props": { + "bundle": "hac" + } + }, + { + "pathname": "/subscriptions/learning-resources", + "props": { + "bundle": "subscriptions" + } } ] } @@ -214,7 +229,7 @@ "module": "./RootApp", "routes": [ { - "pathname": "/settings/connector" + "pathname": "/insights/connector" } ] } @@ -453,9 +468,8 @@ "id": "insights-subscriptions", "module": "./RootApp", "routes": [ - { - "pathname": "/insights/subscriptions" - } + {"pathname": "/insights/subscriptions"}, + {"pathname": "/subscriptions/usage"} ] }, { @@ -476,8 +490,24 @@ "id": "subscription-inventory", "module": "./RootApp", "routes": [ + {"pathname": "/insights/subscriptions/inventory"}, + {"pathname": "/subscriptions/inventory"} + ] + } + ] + }, + "subscriptionsDashboardUi": { + "manifestLocation": "/apps/subscriptions-dashboard-ui/fed-mods.json", + "modules": [ + { + "id": "subscriptions-dashboard-ui", + "module": "./RootApp", + "routes": [ + { + "pathname": "/subscriptions" + }, { - "pathname": "/insights/subscriptions/inventory" + "pathname": "/subscriptions/overview" } ] } @@ -490,9 +520,8 @@ "id": "manifests", "module": "./RootApp", "routes": [ - { - "pathname": "/insights/subscriptions/manifests" - } + {"pathname": "/insights/subscriptions/manifests"}, + {"pathname": "/subscriptions/manifests" } ] } ] @@ -567,6 +596,9 @@ }, "ansibleDashboard": { "manifestLocation": "/apps/ansible-dashboard/fed-mods.json", + "analytics": { + "APIKey": "WVTevO2VIHB27gmOUJcAdR9bj7XoSw0e" + }, "modules": [ { "id": "ansible-dashboard", @@ -613,6 +645,9 @@ }, "automationHub": { "manifestLocation": "/apps/automation-hub/fed-mods.json", + "analytics": { + "APIKey": "WVTevO2VIHB27gmOUJcAdR9bj7XoSw0e" + }, "modules": [ { "id": "ansible-automation-hub", @@ -627,6 +662,9 @@ }, "automationAnalytics": { "manifestLocation": "/apps/automation-analytics/fed-mods.json", + "analytics": { + "APIKey": "WVTevO2VIHB27gmOUJcAdR9bj7XoSw0e" + }, "modules": [ { "id": "ansible-automation-analytics", @@ -771,11 +809,11 @@ } ] }, - "starter": { - "manifestLocation": "/apps/starter/fed-mods.json", + "frontend-starter-app": { + "manifestLocation": "/apps/frontend-starter-app/fed-mods.json", "modules": [ { - "id": "starter", + "id": "frontend-starter-app", "module": "./RootApp", "routes": [ { @@ -919,14 +957,18 @@ }, "hybridCommittedSpend": { "manifestLocation": "/apps/hybrid-committed-spend/fed-mods.json", + "config": { + "ssoScopes": [ + "api.billing.hcs_reports" + ] + }, "modules": [ { "id": "hybrid-committed-spend", "module": "./RootApp", "routes": [ - { - "pathname": "/business-services/hybrid-committed-spend" - } + {"pathname": "/business-services/hybrid-committed-spend"}, + {"pathname": "/subscriptions/hybrid-committed-spend"} ] } ] @@ -963,8 +1005,23 @@ } ] }, - "seatsAdmin": { - "manifestLocation": "/apps/seats-admin/fed-mods.json", + "idmsvc": { + "manifestLocation": "/apps/idmsvc/fed-mods.json", + "defaultDocumentTitle": "Directory & Domain Services", + "modules": [ + { + "id": "idmsvc", + "module": "./RootApp", + "routes": [ + { + "pathname": "/settings/idmsvc" + } + ] + } + ] + }, + "seatsAdminUi": { + "manifestLocation": "/apps/seats-admin-ui/fed-mods.json", "config": { "ssoScopes": [ "api.iam.access" @@ -982,6 +1039,20 @@ } ] }, + "serviceAccounts": { + "manifestLocation": "/apps/service-accounts/fed-mods.json", + "modules": [ + { + "id": "service-accounts", + "module": "./RootApp", + "routes": [ + { + "pathname": "/iam/service-accounts" + } + ] + } + ] + }, "quay-ui-plugin": { "manifestLocation": "/apps/quay/plugin-manifest.json", "modules": [ diff --git a/static/beta/stage/navigation/ansible-navigation.json b/static/beta/stage/navigation/ansible-navigation.json index 565e7acc..13fe1b17 100644 --- a/static/beta/stage/navigation/ansible-navigation.json +++ b/static/beta/stage/navigation/ansible-navigation.json @@ -107,7 +107,7 @@ ] }, { - "id": "seatsAdministrators", + "id": "seatsAdminUi", "appId": "ansibleSeatsAdmin", "title": "Seats Administration", "filterable": false, @@ -143,7 +143,24 @@ "title": "Recommendations", "href": "/ansible/advisor/recommendations", "product": "Red Hat Insights", - "description": "See targeted recommendations to optimize your Ansible hosts’ availability, performance, and security." + "description": "See targeted recommendations to optimize your Ansible hosts’ availability, performance, and security.", + "alt_title": [ + "Rules", + "recommendations", + "Configuration", + "security", + "stability", + "performance", + "advisor", + "incidents", + "pathways", + "critical", + "upgrade", + "upgrade risk", + "incident", + "recommendation", + "pathway" + ] }, { "id": "systems", @@ -187,7 +204,19 @@ "appId": "policies", "title": "Policies", "href": "/ansible/policies", - "description": "Monitor your Ansible hosts against set parameters to detect deviation or misalignment." + "description": "Monitor your Ansible hosts against set parameters to detect deviation or misalignment.", + "subtitle": "Red Hat Insights for Ansible", + "alt_title": [ + "Policies", + "Policy", + "notifications", + "notify", + "integration", + "conditions", + "alerts", + "events", + "raise alerts on system configuration changes" + ] } ] }, diff --git a/static/beta/stage/navigation/application-pipeline-navigation.json b/static/beta/stage/navigation/application-pipeline-navigation.json index 25d6dbcb..783c6add 100644 --- a/static/beta/stage/navigation/application-pipeline-navigation.json +++ b/static/beta/stage/navigation/application-pipeline-navigation.json @@ -6,6 +6,12 @@ "id": "flatNav", "title": "Flat nav", "dynamicNav": "hacCore" + }, + { + "id": "learningResources", + "appId": "applicationServices", + "title": "Learning Resources", + "href": "/hac/learning-resources" } ] } diff --git a/static/beta/stage/navigation/application-services-navigation.json b/static/beta/stage/navigation/application-services-navigation.json index c94c52ed..5b4c6cfa 100644 --- a/static/beta/stage/navigation/application-services-navigation.json +++ b/static/beta/stage/navigation/application-services-navigation.json @@ -60,7 +60,22 @@ "appId": "trustedContent", "title": "Trusted Content", "href": "/application-services/trusted-content", - "description": "Increase trust and integrity in source code and accelerate the application development process." + "description": "Increase trust and integrity in source code and accelerate the application development process.", + "alt_title": [ + "software supply chain", + "vulnerability", + "security", + "risk management", + "oss", + "trusted", + "content", + "CRDA", + "VEX", + "SBOM", + "source code", + "remediation", + "software composition" + ] } ] }, diff --git a/static/beta/stage/navigation/business-services-navigation.json b/static/beta/stage/navigation/business-services-navigation.json index 4f81fd22..7edd8de3 100644 --- a/static/beta/stage/navigation/business-services-navigation.json +++ b/static/beta/stage/navigation/business-services-navigation.json @@ -14,16 +14,7 @@ "id": "overview", "appId": "hybridCommittedSpend", "title": "Overview", - "href": "/business-services/hybrid-committed-spend", - "permissions": [ - { - "method": "apiRequest", - "args": [{ - "url": "https://billing.qa.api.redhat.com/v1/authorization/hcsEnrollment", - "accessor": "hcsDeal" - }] - } - ] + "href": "/business-services/hybrid-committed-spend" }, { "id": "details", diff --git a/static/beta/stage/navigation/edge-navigation.json b/static/beta/stage/navigation/edge-navigation.json index 7a916a3b..74dad812 100644 --- a/static/beta/stage/navigation/edge-navigation.json +++ b/static/beta/stage/navigation/edge-navigation.json @@ -40,6 +40,12 @@ } ] }, + { + "id": "learningResources", + "appId": "learningResources", + "title": "Learning Resources", + "href": "/edge/learning-resources" + }, { "title": "Manage Images", "expandable": true, @@ -71,19 +77,6 @@ ] } ] - }, - { - "id": "learningResources", - "title": "Learning Resources", - "appId": "learningResources", - "filterable": false, - "href": "/edge/learning-resources", - "permissions": [ - { - "method": "withEmail", - "args": ["@redhat.com", "@sbb.ch"] - } - ] } ] } diff --git a/static/beta/stage/navigation/iam-navigation.json b/static/beta/stage/navigation/iam-navigation.json index 6814ebd2..3bc3d223 100644 --- a/static/beta/stage/navigation/iam-navigation.json +++ b/static/beta/stage/navigation/iam-navigation.json @@ -82,11 +82,31 @@ } ] }, + { + "title": "Service Accounts", + "appId": "serviceAccounts", + "href": "/iam/service-accounts" + }, { "id": "learningResources", "appId": "learningResources", "title": "Learning Resources", "href": "/iam/learning-resources" } + ], + "alt_title": [ + "Authentication Policy", + "2FA", + "Identity and Access Management", + "IAM", + "User Access", + "User Management", + "access management", + "rbac", + "2FA", + "two factor auth", + "two factor authentication", + "two-factor auth", + "two-factor authentication" ] } diff --git a/static/beta/stage/navigation/openshift-navigation.json b/static/beta/stage/navigation/openshift-navigation.json index 6bbb7b23..919d4ee8 100644 --- a/static/beta/stage/navigation/openshift-navigation.json +++ b/static/beta/stage/navigation/openshift-navigation.json @@ -10,6 +10,12 @@ "product": "Red Hat OpenShift Cluster Manager", "description": "View, Register, or Create an OpenShift Cluster." }, + { + "id": "learningResources", + "appId": "learningResources", + "title": "Learning Resources", + "href": "/openshift/learning-resources" + }, { "id": "overview", "appId": "openshift", @@ -19,12 +25,6 @@ "product": "Red Hat OpenShift Cluster Manager", "description": "Overview of your OpenShift Environment." }, - { - "id": "learningResources", - "appId": "learningResources", - "title": "Learning Resources", - "href": "/openshift/learning-resources" - }, { "id": "releases", "appId": "openshift", @@ -140,7 +140,8 @@ "title": "Overview", "filterable": false, "href": "/openshift/cost-management", - "product": "Red Hat Cost Management" + "product": "Red Hat Cost Management", + "subtitle": "Red Hat Insights for OpenShift" }, { "id": "costManagementOptimizations", @@ -202,7 +203,13 @@ "appId": "costManagement", "title": "Cost Models", "href": "/openshift/cost-management/cost-models", - "product": "Red Hat Cost Management" + "product": "Red Hat Cost Management", + "permissions": [ + { + "method": "featureFlag", + "args": ["cost-management.ui.nav.settings", false] + } + ] }, { "id": "costExplorer", @@ -233,13 +240,6 @@ "title": "Red Hat Marketplace", "href": "https://marketplace.redhat.com", "isExternal": true - }, - { - "id": "documentation", - "href": "https://access.redhat.com/documentation/en-us/openshift_cluster_manager/", - "title": "Documentation", - "filterable": false, - "isExternal": true } ] } diff --git a/static/beta/stage/navigation/quay-navigation.json b/static/beta/stage/navigation/quay-navigation.json index 63bc7f72..c74489c4 100644 --- a/static/beta/stage/navigation/quay-navigation.json +++ b/static/beta/stage/navigation/quay-navigation.json @@ -42,5 +42,49 @@ } ] } + ], + "alt_title": [ + "artifact", + "clair", + "container", + "container image", + "Container image distribution and replication", + "Container image hosting platform", + "Container image management platform", + "Container image replication and synchronization", + "Container image repository and hosting", + "Container image scanning and vulnerability management", + "Container image storage", + "Container image versioning and tagging", + "container registry", + "Container registry solution", + "Container security and compliance", + "cosign", + "CRI-O", + "CVE", + "digest", + "docker", + "Docker container management", + "helm", + "image pull", + "image push", + "image tag", + "Kubernetes container registry", + "manifest", + "OCI", + "podman", + "Private container registry solution", + "Quay", + "quay.io", + "registry", + "repository", + "sbom", + "scanner", + "scanning", + "Secure container registry", + "security scan", + "tag", + "vulnerability", + "vulnerability scanning" ] } diff --git a/static/beta/stage/navigation/rhel-navigation.json b/static/beta/stage/navigation/rhel-navigation.json index ed13cfcc..207cddbb 100644 --- a/static/beta/stage/navigation/rhel-navigation.json +++ b/static/beta/stage/navigation/rhel-navigation.json @@ -15,13 +15,15 @@ "expandable": true, "id": "inventory", "description": "View details about your Red Hat Enterprise Linux systems.", + "subtitle": "Red Hat Insights for RHEL", "routes": [ { "id": "systems", "appId": "inventory", "title": "Systems", "href": "/insights/inventory", - "product": "Red Hat Insights" + "product": "Red Hat Insights", + "subtitle": "Red Hat Insights for RHEL" }, { "id": "groups", @@ -43,7 +45,42 @@ "title": "Images", "href": "/insights/image-builder", "product": "Red Hat Insights", - "description": "Build and manage Red Hat Enterprise Linux images and environments." + "subtitle": "Red Hat Insights for RHEL", + "description": "Build and manage Red Hat Enterprise Linux images and environments.", + "alt_title": [ + "Images", + "image", + "image builder", + "my images", + "gold image", + "template image", + "vm template", + "image template", + "blueprint", + "image", + "builder", + "images", + "build", + "image-builder", + "insights", + "Build image", + "image builder", + "gold image", + "blueprint", + "template image", + "vm template", + "image template", + "vmware template", + "packer build", + "packer template", + "RHEL AMI", + "RHEL machine image", + "azure", + "aws", + "build", + "assemble", + "image-builder" + ] }, { "title": "System Configuration", @@ -53,17 +90,56 @@ "id": "rhc", "appId": "connector", "title": "Remote Host Configuration (RHC)", - "href": "/settings/connector", + "href": "/insights/connector", "product": "Red Hat Insights", - "description": "Configure your systems to execute Ansible Playbooks." + "subtitle": "Red Hat Insights for RHEL", + "description": "Configure your systems to execute Ansible Playbooks.", + "alt_title": [ + "Remote host configuration", + "connect systems", + "connection options", + "connect settings", + "settings", + "Register", + "rhc", + "RHC", + "rhcd" + ] }, { "id": "activationKeys", "appId": "connector", "title": "Activation Keys", - "href": "/settings/connector/activation-keys", + "href": "/insights/connector/activation-keys", "product": "Red Hat Insights", - "description": "Create activation keys to register your systems and configure repositories without using a username and password." + "subtitle": "Red Hat Insights for RHEL", + "description": "Create activation keys to register your systems and configure repositories without using a username and password.", + "alt_title": [ + "Subscription key", + "sca", + "simple content access", + "activate", + "register", + "AK", + "repositories", + "system purpose", + "sla", + "content" + ] + }, + { + "id": "stalenessAndCulling", + "appId": "inventory", + "title": "Staleness and Culling", + "href": "/insights/inventory/staleness-and-culling", + "product": "Red Hat Insights", + "description": "Inventory Host Staleness and Culling", + "permissions": [ + { + "method": "featureFlag", + "args": ["hbi.custom-staleness", true] + } + ] } ] } @@ -79,20 +155,55 @@ "title": "Advisories", "href": "/insights/patch/advisories", "product": "Red Hat Insights", - "description": "View applicable advisories and updates for your Red Hat Enterprise Linux systems." + "subtitle": "Red Hat Insights for RHEL", + "description": "View applicable advisories and updates for your Red Hat Enterprise Linux systems.", + "alt_title": [ + "Errata", + "patch", + "updates", + "insights" + ] }, { "appId": "patch", "title": "Packages", "href": "/insights/patch/packages", - "product": "Red Hat Insights" + "product": "Red Hat Insights", + "subtitle": "Red Hat Insights for RHEL" }, { + "id": "repositories", "appId": "contentSources", "title": "Repositories", - "href": "/settings/content", + "href": "/insights/content", "product": "Red Hat Insights", - "isBeta": true + "subtitle": "Red Hat Insights for RHEL", + "alt_title": [ + "Content", + "custom content", + "my content", + "my repos", + "repos", + "repo", + "repositories", + "repository", + "insights", + "repository sets", + "popular", + "Red hat repositories", + "Snapshots", + "compare", + "custom content", + "Red hat repositories", + "popular", + "nvidia", + "epel", + "add repositories", + "introspect", + "content", + "dnf", + "yum" + ] }, { "title": "Patch", @@ -128,7 +239,27 @@ "title": "Recommendations", "href": "/insights/advisor/recommendations", "product": "Red Hat Insights", - "description": "View details about your Red Hat Enterprise Linux systems." + "description": "View details about your Red Hat Enterprise Linux systems.", + "alt_title": [ + "Rules", + "recommendations", + "insights", + "configuration", + "security", + "stability", + "performance", + "advisor", + "incidents", + "recommendations", + "configuration", + "pathways", + "critical", + "upgrade", + "upgrade risk", + "incident", + "recommendation", + "pathway" + ] }, { "id": "advisorSystems", @@ -166,9 +297,12 @@ ] }, { + "id": "policies", "appId": "policies", "title": "Policies", - "href": "/insights/policies" + "href": "/insights/policies", + "subtitle": "Red Hat Insights for RHEL", + "description": "Monitor your RHEL hosts against set parameters to detect deviation or misalignment." } ] }, @@ -177,15 +311,18 @@ "expandable": true, "routes": [ { + "id": "vulnerability", "title": "Vulnerability", "expandable": true, + "subtitle": "Red Hat Insights for RHEL", "routes": [ { - "id": "vulnerability", + "id": "cves", "appId": "vulnerability", "title": "CVEs", "href": "/insights/vulnerability/cves", "product": "Red Hat Insights", + "subtitle": "Red Hat Insights for RHEL", "description": "Identify and prioritize security vulnerabilities within your Red Hat Enterprise Linux systems based on severity and frequency." }, { @@ -202,6 +339,35 @@ "href": "/insights/vulnerability/systems", "product": "Red Hat Insights" } + ], + "alt_title": [ + "CVEs", + "CVE", + "Security", + "Vulnerability", + "Vulnerability Management", + "insights", + "Vulnerable", + "exposure", + "Weakness", + "compliance", + "security gap", + "breach", + "Hearltbleed", + "Spectre", + "Patch", + "security", + "vulnerabilities", + "cve", + "common vulnerability exposure", + "cvss", + "risk", + "critical", + "security rule", + "errata", + "affected but not vulnerable", + "severity", + "CVE-" ] }, { @@ -214,7 +380,28 @@ "title": "Reports", "href": "/insights/compliance/reports", "product": "Red Hat Insights", - "description": "Evaluate your Red Hat Enterprise systems’ compliance with security or regulatory standards." + "description": "Evaluate your Red Hat Enterprise systems’ compliance with security or regulatory standards.", + "alt_title": [ + "Compliance", + "security", + "policies", + "SCAP", + "policy", + "insights", + "regulatory", + "regulations", + "OpenSCAP", + "PCI", + "HIPAA", + "DSS", + "CSI", + "C2S", + "rules", + "DISA STIG", + "PCI-DSS", + "NIST", + "OSPP" + ] }, { "id": "scapPolicies", @@ -283,7 +470,30 @@ "title": "Subscription Inventory", "href": "/insights/subscriptions/inventory", "product": "Subscription Watch", - "description": "List your purchased subscriptions and view more information about each one." + "subtitle":"Red Hat Insights for RHEL", + "description": "List your purchased subscriptions and view more information about each one.", + "alt_title": [ + "subscription", + "subscriptions", + "subscription list", + "subscription inventory", + "inventory", + "Red Hat Subscription Management", + "yearly", + "on-demand", + "contract", + "purchase", + "annual", + "BYOS", + "bring your own subscription", + "PAYG", + "pay as you go", + "renew", + "renewals", + "expiring", + "expiration", + "expired" + ] }, { "id": "manifests", @@ -291,7 +501,14 @@ "title": "Manifests", "href": "/insights/subscriptions/manifests", "product": "Subscription Watch", - "description": "Export subscription manifests for Red Hat Satellite." + "subtitle": "Red Hat Insights for RHEL", + "description": "Export subscription manifests for Red Hat Satellite.", + "alt_title": [ + "manifests", + "subscription allocations", + "distributors", + "Satellite" + ] }, { "id": "subscriptionsDocumentation", @@ -308,7 +525,21 @@ "title": "Resource Optimization", "href": "/insights/ros", "product": "Red Hat Insights", - "description": "Optimize your public cloud-based Red Hat Enterprise Linux systems based on CPU, memory, and disk input/output performance." + "subtitle": "Red Hat Insights for RHEL", + "description": "Optimize your public cloud-based Red Hat Enterprise Linux systems based on CPU, memory, and disk input/output performance.", + "alt_title": [ + "optimization", + "optimisation", + "optimize", + "optimise", + "usage", + "utilization", + "utilisation", + "save", + "savings", + "resource optimization", + "resource optimisation" + ] } ] }, @@ -322,14 +553,29 @@ "title": "Remediations", "href": "/insights/remediations", "product": "Red Hat Insights", - "description": "Use Ansible Playbooks to resolve configuration, security, and compliance issues identified on your Red Hat Enterprise Linux systems." + "subtitle": "Red Hat Insights for RHEL", + "description": "Use Ansible Playbooks to resolve configuration, security, and compliance issues identified on your Red Hat Enterprise Linux systems.", + "alt_title": [ + "Remediate", + "playbook", + "fix", + "solve", + "find it fix it", + "fifi", + "cloud connector", + "insights", + "automation", + "Ansible", + "patch" + ] }, { "id": "tasks", "appId": "tasks", "title": "Tasks", "href": "/insights/tasks", - "product": "Red Hat Insights" + "product": "Red Hat Insights", + "subtitle": "Red Hat Insights for RHEL" } ] }, @@ -340,37 +586,16 @@ "filterable": false, "href": "/insights/registration", "product": "Red Hat Insights", + "subtitle": "Red Hat Insights for RHEL", "description": "Register your systems with the Red Hat Insights Client to view them on the Red Hat Hybrid Cloud Console." }, { "id": "learningResources", "appId": "learningResources", "title": "Learning Resources", - "href": "/insights/learning-resources" - }, - { - "title": "Product Materials", - "expandable": true, - "routes": [ - { - "id": "productMaterialDocumentation", - "title": "Documentation", - "isExternal": true, - "href": "https://access.redhat.com/documentation/en-us/red_hat_insights/" - }, - { - "id": "securityInformation", - "title": "Security Information", - "href": "https://www.redhat.com/en/technologies/management/insights/data-application-security", - "isExternal": true - }, - { - "id": "apis", - "appId": "apiDocs", - "title": "APIs", - "href": "/docs/api" - } - ] + "filterable": false, + "href": "/insights/learning-resources", + "product": "Red Hat Insights" } ] } diff --git a/static/beta/stage/navigation/settings-navigation.json b/static/beta/stage/navigation/settings-navigation.json index 3484c08b..1f8e00cc 100644 --- a/static/beta/stage/navigation/settings-navigation.json +++ b/static/beta/stage/navigation/settings-navigation.json @@ -34,17 +34,48 @@ ] }, { - "id": "repositories", - "appId": "contentSources", - "title": "Repositories", - "href": "/settings/content" + "id": "learningResources", + "appId": "learningResources", + "title": "Learning Resources", + "href": "/settings/learning-resources", + "permissions": [ + { + "method": "featureFlag", + "args": ["platform.notifications.overhaul", false] + } + ] + }, + { + "id": "idmsvc", + "appId": "idmsvc", + "title": "Directory & Domain Services", + "description": "Directory and Domain Services for console.redhat.com", + "href": "/settings/idmsvc" }, { "id": "integrations", "appId": "notifications", "title": "Integrations", "description": "Route event-triggered notifications to your preferred third-party tools and platforms, such as Splunk and ServiceNow.", - "href": "/settings/integrations" + "href": "/settings/integrations", + "alt_title":[ + "integrations", + "Splunk", + "Service Now", + "SNOW", + "integrate", + "webhook", + "Slack", + "Google Chat", + "Microsoft Teams", + "third party integration", + "event driven", + "alerting", + "automation", + "operational workflow", + "google spaces", + "ms teams" + ] }, { "title": "Notifications", @@ -54,85 +85,88 @@ "id": "openshift", "appId": "notifications", "title": "OpenShift", - "href": "/settings/notifications/openshift" + "href": "/settings/notifications/openshift", + "permissions": [ + { + "method": "featureFlag", + "args": ["platform.notifications.overhaul", false] + } + ] }, { "id": "redhatEntrpriseLinux", "appId": "notifications", "title": "Red Hat Enterprise Linux", - "href": "/settings/notifications/rhel" + "href": "/settings/notifications/rhel", + "permissions": [ + { + "method": "featureFlag", + "args": ["platform.notifications.overhaul", false] + } + ] }, { "id": "console", "appId": "notifications", "title": "Console", "description": "Configure which notifications users within your organization receive.", - "href": "/settings/notifications/console" - } - ] - }, - { - "title": "Remote Host Configuration", - "expandable": true, - "routes": [ + "href": "/settings/notifications/console", + "permissions": [ + { + "method": "featureFlag", + "args": ["platform.notifications.overhaul", false] + } + ] + }, { - "id": "manageConfiguration", - "appId": "connector", - "title": "Manage configuration", - "href": "/settings/connector", - "description": "Configure your systems to execute Ansible Playbooks." + "id": "notificationOverview", + "appId": "notifications", + "title": "Overview", + "href": "/settings/notifications", + "permissions": [ + { + "method": "featureFlag", + "args": ["platform.notifications.overhaul", true] + } + ] }, { - "id": "activationKeys", - "appId": "connector", - "title": "Activation Keys", - "href": "/settings/connector/activation-keys", - "description": "Create activation keys to register your systems and configure repositories without using a username and password." - } - ] - }, - { - "title": "Applications", - "expandable": true, - "permissions": [ + "id": "configureEvents", + "appId": "notifications", + "title": "Configure Events", + "href": "/settings/notifications/configure-events", + "permissions": [ + { + "method": "featureFlag", + "args": ["platform.notifications.overhaul", true] + } + ] + }, { - "method": "hasPermissions", - "apps": [ - "cost-management:*:*", - "advisor:*:*" + "id": "eventLog", + "appId": "notifications", + "title": "Event Log", + "href": "/settings/notifications/eventlog", + "permissions": [ + { + "method": "featureFlag", + "args": ["platform.notifications.overhaul", true] + } ] - } - ], - "routes": [ + }, { - "id": "costManagement", - "appId": "applications", - "title": "Cost Management", - "href": "/settings/applications/cost-management", + "id": "myUserPreferences", + "appId": "notifications", + "title": "My User Preferences", + "href": "/settings/notifications/user-preferences", "permissions": [ - { - "method": "isEntitled", - "args": [ - "cost_management" - ] - }, - { - "method": "hasPermissions", - "args": [ - [ - "cost-management:*:*" - ] - ] - } + { + "method": "featureFlag", + "args": ["platform.notifications.overhaul", true] + } ] } ] - }, - { - "id": "learningResources", - "appId": "learningResources", - "title": "Learning Resources", - "href": "/settings/learning-resources" } ] } diff --git a/static/beta/stage/navigation/staging-navigation.json b/static/beta/stage/navigation/staging-navigation.json index 8ae634e3..f2a248c0 100644 --- a/static/beta/stage/navigation/staging-navigation.json +++ b/static/beta/stage/navigation/staging-navigation.json @@ -3,9 +3,9 @@ "title": "Staging Bundle", "navItems": [ { - "id": "starter", + "id": "frontend-starter-app", "title": "Starter App", - "appId": "starter", + "appId": "frontend-starter-app", "href": "/staging/starter" } ] diff --git a/static/beta/stage/navigation/subscription-services-navigation.json b/static/beta/stage/navigation/subscription-services-navigation.json deleted file mode 100644 index 2fa8ea72..00000000 --- a/static/beta/stage/navigation/subscription-services-navigation.json +++ /dev/null @@ -1,56 +0,0 @@ -{ - "id": "subscription-services", - "title": "Subscription Services", - "navItems": [ - { - "id": "overview", - "appId": "overview", - "title": "Overview", - "href": "/subscriptions/overview" - }, - { - "id": "subscriptionsInventory", - "appId": "subscriptionsInventory", - "title": "Subscriptions Inventory", - "href": "/insights/subscriptions/inventory" - }, - { - "id": "subscriptionsUsage", - "title": "Subscriptions Usage", - "expandable": true, - "routes": [ - { - "id": "rhel", - "appId": "rhel", - "title": "RHEL", - "href": "/insights/subscriptions/rhel" - } - ] - }, - { - "id": "hybridCommittedSpend", - "title": "Hybrid Committed Spend", - "expandable": true, - "routes": [ - { - "id": "hybridCommittedSpend.hybridCommittedSpend", - "appId": "hybridCommittedSpend", - "title": "Hybrid Committed Spend", - "href": "/business-services/hybrid-committed-spend" - } - ] - }, - { - "id": "manifests", - "appId": "manifests", - "title": "Manifests", - "href": "/insights/subscriptions/manifests" - }, - { - "id": "learningResources", - "appId": "learningResources", - "title": "Learning Resources", - "href": "/insights/subscriptions/learning-resources" - } - ] -} diff --git a/static/beta/stage/navigation/subscriptions-navigation.json b/static/beta/stage/navigation/subscriptions-navigation.json new file mode 100644 index 00000000..781fc7a0 --- /dev/null +++ b/static/beta/stage/navigation/subscriptions-navigation.json @@ -0,0 +1,80 @@ +{ + "id": "subscriptions", + "title": "Subscription Services", + "navItems": [ + { + "id": "overview", + "appId": "subscriptionsDashboardUi", + "title": "Overview", + "href": "/subscriptions/overview" + }, + { + "id": "subscriptionsInventory", + "appId": "subscriptionInventory", + "title": "Subscriptions Inventory", + "href": "/subscriptions/inventory" + }, + { + "id": "subscriptionsUsage", + "title": "Subscriptions Usage", + "expandable": true, + "routes": [ + { + "id": "rhel", + "appId": "subscriptions", + "title": "RHEL", + "href": "/subscriptions/usage/rhel" + }, + { + "id": "openshift", + "appId": "subscriptions", + "title": "Openshift", + "href": "/subscriptions/usage/openshift" + }, + { + "id": "data-science", + "appId": "subscriptions", + "title": "Data science", + "href": "/subscriptions/usage/rhods" + }, + { + "id": "acs", + "appId": "subscriptions", + "title": "Advanced cluster security", + "href": "/subscriptions/usage/rhacs" + } + ] + }, + { + "id": "hybridCommittedSpend", + "title": "Hybrid Committed Spend", + "expandable": true, + "routes": [ + { + "id": "hybridCommittedSpend.overview", + "appId": "hybridCommittedSpend", + "title": "Overview", + "href": "/subscriptions/hybrid-committed-spend" + }, + { + "id": "details", + "appId": "hybridCommittedSpend", + "title": "Details", + "href": "/subscriptions/hybrid-committed-spend/details" + } + ] + }, + { + "id": "manifests", + "appId": "manifests", + "title": "Manifests", + "href": "/subscriptions/manifests" + }, + { + "id": "learningResources", + "appId": "learningResources", + "title": "Learning Resources", + "href": "/subscriptions/learning-resources" + } + ] +} diff --git a/static/beta/stage/services/services.json b/static/beta/stage/services/services.json index b7f77c33..1cad57dd 100644 --- a/static/beta/stage/services/services.json +++ b/static/beta/stage/services/services.json @@ -16,10 +16,27 @@ "icon": "AutomationIcon", "description": "Solve problems once, in one place, and scale up.", "links": [ - "ansible.automationAnalytics", - "ansible.collections", - "ansible.inventory", - "ansible.remediations" + { + "isGroup": true, + "id": "ansible", + "title": "Ansible", + "links": [ + "ansible.automationAnalytics", + "ansible.collections", + "ansible.inventory", + "ansible.remediations", + "ansible.tasks" + ] + }, + { + "isGroup": true, + "id": "rhel", + "title": "RHEL", + "links": [ + "rhel.remediations", + "rhel.tasks" + ] + } ] }, { @@ -67,7 +84,6 @@ "description": "Manage the lifecycle and enhance security of your RHEL systems at the edge." }, "rhel.imageBuilder", - "settings.repositories", "quay.quay" ] }, @@ -90,7 +106,8 @@ "links": [ "openshift.clusters", "openshift.overview", - "openshift.releases" + "openshift.releases", + "rhel.inventory" ] }, { @@ -150,8 +167,18 @@ "isGroup": true, "title": "Ansible", "links": [ - "ansible.recommendations", - "ansible.comparision", + { + "href": "/ansible/advisor/recommendations", + "title": "Advisor Recommendations", + "subtitle": "Red Hat Insights for Ansible", + "description": "See targeted recommendations to optimize your Ansible hosts’ availability, performance, and security." + }, + { + "title": "Drift Comparison", + "href": "/ansible/drift", + "subtitle": "Red Hat Insights for Ansible", + "description": "Compare systems in your Ansible inventory to one another or against a set baseline." + }, "ansible.policies" ] }, @@ -160,8 +187,18 @@ "isGroup": true, "title": "OpenShift", "links": [ - "openshift.recommendations", - "openshift.cves" + { + "href": "/openshift/insights/advisor/recommendations", + "title": "Advisor Recommendations", + "subtitle": "Red Hat Insights for OpenShift", + "description": "See targeted recommendations to optimize your OpenShift clusters’ availability, performance, and security." + }, + { + "href": "/openshift/insights/vulnerability/cves", + "title": "Vulnerability Dashboard", + "subtitle": "Red Hat Insights for OpenShift", + "description": "Identify and prioritize security vulnerabilities within your OpenShift clusters based on severity and frequency." + } ] }, { @@ -169,15 +206,29 @@ "isGroup": true, "title": "RHEL", "links": [ - "rhel.recommendations", - "rhel.imageBuilder", - "rhel.vulnerability", - "rhel.complianceReports", - "rhel.signatures", - "rhel.activationKeys", - "rhel.rhc", - "rhel.subscriptionsInventory", - "rhel.manifests", + { + "href": "/insights/advisor/recommendations", + "title": "Advisor Recommendations", + "subtitle": "Red Hat Insights for RHEL", + "description": "View details about your Red Hat Enterprise Linux systems." + }, + "rhel.advisories", + "rhel.remediations", + "rhel.packages", + "rhel.repositories", + { + "href": "/insights/drift", + "title": "Drift Comparison", + "subtitle": "Red Hat Insights for RHEL", + "description": "Compare systems in your Red Hat Enterprise Linux inventory to one another or against a set baseline." + }, + { + "href": "/insights/patch/templates", + "title": "Patch Templates", + "subtitle": "Red Hat Insights for RHEL" + }, + "rhel.tasks", + "rhel.policies", "rhel.ros" ] } @@ -210,20 +261,44 @@ "isGroup": true, "title": "OpenShift", "links": [ - "openshift.cves" + { + "href": "/openshift/insights/vulnerability/cves", + "title": "Vulnerability Dashboard", + "subtitle": "Red Hat Insights for OpenShift" + } ] }, { "isGroup": true, "title": "RHEL", "links": [ - "rhel.recommendations", + { + "href": "/insights/advisor/recommendations", + "title": "Advisor Recommendations", + "subtitle": "Red Hat Insights for RHEL", + "description": "View details about your Red Hat Enterprise Linux systems." + }, "rhel.advisories", - "rhel.complianceReports", + { + "href": "/insights/compliance/reports", + "title": "Compliance", + "subtitle":"Red Hat Insights for RHEL", + "description": "Evaluate your Red Hat Enterprise systems’ compliance with security or regulatory standards." + }, "edge.groups", - "rhel.signatures", + { + "href": "/insights/malware/signatures", + "title": "Malware", + "subtitle": "Red Hat Insights for RHEL", + "description": "Identify potential malware on your Red Hat Enterprise Linux systems." + }, "rhel.remediations", - "rhel.vulnerability" + { + "href": "/insights/vulnerability/cves", + "title": "Vulnerability", + "subtitle": "Red Hat Insights for RHEL", + "description": "Identify and prioritize security vulnerabilities within your Red Hat Enterprise Linux systems based on severity and frequency." + } ] }, { @@ -235,6 +310,66 @@ } ] }, + { + "id": "operations", + "title": "Operations", + "icon": "MonitoringIcon", + "links": [ + { + "id": "ansible", + "isGroup": true, + "title": "Ansible", + "links": [ + { + "href": "/ansible/advisor/recommendations", + "title": "Advisor Recommendations", + "subtitle": "Red Hat Insights for Ansible", + "description": "See targeted recommendations to optimize your Ansible hosts’ availability, performance, and security." + }, + { + "href": "/ansible/drift", + "title": "Drift Comparison", + "subtitle": "Red Hat Insights for Ansible", + "description": "Compare systems in your Ansible inventory to one another or against a set baseline." + }, + "ansible.policies" + ] + }, + { + "isGroup": true, + "id": "openshift", + "title": "OpenShift", + "links": [ + { + "href": "/openshift/insights/advisor/recommendations", + "title": "Advisor Recommendations", + "subtitle": "Red Hat Insights for OpenShift", + "description": "See targeted recommendations to optimize your OpenShift clusters’ availability, performance, and security." + } + ] + }, + { + "isGroup": true, + "id": "rhel", + "title": "RHEL", + "links": [ + { + "href": "/insights/advisor/recommendations", + "title": "Advisor Recommendations", + "subtitle": "Red Hat Insights for RHEL", + "description": "See targeted recommendations to optimize your Red Hat Enterprise Linux hosts’ availability, performance, and security." + }, + { + "href": "/insights/drift", + "title": "Drift Comparison", + "subtitle": "Red Hat Insights for RHEL", + "description": "Compare systems in your Red Hat Enterprise Linux inventory to one another or against a set baseline." + }, + "rhel.policies" + ] + } + ] + }, { "id": "spendManagement", "icon": "CreditCardIcon", @@ -242,8 +377,7 @@ "description": "Control costs and monitor committed spend.", "links": [ "openshift.costManagement", - "rhel.subscriptionsInventory", - "rhel.resourceOptimization", + "rhel.ros", "business-services.hybridCommittedSpend" ] }, @@ -253,10 +387,31 @@ "title": "System Configuration", "description": "Connect your RHEL systems to Hybrid Cloud Console services.", "links": [ - "settings.activationKeys", + "rhel.activationKeys", "rhel.manifests", "rhel.registerSystems", - "settings.manageConfiguration" + "settings.idmsvc", + "settings.manageConfiguration", + { + "href": "/insights/connector", + "title": "Remote Host Configuration", + "subtitle": "Red Hat Insights for RHEL", + "description": "Configure your systems to execute Ansible Playbooks." + } + ] + }, + { + "id": "subscriptions", + "icon": "CreditCardIcon", + "title": "Subscription Services", + "description": "Subscription Services empower buying decisions. SaMS provides software usage reporting that is designed to make your subscription choices data-driven.", + "links": [ + "subscriptions.overview", + "subscriptions.subscriptionsInventory", + "subscriptions.subscriptionsUsage", + "hybridCommittedSpend.hybridCommittedSpend", + "hybridCommittedSpend.manifests", + "hybridCommittedSpend.learningResources" ] }, { diff --git a/static/navigationSchema.json b/static/navigationSchema.json index 4fc2c51f..39300353 100644 --- a/static/navigationSchema.json +++ b/static/navigationSchema.json @@ -54,6 +54,9 @@ "product": { "type": "string" }, + "subtitle": { + "type": "string" + }, "notifier": { "type": "string" } @@ -108,6 +111,9 @@ "product": { "type": "string" }, + "subtitle": { + "type": "string" + }, "notifier": { "type": "string" }, diff --git a/static/stable/itless/navigation/iam-navigation.json b/static/stable/itless/navigation/iam-navigation.json index d66f819a..97a08d1d 100644 --- a/static/stable/itless/navigation/iam-navigation.json +++ b/static/stable/itless/navigation/iam-navigation.json @@ -31,5 +31,20 @@ } ] } + ], + "alt_title": [ + "Authentication Policy", + "2FA", + "Identity and Access Management", + "IAM", + "User Access", + "User Management", + "access management", + "rbac", + "2FA", + "two factor auth", + "two factor authentication", + "two-factor auth", + "two-factor authentication" ] } diff --git a/static/stable/itless/navigation/rhel-navigation.json b/static/stable/itless/navigation/rhel-navigation.json index 8ebef3eb..68e0a73e 100644 --- a/static/stable/itless/navigation/rhel-navigation.json +++ b/static/stable/itless/navigation/rhel-navigation.json @@ -33,7 +33,27 @@ "title": "Recommendations", "href": "/insights/advisor/recommendations", "product": "Red Hat Insights", - "description": "See targeted recommendations to optimize your Red Hat Enterprise Linux systems’ availability, performance, and security." + "description": "See targeted recommendations to optimize your Red Hat Enterprise Linux systems’ availability, performance, and security.", + "alt_title": [ + "Rules", + "recommendations", + "insights", + "configuration", + "security", + "stability", + "performance", + "advisor", + "incidents", + "recommendations", + "configuration", + "pathways", + "critical", + "upgrade", + "upgrade risk", + "incident", + "recommendation", + "pathway" + ] }, { "id": "advisorSystems", @@ -61,7 +81,13 @@ "title": "Advisories", "href": "/insights/patch/advisories", "product": "Red Hat Insights", - "description": "View applicable advisories and updates for your Red Hat Enterprise Linux systems." + "description": "View applicable advisories and updates for your Red Hat Enterprise Linux systems.", + "alt_title": [ + "Errata", + "patch", + "updates", + "insights" + ] }, { "id": "patchSystems", @@ -112,6 +138,35 @@ "href": "/insights/vulnerability/systems", "product": "Red Hat Insights" } + ], + "alt_title": [ + "CVEs", + "CVE", + "Security", + "Vulnerability", + "Vulnerability Management", + "insights", + "Vulnerable", + "exposure", + "Weakness", + "compliance", + "security gap", + "breach", + "Hearltbleed", + "Spectre", + "Patch", + "security", + "vulnerabilities", + "cve", + "common vulnerability exposure", + "cvss", + "risk", + "critical", + "security rule", + "errata", + "affected but not vulnerable", + "severity", + "CVE-" ] }, { @@ -124,7 +179,28 @@ "title": "Reports", "href": "/insights/compliance/reports", "product": "Red Hat Insights", - "description": "Evaluate your Red Hat Enterprise systems’ compliance with security or regulatory standards." + "description": "Evaluate your Red Hat Enterprise systems’ compliance with security or regulatory standards.", + "alt_title": [ + "Compliance", + "security", + "policies", + "SCAP", + "policy", + "insights", + "regulatory", + "regulations", + "OpenSCAP", + "PCI", + "HIPAA", + "DSS", + "CSI", + "C2S", + "rules", + "DISA STIG", + "PCI-DSS", + "NIST", + "OSPP" + ] }, { "id": "scapPolicies", @@ -220,7 +296,20 @@ "title": "Remediations", "href": "/insights/remediations", "product": "Red Hat Insights", - "description": "Use Ansible Playbooks to resolve configuration, security, and compliance issues identified on your Red Hat Enterprise Linux systems." + "description": "Use Ansible Playbooks to resolve configuration, security, and compliance issues identified on your Red Hat Enterprise Linux systems.", + "alt_title": [ + "Remediate", + "playbook", + "fix", + "solve", + "find it fix it", + "fifi", + "cloud connector", + "insights", + "automation", + "Ansible", + "patch" + ] }, { "id": "tasks", diff --git a/static/stable/prod/main.yml b/static/stable/prod/main.yml index 43c6e3e6..bfb96102 100644 --- a/static/stable/prod/main.yml +++ b/static/stable/prod/main.yml @@ -96,6 +96,12 @@ compliance: versions: - v1 +content-sources: + title: Repositories + api: + versions: + - v1 + cost-management: title: Cost Management api: @@ -188,6 +194,12 @@ policies: versions: - v1 +provisioning: + title: Launch + api: + versions: + - v1 + rbac: title: Role-based Access Control api: diff --git a/static/stable/prod/modules/fed-modules.json b/static/stable/prod/modules/fed-modules.json index cbd4b25a..b72fba6b 100644 --- a/static/stable/prod/modules/fed-modules.json +++ b/static/stable/prod/modules/fed-modules.json @@ -153,7 +153,7 @@ "module": "./RootApp", "routes": [ { - "pathname": "/settings/connector" + "pathname": "/insights/connector" } ] } @@ -385,6 +385,10 @@ } ] }, + "provisioning": { + "manifestLocation": "/apps/provisioning/fed-mods.json", + "modules": [] + }, "subscriptions": { "manifestLocation": "/apps/subscriptions/fed-mods.json", "modules": [ @@ -514,6 +518,9 @@ }, "ansibleDashboard": { "manifestLocation": "/apps/ansible-dashboard/fed-mods.json", + "analytics": { + "APIKey": "AGLlIXeY0q6tUZVRqmRwr9zAYS95u2QJ" + }, "modules": [ { "id": "ansible-dashboard", @@ -532,6 +539,9 @@ }, "automationHub": { "manifestLocation": "/apps/automation-hub/fed-mods.json", + "analytics": { + "APIKey": "AGLlIXeY0q6tUZVRqmRwr9zAYS95u2QJ" + }, "modules": [ { "id": "ansible-automation-hub", @@ -546,6 +556,9 @@ }, "automationAnalytics": { "manifestLocation": "/apps/automation-analytics/fed-mods.json", + "analytics": { + "APIKey": "AGLlIXeY0q6tUZVRqmRwr9zAYS95u2QJ" + }, "modules": [ { "id": "ansible-automation-analytics", @@ -738,6 +751,24 @@ } ] }, + "contentSources": { + "manifestLocation": "/apps/content-sources/fed-mods.json", + "defaultDocumentTitle": "Repositories", + "modules": [ + { + "id": "insights-content-sources", + "module": "./RootApp", + "routes": [ + { + "pathname": "/insights/content" + }, + { + "pathname": "/settings/content" + } + ] + } + ] + }, "learningResources": { "manifestLocation": "/apps/learningResources/fed-mods.json", "modules": [ @@ -780,6 +811,12 @@ "props": { "bundle": "iam" } + }, + { + "pathname": "/hac/learning-resources", + "props": { + "bundle": "hac" + } } ] } @@ -799,6 +836,25 @@ } ] }, + "seatsAdminUi": { + "manifestLocation": "/apps/seats-admin-ui/fed-mods.json", + "config": { + "ssoScopes": [ + "api.iam.access" + ] + }, + "modules": [ + { + "id": "seats-admin", + "module": "./RootApp", + "routes": [ + { + "pathname": "/ansible/seats-administration" + } + ] + } + ] + }, "acs": { "manifestLocation": "/apps/acs/fed-mods.json", "modules": [ diff --git a/static/stable/prod/navigation/ansible-navigation.json b/static/stable/prod/navigation/ansible-navigation.json index 3d7e172a..dc985254 100644 --- a/static/stable/prod/navigation/ansible-navigation.json +++ b/static/stable/prod/navigation/ansible-navigation.json @@ -9,6 +9,12 @@ "filterable": false, "href": "/ansible/ansible-dashboard" }, + { + "id": "learningResources", + "appId": "learningResources", + "title": "Learning Resources", + "href": "/ansible/learning-resources" + }, { "title": "Automation Hub", "expandable": true, @@ -130,7 +136,24 @@ "title": "Recommendations", "href": "/ansible/advisor/recommendations", "product": "Red Hat Insights", - "description": "See targeted recommendations to optimize your Ansible hosts’ availability, performance, and security." + "description": "See targeted recommendations to optimize your Ansible hosts’ availability, performance, and security.", + "alt_title": [ + "Rules", + "recommendations", + "Configuration", + "security", + "stability", + "performance", + "advisor", + "incidents", + "pathways", + "critical", + "upgrade", + "upgrade risk", + "incident", + "recommendation", + "pathway" + ] }, { "id": "systems", @@ -174,7 +197,19 @@ "id": "policies", "title": "Policies", "href": "/ansible/policies", - "description": "Monitor your Ansible hosts against set parameters to detect deviation or misalignment." + "description": "Monitor your Ansible hosts against set parameters to detect deviation or misalignment.", + "subtitle": "Red Hat Insights for Ansible", + "alt_title": [ + "Policies", + "Policy", + "notifications", + "notify", + "integration", + "conditions", + "alerts", + "events", + "raise alerts on system configuration changes" + ] } ] }, diff --git a/static/stable/prod/navigation/application-services-navigation.json b/static/stable/prod/navigation/application-services-navigation.json index 5eed2995..61570229 100644 --- a/static/stable/prod/navigation/application-services-navigation.json +++ b/static/stable/prod/navigation/application-services-navigation.json @@ -60,7 +60,22 @@ "appId": "trustedContent", "title": "Trusted Content", "href": "/application-services/trusted-content", - "description": "Increase trust and integrity in source code and accelerate the application development process." + "description": "Increase trust and integrity in source code and accelerate the application development process.", + "alt_title": [ + "software supply chain", + "vulnerability", + "security", + "risk management", + "oss", + "trusted", + "content", + "CRDA", + "VEX", + "SBOM", + "source code", + "remediation", + "software composition" + ] } ] }, diff --git a/static/stable/prod/navigation/edge-navigation.json b/static/stable/prod/navigation/edge-navigation.json index 09dac357..374bb8e4 100644 --- a/static/stable/prod/navigation/edge-navigation.json +++ b/static/stable/prod/navigation/edge-navigation.json @@ -20,6 +20,12 @@ } ] }, + { + "id": "learningResources", + "appId": "learningResources", + "title": "Learning Resources", + "href": "/edge/learning-resources" + }, { "title": "Manage Images", "expandable": true, @@ -37,13 +43,6 @@ "href": "/edge/repositories" } ] - }, - { - "title": "Learning resources", - "id": "learningResources", - "filterable": false, - "appId": "edge", - "href": "/edge/learning-resources" } ] } diff --git a/static/stable/prod/navigation/iam-navigation.json b/static/stable/prod/navigation/iam-navigation.json index 604ed9ce..72e08870 100644 --- a/static/stable/prod/navigation/iam-navigation.json +++ b/static/stable/prod/navigation/iam-navigation.json @@ -79,5 +79,20 @@ "title": "Learning Resources", "href": "/iam/learning-resources" } + ], + "alt_title": [ + "Authentication Policy", + "2FA", + "Identity and Access Management", + "IAM", + "User Access", + "User Management", + "access management", + "rbac", + "2FA", + "two factor auth", + "two factor authentication", + "two-factor auth", + "two-factor authentication" ] } diff --git a/static/stable/prod/navigation/openshift-navigation.json b/static/stable/prod/navigation/openshift-navigation.json index 53937f10..38dd0b4f 100644 --- a/static/stable/prod/navigation/openshift-navigation.json +++ b/static/stable/prod/navigation/openshift-navigation.json @@ -10,6 +10,12 @@ "product": "Red Hat OpenShift Cluster Manager", "description": "View, Register, or Create an OpenShift Cluster." }, + { + "id": "learningResources", + "appId": "learningResources", + "title": "Learning Resources", + "href": "/openshift/learning-resources" + }, { "id": "overview", "appId": "openshift", @@ -137,7 +143,8 @@ "title": "Overview", "filterable": false, "href": "/openshift/cost-management", - "product": "Red Hat Cost Management" + "product": "Red Hat Cost Management", + "subtitle": "Red Hat Insights for OpenShift" }, { "id": "costManagementOptimizations", @@ -205,7 +212,13 @@ "appId": "costManagement", "title": "Cost Models", "href": "/openshift/cost-management/cost-models", - "product": "Red Hat Cost Management" + "product": "Red Hat Cost Management", + "permissions": [ + { + "method": "featureFlag", + "args": ["cost-management.ui.nav.settings", false] + } + ] }, { "id": "costExplorer", @@ -213,6 +226,19 @@ "title": "Cost Explorer", "href": "/openshift/cost-management/explorer", "product": "Red Hat Cost Management" + }, + { + "id": "settings", + "appId": "costManagement", + "title": "Settings", + "href": "/openshift/cost-management/settings", + "product": "Red Hat Cost Management", + "permissions": [ + { + "method": "featureFlag", + "args": ["cost-management.ui.nav.settings", true] + } + ] } ] } @@ -224,13 +250,6 @@ "href": "https://marketplace.redhat.com", "filterable": false, "isExternal": true - }, - { - "id": "documentation", - "href": "https://access.redhat.com/documentation/en-us/openshift_cluster_manager/", - "title": "Documentation", - "filterable": false, - "isExternal": true } ] } diff --git a/static/stable/prod/navigation/quay-navigation.json b/static/stable/prod/navigation/quay-navigation.json index d83fba44..7380b338 100644 --- a/static/stable/prod/navigation/quay-navigation.json +++ b/static/stable/prod/navigation/quay-navigation.json @@ -41,5 +41,49 @@ } ] } + ], + "alt_title": [ + "artifact", + "clair", + "container", + "container image", + "Container image distribution and replication", + "Container image hosting platform", + "Container image management platform", + "Container image replication and synchronization", + "Container image repository and hosting", + "Container image scanning and vulnerability management", + "Container image storage", + "Container image versioning and tagging", + "container registry", + "Container registry solution", + "Container security and compliance", + "cosign", + "CRI-O", + "CVE", + "digest", + "docker", + "Docker container management", + "helm", + "image pull", + "image push", + "image tag", + "Kubernetes container registry", + "manifest", + "OCI", + "podman", + "Private container registry solution", + "Quay", + "quay.io", + "registry", + "repository", + "sbom", + "scanner", + "scanning", + "Secure container registry", + "security scan", + "tag", + "vulnerability", + "vulnerability scanning" ] } diff --git a/static/stable/prod/navigation/rhel-navigation.json b/static/stable/prod/navigation/rhel-navigation.json index 6e8854a7..eca2bc5d 100644 --- a/static/stable/prod/navigation/rhel-navigation.json +++ b/static/stable/prod/navigation/rhel-navigation.json @@ -15,13 +15,15 @@ "expandable": true, "id": "inventory", "description": "View details about your Red Hat Enterprise Linux systems.", + "subtitle": "Red Hat Insights for RHEL", "routes": [ { "id": "systems", "appId": "inventory", "title": "Systems", "href": "/insights/inventory", - "product": "Red Hat Insights" + "product": "Red Hat Insights", + "subtitle": "Red Hat Insights for RHEL" }, { "id": "groups", @@ -43,7 +45,42 @@ "title": "Images", "href": "/insights/image-builder", "product": "Red Hat Insights", - "description": "Build and manage Red Hat Enterprise Linux images and environments." + "subtitle": "Red Hat Insights for RHEL", + "description": "Build and manage Red Hat Enterprise Linux images and environments.", + "alt_title": [ + "Images", + "image", + "image builder", + "my images", + "gold image", + "template image", + "vm template", + "image template", + "blueprint", + "image", + "builder", + "images", + "build", + "image-builder", + "insights", + "Build image", + "image builder", + "gold image", + "blueprint", + "template image", + "vm template", + "image template", + "vmware template", + "packer build", + "packer template", + "RHEL AMI", + "RHEL machine image", + "azure", + "aws", + "build", + "assemble", + "image-builder" + ] }, { "title": "System Configuration", @@ -53,17 +90,56 @@ "id": "rhc", "appId": "connector", "title": "Remote Host Configuration (RHC)", - "href": "/settings/connector", + "href": "/insights/connector", "product": "Red Hat Insights", - "description": "Configure your systems to execute Ansible Playbooks." + "subtitle": "Red Hat Insights for RHEL", + "description": "Configure your systems to execute Ansible Playbooks.", + "alt_title": [ + "Remote host configuration", + "connect systems", + "connection options", + "connect settings", + "settings", + "Register", + "rhc", + "RHC", + "rhcd" + ] }, { "id": "activationKeys", "appId": "connector", - "title": "Activation keys", - "href": "/settings/connector/activation-keys", + "title": "Activation Keys", + "href": "/insights/connector/activation-keys", + "product": "Red Hat Insights", + "subtitle": "Red Hat Insights for RHEL", + "description": "Create activation keys to register your systems and configure repositories without using a username and password.", + "alt_title": [ + "Subscription key", + "sca", + "simple content access", + "activate", + "register", + "AK", + "repositories", + "system purpose", + "sla", + "content" + ] + }, + { + "id": "stalenessAndCulling", + "appId": "inventory", + "title": "Staleness and Culling", + "href": "/insights/inventory/staleness-and-culling", "product": "Red Hat Insights", - "description": "Create activation keys to register your systems and configure repositories without using a username and password." + "description": "Inventory Host Staleness and Culling", + "permissions": [ + { + "method": "featureFlag", + "args": ["hbi.custom-staleness", true] + } + ] } ] } @@ -79,32 +155,70 @@ "title": "Advisories", "href": "/insights/patch/advisories", "product": "Red Hat Insights", - "description": "View applicable advisories and updates for your Red Hat Enterprise Linux systems." + "subtitle": "Red Hat Insights for RHEL", + "description": "View applicable advisories and updates for your Red Hat Enterprise Linux systems.", + "alt_title": [ + "Errata", + "patch", + "updates", + "insights" + ] }, { + "id": "packages", "appId": "patch", "title": "Packages", "href": "/insights/patch/packages", - "product": "Red Hat Insights" + "product": "Red Hat Insights", + "subtitle": "Red Hat Insights for RHEL" }, { + "id": "repositories", "appId": "contentSources", "title": "Repositories", - "href": "/settings/content", + "href": "/insights/content", "product": "Red Hat Insights", - "isBeta": true + "subtitle": "Red Hat Insights for RHEL", + "alt_title": [ + "Content", + "custom content", + "my content", + "my repos", + "repos", + "repo", + "repositories", + "repository", + "insights", + "repository sets", + "popular", + "Red hat repositories", + "Snapshots", + "compare", + "custom content", + "Red hat repositories", + "popular", + "nvidia", + "epel", + "add repositories", + "introspect", + "content", + "dnf", + "yum" + ] }, { "title": "Patch", "expandable": true, "routes": [ { + "id": "patchSystems", "appId": "patch", "title": "Systems", "href": "/insights/patch/systems", "product": "Red Hat Insights" }, { + "id": "patchTemplates", "appId": "patch", "title": "Templates", "href": "/insights/patch/templates", @@ -128,7 +242,27 @@ "title": "Recommendations", "href": "/insights/advisor/recommendations", "product": "Red Hat Insights", - "description": "View details about your Red Hat Enterprise Linux systems." + "description": "View details about your Red Hat Enterprise Linux systems.", + "alt_title": [ + "Rules", + "recommendations", + "insights", + "configuration", + "security", + "stability", + "performance", + "advisor", + "incidents", + "recommendations", + "configuration", + "pathways", + "critical", + "upgrade", + "upgrade risk", + "incident", + "recommendation", + "pathway" + ] }, { "id": "advisorSystems", @@ -152,12 +286,14 @@ "expandable": true, "routes": [ { + "id": "driftComparison", "appId": "drift", "title": "Comparison", "href": "/insights/drift/", "product": "Red Hat Insights" }, { + "id": "driftBaselines", "appId": "drift", "title": "Baselines", "href": "/insights/drift/baselines", @@ -166,9 +302,12 @@ ] }, { + "id": "policies", "appId": "policies", "title": "Policies", - "href": "/insights/policies" + "href": "/insights/policies/policies/list", + "subtitle": "Red Hat Insights for RHEL", + "description": "Monitor your RHEL hosts against set parameters to detect deviation or misalignment." } ] }, @@ -179,13 +318,15 @@ { "title": "Vulnerability", "expandable": true, + "subtitle": "Red Hat Insights for RHEL", "routes": [ { - "id": "vulnerability", + "id": "cves", "appId": "vulnerability", "title": "CVEs", "href": "/insights/vulnerability/cves", "product": "Red Hat Insights", + "subtitle": "Red Hat Insights for RHEL", "description": "Identify and prioritize security vulnerabilities within your Red Hat Enterprise Linux systems based on severity and frequency." }, { @@ -202,6 +343,35 @@ "href": "/insights/vulnerability/systems", "product": "Red Hat Insights" } + ], + "alt_title": [ + "CVEs", + "CVE", + "Security", + "Vulnerability", + "Vulnerability Management", + "insights", + "Vulnerable", + "exposure", + "Weakness", + "compliance", + "security gap", + "breach", + "Hearltbleed", + "Spectre", + "Patch", + "security", + "vulnerabilities", + "cve", + "common vulnerability exposure", + "cvss", + "risk", + "critical", + "security rule", + "errata", + "affected but not vulnerable", + "severity", + "CVE-" ] }, { @@ -214,7 +384,28 @@ "title": "Reports", "href": "/insights/compliance/reports", "product": "Red Hat Insights", - "description": "Evaluate your Red Hat Enterprise systems’ compliance with security or regulatory standards." + "description": "Evaluate your Red Hat Enterprise systems’ compliance with security or regulatory standards.", + "alt_title": [ + "Compliance", + "security", + "policies", + "SCAP", + "policy", + "insights", + "regulatory", + "regulations", + "OpenSCAP", + "PCI", + "HIPAA", + "DSS", + "CSI", + "C2S", + "rules", + "DISA STIG", + "PCI-DSS", + "NIST", + "OSPP" + ] }, { "id": "scapPolicies", @@ -283,7 +474,30 @@ "title": "Subscription Inventory", "href": "/insights/subscriptions/inventory", "product": "Subscription Watch", - "description": "List your purchased subscriptions and view more information about each one." + "subtitle":"Red Hat Insights for RHEL", + "description": "List your purchased subscriptions and view more information about each one.", + "alt_title": [ + "subscription", + "subscriptions", + "subscription list", + "subscription inventory", + "inventory", + "Red Hat Subscription Management", + "yearly", + "on-demand", + "contract", + "purchase", + "annual", + "BYOS", + "bring your own subscription", + "PAYG", + "pay as you go", + "renew", + "renewals", + "expiring", + "expiration", + "expired" + ] }, { "id": "manifests", @@ -291,7 +505,14 @@ "title": "Manifests", "href": "/insights/subscriptions/manifests", "product": "Subscription Watch", - "description": "Export subscription manifests for Red Hat Satellite." + "subtitle": "Red Hat Insights for RHEL", + "description": "Export subscription manifests for Red Hat Satellite.", + "alt_title": [ + "manifests", + "subscription allocations", + "distributors", + "Satellite" + ] }, { "id": "subscriptionsDocumentation", @@ -308,7 +529,21 @@ "title": "Resource Optimization", "href": "/insights/ros", "product": "Red Hat Insights", - "description": "Optimize your public cloud-based Red Hat Enterprise Linux systems based on CPU, memory, and disk input/output performance." + "subtitle": "Red Hat Insights for RHEL", + "description": "Optimize your public cloud-based Red Hat Enterprise Linux systems based on CPU, memory, and disk input/output performance.", + "alt_title": [ + "optimization", + "optimisation", + "optimize", + "optimise", + "usage", + "utilization", + "utilisation", + "save", + "savings", + "resource optimization", + "resource optimisation" + ] } ] }, @@ -322,14 +557,29 @@ "title": "Remediations", "href": "/insights/remediations", "product": "Red Hat Insights", - "description": "Use Ansible Playbooks to resolve configuration, security, and compliance issues identified on your Red Hat Enterprise Linux systems." + "subtitle": "Red Hat Insights for RHEL", + "description": "Use Ansible Playbooks to resolve configuration, security, and compliance issues identified on your Red Hat Enterprise Linux systems.", + "alt_title": [ + "Remediate", + "playbook", + "fix", + "solve", + "find it fix it", + "fifi", + "cloud connector", + "insights", + "automation", + "Ansible", + "patch" + ] }, { "id": "tasks", "appId": "tasks", "title": "Tasks", "href": "/insights/tasks", - "product": "Red Hat Insights" + "product": "Red Hat Insights", + "subtitle": "Red Hat Insights for RHEL" } ] }, @@ -340,31 +590,16 @@ "filterable": false, "href": "/insights/registration", "product": "Red Hat Insights", + "subtitle": "Red Hat Insights for RHEL", "description": "Register your systems with the Red Hat Insights Client to view them on the Red Hat Hybrid Cloud Console." }, { - "title": "Product Materials", - "expandable": true, - "routes": [ - { - "id": "productMaterialDocumentation", - "title": "Documentation", - "isExternal": true, - "href": "https://access.redhat.com/documentation/en-us/red_hat_insights/" - }, - { - "id": "securityInformation", - "title": "Security Information", - "href": "https://www.redhat.com/en/technologies/management/insights/data-application-security", - "isExternal": true - }, - { - "id": "apis", - "appId": "apiDocs", - "title": "APIs", - "href": "/docs/api" - } - ] + "id": "learningResources", + "appId": "learningResources", + "title": "Learning Resources", + "filterable": false, + "href": "/insights/learning-resources", + "product": "Red Hat Insights" } ] } diff --git a/static/stable/prod/navigation/settings-navigation.json b/static/stable/prod/navigation/settings-navigation.json index 0edfd8d8..792a5db8 100644 --- a/static/stable/prod/navigation/settings-navigation.json +++ b/static/stable/prod/navigation/settings-navigation.json @@ -38,7 +38,25 @@ "appId": "notifications", "title": "Integrations", "description": "Route event-triggered notifications to your preferred third-party tools and platforms, such as Splunk and ServiceNow.", - "href": "/settings/integrations" + "href": "/settings/integrations", + "alt_title":[ + "integrations", + "Splunk", + "Service Now", + "SNOW", + "integrate", + "webhook", + "Slack", + "Google Chat", + "Microsoft Teams", + "third party integration", + "event driven", + "alerting", + "automation", + "operational workflow", + "google spaces", + "ms teams" + ] }, { "title": "Notifications", @@ -65,54 +83,6 @@ } ] }, - { - "title": "Remote Host Configuration", - "expandable": true, - "routes": [ - { - "id": "manageConfiguration", - "appId": "connector", - "title": "Manage configuration", - "href": "/settings/connector", - "description": "Configure your systems to execute Ansible Playbooks." - }, - { - "id": "activationKeys", - "appId": "connector", - "title": "Activation Keys", - "href": "/settings/connector/activation-keys", - "description": "Create activation keys to register your systems and configure repositories without using a username and password." - } - ] - }, - { - "title": "Applications", - "expandable": true, - "permissions": [ - { - "method": "isOrgAdmin", - "apps": [ - "cost-management" - ] - } - ], - "routes": [ - { - "id": "costManagement", - "appId": "applications", - "title": "Cost Management", - "href": "/settings/applications/cost-management", - "permissions": [ - { - "method": "isEntitled", - "args": [ - "cost_management" - ] - } - ] - } - ] - }, { "id": "learningResources", "appId": "learningResources", diff --git a/static/stable/prod/services/services.json b/static/stable/prod/services/services.json index fa79fd81..3706eeab 100644 --- a/static/stable/prod/services/services.json +++ b/static/stable/prod/services/services.json @@ -16,10 +16,27 @@ "icon": "AutomationIcon", "description": "Solve problems once, in one place, and scale up.", "links": [ - "ansible.automationAnalytics", - "ansible.collections", - "ansible.inventory", - "ansible.remediations" + { + "isGroup": true, + "id": "ansible", + "title": "Ansible", + "links": [ + "ansible.automationAnalytics", + "ansible.collections", + "ansible.inventory", + "ansible.remediations", + "ansible.tasks" + ] + }, + { + "isGroup": true, + "id": "rhel", + "title": "RHEL", + "links": [ + "rhel.remediations", + "rhel.tasks" + ] + } ] }, { @@ -68,7 +85,6 @@ "description": "Manage the lifecycle and enhance security of your RHEL systems at the edge." }, "rhel.imageBuilder", - "settings.repositories", "quay.quay" ] }, @@ -91,7 +107,8 @@ "links": [ "openshift.clusters", "openshift.overview", - "openshift.releases" + "openshift.releases", + "rhel.inventory" ] }, { @@ -151,8 +168,18 @@ "isGroup": true, "title": "Ansible", "links": [ - "ansible.recommendations", - "ansible.comparision", + { + "href": "/ansible/advisor/recommendations", + "title": "Advisor Recommendations", + "subtitle": "Red Hat Insights for Ansible", + "description": "See targeted recommendations to optimize your Ansible hosts’ availability, performance, and security." + }, + { + "title": "Drift Comparison", + "href": "/ansible/drift", + "subtitle": "Red Hat Insights for Ansible", + "description": "Compare systems in your Ansible inventory to one another or against a set baseline." + }, "ansible.policies" ] }, @@ -161,8 +188,18 @@ "isGroup": true, "title": "OpenShift", "links": [ - "openshift.recommendations", - "openshift.cves" + { + "href": "/openshift/insights/advisor/recommendations", + "title": "Advisor Recommendations", + "subtitle": "Red Hat Insights for OpenShift", + "description": "See targeted recommendations to optimize your OpenShift clusters’ availability, performance, and security." + }, + { + "href": "/openshift/insights/vulnerability/cves", + "title": "Vulnerability Dashboard", + "subtitle": "Red Hat Insights for OpenShift", + "description": "Identify and prioritize security vulnerabilities within your OpenShift clusters based on severity and frequency." + } ] }, { @@ -170,15 +207,29 @@ "isGroup": true, "title": "RHEL", "links": [ - "rhel.recommendations", - "rhel.imageBuilder", - "rhel.vulnerability", - "rhel.complianceReports", - "rhel.signatures", - "rhel.activationKeys", - "rhel.rhc", - "rhel.subscriptionsInventory", - "rhel.manifests", + { + "href": "/insights/advisor/recommendations", + "title": "Advisor Recommendations", + "subtitle": "Red Hat Insights for RHEL", + "description": "View details about your Red Hat Enterprise Linux systems." + }, + "rhel.advisories", + "rhel.remediations", + "rhel.packages", + "rhel.repositories", + { + "href": "/insights/drift", + "title": "Drift Comparison", + "subtitle": "Red Hat Insights for RHEL", + "description": "Compare systems in your Red Hat Enterprise Linux inventory to one another or against a set baseline." + }, + { + "href": "/insights/patch/templates", + "title": "Patch Templates", + "subtitle": "Red Hat Insights for RHEL" + }, + "rhel.tasks", + "rhel.policies", "rhel.ros" ] } @@ -211,20 +262,44 @@ "isGroup": true, "title": "OpenShift", "links": [ - "openshift.cves" + { + "href": "/openshift/insights/vulnerability/cves", + "title": "Vulnerability Dashboard", + "subtitle": "Red Hat Insights for OpenShift" + } ] }, { "isGroup": true, "title": "RHEL", "links": [ - "rhel.recommendations", + { + "href": "/insights/advisor/recommendations", + "title": "Advisor recommendations", + "subtitle": "Red Hat Insights for RHEL", + "description": "View details about your Red Hat Enterprise Linux systems." + }, "rhel.advisories", - "rhel.complianceReports", + { + "href": "/insights/compliance/reports", + "title": "Compliance", + "subtitle":"Red Hat Insights for RHEL", + "description": "Evaluate your Red Hat Enterprise systems’ compliance with security or regulatory standards." + }, "edge.groups", - "rhel.signatures", + { + "href": "/insights/malware/signatures", + "title": "Malware", + "subtitle": "Red Hat Insights for RHEL", + "description": "Identify potential malware on your Red Hat Enterprise Linux systems." + }, "rhel.remediations", - "rhel.vulnerability" + { + "href": "/insights/vulnerability/cves", + "title": "Vulnerability", + "subtitle": "Red Hat Insights for RHEL", + "description": "Identify and prioritize security vulnerabilities within your Red Hat Enterprise Linux systems based on severity and frequency." + } ] }, { @@ -236,6 +311,66 @@ } ] }, + { + "id": "operations", + "title": "Operations", + "icon": "MonitoringIcon", + "links": [ + { + "id": "ansible", + "isGroup": true, + "title": "Ansible", + "links": [ + { + "href": "/ansible/advisor/recommendations", + "title": "Advisor Recommendations", + "subtitle": "Red Hat Insights for Ansible", + "description": "See targeted recommendations to optimize your Ansible hosts’ availability, performance, and security." + }, + { + "href": "/ansible/drift", + "title": "Drift Comparison", + "subtitle": "Red Hat Insights for Ansible", + "description": "Compare systems in your Ansible inventory to one another or against a set baseline." + }, + "ansible.policies" + ] + }, + { + "isGroup": true, + "id": "openshift", + "title": "OpenShift", + "links": [ + { + "href": "/openshift/insights/advisor/recommendations", + "title": "Advisor Recommendations", + "subtitle": "Red Hat Insights for OpenShift", + "description": "See targeted recommendations to optimize your OpenShift clusters’ availability, performance, and security." + } + ] + }, + { + "isGroup": true, + "id": "rhel", + "title": "RHEL", + "links": [ + { + "href": "/insights/advisor/recommendations", + "title": "Advisor Recommendations", + "subtitle": "Red Hat Insights for RHEL", + "description": "See targeted recommendations to optimize your Red Hat Enterprise Linux hosts’ availability, performance, and security." + }, + { + "href": "/insights/drift", + "title": "Drift Comparison", + "subtitle": "Red Hat Insights for RHEL", + "description": "Compare systems in your Red Hat Enterprise Linux inventory to one another or against a set baseline." + }, + "rhel.policies" + ] + } + ] + }, { "id": "spendManagement", "icon": "CreditCardIcon", @@ -243,8 +378,7 @@ "description": "Control costs and monitor committed spend.", "links": [ "openshift.costManagement", - "rhel.subscriptionsInventory", - "rhel.resourceOptimization" + "rhel.ros" ] }, { @@ -253,10 +387,16 @@ "title": "System Configuration", "description": "Connect your RHEL systems to Hybrid Cloud Console services.", "links": [ - "settings.activationKeys", + "rhel.activationKeys", "rhel.manifests", "rhel.registerSystems", - "settings.manageConfiguration" + "settings.manageConfiguration", + { + "href": "/insights/connector", + "title": "Remote Host Configuration", + "subtitle": "Red Hat Insights for RHEL", + "description": "Configure your systems to execute Ansible Playbooks." + } ] }, { diff --git a/static/stable/stage/modules/fed-modules.json b/static/stable/stage/modules/fed-modules.json index fe844c04..037e2c9b 100644 --- a/static/stable/stage/modules/fed-modules.json +++ b/static/stable/stage/modules/fed-modules.json @@ -166,7 +166,7 @@ "module": "./RootApp", "routes": [ { - "pathname": "/settings/connector" + "pathname": "/insights/connector" } ] } @@ -421,6 +421,23 @@ } ] }, + "subscriptionsDashboardUi": { + "manifestLocation": "apps/subscriptions-dashboard-ui/fed-mods.json", + "modules": [ + { + "id": "subscriptions-dashboard-ui", + "module": "./RootApp", + "routes": [ + { + "pathname": "/subscriptions" + }, + { + "pathname": "/subscriptions/overview" + } + ] + } + ] + }, "subscriptionInventory": { "manifestLocation": "/apps/subscription-inventory/fed-mods.json", "modules": [ @@ -518,6 +535,9 @@ }, "ansibleDashboard": { "manifestLocation": "/apps/ansible-dashboard/fed-mods.json", + "analytics": { + "APIKey": "WVTevO2VIHB27gmOUJcAdR9bj7XoSw0e" + }, "modules": [ { "id": "ansible-dashboard", @@ -536,6 +556,9 @@ }, "automationHub": { "manifestLocation": "/apps/automation-hub/fed-mods.json", + "analytics": { + "APIKey": "WVTevO2VIHB27gmOUJcAdR9bj7XoSw0e" + }, "modules": [ { "id": "ansible-automation-hub", @@ -550,6 +573,9 @@ }, "automationAnalytics": { "manifestLocation": "/apps/automation-analytics/fed-mods.json", + "analytics": { + "APIKey": "WVTevO2VIHB27gmOUJcAdR9bj7XoSw0e" + }, "modules": [ { "id": "ansible-automation-analytics", @@ -694,11 +720,11 @@ } ] }, - "starter": { - "manifestLocation": "/apps/starter/fed-mods.json", + "frontend-starter-app": { + "manifestLocation": "/apps/frontend-starter-app/fed-mods.json", "modules": [ { - "id": "starter", + "id": "frontend-starter-app", "module": "./RootApp", "routes": [ { @@ -842,6 +868,11 @@ }, "hybridCommittedSpend": { "manifestLocation": "/apps/hybrid-committed-spend/fed-mods.json", + "config": { + "ssoScopes": [ + "api.billing.hcs_reports" + ] + }, "modules": [ { "id": "hybrid-committed-spend", @@ -887,7 +918,7 @@ ] }, "learningResources": { - "manifestLocation": "/apps/learningResources/fed-mods.json", + "manifestLocation": "/apps/learning-resources/fed-mods.json", "modules": [ { "id": "learningResources", @@ -928,6 +959,12 @@ "props": { "bundle": "iam" } + }, + { + "pathname": "/hac/learning-resources", + "props": { + "bundle": "hac" + } } ] } @@ -947,8 +984,13 @@ } ] }, - "seatsAdmin": { - "manifestLocation": "/apps/seats-admin/fed-mods.json", + "seatsAdminUi": { + "manifestLocation": "/apps/seats-admin-ui/fed-mods.json", + "config": { + "ssoScopes": [ + "api.iam.access" + ] + }, "modules": [ { "id": "seats-admin", @@ -960,5 +1002,19 @@ ] } ] + }, + "serviceAccounts": { + "manifestLocation": "/apps/service-accounts/fed-mods.json", + "modules": [ + { + "id": "service-accounts", + "module": "./RootApp", + "routes": [ + { + "pathname": "/iam/service-accounts" + } + ] + } + ] } } diff --git a/static/stable/stage/navigation/ansible-navigation.json b/static/stable/stage/navigation/ansible-navigation.json index 69f639fd..30088b19 100644 --- a/static/stable/stage/navigation/ansible-navigation.json +++ b/static/stable/stage/navigation/ansible-navigation.json @@ -114,7 +114,7 @@ "href": "https://access.redhat.com/documentation/en-us/red_hat_ansible_automation_platform/" }, { - "id": "seatsAdministrators", + "id": "seatsAdminUi", "appId": "ansibleSeatsAdmin", "title": "Seats Administration", "filterable": false, @@ -143,7 +143,24 @@ "title": "Recommendations", "href": "/ansible/advisor/recommendations", "product": "Red Hat Insights", - "description": "See targeted recommendations to optimize your Ansible hosts’ availability, performance, and security." + "description": "See targeted recommendations to optimize your Ansible hosts’ availability, performance, and security.", + "alt_title": [ + "Rules", + "recommendations", + "Configuration", + "security", + "stability", + "performance", + "advisor", + "incidents", + "pathways", + "critical", + "upgrade", + "upgrade risk", + "incident", + "recommendation", + "pathway" + ] }, { "id": "systems", @@ -187,7 +204,19 @@ "appId": "policies", "title": "Policies", "href": "/ansible/policies", - "description": "Monitor your Ansible hosts against set parameters to detect deviation or misalignment." + "description": "Monitor your Ansible hosts against set parameters to detect deviation or misalignment.", + "subtitle": "Red Hat Insights for Ansible", + "alt_title": [ + "Policies", + "Policy", + "notifications", + "notify", + "integration", + "conditions", + "alerts", + "events", + "raise alerts on system configuration changes" + ] } ] }, diff --git a/static/stable/stage/navigation/application-pipeline-navigation.json b/static/stable/stage/navigation/application-pipeline-navigation.json index 25d6dbcb..783c6add 100644 --- a/static/stable/stage/navigation/application-pipeline-navigation.json +++ b/static/stable/stage/navigation/application-pipeline-navigation.json @@ -6,6 +6,12 @@ "id": "flatNav", "title": "Flat nav", "dynamicNav": "hacCore" + }, + { + "id": "learningResources", + "appId": "applicationServices", + "title": "Learning Resources", + "href": "/hac/learning-resources" } ] } diff --git a/static/stable/stage/navigation/application-services-navigation.json b/static/stable/stage/navigation/application-services-navigation.json index 197fb581..c0ae9327 100644 --- a/static/stable/stage/navigation/application-services-navigation.json +++ b/static/stable/stage/navigation/application-services-navigation.json @@ -60,7 +60,22 @@ "appId": "trustedContent", "title": "Trusted Content", "href": "/application-services/trusted-content", - "description": "Increase trust and integrity in source code and accelerate the application development process." + "description": "Increase trust and integrity in source code and accelerate the application development process.", + "alt_title": [ + "software supply chain", + "vulnerability", + "security", + "risk management", + "oss", + "trusted", + "content", + "CRDA", + "VEX", + "SBOM", + "source code", + "remediation", + "software composition" + ] } ] }, diff --git a/static/stable/stage/navigation/business-services-navigation.json b/static/stable/stage/navigation/business-services-navigation.json index 4f81fd22..7edd8de3 100644 --- a/static/stable/stage/navigation/business-services-navigation.json +++ b/static/stable/stage/navigation/business-services-navigation.json @@ -14,16 +14,7 @@ "id": "overview", "appId": "hybridCommittedSpend", "title": "Overview", - "href": "/business-services/hybrid-committed-spend", - "permissions": [ - { - "method": "apiRequest", - "args": [{ - "url": "https://billing.qa.api.redhat.com/v1/authorization/hcsEnrollment", - "accessor": "hcsDeal" - }] - } - ] + "href": "/business-services/hybrid-committed-spend" }, { "id": "details", diff --git a/static/stable/stage/navigation/edge-navigation.json b/static/stable/stage/navigation/edge-navigation.json index 4c3212a5..c54c44a4 100644 --- a/static/stable/stage/navigation/edge-navigation.json +++ b/static/stable/stage/navigation/edge-navigation.json @@ -40,6 +40,12 @@ } ] }, + { + "id": "learningResources", + "appId": "learningResources", + "title": "Learning Resources", + "href": "/edge/learning-resources" + }, { "title": "Manage Images", "expandable": true, @@ -70,18 +76,6 @@ ] } ] - }, { - "id": "learningResources", - "title": "Learning resources", - "appId": "learningResources", - "filterable": false, - "href": "/edge/learning-resources", - "permissions": [ - { - "method": "withEmail", - "args": ["@redhat.com", "@sbb.ch"] - } - ] } ] } diff --git a/static/stable/stage/navigation/iam-navigation.json b/static/stable/stage/navigation/iam-navigation.json index cd68b38c..9230b7cf 100644 --- a/static/stable/stage/navigation/iam-navigation.json +++ b/static/stable/stage/navigation/iam-navigation.json @@ -75,11 +75,32 @@ } ] }, + { + "id": "serviceAccounts", + "title": "Service Accounts", + "appId": "serviceAccounts", + "href": "/iam/service-accounts" + }, { "id": "learningResources", "appId": "learningResources", "title": "Learning Resources", "href": "/iam/learning-resources" } + ], + "alt_title": [ + "Authentication Policy", + "2FA", + "Identity and Access Management", + "IAM", + "User Access", + "User Management", + "access management", + "rbac", + "2FA", + "two factor auth", + "two factor authentication", + "two-factor auth", + "two-factor authentication" ] } diff --git a/static/stable/stage/navigation/openshift-navigation.json b/static/stable/stage/navigation/openshift-navigation.json index 4f7deb41..919d4ee8 100644 --- a/static/stable/stage/navigation/openshift-navigation.json +++ b/static/stable/stage/navigation/openshift-navigation.json @@ -10,6 +10,12 @@ "product": "Red Hat OpenShift Cluster Manager", "description": "View, Register, or Create an OpenShift Cluster." }, + { + "id": "learningResources", + "appId": "learningResources", + "title": "Learning Resources", + "href": "/openshift/learning-resources" + }, { "id": "overview", "appId": "openshift", @@ -19,12 +25,6 @@ "product": "Red Hat OpenShift Cluster Manager", "description": "Overview of your OpenShift Environment." }, - { - "id": "learningResources", - "appId": "learningResources", - "title": "Learning Resources", - "href": "/openshift/learning-resources" - }, { "id": "releases", "appId": "openshift", @@ -140,7 +140,8 @@ "title": "Overview", "filterable": false, "href": "/openshift/cost-management", - "product": "Red Hat Cost Management" + "product": "Red Hat Cost Management", + "subtitle": "Red Hat Insights for OpenShift" }, { "id": "costManagementOptimizations", @@ -202,7 +203,13 @@ "appId": "costManagement", "title": "Cost Models", "href": "/openshift/cost-management/cost-models", - "product": "Red Hat Cost Management" + "product": "Red Hat Cost Management", + "permissions": [ + { + "method": "featureFlag", + "args": ["cost-management.ui.nav.settings", false] + } + ] }, { "id": "costExplorer", @@ -210,6 +217,19 @@ "title": "Cost Explorer", "href": "/openshift/cost-management/explorer", "product": "Red Hat Cost Management" + }, + { + "id": "settings", + "appId": "costManagement", + "title": "Settings", + "href": "/openshift/cost-management/settings", + "product": "Red Hat Cost Management", + "permissions": [ + { + "method": "featureFlag", + "args": ["cost-management.ui.nav.settings", true] + } + ] } ] } @@ -220,13 +240,6 @@ "title": "Red Hat Marketplace", "href": "https://marketplace.redhat.com", "isExternal": true - }, - { - "id": "documentation", - "href": "https://access.redhat.com/documentation/en-us/openshift_cluster_manager/", - "title": "Documentation", - "filterable": false, - "isExternal": true } ] } diff --git a/static/stable/stage/navigation/quay-navigation.json b/static/stable/stage/navigation/quay-navigation.json index 8a8d9356..c571a55c 100644 --- a/static/stable/stage/navigation/quay-navigation.json +++ b/static/stable/stage/navigation/quay-navigation.json @@ -42,5 +42,49 @@ } ] } + ], + "alt_title": [ + "artifact", + "clair", + "container", + "container image", + "Container image distribution and replication", + "Container image hosting platform", + "Container image management platform", + "Container image replication and synchronization", + "Container image repository and hosting", + "Container image scanning and vulnerability management", + "Container image storage", + "Container image versioning and tagging", + "container registry", + "Container registry solution", + "Container security and compliance", + "cosign", + "CRI-O", + "CVE", + "digest", + "docker", + "Docker container management", + "helm", + "image pull", + "image push", + "image tag", + "Kubernetes container registry", + "manifest", + "OCI", + "podman", + "Private container registry solution", + "Quay", + "quay.io", + "registry", + "repository", + "sbom", + "scanner", + "scanning", + "Secure container registry", + "security scan", + "tag", + "vulnerability", + "vulnerability scanning" ] } diff --git a/static/stable/stage/navigation/rhel-navigation.json b/static/stable/stage/navigation/rhel-navigation.json index ed13cfcc..eca2bc5d 100644 --- a/static/stable/stage/navigation/rhel-navigation.json +++ b/static/stable/stage/navigation/rhel-navigation.json @@ -15,13 +15,15 @@ "expandable": true, "id": "inventory", "description": "View details about your Red Hat Enterprise Linux systems.", + "subtitle": "Red Hat Insights for RHEL", "routes": [ { "id": "systems", "appId": "inventory", "title": "Systems", "href": "/insights/inventory", - "product": "Red Hat Insights" + "product": "Red Hat Insights", + "subtitle": "Red Hat Insights for RHEL" }, { "id": "groups", @@ -43,7 +45,42 @@ "title": "Images", "href": "/insights/image-builder", "product": "Red Hat Insights", - "description": "Build and manage Red Hat Enterprise Linux images and environments." + "subtitle": "Red Hat Insights for RHEL", + "description": "Build and manage Red Hat Enterprise Linux images and environments.", + "alt_title": [ + "Images", + "image", + "image builder", + "my images", + "gold image", + "template image", + "vm template", + "image template", + "blueprint", + "image", + "builder", + "images", + "build", + "image-builder", + "insights", + "Build image", + "image builder", + "gold image", + "blueprint", + "template image", + "vm template", + "image template", + "vmware template", + "packer build", + "packer template", + "RHEL AMI", + "RHEL machine image", + "azure", + "aws", + "build", + "assemble", + "image-builder" + ] }, { "title": "System Configuration", @@ -53,17 +90,56 @@ "id": "rhc", "appId": "connector", "title": "Remote Host Configuration (RHC)", - "href": "/settings/connector", + "href": "/insights/connector", "product": "Red Hat Insights", - "description": "Configure your systems to execute Ansible Playbooks." + "subtitle": "Red Hat Insights for RHEL", + "description": "Configure your systems to execute Ansible Playbooks.", + "alt_title": [ + "Remote host configuration", + "connect systems", + "connection options", + "connect settings", + "settings", + "Register", + "rhc", + "RHC", + "rhcd" + ] }, { "id": "activationKeys", "appId": "connector", "title": "Activation Keys", - "href": "/settings/connector/activation-keys", + "href": "/insights/connector/activation-keys", "product": "Red Hat Insights", - "description": "Create activation keys to register your systems and configure repositories without using a username and password." + "subtitle": "Red Hat Insights for RHEL", + "description": "Create activation keys to register your systems and configure repositories without using a username and password.", + "alt_title": [ + "Subscription key", + "sca", + "simple content access", + "activate", + "register", + "AK", + "repositories", + "system purpose", + "sla", + "content" + ] + }, + { + "id": "stalenessAndCulling", + "appId": "inventory", + "title": "Staleness and Culling", + "href": "/insights/inventory/staleness-and-culling", + "product": "Red Hat Insights", + "description": "Inventory Host Staleness and Culling", + "permissions": [ + { + "method": "featureFlag", + "args": ["hbi.custom-staleness", true] + } + ] } ] } @@ -79,32 +155,70 @@ "title": "Advisories", "href": "/insights/patch/advisories", "product": "Red Hat Insights", - "description": "View applicable advisories and updates for your Red Hat Enterprise Linux systems." + "subtitle": "Red Hat Insights for RHEL", + "description": "View applicable advisories and updates for your Red Hat Enterprise Linux systems.", + "alt_title": [ + "Errata", + "patch", + "updates", + "insights" + ] }, { + "id": "packages", "appId": "patch", "title": "Packages", "href": "/insights/patch/packages", - "product": "Red Hat Insights" + "product": "Red Hat Insights", + "subtitle": "Red Hat Insights for RHEL" }, { + "id": "repositories", "appId": "contentSources", "title": "Repositories", - "href": "/settings/content", + "href": "/insights/content", "product": "Red Hat Insights", - "isBeta": true + "subtitle": "Red Hat Insights for RHEL", + "alt_title": [ + "Content", + "custom content", + "my content", + "my repos", + "repos", + "repo", + "repositories", + "repository", + "insights", + "repository sets", + "popular", + "Red hat repositories", + "Snapshots", + "compare", + "custom content", + "Red hat repositories", + "popular", + "nvidia", + "epel", + "add repositories", + "introspect", + "content", + "dnf", + "yum" + ] }, { "title": "Patch", "expandable": true, "routes": [ { + "id": "patchSystems", "appId": "patch", "title": "Systems", "href": "/insights/patch/systems", "product": "Red Hat Insights" }, { + "id": "patchTemplates", "appId": "patch", "title": "Templates", "href": "/insights/patch/templates", @@ -128,7 +242,27 @@ "title": "Recommendations", "href": "/insights/advisor/recommendations", "product": "Red Hat Insights", - "description": "View details about your Red Hat Enterprise Linux systems." + "description": "View details about your Red Hat Enterprise Linux systems.", + "alt_title": [ + "Rules", + "recommendations", + "insights", + "configuration", + "security", + "stability", + "performance", + "advisor", + "incidents", + "recommendations", + "configuration", + "pathways", + "critical", + "upgrade", + "upgrade risk", + "incident", + "recommendation", + "pathway" + ] }, { "id": "advisorSystems", @@ -152,12 +286,14 @@ "expandable": true, "routes": [ { + "id": "driftComparison", "appId": "drift", "title": "Comparison", "href": "/insights/drift/", "product": "Red Hat Insights" }, { + "id": "driftBaselines", "appId": "drift", "title": "Baselines", "href": "/insights/drift/baselines", @@ -166,9 +302,12 @@ ] }, { + "id": "policies", "appId": "policies", "title": "Policies", - "href": "/insights/policies" + "href": "/insights/policies/policies/list", + "subtitle": "Red Hat Insights for RHEL", + "description": "Monitor your RHEL hosts against set parameters to detect deviation or misalignment." } ] }, @@ -179,13 +318,15 @@ { "title": "Vulnerability", "expandable": true, + "subtitle": "Red Hat Insights for RHEL", "routes": [ { - "id": "vulnerability", + "id": "cves", "appId": "vulnerability", "title": "CVEs", "href": "/insights/vulnerability/cves", "product": "Red Hat Insights", + "subtitle": "Red Hat Insights for RHEL", "description": "Identify and prioritize security vulnerabilities within your Red Hat Enterprise Linux systems based on severity and frequency." }, { @@ -202,6 +343,35 @@ "href": "/insights/vulnerability/systems", "product": "Red Hat Insights" } + ], + "alt_title": [ + "CVEs", + "CVE", + "Security", + "Vulnerability", + "Vulnerability Management", + "insights", + "Vulnerable", + "exposure", + "Weakness", + "compliance", + "security gap", + "breach", + "Hearltbleed", + "Spectre", + "Patch", + "security", + "vulnerabilities", + "cve", + "common vulnerability exposure", + "cvss", + "risk", + "critical", + "security rule", + "errata", + "affected but not vulnerable", + "severity", + "CVE-" ] }, { @@ -214,7 +384,28 @@ "title": "Reports", "href": "/insights/compliance/reports", "product": "Red Hat Insights", - "description": "Evaluate your Red Hat Enterprise systems’ compliance with security or regulatory standards." + "description": "Evaluate your Red Hat Enterprise systems’ compliance with security or regulatory standards.", + "alt_title": [ + "Compliance", + "security", + "policies", + "SCAP", + "policy", + "insights", + "regulatory", + "regulations", + "OpenSCAP", + "PCI", + "HIPAA", + "DSS", + "CSI", + "C2S", + "rules", + "DISA STIG", + "PCI-DSS", + "NIST", + "OSPP" + ] }, { "id": "scapPolicies", @@ -283,7 +474,30 @@ "title": "Subscription Inventory", "href": "/insights/subscriptions/inventory", "product": "Subscription Watch", - "description": "List your purchased subscriptions and view more information about each one." + "subtitle":"Red Hat Insights for RHEL", + "description": "List your purchased subscriptions and view more information about each one.", + "alt_title": [ + "subscription", + "subscriptions", + "subscription list", + "subscription inventory", + "inventory", + "Red Hat Subscription Management", + "yearly", + "on-demand", + "contract", + "purchase", + "annual", + "BYOS", + "bring your own subscription", + "PAYG", + "pay as you go", + "renew", + "renewals", + "expiring", + "expiration", + "expired" + ] }, { "id": "manifests", @@ -291,7 +505,14 @@ "title": "Manifests", "href": "/insights/subscriptions/manifests", "product": "Subscription Watch", - "description": "Export subscription manifests for Red Hat Satellite." + "subtitle": "Red Hat Insights for RHEL", + "description": "Export subscription manifests for Red Hat Satellite.", + "alt_title": [ + "manifests", + "subscription allocations", + "distributors", + "Satellite" + ] }, { "id": "subscriptionsDocumentation", @@ -308,7 +529,21 @@ "title": "Resource Optimization", "href": "/insights/ros", "product": "Red Hat Insights", - "description": "Optimize your public cloud-based Red Hat Enterprise Linux systems based on CPU, memory, and disk input/output performance." + "subtitle": "Red Hat Insights for RHEL", + "description": "Optimize your public cloud-based Red Hat Enterprise Linux systems based on CPU, memory, and disk input/output performance.", + "alt_title": [ + "optimization", + "optimisation", + "optimize", + "optimise", + "usage", + "utilization", + "utilisation", + "save", + "savings", + "resource optimization", + "resource optimisation" + ] } ] }, @@ -322,14 +557,29 @@ "title": "Remediations", "href": "/insights/remediations", "product": "Red Hat Insights", - "description": "Use Ansible Playbooks to resolve configuration, security, and compliance issues identified on your Red Hat Enterprise Linux systems." + "subtitle": "Red Hat Insights for RHEL", + "description": "Use Ansible Playbooks to resolve configuration, security, and compliance issues identified on your Red Hat Enterprise Linux systems.", + "alt_title": [ + "Remediate", + "playbook", + "fix", + "solve", + "find it fix it", + "fifi", + "cloud connector", + "insights", + "automation", + "Ansible", + "patch" + ] }, { "id": "tasks", "appId": "tasks", "title": "Tasks", "href": "/insights/tasks", - "product": "Red Hat Insights" + "product": "Red Hat Insights", + "subtitle": "Red Hat Insights for RHEL" } ] }, @@ -340,37 +590,16 @@ "filterable": false, "href": "/insights/registration", "product": "Red Hat Insights", + "subtitle": "Red Hat Insights for RHEL", "description": "Register your systems with the Red Hat Insights Client to view them on the Red Hat Hybrid Cloud Console." }, { "id": "learningResources", "appId": "learningResources", "title": "Learning Resources", - "href": "/insights/learning-resources" - }, - { - "title": "Product Materials", - "expandable": true, - "routes": [ - { - "id": "productMaterialDocumentation", - "title": "Documentation", - "isExternal": true, - "href": "https://access.redhat.com/documentation/en-us/red_hat_insights/" - }, - { - "id": "securityInformation", - "title": "Security Information", - "href": "https://www.redhat.com/en/technologies/management/insights/data-application-security", - "isExternal": true - }, - { - "id": "apis", - "appId": "apiDocs", - "title": "APIs", - "href": "/docs/api" - } - ] + "filterable": false, + "href": "/insights/learning-resources", + "product": "Red Hat Insights" } ] } diff --git a/static/stable/stage/navigation/settings-navigation.json b/static/stable/stage/navigation/settings-navigation.json index 0e3a07f8..929903b8 100644 --- a/static/stable/stage/navigation/settings-navigation.json +++ b/static/stable/stage/navigation/settings-navigation.json @@ -33,18 +33,30 @@ "credentials" ] }, - { - "id": "repositories", - "appId": "contentSources", - "title": "Repositories", - "href": "/settings/content" - }, { "id": "integrations", "appId": "notifications", "title": "Integrations", "description": "Route event-triggered notifications to your preferred third-party tools and platforms, such as Splunk and ServiceNow.", - "href": "/settings/integrations" + "href": "/settings/integrations", + "alt_title":[ + "integrations", + "Splunk", + "Service Now", + "SNOW", + "integrate", + "webhook", + "Slack", + "Google Chat", + "Microsoft Teams", + "third party integration", + "event driven", + "alerting", + "automation", + "operational workflow", + "google spaces", + "ms teams" + ] }, { "title": "Notifications", @@ -71,69 +83,12 @@ } ] }, - { - "title": "Remote Host Configuration", - "expandable": true, - "routes": [ - { - "id": "manageConfiguration", - "appId": "connector", - "title": "Manage configuration", - "href": "/settings/connector", - "description": "Configure your systems to execute Ansible Playbooks." - }, - { - "id": "activationKeys", - "appId": "connector", - "title": "Activation Keys", - "href": "/settings/connector/activation-keys", - "description": "Create activation keys to register your systems and configure repositories without using a username and password." - } - ] - }, - { - "title": "Applications", - "expandable": true, - "permissions": [ - { - "method": "hasPermissions", - "apps": [ - "cost-management:*:*", - "advisor:*:*" - ] - } - ], - "routes": [ - { - "id": "costManagement", - "appId": "applications", - "title": "Cost Management", - "href": "/settings/applications/cost-management", - "permissions": [ - { - "method": "isEntitled", - "args": [ - "cost_management" - ] - }, - { - "method": "hasPermissions", - "args": [ - [ - "cost-management:*:*" - ] - ] - } - ] - } - ] - }, { "id": "learningResources", "appId": "learningResources", "title": "Learning Resources", "href": "/settings/learning-resources" } - + ] } diff --git a/static/stable/stage/navigation/staging-navigation.json b/static/stable/stage/navigation/staging-navigation.json index 8ae634e3..f2a248c0 100644 --- a/static/stable/stage/navigation/staging-navigation.json +++ b/static/stable/stage/navigation/staging-navigation.json @@ -3,9 +3,9 @@ "title": "Staging Bundle", "navItems": [ { - "id": "starter", + "id": "frontend-starter-app", "title": "Starter App", - "appId": "starter", + "appId": "frontend-starter-app", "href": "/staging/starter" } ] diff --git a/static/stable/stage/services/services.json b/static/stable/stage/services/services.json index b7f77c33..106fe432 100644 --- a/static/stable/stage/services/services.json +++ b/static/stable/stage/services/services.json @@ -16,10 +16,27 @@ "icon": "AutomationIcon", "description": "Solve problems once, in one place, and scale up.", "links": [ - "ansible.automationAnalytics", - "ansible.collections", - "ansible.inventory", - "ansible.remediations" + { + "isGroup": true, + "id": "ansible", + "title": "Ansible", + "links": [ + "ansible.automationAnalytics", + "ansible.collections", + "ansible.inventory", + "ansible.remediations", + "ansible.tasks" + ] + }, + { + "isGroup": true, + "id": "rhel", + "title": "RHEL", + "links": [ + "rhel.remediations", + "rhel.tasks" + ] + } ] }, { @@ -67,7 +84,6 @@ "description": "Manage the lifecycle and enhance security of your RHEL systems at the edge." }, "rhel.imageBuilder", - "settings.repositories", "quay.quay" ] }, @@ -90,7 +106,8 @@ "links": [ "openshift.clusters", "openshift.overview", - "openshift.releases" + "openshift.releases", + "rhel.inventory" ] }, { @@ -150,8 +167,18 @@ "isGroup": true, "title": "Ansible", "links": [ - "ansible.recommendations", - "ansible.comparision", + { + "href": "/ansible/advisor/recommendations", + "title": "Advisor Recommendations", + "subtitle": "Red Hat Insights for Ansible", + "description": "See targeted recommendations to optimize your Ansible hosts’ availability, performance, and security." + }, + { + "title": "Drift Comparison", + "href": "/ansible/drift", + "subtitle": "Red Hat Insights for Ansible", + "description": "Compare systems in your Ansible inventory to one another or against a set baseline." + }, "ansible.policies" ] }, @@ -160,8 +187,18 @@ "isGroup": true, "title": "OpenShift", "links": [ - "openshift.recommendations", - "openshift.cves" + { + "href": "/openshift/insights/advisor/recommendations", + "title": "Advisor Recommendations", + "subtitle": "Red Hat Insights for OpenShift", + "description": "See targeted recommendations to optimize your OpenShift clusters’ availability, performance, and security." + }, + { + "href": "/openshift/insights/vulnerability/cves", + "title": "Vulnerability Dashboard", + "subtitle": "Red Hat Insights for OpenShift", + "description": "Identify and prioritize security vulnerabilities within your OpenShift clusters based on severity and frequency." + } ] }, { @@ -169,15 +206,29 @@ "isGroup": true, "title": "RHEL", "links": [ - "rhel.recommendations", - "rhel.imageBuilder", - "rhel.vulnerability", - "rhel.complianceReports", - "rhel.signatures", - "rhel.activationKeys", - "rhel.rhc", - "rhel.subscriptionsInventory", - "rhel.manifests", + { + "href": "/insights/advisor/recommendations", + "title": "Advisor Recommendations", + "subtitle": "Red Hat Insights for RHEL", + "description": "View details about your Red Hat Enterprise Linux systems." + }, + "rhel.advisories", + "rhel.remediations", + "rhel.packages", + "rhel.repositories", + { + "href": "/insights/drift", + "title": "Drift Comparison", + "subtitle": "Red Hat Insights for RHEL", + "description": "Compare systems in your Red Hat Enterprise Linux inventory to one another or against a set baseline." + }, + { + "href": "/insights/patch/templates", + "title": "Patch Templates", + "subtitle": "Red Hat Insights for RHEL" + }, + "rhel.tasks", + "rhel.policies", "rhel.ros" ] } @@ -210,20 +261,44 @@ "isGroup": true, "title": "OpenShift", "links": [ - "openshift.cves" + { + "href": "/openshift/insights/vulnerability/cves", + "title": "Vulnerability Dashboard", + "subtitle": "Red Hat Insights for OpenShift" + } ] }, { "isGroup": true, "title": "RHEL", "links": [ - "rhel.recommendations", + { + "href": "/insights/advisor/recommendations", + "title": "Advisor recommendations", + "subtitle": "Red Hat Insights for RHEL", + "description": "View details about your Red Hat Enterprise Linux systems." + }, "rhel.advisories", - "rhel.complianceReports", + { + "href": "/insights/compliance/reports", + "title": "Compliance", + "subtitle":"Red Hat Insights for RHEL", + "description": "Evaluate your Red Hat Enterprise systems’ compliance with security or regulatory standards." + }, "edge.groups", - "rhel.signatures", + { + "href": "/insights/malware/signatures", + "title": "Malware", + "subtitle": "Red Hat Insights for RHEL", + "description": "Identify potential malware on your Red Hat Enterprise Linux systems." + }, "rhel.remediations", - "rhel.vulnerability" + { + "href": "/insights/vulnerability/cves", + "title": "Vulnerability", + "subtitle": "Red Hat Insights for RHEL", + "description": "Identify and prioritize security vulnerabilities within your Red Hat Enterprise Linux systems based on severity and frequency." + } ] }, { @@ -235,6 +310,66 @@ } ] }, + { + "id": "operations", + "title": "Operations", + "icon": "MonitoringIcon", + "links": [ + { + "id": "ansible", + "isGroup": true, + "title": "Ansible", + "links": [ + { + "href": "/ansible/advisor/recommendations", + "title": "Advisor Recommendations", + "subtitle": "Red Hat Insights for Ansible", + "description": "See targeted recommendations to optimize your Ansible hosts’ availability, performance, and security." + }, + { + "href": "/ansible/drift", + "title": "Drift Comparison", + "subtitle": "Red Hat Insights for Ansible", + "description": "Compare systems in your Ansible inventory to one another or against a set baseline." + }, + "ansible.policies" + ] + }, + { + "isGroup": true, + "id": "openshift", + "title": "OpenShift", + "links": [ + { + "href": "/openshift/insights/advisor/recommendations", + "title": "Advisor Recommendations", + "subtitle": "Red Hat Insights for OpenShift", + "description": "See targeted recommendations to optimize your OpenShift clusters’ availability, performance, and security." + } + ] + }, + { + "isGroup": true, + "id": "rhel", + "title": "RHEL", + "links": [ + { + "href": "/insights/advisor/recommendations", + "title": "Advisor Recommendations", + "subtitle": "Red Hat Insights for RHEL", + "description": "See targeted recommendations to optimize your Red Hat Enterprise Linux hosts’ availability, performance, and security." + }, + { + "href": "/insights/drift", + "title": "Drift Comparison", + "subtitle": "Red Hat Insights for RHEL", + "description": "Compare systems in your Red Hat Enterprise Linux inventory to one another or against a set baseline." + }, + "rhel.policies" + ] + } + ] + }, { "id": "spendManagement", "icon": "CreditCardIcon", @@ -242,8 +377,7 @@ "description": "Control costs and monitor committed spend.", "links": [ "openshift.costManagement", - "rhel.subscriptionsInventory", - "rhel.resourceOptimization", + "rhel.ros", "business-services.hybridCommittedSpend" ] }, @@ -253,10 +387,16 @@ "title": "System Configuration", "description": "Connect your RHEL systems to Hybrid Cloud Console services.", "links": [ - "settings.activationKeys", + "rhel.activationKeys", "rhel.manifests", "rhel.registerSystems", - "settings.manageConfiguration" + "settings.manageConfiguration", + { + "href": "/insights/connector", + "title": "Remote Host Configuration", + "subtitle": "Red Hat Insights for RHEL", + "description": "Configure your systems to execute Ansible Playbooks." + } ] }, {