Skip to content

feat(runtime-profile): additional configuration static UI - #458

Open
cdixit26 wants to merge 3 commits into
GoogleCloudDataproc:mainfrom
Shubha-accenture:runtime-profile-additional-ui
Open

cdixit26 wants to merge 3 commits into
GoogleCloudDataproc:mainfrom
Shubha-accenture:runtime-profile-additional-ui

Conversation

@cdixit26

Copy link
Copy Markdown
Collaborator

This PR integrates the Additional configuration sections into the Create Runtime Profile form based on the Project Ignite specification, consuming the reusable SectionDetail component introduced in Part 1 (#457).

Key Changes

  • Added the collapsible Additional configuration panel to CreateRuntimeProfileComponent displaying default configuration values across 7 sections:
    1. Runtime configuration (RuntimeEnvironmentSection)
    2. Executor and driver configuration (ExecutorAndDriverSection)
    3. Autoscaling (AutoscalingSection)
    4. Metastore configuration (MetastoreSection)
    5. Network and security (NetworkSecuritySection)
    6. Session lifecycle (SessionLifecycleSection)
    7. Other customizations (OtherCustomizationSection for Spark properties and Labels)
  • Added property formatter utilities and default configuration constants mapped to the Runtime Profile domain interfaces.
  • Added unit tests in createRuntimeProfile.spec.tsx covering all section components and property formatters.

Screencast / Demo

additional-config.mov

Notes for Reviewers

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request introduces a reusable SectionDetail component to display key-value configuration properties, which is integrated into the CreateRuntimeProfileComponent to render expandable sections for runtime environment, executor/driver, autoscaling, metastore, network security, session lifecycle, and other customizations. It also cleans up deprecated properties and adds comprehensive unit tests. The review feedback suggests replacing read-only useState hooks with useMemo in CreateRuntimeProfileComponent to prevent stale state bugs when props change, and adding aria-disabled to the edit button in SectionDetail to improve accessibility.

Comment thread src/runtimeProfile/createRuntimeProfile.tsx Outdated
Comment thread src/controls/SectionDetail.tsx Outdated
@ajma

ajma commented Sep 22, 2026 •

Copy link
Copy Markdown
Contributor

please address the gemini comments

@cdixit26
cdixit26 force-pushed the runtime-profile-additional-ui branch 2 times, most recently from 06b35aa to 707b8d4 Compare September 23, 2026 13:28
@aditee-accenture
aditee-accenture force-pushed the runtime-profile-additional-ui branch from 723c33e to 707b8d4 Compare September 23, 2026 17:46
@cdixit26
cdixit26 force-pushed the runtime-profile-additional-ui branch from 707b8d4 to 8a03868 Compare September 24, 2026 11:24
@cdixit26
cdixit26 force-pushed the runtime-profile-additional-ui branch from 8a03868 to fb30529 Compare September 24, 2026 12:03
customer_managed_key: 'Customer-managed key'
};

export const DEFAULT_RUNTIME_ENVIRONMENT_CONFIG: IRuntimeEnvironmentConfig = {

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Many of the values here and below should come from the API. Why are we hard-coding random values?

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

When creating a new Runtime Profile, the initial summary rows ((RESOURCE_ALLOCATION_DEFAULT, AUTO_SCALING_DEFAULT, runtimeOptions = '2.3', selectedAccountRadio = 'serviceAccount', selectedEncryptionRadio = 'googleManaged') show the Serverless Spark default settings before user customization.
The dynamic resource options—specifically VPC Networks & Subnetworks / Shared VPC (listNetworksAPIService / listSubNetworksAPIService), Cloud KMS KeyRings & Keys (listKeyRingsAPIService / listKeysAPIService), Dataproc Metastore services (listMetaStoreAPIService), and Cloud Storage Staging Buckets—are fetched from the GCP APIs inside the respective Edit Drawers and API integration PRs that build on top of this static UI PR.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

So you expect to send "Name of the runtime profile" to the BE as the default runtimeProfileId? Whatever the user doesn't specify will be sent as these default strings?

Comment thread src/runtimeProfile/createRuntimeProfile.tsx Outdated
Comment thread src/runtimeProfile/createRuntimeProfile.tsx Outdated
Comment thread src/runtimeProfile/createRuntimeProfile.spec.tsx Outdated
Comment thread src/runtimeProfile/createRuntimeProfile.spec.tsx Outdated
Comment thread src/runtimeProfile/createRuntimeProfile.tsx Outdated
driverAndExecutorConfiguration:
payload.driverAndExecutorConfiguration ??
payload.executorAndDriverConfig,
executorAndDriverConfig: payload.executorAndDriverConfig,

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

None of the tests are affected by these changes?

expect(renderedText).toContain('gs://my-staging-bucket');
expect(renderedText).toContain('Premium');
expect(renderedText).toContain('highmem-8');
expect(renderedText).toContain('Disabled');

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This will pass if there's any field that has 'Disabled' in it. These tests should check their respective fields

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants