Jialiang Cai created AMBARI-26634:
-------------------------------------
Summary: Advance React parity for remaining frontend refactor
modules
Key: AMBARI-26634
URL: https://issues.apache.org/jira/browse/AMBARI-26634
Project: Ambari
Issue Type: Improvement
Reporter: Jialiang Cai
<!---
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to You under the Apache License, Version 2.0
(the "License"); you may not use this file except in compliance with
the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
h2. Suggested Summary
Advance React parity for the remaining HA, Views, authorization, Service
Theme, and audit modules
h2. Problem
The React frontend does not yet have an accepted parity result for the final
five functional modules in the Classic Ember baseline. The remaining work is
tightly coupled: ResourceManager and Ranger Admin HA, Federation and HAWQ,
Views, global authorization, and Service Theme configuration layouts share
route guards, upgrade and wizard exclusions, configuration identity, persisted
workflow ownership, long-running request recovery, and application-shell
behavior. Reviewing or landing these areas independently can leave
contradictory permissions, recovery semantics, or matrix evidence.
This issue covers Modules 10 through 16 as one coherent non-Metrics delivery.
It includes the 581 stable feature IDs in Modules 10 through 14, generation and
validation of the canonical 1,154-ID React parity matrix, and the final
five-pass reverse audit. A matching route, component name, or REST endpoint is
not sufficient evidence of parity.
h2. Scope
* Complete ResourceManager HA and Ranger Admin HA entry guards, topology and
host validation, Stack Advisor integration, KDC boundaries, generated
configuration, ordered stop/install/save/start/test operations, persisted
request checkpoints, Retry behavior, refresh recovery, and workflow-owner
cleanup, while explicitly recording the pre-request-ID unknown-outcome
boundary that requires server reconciliation or idempotency support.
* Complete NameNode Federation, Router-based Federation, and historical HAWQ
Standby Add/Remove/Activate workflows, including stack metadata and topology
gates, secure-cluster branches, exact configuration transformations, custom
commands, ordered operations, failure handling, and durable recovery.
* Complete ordinary and View-only Views shell behavior, two-phase View
discovery, server-authorized instance filtering, regular and short routes,
encoded paths and query strings, iframe loading and recovery, browser
navigation, and Admin View version/proxy-root redirection.
* Align global permission expressions, upgrade exceptions, wizard-owner
mutation exclusions, read-versus-mutate checks, Admin routes, User Settings,
Experimental settings, restart-required operations, support flags, stack
metadata, service/component topology, Windows gates, and transition-state
locks with the executable Classic rules.
* Implement the Service Theme extension contract across Service Configs, Host
Configs, configuration comparison, and installation/Add Service Step 7,
including layout-qualified identity, ordered geometry, Widgets, conditions,
canonical saves, read-only modes, secret-safe diagnostics, fallback, Retry,
stale-response rejection, and custom stack/service Theme fixtures.
* Resolve every remaining static gap or record an explicit, reviewable
compatibility decision. Known gaps must not be hidden by a general parity
claim.
* Generate JSON, CSV, and Markdown representations of the canonical React
parity matrix from all 14 module comparison documents. Preserve all 1,154
stable IDs, source evidence, issue references, review metadata, and the
reproducible reviewed-source digest.
* Perform five independent reverse-audit passes over routes and entry points;
mutations, payloads, and request ordering; permissions, flags, topology,
upgrades, and wizard ownership; asynchronous failure, Retry, persistence,
refresh, and cleanup; and tests, exclusions, and evidence consistency.
* Add focused tests for normal, denied, failed, retried, refreshed, and
cross-owner paths, and retain explicit real-cluster scenarios for behavior
that static tests cannot prove.
h2. Classic UI Baseline
The acceptance baseline is the executable Classic Ember source together with
these reviewed documents:
* {{docs/frontend-refactor/ember-baseline/10-rm-ranger-ha.md}}: 107 feature IDs.
* {{docs/frontend-refactor/ember-baseline/11-federation-hawq.md}}: 194 feature
IDs.
* {{docs/frontend-refactor/ember-baseline/12-views.md}}: 92 feature IDs.
* {{docs/frontend-refactor/ember-baseline/13-permissions-flags.md}}: 36 feature
IDs.
* {{docs/frontend-refactor/ember-baseline/14-service-theme-layout.md}}: 152
feature IDs.
* {{docs/frontend-refactor/ember-baseline/15-react-gap-matrix.md}}: matrix
schema,
status rules, evidence requirements, and review gates.
* {{docs/frontend-refactor/ember-baseline/16-five-pass-audit.md}}: independent
reverse-audit method and frozen baseline conclusions.
The corresponding React comparison documents under
{{docs/frontend-refactor/react-current}} must remain synchronized with the code.
When a baseline statement conflicts with Classic source or verified runtime
behavior, the baseline must be corrected with source evidence instead of
changing React to match an unsupported statement.
h2. Acceptance Criteria
* All 581 Module 10 through 14 feature IDs appear exactly once in their final
React comparison tables with a supported status and concrete evidence.
* ResourceManager and Ranger Admin HA enforce menu and direct-route conditions,
generate the documented configuration, serialize every mutation, retain
recoverable request state, stop after a failed prerequisite, and avoid
replay after local or server-confirmed failures. The issue must not claim
exactly-once recovery when a mutation response is lost before its request ID
is persisted.
* NameNode Federation executes its complete ordered workflow; Router Federation
creates or updates its configuration and manages Router components safely;
HAWQ Add, Remove, and Activate retain their distinct stack, topology,
permission, and custom-command contracts.
* Every HA workflow persists the owner, step, inputs, operation state, returned
request IDs, and terminal results before advancing. Refresh resumes completed
work or active work with a saved request ID, another user cannot take
ownership, and cleanup failures remain visible and retryable. A recovered
{{QUEUED}} mutation without an ID remains {{PARTIAL}} until a server protocol
can
reconcile whether the earlier request was accepted.
* Views discovery preserves the two-request contract and distinguishes empty,
hidden, system, unauthorized, malformed, and failed responses. Regular and
short routes preserve encoded application paths and query strings without
treating client visibility as authorization.
* View-only initialization avoids cluster-only operations while preserving the
documented shell and session lifecycle. Admin View navigation uses the
server-reported version contract and configured proxy root and provides a
deterministic failure path.
* Permission expressions preserve comma-separated OR semantics and the
whole-expression upgrade exceptions. Visibility checks remain distinct from
owner-aware mutation checks, and direct routes repeat the applicable action
gates.
* Support flags and runtime gates have an executable consumer, an explicit
{{MISSING}} or {{PARTIAL}} result, or a documented {{NOT_APPLICABLE}}
compatibility
decision. No flag is considered migrated only because it is loaded.
* Service Theme preserves full config paths and parent-qualified layout
identity, declaration order, every supported Widget round trip, layered
conditions and attributes, canonical save exclusion for UI-only properties,
password secrecy, read-only consumers, fallback, Retry, and stale-response
isolation across all four consumers.
* Reverse API review accounts for every reachable mutation, including HTTP
method, URL, predicates, fields, headers, body shape, operation level,
ordering, response branches, polling or realtime behavior, and error
recovery.
* The generated matrix contains exactly the canonical 1,154 stable IDs and its
JSON, CSV, and Markdown representations are synchronized. The 581 IDs above
are only this issue's functional-module subset. Metrics exclusions and legacy
placeholders remain in the full generated outputs without entering the
completion denominator.
* Source statuses {{COVERED}}, {{MATCH}}, {{PASS}}, and {{STATIC_COMPLETE}}
that are
supported only by static evidence normalize to {{NEEDS_RUNTIME_VALIDATION}}.
Explicit gap and decision statuses remain unchanged. Final {{COVERED}} is used
only after an acceptance review records independent normal-path and
failure/recovery runtime evidence.
* Every {{MISSING}}, {{PARTIAL}}, {{BLOCKED}}, {{BEHAVIOR_DIFF}}, and
{{NOT_APPLICABLE}} row has this issue, a follow-up issue, or an explicit
maintainer decision with a reason.
* The baseline validator, parity-matrix tests and validator, complete Feature
ID reverse checks, focused Vitest suites, TypeScript build, production build,
applicable lint checks, and {{git diff --check}} pass, or unrelated
pre-existing
failures are reported precisely.
* A second reviewer independently checks all eventual {{COVERED}} and
{{NOT_APPLICABLE}} rows and confirms that the five audit passes found no
unassociated non-Metrics route, action, mutation, permission, flag, recovery
path, or test boundary.
h2. Required Runtime Validation
Static source review, mocks, and unit/component tests cannot close the
following acceptance boundary:
| Area | Minimum real-environment scenarios |
| --- | --- |
| ResourceManager HA | Secure and non-secure clusters; valid and invalid
RM/ZooKeeper/host topology; Stack Advisor changes; optional HAWQ/HDFS
configuration; KDC cancellation/failure; failed requests; refresh and
cross-user recovery |
| Ranger Admin HA | Eligible and ineligible topology; {{http}}, {{https}}, and
{{ftp}} load-balancer values; Kerberos providers; configuration save and
service-check failure; interrupted requests; external load-balancer
verification |
| NameNode Federation | Secure and non-secure clusters; optional Ranger,
Accumulo, and Infra Solr branches; all ordered operations; format/bootstrap
failure; Retry; reload and non-owner access |
| Router Federation | Stack metadata with and without DFSRouter support;
existing and new {{hdfs-rbf-site}}; zero and multiple topology inputs;
install/start/maintenance failure; Retry and reload |
| HAWQ Standby | A compatible historical stack; Add, Remove, and Activate; each
permission combination and custom-command gate; request failure, retry,
refresh, and owner recovery |
| Views | Cluster user, View-only user, Ambari administrator, and unauthorized
user; hidden/system/multiple-version instances; short URLs and proxy roots;
cold and warm valid, invalid, deleted, and malformed-percent-encoded deep
links; path/query preservation; iframe load, resize, host scrolling, activity,
popup, download, and fullscreen behavior; interval cleanup; partial
initialization; session expiry; logout failure; keep-alive start, duplicate
prevention, and stop; Admin View redirect failure |
| KDC and credentials | Manual, MIT, Active Directory, and IPA modes; temporary
and persisted credentials; cancellation, expiry, lookup and save failure,
Retry, and resulting principal/keytab ownership across each applicable HA or
Federation workflow |
| Global gates | Read-only, service operator, cluster administrator, Ambari
administrator, and View-only roles while idle, during supported and blocking
upgrades, and with the same or another wizard owner |
| Service Theme | Real shipped and custom service Themes; duplicate local
names; malformed metadata; every Widget and condition; Service, Host,
comparison, Install, and Add Service consumers; read-only roles; secret-bearing
failures; Retry, service switching, refresh, save/reload, and stale responses |
| Fault injection | Network loss and server errors before and after every
irreversible mutation, failed persistence, stale polling responses, browser
refresh, tab close, and a second session attempting the active workflow |
Runtime outcomes must be recorded per matrix row or linked scenario. A single
happy-path demonstration does not establish operational parity for a long HA
workflow.
h2. Out of Scope
* Ambari Metrics pages, charts, widgets, Heatmaps, Horizon Charts, Metrics data
APIs, and Metrics-specific realtime destinations.
* Business functionality implemented inside separately deployed View
applications. This issue covers only the Ambari shell's discovery, routing,
hosting, authorization boundary, and browser navigation.
* Reimplementation of the AngularJS Admin Console CRUD pages. Only discovery
and navigation into the existing Admin View are included.
* Backend authorization or service-command implementation changes unless a
verified frontend contract defect requires a separately reviewed fix.
* Classic placeholder, unreachable, or verified broken behavior that has an
explicit compatibility decision, including unsupported HA disable or
rollback paths.
* Metrics-related permissions and support flags. Operational CPU, memory, disk,
topology, formatted-state, and request-progress fields remain in scope when
they are direct inputs to a non-Metrics workflow.
h2. Compatibility Decisions
React may deliberately improve verified unsafe or broken Classic behavior by
failing closed on incomplete data, waiting for prerequisite requests, guarding
direct routes, avoiding replay after confirmed failures, escaping untrusted
output, and retaining recoverable workflow state. Each difference must identify
the
Classic behavior, React behavior, user impact, and maintainer decision in the
module document and parity matrix. Reliability improvements are not evidence
that unrelated Classic branches can be omitted.
h2. Verification Boundary
The code portion of this issue can be considered ready after the focused tests,
TypeScript and production builds, validators, matrix generation, reverse
checks, and five-pass audit succeed. Operational parity remains
{{NEEDS_RUNTIME_VALIDATION}} until the required real-cluster matrix has been run
and independently reviewed. The pull request must report static test results
and pending runtime scenarios separately and must not claim that unexecuted
cluster, KDC, historical-stack, proxy, iframe, role, upgrade, or fault-injection
scenarios passed.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]