From bf8aec24185c546fff5e7d84ca35b2d1ef4437ad Mon Sep 17 00:00:00 2001 From: Chelsea Shaw Date: Thu, 11 Jul 2024 14:49:18 -0500 Subject: [PATCH 1/4] Add map between model types and helpUrls, update tests --- ui/app/utils/openapi-helpers.ts | 33 +++++++++++++++++++ .../acceptance/open-api-path-help-test.js | 12 +++---- ui/tests/unit/utils/openapi-helpers-test.js | 20 +++++++++-- 3 files changed, 55 insertions(+), 10 deletions(-) diff --git a/ui/app/utils/openapi-helpers.ts b/ui/app/utils/openapi-helpers.ts index 5b11ab1d6839..a5f6b90d2423 100644 --- a/ui/app/utils/openapi-helpers.ts +++ b/ui/app/utils/openapi-helpers.ts @@ -132,3 +132,36 @@ export function filterPathsByItemType(pathInfo: PathsInfo, itemType: string): Pa return itemType === path.itemType; }); } + +/** + * This object maps model names to the openAPI path that hydrates the model, given the backend path. + */ +const OPENAPI_POWERED_MODELS = { + 'role-ssh': (backend: string) => `/v1/${backend}/roles/example?help=1`, + 'auth-config/azure': (backend: string) => `/v1/auth/${backend}/config?help=1`, + 'auth-config/gcp': (backend: string) => `/v1/auth/${backend}/config?help=1`, + 'auth-config/github': (backend: string) => `/v1/auth/${backend}/config?help=1`, + 'auth-config/jwt': (backend: string) => `/v1/auth/${backend}/config?help=1`, + 'auth-config/kubernetes': (backend: string) => `/v1/auth/${backend}/config?help=1`, + 'auth-config/ldap': (backend: string) => `/v1/auth/${backend}/config?help=1`, + 'auth-config/okta': (backend: string) => `/v1/auth/${backend}/config?help=1`, + 'auth-config/radius': (backend: string) => `/v1/auth/${backend}/config?help=1`, + 'kmip/config': (backend: string) => `/v1/${backend}/config?help=1`, + 'kmip/role': (backend: string) => `/v1/${backend}/scope/example/role/example?help=1`, + 'pki/role': (backend: string) => `/v1/${backend}/roles/example?help=1`, + 'pki/tidy': (backend: string) => `/v1/${backend}/config/auto-tidy?help=1`, + 'pki/sign-intermediate': (backend: string) => `/v1/${backend}/issuer/example/sign-intermediate?help=1`, + 'pki/certificate/generate': (backend: string) => `/v1/${backend}/issue/example?help=1`, + 'pki/certificate/sign': (backend: string) => `/v1/${backend}/sign/example?help=1`, + 'pki/config/acme': (backend: string) => `/v1/${backend}/config/acme?help=1`, + 'pki/config/cluster': (backend: string) => `/v1/${backend}/config/cluster?help=1`, + 'pki/config/urls': (backend: string) => `/v1/${backend}/config/urls?help=1`, +}; + +export function getHelpUrlForModel(modelType: string, backend: string) { + const urlFn = OPENAPI_POWERED_MODELS[modelType as keyof typeof OPENAPI_POWERED_MODELS] as ( + backend: string + ) => string; + if (!urlFn) return null; + return urlFn(backend); +} diff --git a/ui/tests/acceptance/open-api-path-help-test.js b/ui/tests/acceptance/open-api-path-help-test.js index 281c4882ff10..e48316d9fe31 100644 --- a/ui/tests/acceptance/open-api-path-help-test.js +++ b/ui/tests/acceptance/open-api-path-help-test.js @@ -9,6 +9,7 @@ import authPage from 'vault/tests/pages/auth'; import { deleteAuthCmd, deleteEngineCmd, mountAuthCmd, mountEngineCmd, runCmd } from '../helpers/commands'; import expectedSecretAttrs from 'vault/tests/helpers/openapi/expected-secret-attrs'; import expectedAuthAttrs from 'vault/tests/helpers/openapi/expected-auth-attrs'; +import { getHelpUrlForModel } from 'vault/utils/openapi-helpers'; /** * This set of tests is for ensuring that backend changes to the OpenAPI spec @@ -72,8 +73,7 @@ function secretEngineHelper(test, secretEngine) { // A given secret engine might have multiple models that are openApi driven modelNames.forEach((modelName) => { test(`${modelName} model getProps returns correct attributes`, async function (assert) { - const model = this.store.createRecord(modelName, {}); - const helpUrl = model.getHelpUrl(this.backend); + const helpUrl = getHelpUrlForModel(modelName, this.backend); const result = await this.pathHelp.getProps(helpUrl, this.backend); const expected = engineData[modelName]; // Expected values should be updated to match "actual" (result) @@ -98,8 +98,7 @@ function authEngineHelper(test, authBackend) { if (itemName.startsWith('auth-config/')) { // Config test doesn't need to instantiate a new model test(`${itemName} model`, async function (assert) { - const model = this.store.createRecord(itemName, {}); - const helpUrl = model.getHelpUrl(this.mount); + const helpUrl = getHelpUrlForModel(itemName, this.mount); const result = await this.pathHelp.getProps(helpUrl, this.mount); const expected = authData[itemName]; assert.deepEqual( @@ -116,9 +115,8 @@ function authEngineHelper(test, authBackend) { const modelName = `generated-${itemName}-${authBackend}`; // Generated items need to instantiate the model first via getNewModel await this.pathHelp.getNewModel(modelName, this.mount, `auth/${this.mount}/`, itemName); - const model = this.store.createRecord(modelName, {}); - // Generated items don't have this method -- helpUrl is calculated in path-help.js line 101 - const helpUrl = model.getHelpUrl(this.mount); + // Generated items don't have helpUrl method -- helpUrl is calculated in path-help.js line 101 + const helpUrl = `/v1/auth/${this.mount}?help=1`; const result = await this.pathHelp.getProps(helpUrl, this.mount); const expected = authData[modelName]; assert.deepEqual(result, expected, `getProps returns expected attributes for ${modelName}`); diff --git a/ui/tests/unit/utils/openapi-helpers-test.js b/ui/tests/unit/utils/openapi-helpers-test.js index 0b1d8c0e26c0..a0f18a37bcdc 100644 --- a/ui/tests/unit/utils/openapi-helpers-test.js +++ b/ui/tests/unit/utils/openapi-helpers-test.js @@ -4,11 +4,10 @@ */ import { module, test } from 'qunit'; -import { _getPathParam, pathToHelpUrlSegment } from 'vault/utils/openapi-helpers'; +import { _getPathParam, getHelpUrlForModel, pathToHelpUrlSegment } from 'vault/utils/openapi-helpers'; module('Unit | Utility | OpenAPI helper utils', function () { test(`pathToHelpUrlSegment`, function (assert) { - assert.expect(5); [ { path: '/auth/{username}', result: '/auth/example' }, { path: '{username}/foo', result: 'example/foo' }, @@ -21,7 +20,6 @@ module('Unit | Utility | OpenAPI helper utils', function () { }); test(`_getPathParam`, function (assert) { - assert.expect(7); [ { path: '/auth/{username}', result: 'username' }, { path: '{unicorn}/foo', result: 'unicorn' }, @@ -34,4 +32,20 @@ module('Unit | Utility | OpenAPI helper utils', function () { assert.strictEqual(_getPathParam(test.path), test.result, `returns first param for ${test.path}`); }); }); + + test(`getHelpUrlForModel`, function (assert) { + [ + { modelType: 'kmip/config', result: '/v1/foobar/config?help=1' }, + { modelType: 'does-not-exist', result: null }, + { modelType: 4, result: null }, + { modelType: '', result: null }, + { modelType: undefined, result: null }, + ].forEach((test) => { + assert.strictEqual( + getHelpUrlForModel(test.modelType, 'foobar'), + test.result, + `returns first param for ${test.path}` + ); + }); + }); }); From 195c9151bf4f2c19b4d2e84cfb640c897570779e Mon Sep 17 00:00:00 2001 From: Chelsea Shaw Date: Thu, 11 Jul 2024 14:50:01 -0500 Subject: [PATCH 2/4] replace modelProto.getHelpUrl with new helper util --- ui/app/services/path-help.js | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/ui/app/services/path-help.js b/ui/app/services/path-help.js index 03b8284a775a..95d3f182c894 100644 --- a/ui/app/services/path-help.js +++ b/ui/app/services/path-help.js @@ -26,6 +26,7 @@ import { filterPathsByItemType, pathToHelpUrlSegment, reducePathsByPathName, + getHelpUrlForModel, } from 'vault/utils/openapi-helpers'; import { isPresent } from '@ember/utils'; @@ -53,17 +54,17 @@ export default Service.extend({ const modelName = `model:${modelType}`; const modelFactory = owner.factoryFor(modelName); - let newModel, helpUrl; + let helpUrl = getHelpUrlForModel(modelType, backend); + + let newModel; // if we have a factory, we need to take the existing model into account if (modelFactory) { debug(`Model factory found for ${modelType}`); newModel = modelFactory.class; - const modelProto = newModel.proto(); - if (newModel.merged || modelProto.useOpenAPI !== true) { + if (newModel.merged || !helpUrl) { return resolve(); } - helpUrl = modelProto.getHelpUrl(backend); return this.registerNewModelWithProps(helpUrl, backend, newModel, modelName); } else { debug(`Creating new Model for ${modelType}`); @@ -73,7 +74,6 @@ export default Service.extend({ // we don't have an apiPath for dynamic secrets // and we don't need paths for them yet if (!apiPath) { - helpUrl = newModel.proto().getHelpUrl(backend); return this.registerNewModelWithProps(helpUrl, backend, newModel, modelName); } @@ -98,7 +98,7 @@ export default Service.extend({ return reject(); } - helpUrl = `/v1/${apiPath}${path.slice(1)}?help=true` || newModel.proto().getHelpUrl(backend); + helpUrl = `/v1/${apiPath}${path.slice(1)}?help=true`; pathInfo.paths = paths; newModel = newModel.extend({ paths: pathInfo }); return this.registerNewModelWithProps(helpUrl, backend, newModel, modelName); From f826de86bc3a9d351201cac92551b35f492a8e74 Mon Sep 17 00:00:00 2001 From: Chelsea Shaw Date: Thu, 11 Jul 2024 14:50:47 -0500 Subject: [PATCH 3/4] Remove all useOpenApi and getHelpUrl instances from models --- ui/app/models/auth-config.js | 3 --- ui/app/models/auth-config/azure.js | 1 - ui/app/models/auth-config/gcp.js | 1 - ui/app/models/auth-config/github.js | 1 - ui/app/models/auth-config/jwt.js | 1 - ui/app/models/auth-config/kubernetes.js | 1 - ui/app/models/auth-config/ldap.js | 1 - ui/app/models/auth-config/okta.js | 1 - ui/app/models/auth-config/radius.js | 1 - ui/app/models/kmip/config.js | 4 ---- ui/app/models/kmip/role.js | 5 +---- ui/app/models/pki/certificate/base.js | 7 ------- ui/app/models/pki/certificate/generate.js | 3 --- ui/app/models/pki/certificate/sign.js | 3 --- ui/app/models/pki/config/acme.js | 8 -------- ui/app/models/pki/config/cluster.js | 7 ------- ui/app/models/pki/config/urls.js | 6 ------ ui/app/models/pki/issuer.js | 5 +---- ui/app/models/pki/role.js | 8 -------- ui/app/models/pki/sign-intermediate.js | 4 ---- ui/app/models/pki/tidy.js | 8 -------- ui/app/models/role-ssh.js | 4 ---- ui/types/vault/models/pki/certificate/base.d.ts | 2 -- ui/types/vault/models/pki/config/urls.d.ts | 2 -- ui/types/vault/models/pki/issuer.d.ts | 1 - ui/types/vault/models/pki/role.d.ts | 2 -- ui/types/vault/models/pki/tidy.d.ts | 2 -- 27 files changed, 2 insertions(+), 90 deletions(-) diff --git a/ui/app/models/auth-config.js b/ui/app/models/auth-config.js index 95e726c80429..46ab4f9700cc 100644 --- a/ui/app/models/auth-config.js +++ b/ui/app/models/auth-config.js @@ -7,7 +7,4 @@ import Model, { belongsTo } from '@ember-data/model'; export default Model.extend({ backend: belongsTo('auth-method', { inverse: 'authConfigs', readOnly: true, async: false }), - getHelpUrl: function (backend) { - return `/v1/auth/${backend}/config?help=1`; - }, }); diff --git a/ui/app/models/auth-config/azure.js b/ui/app/models/auth-config/azure.js index 338a451b1d24..300ec7319e34 100644 --- a/ui/app/models/auth-config/azure.js +++ b/ui/app/models/auth-config/azure.js @@ -10,7 +10,6 @@ import { combineFieldGroups } from 'vault/utils/openapi-to-attrs'; import fieldToAttrs from 'vault/utils/field-to-attrs'; export default AuthConfig.extend({ - useOpenAPI: true, tenantId: attr('string', { label: 'Tenant ID', helpText: 'The tenant ID for the Azure Active Directory organization', diff --git a/ui/app/models/auth-config/gcp.js b/ui/app/models/auth-config/gcp.js index f825fb21e987..d69019df7226 100644 --- a/ui/app/models/auth-config/gcp.js +++ b/ui/app/models/auth-config/gcp.js @@ -10,7 +10,6 @@ import { combineFieldGroups } from 'vault/utils/openapi-to-attrs'; import fieldToAttrs from 'vault/utils/field-to-attrs'; export default AuthConfig.extend({ - useOpenAPI: true, // We have to leave this here because the backend doesn't support the file type yet. credentials: attr('string', { editType: 'file', diff --git a/ui/app/models/auth-config/github.js b/ui/app/models/auth-config/github.js index 675741c68143..ce3f98d8e25f 100644 --- a/ui/app/models/auth-config/github.js +++ b/ui/app/models/auth-config/github.js @@ -10,7 +10,6 @@ import fieldToAttrs from 'vault/utils/field-to-attrs'; import { combineFieldGroups } from 'vault/utils/openapi-to-attrs'; export default AuthConfig.extend({ - useOpenAPI: true, organization: attr('string'), baseUrl: attr('string', { label: 'Base URL', diff --git a/ui/app/models/auth-config/jwt.js b/ui/app/models/auth-config/jwt.js index 38b8d99ae657..934e5163798c 100644 --- a/ui/app/models/auth-config/jwt.js +++ b/ui/app/models/auth-config/jwt.js @@ -10,7 +10,6 @@ import fieldToAttrs from 'vault/utils/field-to-attrs'; import { combineFieldGroups } from 'vault/utils/openapi-to-attrs'; export default AuthConfig.extend({ - useOpenAPI: true, oidcDiscoveryUrl: attr('string', { label: 'OIDC discovery URL', helpText: diff --git a/ui/app/models/auth-config/kubernetes.js b/ui/app/models/auth-config/kubernetes.js index 3129bdb04de0..c03caa0b91f1 100644 --- a/ui/app/models/auth-config/kubernetes.js +++ b/ui/app/models/auth-config/kubernetes.js @@ -11,7 +11,6 @@ import { combineFieldGroups } from 'vault/utils/openapi-to-attrs'; import fieldToAttrs from 'vault/utils/field-to-attrs'; export default AuthConfig.extend({ - useOpenAPI: true, kubernetesHost: attr('string', { helpText: 'Host must be a host string, a host:port pair, or a URL to the base of the Kubernetes API server.', diff --git a/ui/app/models/auth-config/ldap.js b/ui/app/models/auth-config/ldap.js index fc7261a0b5aa..5cfdf998fec5 100644 --- a/ui/app/models/auth-config/ldap.js +++ b/ui/app/models/auth-config/ldap.js @@ -11,7 +11,6 @@ import fieldToAttrs from 'vault/utils/field-to-attrs'; import { combineFieldGroups } from 'vault/utils/openapi-to-attrs'; export default AuthConfig.extend({ - useOpenAPI: true, certificate: attr({ label: 'Certificate', editType: 'file', diff --git a/ui/app/models/auth-config/okta.js b/ui/app/models/auth-config/okta.js index 11a18b1e0a36..61db5a3cd844 100644 --- a/ui/app/models/auth-config/okta.js +++ b/ui/app/models/auth-config/okta.js @@ -10,7 +10,6 @@ import fieldToAttrs from 'vault/utils/field-to-attrs'; import { combineFieldGroups } from 'vault/utils/openapi-to-attrs'; export default AuthConfig.extend({ - useOpenAPI: true, orgName: attr('string', { helpText: 'Name of the organization to be used in the Okta API', }), diff --git a/ui/app/models/auth-config/radius.js b/ui/app/models/auth-config/radius.js index c38d1fbdc432..6d25c3841928 100644 --- a/ui/app/models/auth-config/radius.js +++ b/ui/app/models/auth-config/radius.js @@ -10,7 +10,6 @@ import { combineFieldGroups } from 'vault/utils/openapi-to-attrs'; import fieldToAttrs from 'vault/utils/field-to-attrs'; export default AuthConfig.extend({ - useOpenAPI: true, host: attr('string'), secret: attr('string'), diff --git a/ui/app/models/kmip/config.js b/ui/app/models/kmip/config.js index 8a9fedbb2d5b..61600c7abaf7 100644 --- a/ui/app/models/kmip/config.js +++ b/ui/app/models/kmip/config.js @@ -9,11 +9,7 @@ import { combineFieldGroups } from 'vault/utils/openapi-to-attrs'; import fieldToAttrs from 'vault/utils/field-to-attrs'; export default Model.extend({ - useOpenAPI: true, ca: belongsTo('kmip/ca', { async: false, inverse: 'config' }), - getHelpUrl(path) { - return `/v1/${path}/config?help=1`; - }, fieldGroups: computed('newFields', function () { let groups = [{ default: ['listenAddrs', 'connectionTimeout'] }]; diff --git a/ui/app/models/kmip/role.js b/ui/app/models/kmip/role.js index e094cb04d659..a3a294c315e4 100644 --- a/ui/app/models/kmip/role.js +++ b/ui/app/models/kmip/role.js @@ -36,13 +36,10 @@ export const COMPUTEDS = { }; export default Model.extend(COMPUTEDS, { - useOpenAPI: true, backend: attr({ readOnly: true }), scope: attr({ readOnly: true }), name: attr({ readOnly: true }), - getHelpUrl(path) { - return `/v1/${path}/scope/example/role/example?help=1`; - }, + fieldGroups: computed('fields', 'defaultFields.length', 'tlsFields', function () { const groups = [{ TLS: this.tlsFields }]; if (this.defaultFields.length) { diff --git a/ui/app/models/pki/certificate/base.js b/ui/app/models/pki/certificate/base.js index 72125cfab451..a7b6eca18193 100644 --- a/ui/app/models/pki/certificate/base.js +++ b/ui/app/models/pki/certificate/base.js @@ -4,7 +4,6 @@ */ import Model, { attr } from '@ember-data/model'; -import { assert } from '@ember/debug'; import { service } from '@ember/service'; import { withFormFields } from 'vault/decorators/model-form-fields'; import lazyCapabilities, { apiPath } from 'vault/macros/lazy-capabilities'; @@ -25,15 +24,9 @@ const certDisplayFields = ['certificate', 'commonName', 'revocationTime', 'seria export default class PkiCertificateBaseModel extends Model { @service secretMountPath; - get useOpenAPI() { - return true; - } get backend() { return this.secretMountPath.currentPath; } - getHelpUrl() { - assert('You must provide a helpUrl for OpenAPI', true); - } // The attributes parsed from parse-pki-cert util live here @attr parsedCertificate; diff --git a/ui/app/models/pki/certificate/generate.js b/ui/app/models/pki/certificate/generate.js index 640695d4f855..daad7c51751c 100644 --- a/ui/app/models/pki/certificate/generate.js +++ b/ui/app/models/pki/certificate/generate.js @@ -34,8 +34,5 @@ const certDisplayFields = [ ]; @withFormFields(certDisplayFields, generateFromRole) export default class PkiCertificateGenerateModel extends PkiCertificateBaseModel { - getHelpUrl(backend) { - return `/v1/${backend}/issue/example?help=1`; - } @attr('string') role; // role name to issue certificate against for request URL } diff --git a/ui/app/models/pki/certificate/sign.js b/ui/app/models/pki/certificate/sign.js index 76fe3156c94a..e25d85ba4493 100644 --- a/ui/app/models/pki/certificate/sign.js +++ b/ui/app/models/pki/certificate/sign.js @@ -23,9 +23,6 @@ const generateFromRole = [ ]; @withFormFields(null, generateFromRole) export default class PkiCertificateSignModel extends PkiCertificateBaseModel { - getHelpUrl(backend) { - return `/v1/${backend}/sign/example?help=1`; - } @attr('string') role; // role name to create certificate against for request URL @attr('string', { diff --git a/ui/app/models/pki/config/acme.js b/ui/app/models/pki/config/acme.js index 4afffc74e9cd..a0e6898bdeb5 100644 --- a/ui/app/models/pki/config/acme.js +++ b/ui/app/models/pki/config/acme.js @@ -10,16 +10,8 @@ import lazyCapabilities, { apiPath } from 'vault/macros/lazy-capabilities'; @withFormFields() export default class PkiConfigAcmeModel extends Model { // This model uses the backend value as the model ID - get useOpenAPI() { - return true; - } - - getHelpUrl(backendPath) { - return `/v1/${backendPath}/config/acme?help=1`; - } // attrs order in the form is determined by order here - @attr('boolean', { label: 'ACME enabled', subText: 'When ACME is disabled, all requests to ACME directory URLs will return 404.', diff --git a/ui/app/models/pki/config/cluster.js b/ui/app/models/pki/config/cluster.js index 8b4d49f66dee..254b9720b50c 100644 --- a/ui/app/models/pki/config/cluster.js +++ b/ui/app/models/pki/config/cluster.js @@ -10,13 +10,6 @@ import lazyCapabilities, { apiPath } from 'vault/macros/lazy-capabilities'; @withFormFields() export default class PkiConfigClusterModel extends Model { // This model uses the backend value as the model ID - get useOpenAPI() { - return true; - } - - getHelpUrl(backendPath) { - return `/v1/${backendPath}/config/cluster?help=1`; - } @attr('string', { label: "Mount's API path", diff --git a/ui/app/models/pki/config/urls.js b/ui/app/models/pki/config/urls.js index 924d63b223ff..5a8699c36e26 100644 --- a/ui/app/models/pki/config/urls.js +++ b/ui/app/models/pki/config/urls.js @@ -10,12 +10,6 @@ import lazyCapabilities, { apiPath } from 'vault/macros/lazy-capabilities'; @withFormFields() export default class PkiConfigUrlsModel extends Model { // This model uses the backend value as the model ID - get useOpenAPI() { - return true; - } - getHelpUrl(backendPath) { - return `/v1/${backendPath}/config/urls?help=1`; - } @attr({ label: 'Issuing certificates', diff --git a/ui/app/models/pki/issuer.js b/ui/app/models/pki/issuer.js index 6e51d469d5fc..dc7ebf46ecdd 100644 --- a/ui/app/models/pki/issuer.js +++ b/ui/app/models/pki/issuer.js @@ -27,10 +27,7 @@ const displayFields = [ @withFormFields(inputFields, displayFields) export default class PkiIssuerModel extends Model { @service secretMountPath; - // TODO use openAPI after removing route extension (see pki/roles route for example) - get useOpenAPI() { - return false; - } + get backend() { return this.secretMountPath.currentPath; } diff --git a/ui/app/models/pki/role.js b/ui/app/models/pki/role.js index 25704a871900..43165938decc 100644 --- a/ui/app/models/pki/role.js +++ b/ui/app/models/pki/role.js @@ -18,14 +18,6 @@ const validations = { export default class PkiRoleModel extends Model { @service version; // noStoreMetadata is enterprise-only, so we need this available - get useOpenAPI() { - // must be a getter so it can be accessed in path-help.js - return true; - } - getHelpUrl(backend) { - return `/v1/${backend}/roles/example?help=1`; - } - @attr('string', { readOnly: true }) backend; get formFieldGroups() { diff --git a/ui/app/models/pki/sign-intermediate.js b/ui/app/models/pki/sign-intermediate.js index 53c5b69b1534..2dfbb7bf6c9a 100644 --- a/ui/app/models/pki/sign-intermediate.js +++ b/ui/app/models/pki/sign-intermediate.js @@ -25,10 +25,6 @@ const validations = { 'maxPathLength', ]) export default class PkiSignIntermediateModel extends PkiCertificateBaseModel { - getHelpUrl(backend) { - return `/v1/${backend}/issuer/example/sign-intermediate?help=1`; - } - @attr issuerRef; @attr('string', { diff --git a/ui/app/models/pki/tidy.js b/ui/app/models/pki/tidy.js index 1f39d0849eab..c7cd17f0f5bb 100644 --- a/ui/app/models/pki/tidy.js +++ b/ui/app/models/pki/tidy.js @@ -125,14 +125,6 @@ export default class PkiTidyModel extends Model { }) tidyRevokedCerts; - get useOpenAPI() { - return true; - } - - getHelpUrl(backend) { - return `/v1/${backend}/config/auto-tidy?help=1`; - } - get allGroups() { const groups = [{ autoTidy: ['enabled', 'intervalDuration'] }, ...this.sharedFields]; return this._expandGroups(groups); diff --git a/ui/app/models/role-ssh.js b/ui/app/models/role-ssh.js index e8f2293ad76e..cc370ceb4dc5 100644 --- a/ui/app/models/role-ssh.js +++ b/ui/app/models/role-ssh.js @@ -47,10 +47,6 @@ const CA_FIELDS = [ ]; export default Model.extend({ - useOpenAPI: true, - getHelpUrl: function (backend) { - return `/v1/${backend}/roles/example?help=1`; - }, zeroAddress: attr('boolean', { readOnly: true, }), diff --git a/ui/types/vault/models/pki/certificate/base.d.ts b/ui/types/vault/models/pki/certificate/base.d.ts index ddc3c2ab416d..9a8632aca725 100644 --- a/ui/types/vault/models/pki/certificate/base.d.ts +++ b/ui/types/vault/models/pki/certificate/base.d.ts @@ -6,9 +6,7 @@ import Model from '@ember-data/model'; export default class PkiCertificateBaseModel extends Model { secretMountPath: class; - get useOpenAPI(): boolean; get backend(): string; - getHelpUrl(): void; altNames: string; commonName: string; caChain: string; diff --git a/ui/types/vault/models/pki/config/urls.d.ts b/ui/types/vault/models/pki/config/urls.d.ts index e6cc732c355d..47c1b43eb4cc 100644 --- a/ui/types/vault/models/pki/config/urls.d.ts +++ b/ui/types/vault/models/pki/config/urls.d.ts @@ -6,8 +6,6 @@ import Model from '@ember-data/model'; export default class PkiConfigUrlsModel extends Model { - get useOpenAPI(): boolean; - getHelpUrl(backendPath: string): string; issuingCertificates: array; crlDistributionPoints: array; ocspServers: array; diff --git a/ui/types/vault/models/pki/issuer.d.ts b/ui/types/vault/models/pki/issuer.d.ts index a0becfec732a..4c56c04e61d4 100644 --- a/ui/types/vault/models/pki/issuer.d.ts +++ b/ui/types/vault/models/pki/issuer.d.ts @@ -8,7 +8,6 @@ import { FormField, FormFieldGroups, ModelValidations } from 'vault/app-types'; import { ParsedCertificateData } from 'vault/vault/utils/parse-pki-cert'; export default class PkiIssuerModel extends Model { secretMountPath: class; - get useOpenAPI(): boolean; get backend(): string; get issuerRef(): string; certificate: string; diff --git a/ui/types/vault/models/pki/role.d.ts b/ui/types/vault/models/pki/role.d.ts index 94f2e5376c47..fddc804073bf 100644 --- a/ui/types/vault/models/pki/role.d.ts +++ b/ui/types/vault/models/pki/role.d.ts @@ -7,10 +7,8 @@ import Model from '@ember-data/model'; import { ModelValidations } from 'vault/app-types'; export default class PkiRoleModel extends Model { - get useOpenAPI(): boolean; name: string; issuerRef: string; - getHelpUrl(backendPath: string): string; validate(): ModelValidations; isNew: boolean; keyType: string; diff --git a/ui/types/vault/models/pki/tidy.d.ts b/ui/types/vault/models/pki/tidy.d.ts index dde0886524ba..b12bebe01ad4 100644 --- a/ui/types/vault/models/pki/tidy.d.ts +++ b/ui/types/vault/models/pki/tidy.d.ts @@ -24,8 +24,6 @@ export default class PkiTidyModel extends Model { tidyRevocationQueue: boolean; tidyRevokedCertIssuerAssociations: boolean; tidyRevokedCerts: boolean; - get useOpenAPI(): boolean; - getHelpUrl(backend: string): string; allByKey: { intervalDuration: FormField[]; }; From 3571fac4c9dc6a6ef4e5bd790c295cb3ebadce6e Mon Sep 17 00:00:00 2001 From: Chelsea Shaw Date: Thu, 11 Jul 2024 15:07:33 -0500 Subject: [PATCH 4/4] Add missing auth config model type --- ui/app/utils/openapi-helpers.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/ui/app/utils/openapi-helpers.ts b/ui/app/utils/openapi-helpers.ts index a5f6b90d2423..eff0a36d05b2 100644 --- a/ui/app/utils/openapi-helpers.ts +++ b/ui/app/utils/openapi-helpers.ts @@ -139,6 +139,7 @@ export function filterPathsByItemType(pathInfo: PathsInfo, itemType: string): Pa const OPENAPI_POWERED_MODELS = { 'role-ssh': (backend: string) => `/v1/${backend}/roles/example?help=1`, 'auth-config/azure': (backend: string) => `/v1/auth/${backend}/config?help=1`, + 'auth-config/cert': (backend: string) => `/v1/auth/${backend}/config?help=1`, 'auth-config/gcp': (backend: string) => `/v1/auth/${backend}/config?help=1`, 'auth-config/github': (backend: string) => `/v1/auth/${backend}/config?help=1`, 'auth-config/jwt': (backend: string) => `/v1/auth/${backend}/config?help=1`,