[WIP] Make githubapp private key storable in other credential sources#240
Merged
cigamit merged 2 commits intoctrliq:mainfrom Mar 11, 2026
Merged
Conversation
Contributor
There was a problem hiding this comment.
Pull request overview
This PR expands credential input sourcing so that external credentials (e.g., Azure Key Vault) can themselves have fields populated from other credential sources, enabling secret-manager “chaining” (useful for storing GitHub App private keys or external-credential auth inputs in a separate secret store).
Changes:
- UI: Removes the special-case rendering for
credentialType.kind === 'external', so external credential fields now go through the standardCredentialPluginFieldflow. - API/Model: Allows
Credential.get_input()to resolve dynamic input sources for all credential kinds (includingexternal), and permits external credentials to be input-source targets. - API/Model: Resolves dynamic inputs on the source external credential when executing an input-source lookup, enabling multi-hop external credential resolution.
Reviewed changes
Copilot reviewed 2 out of 2 changed files in this pull request and generated 2 comments.
| File | Description |
|---|---|
awx/ui/src/screens/Credential/shared/CredentialFormFields/CredentialField.js |
Removes external-only field rendering to allow plugin-based sourcing UI for external credential fields. |
awx/main/models/credential/__init__.py |
Enables external→external input sourcing and resolves dynamic inputs on source credentials during backend lookups. |
Comments suppressed due to low confidence (1)
awx/ui/src/screens/Credential/shared/CredentialFormFields/CredentialField.js:226
- Removing the special-case UI for
credentialType.kind === 'external'means external credentials will now render insideCredentialPluginField, allowing form values likeinputs.<field>to become plugin objects ({credential, inputs}).ExternalTestModalcurrently builds the/credentials/:id/test/payload by copyingcredentialFormValues.inputs[field.id]verbatim, so it will send these objects for string fields and fail schema validation. The test modal (and/or test endpoint) needs to filter/serialize plugin-sourced fields similarly to save, or otherwise support resolving dynamic inputs when testing external credentials.
if (credentialType.kind === 'ssh' && fieldOptions.id === 'become_method') {
return (
<BecomeMethodField fieldOptions={fieldOptions} isRequired={isRequired} />
);
}
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
cigamit
requested changes
Feb 27, 2026
Contributor
Author
|
I have added a few tests and fixed one test that I broke with this change |
cigamit
approved these changes
Mar 11, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
SUMMARY
I am not yet sure if this is a good idea :) But essentially this is a follow up to the github app PR, I would like to be able to use a azure keyvault (or other secret manager) secret to store the RSA key for the github app.
I am not really too familiar with the UI/API, while I tested it and it works I am not sure it's a good idea to remove the restrictions :) So I am looking for feedback on this change.
ISSUE TYPE
COMPONENT NAME
ASCENDER VERSION
ADDITIONAL INFORMATION